Wireshark如何分析异常流量

wen 网络安全 2

本文目录导读:

Wireshark如何分析异常流量

  1. 第一步:快速过滤与宏观统计(缩小范围)
  2. 第二步:典型异常流量的特征定位
  3. 第三步:使用着色规则与时间分析(可视化)
  4. 第四步:深入分析单包与追踪流
  5. 实战案例分析
  6. 关键思维:不要只看 Wireshark
  7. 总结检查清单

Wireshark 分析异常流量的核心思路是:在大量正常数据包中,通过特征快速定位“噪声”,异常流量通常表现为行为异常(如无响应、大量重传)或内容异常(如畸形包、非法IP/端口)。

以下是系统性的分析步骤、关键指标和实战技巧:

第一步:快速过滤与宏观统计(缩小范围)

不要直接看原始列表,先用统计工具定位问题区域。

  1. 统计 -> 协议分级(Protocol Hierarchy)

    • 作用:查看各协议流量占比。
    • 异常特征
      • TCP/ARP/UDP 流量占比异常高(如 90% 以上),可能是扫描或洪水攻击。
      • 出现不常见的协议(如 SMB Direct、OPC UA、ICMP 大量存在),可能非正常业务。
  2. 统计 -> 对话(Conversations)

    • 作用:查看IP对之间的流量大小(Bytes/packets)。
    • 异常特征
      • 某两个IP之间的流量远超其他,可能是数据泄露或视频流异常。
      • 某IP发送了大量小包(如 64字节)到单端口,可能是端口扫描。
  3. 统计 -> 端点(Endpoints)

    • 作用:识别流量最多的IP或MAC地址。
    • 异常特征
      • 一个内网IP发出大量出站流量,可能是僵尸网络或数据外泄。
      • 一个外网IP频繁连接内网多个不同IP,可能是扫描或横向移动。

第二步:典型异常流量的特征定位

根据异常类型,使用特定过滤表达式寻找线索。

网络层异常:扫描与探测

  • 特征:大量的 SYN 包(无 ACK)、ICMP 回应请求、或均匀分布的探测包。
  • 过滤
    • 全端口扫描tcp.flags.syn == 1 and tcp.flags.ack == 0 (大量SYN包,通常是扫描器行为)。
    • SYN Floodtcp.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包可能表示端口未开放、防火墙阻断、或扫描行为。

应用层异常:恶意流量与数据泄露

  • 特征:异常大小的 Payload、非标准端口、隐藏数据。
  • 过滤
    • DNS 隧道dns.qry.name.len > 50 (查询超长域名) 或 dns.flags.response == 0 且源端口 53 (非常罕见)。
    • HTTP 异常请求 URLhttp.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 且协议分析显示为 SSHTelnet (端口与应用不匹配)。

第三步:使用着色规则与时间分析(可视化)

Wireshark 会根据异常情况自动标记颜色,但要自定义:

  1. 查看 -> 着色规则

    • TCP RST 设为红色。
    • TCP Retransmission 设为橙色。
    • ICMP 设为紫色。
    • 作用:在列表视图里一眼看清问题点。
  2. I/O 图表(Statistics -> IO Graph)

    • 应用场景:流量突增/突降。
    • 操作:添加过滤器,tcp.analysis.retransmissionip.src == 192.168.1.100
    • 异常
      • 数据包速率曲线在某个时间点瞬间陡峭上升(如从 10 pps 跳变到 1000 pps),通常对应攻击开始。
      • 重传曲线与正常流量曲线同步上升,表示网络层问题。

第四步:深入分析单包与追踪流

当定位到可疑包后,不要只看摘要,要深入查看。

  1. 右键 -> 追踪流(Follow TCP/UDP Stream)

    • HTTP:直接看到请求的URL、POST数据、响应体(可判断是否包含SQL注入、XSS、或敏感文件内容)。
    • SMTP:查看邮件正文、附件名称。
    • 非标准协议:查看二进制Payload中是否包含 shellcode、Base64 编码的指令、或奇怪的字符串。
  2. 查看包结构

    • IP ID:连续递增的值可能是扫描(防御不佳的攻击者),递增模式随机可能是正常OS。
    • 端口号:源端口为随机高位(如 50000+)可能正常,但源端口固定为 80/443 且源IP非标准服务器,可能是僵尸网络伪装。
    • TTL 值:TTL 120-128 通常是 Windows,TTL 64 是 Linux,如果一台主机 TTL 值突然变化,可能是地址跳变或伪造

实战案例分析

场景:员工电脑突然外网流量异常增大,怀疑中木马。

操作步骤:

  1. 统计 -> 端点:发现内网IP 192.168.1.105 与数个外网IP(如 203.0.113.50)产生大量出站流量。
  2. 过滤ip.src == 192.168.1.105 and ip.dst == 203.0.113.50
  3. 查看协议分级:发现协议是 HTTP 和 TLS(通常木马用加密隧道)。
  4. 右键追踪 TCP 流:发现 HTTP POST 请求发送至 /gate.php,POST 数据是 Base64 编码(但解密后是乱码或包含系统命令 cmd.exe/bin/bash)。
  5. 确认异常:该IP从未被访问过,且请求频率/数据大小不符合正常业务(如发送系统用户列表、本机文件等特征),判定为C2通信

关键思维:不要只看 Wireshark

Wireshark 是取证和分析工具,不是实时防御工具,对于生产环境,建议结合:

  • NetFlow/sFlow:宏观流量趋势告警。
  • IDS/IPS (如 Snort, Suricata):自动匹配攻击签名(如 ShellShock, SQLi)。
  • Linux 命令组合tshark (命令行版)+ grep + awk 进行批量日志分析。

总结检查清单

当你分析流量时,依次问自己:

  1. 是否有意外的协议(如ICMP很多?ARP广播很频繁?)
  2. 是否有大量的重传、RST、或窗口问题?(网络不稳还是攻击?)
  3. 是否有异常的端口/IP对?(内网访问外网的高端口数据库?)
  4. 某个包的时间间隔是否极其均匀?(机器扫描 vs 人工点击,机器流量通常毫秒级均匀)
  5. 应用层Payload是否包含敏感关键字?(SELECT FROM, <script>, passwd, flag{}

抱歉,评论功能暂时关闭!