本文目录导读:

Wireshark 分析异常流量的核心思路是:在大量正常数据包中,通过特征快速定位“噪声”,异常流量通常表现为行为异常(如无响应、大量重传)或内容异常(如畸形包、非法IP/端口)。
以下是系统性的分析步骤、关键指标和实战技巧:
第一步:快速过滤与宏观统计(缩小范围)
不要直接看原始列表,先用统计工具定位问题区域。
-
统计 -> 协议分级(Protocol Hierarchy)
- 作用:查看各协议流量占比。
- 异常特征:
- TCP/ARP/UDP 流量占比异常高(如 90% 以上),可能是扫描或洪水攻击。
- 出现不常见的协议(如 SMB Direct、OPC UA、ICMP 大量存在),可能非正常业务。
-
统计 -> 对话(Conversations)
- 作用:查看IP对之间的流量大小(Bytes/packets)。
- 异常特征:
- 某两个IP之间的流量远超其他,可能是数据泄露或视频流异常。
- 某IP发送了大量小包(如 64字节)到单端口,可能是端口扫描。
-
统计 -> 端点(Endpoints)
- 作用:识别流量最多的IP或MAC地址。
- 异常特征:
- 一个内网IP发出大量出站流量,可能是僵尸网络或数据外泄。
- 一个外网IP频繁连接内网多个不同IP,可能是扫描或横向移动。
第二步:典型异常流量的特征定位
根据异常类型,使用特定过滤表达式寻找线索。
网络层异常:扫描与探测
- 特征:大量的 SYN 包(无 ACK)、ICMP 回应请求、或均匀分布的探测包。
- 过滤:
- 全端口扫描:
tcp.flags.syn == 1 and tcp.flags.ack == 0(大量SYN包,通常是扫描器行为)。 - SYN Flood:
tcp.flags.syn == 1 and tcp.flags.ack == 0且源IP分散,目标端口固定(如80)。 - ICMP 洪水:
icmp.type == 8且请求次数极大。 - ARP 扫描:
arp.opcode == 1且目标IP覆盖了整个子网(如 192.168.1.0/24)。
- 全端口扫描:
传输层异常:TCP 问题与 DDoS
- 特征:重传、零窗口、RST 异常断开。
- 过滤:
- TCP 重传(Retransmission):
tcp.analysis.retransmission- 原因:网络拥塞、丢包、中间设备故障、或攻击导致服务器无响应。
- 快速重传(Fast Retransmission):
tcp.analysis.fast_retransmission通常意味着丢包开始发生。
- 零窗口(Zero Window):
tcp.analysis.zero_window- 接收方缓冲区已满,通知发送方暂停。可能是应用层处理瓶颈或慢速攻击(Low-and-Slow)。
- 前一个丢失的段(Previous segment lost):
tcp.analysis.lost_segment确认丢失数据包的综合指标。
- RST 重置(Reset):
tcp.flags.reset == 1突然的RST包可能表示端口未开放、防火墙阻断、或扫描行为。
- TCP 重传(Retransmission):
应用层异常:恶意流量与数据泄露
- 特征:异常大小的 Payload、非标准端口、隐藏数据。
- 过滤:
- DNS 隧道:
dns.qry.name.len > 50(查询超长域名) 或dns.flags.response == 0且源端口 53 (非常罕见)。 - HTTP 异常请求 URL:
http.request.uri contains "?"或http.request.uri contains "cmd"且tcp.dstport == 80。 - 大数据包外泄:
udp.length > 1400(正常DNS/UDP小包通常 < 512字节) 或tcp.len > 1460(接近MTU上限且单个源IP频繁发送)。 - 非标准协议端口:
tcp.port in {25 443 3306}但data.len > 0且协议分析显示为SSH或Telnet(端口与应用不匹配)。
- DNS 隧道:
第三步:使用着色规则与时间分析(可视化)
Wireshark 会根据异常情况自动标记颜色,但要自定义:
-
查看 -> 着色规则:
- 将 TCP RST 设为红色。
- 将 TCP Retransmission 设为橙色。
- 将 ICMP 设为紫色。
- 作用:在列表视图里一眼看清问题点。
-
I/O 图表(Statistics -> IO Graph):
- 应用场景:流量突增/突降。
- 操作:添加过滤器,
tcp.analysis.retransmission或ip.src == 192.168.1.100。 - 异常:
- 数据包速率曲线在某个时间点瞬间陡峭上升(如从 10 pps 跳变到 1000 pps),通常对应攻击开始。
- 重传曲线与正常流量曲线同步上升,表示网络层问题。
第四步:深入分析单包与追踪流
当定位到可疑包后,不要只看摘要,要深入查看。
-
右键 -> 追踪流(Follow TCP/UDP Stream):
- HTTP:直接看到请求的URL、POST数据、响应体(可判断是否包含SQL注入、XSS、或敏感文件内容)。
- SMTP:查看邮件正文、附件名称。
- 非标准协议:查看二进制Payload中是否包含 shellcode、Base64 编码的指令、或奇怪的字符串。
-
查看包结构:
- IP ID:连续递增的值可能是扫描(防御不佳的攻击者),递增模式随机可能是正常OS。
- 端口号:源端口为随机高位(如 50000+)可能正常,但源端口固定为 80/443 且源IP非标准服务器,可能是僵尸网络伪装。
- TTL 值:TTL 120-128 通常是 Windows,TTL 64 是 Linux,如果一台主机 TTL 值突然变化,可能是地址跳变或伪造。
实战案例分析
场景:员工电脑突然外网流量异常增大,怀疑中木马。
操作步骤:
- 统计 -> 端点:发现内网IP 192.168.1.105 与数个外网IP(如 203.0.113.50)产生大量出站流量。
- 过滤:
ip.src == 192.168.1.105 and ip.dst == 203.0.113.50 - 查看协议分级:发现协议是 HTTP 和 TLS(通常木马用加密隧道)。
- 右键追踪 TCP 流:发现 HTTP POST 请求发送至
/gate.php,POST 数据是 Base64 编码(但解密后是乱码或包含系统命令cmd.exe或/bin/bash)。 - 确认异常:该IP从未被访问过,且请求频率/数据大小不符合正常业务(如发送系统用户列表、本机文件等特征),判定为C2通信。
关键思维:不要只看 Wireshark
Wireshark 是取证和分析工具,不是实时防御工具,对于生产环境,建议结合:
- NetFlow/sFlow:宏观流量趋势告警。
- IDS/IPS (如 Snort, Suricata):自动匹配攻击签名(如 ShellShock, SQLi)。
- Linux 命令组合:
tshark(命令行版)+grep+awk进行批量日志分析。
总结检查清单
当你分析流量时,依次问自己:
- 是否有意外的协议(如ICMP很多?ARP广播很频繁?)
- 是否有大量的重传、RST、或窗口问题?(网络不稳还是攻击?)
- 是否有异常的端口/IP对?(内网访问外网的高端口数据库?)
- 某个包的时间间隔是否极其均匀?(机器扫描 vs 人工点击,机器流量通常毫秒级均匀)
- 应用层Payload是否包含敏感关键字?(
SELECT FROM,<script>,passwd,flag{})