kali linux 中文文档 下载 App

Wireshark 网络抓包与协议分析基础

Wireshark 是什么

Wireshark(前身 Ethereal)是一款开源的网络包分析器,可以实时捕获网络接口上的所有数据包并解析其协议内容。它广泛应用于:

基础用法

启动抓包

选择要抓包的接口(eth0 / wlan0 / lo 回环),点击放大镜图标开始。抓包开始后会看到实时滚动的包列表。

过滤表达式(关键技能)

Wireshark 的显示过滤语法是必须掌握的核心技能:

# 只看 HTTP 请求
http.request

# 只看特定 IP 的包
ip.addr == 192.168.1.100

# 组合条件
http.request and ip.src == 192.168.1.50 and tcp.port == 8080

# DNS 查询过滤
dns.qry.name contains "example"

# 排除特定协议
!arp and !icmp

# TCP SYN 包(TCP 三次握手第一个包)
tcp.flags.syn == 1

保存抓包文件

File → Save As → 选择 pcapng 格式

pcapng 是 Wireshark 原生格式,包含包的时间戳和元数据。抓到的文件可以传给团队其他成员、导入 Zeek/Suricata 等工具做批量分析。

三个面板详解

  1. Packet List:每个包一行,显示编号、时间戳、源 IP、目的 IP、协议、信息摘要
  2. Packet Details:选中一个包后,这里分层显示各协议头(Ethernet → IP → TCP → HTTP),可以逐层展开查看字段
  3. Packet Bytes:最底层是原始字节,hex + ASCII 两种视图并排显示

实战场景

场景一:确认反向 Shell 是否连上

在 Metasploit 或 nc 发起的反向 shell 连接时,用 Wireshark 抓包:

  1. 过滤器设为 tcp.port == 4444(监听端口)
  2. 成功连上后会看到 TCP 三次握手 → 后续的数据传输
  3. 如果只看到 SYN 包没有 SYN-ACK,说明目标有防火墙拦截

场景二:分析 HTTP POST 数据

Burp Suite 虽然可以看到 HTTP 请求,但有时候需要看底层的 TCP 重传、分段情况。Wireshark 可以:

  1. 右键 HTTP 请求 → Follow → TCP Stream,查看完整会话
  2. 分析 TCP 层的乱序、重传、窗口大小等信息

场景三:检测 ARP 欺骗

arp.opcode == 2   # ARP 响应包(正常应该很少)
arp.announcement == 1  # 免费 ARP / 无故 ARP

如果看到大量来自不同 MAC 地址的 ARP 响应声称自己是网关 IP,那就是有人在做 ARP 欺骗。

命令行版本 tshark

不方便打开 GUI 时用 tshark(Wireshark 命令行版):

# 抓 eth0 上的 HTTP 流量并实时显示
tshark -i eth0 -Y "http" -T fields -e frame.time -e http.host -e http.request.uri

# 读取已有的 pcap 文件做分析
tshark -r capture.pcapng -q -z io,stat,5   # 每 5 秒统计一次流量

tcpdump 入门

tcpdump 是 Wireshark 的命令行抓包基础,SSH 远程服务器上最常用:

tcpdump -i eth0 host 192.168.1.100 and port 80 -w capture.pcap

抓完用 Wireshark 打开 .pcap 文件继续分析。