本文主要探讨tcpdump抓包相关 知识。
常用参数
-a 地址转成域名
-c 指定抓包数量
-e 显示mac地址、以太网类型
-i 监听指定网卡
-n 不解析域名
-N 不显示域名后缀
-p 禁止混杂模式
-q 快速输出,较少协议信息
-r 读取数据包文件
-s 抓包长度(0 代表抓取整个包)
-S 显示绝对的流序号
-t 禁止显示时间戳
-tt 显示未格式化时间戳
-v/vv/vvv 逐级详细输出信息
-w 写入保存数据包
-x 以16进制显示报文
-A 直接现实ASCII文本(适合HTTP)
过滤规则语法
host | dst/src host 抓取指定IP
port | dst/src port 抓取指定端口
len <= / >= length 按报文长度过滤
udp/tcp/arp/ip/ip6 指定协议类型
&& || ! 逻辑运算
ARP/RARP抓包
#tcpdump arp
arp who-has csam tell rtsg
arp reply csam is-at CSAM
#tcpdump arp -n
arp who-has 128.3.254.6 tell 128.3.254.68
arp reply 128.3.254.6 is-at 02:07:01:00:01:c4
#tcpdump arp -e
RTSG Broadcast 0806 64: arp who-has csam tell rtsg
CSAM RTSG 0806 64: arp reply csam is-at CSAM
rtsg 发出arp报文询问csam以太网地址
csam 回复自身以太网地址
TCP抓包
通用格式
time src > dst: flags seq ack window urgent options length
字段含义
time:时间戳
Src/dst:源/目的IP地址和端口
Flags 标志位
A:ACK 确认收到报文
S:SYN 发起连接
F:FIN 关闭连接
P:PUSH 推送数据
R:RST 强制断开
.:普通确认
seq:TCP序列号
无数据:seq 起始序号
有数据:seq 起始:结束(差值为数据字节数)
ack:确认序号
ack 1234 代表已收到1235前所有字节,期望下一个序号为1234
win:滑动窗口大小
urgent:紧急数据
options:扩展选项
nop:空占位符,用于4字节对齐
mss:单次最大载荷数据
wscale:窗口缩放,真实窗口 = win * 2^wscale
TS val/eor:本地/对端时间戳
sack:支持重传缺失报文片段
length:有效载荷数据长度
TCP交互示例
rtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
csam.login > rtsg.1023: S. 947648:947648(0) ack 768513 win 4096 <mss 1024>
rtsg.1023 > csam.login: . ack 1 win 4096
rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
csam.login > rtsg.1023: . ack 2 win 4096
rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
rtsg.1023 > csam.login: P 3:4(1) ack 21 win 4077 urg 1
csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1
交互说明:
rtsg.1023 向 csam.login 发送SYN报文发起连接
csam.login 向 rtsg.1023 发送SYN+ACK报文应答连接
rtsg.1023 发送ACK完成三次握手
握手完成后开始正常数据收发与确认
构造抓包
启动http服务
python3 -m http.server
启动抓包
tcpdump -i any 'tcp and port 8000'
浏览器访问
192.168.200.100:8000
http启动示例(抓包端口由启动的端口决定)

浏览访问图例(包端口由启动的端口决定,ip为启动http的服务器地址)

抓包示例
08:19:53.620075 ens33 In IP bogon.55203 > bogon.8000: Flags [S], seq 3574316881, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620109 ens33 Out IP bogon.8000 > bogon.55203: Flags [S.], seq 702696800, ack 3574316882, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620361 ens33 In IP bogon.55204 > bogon.8000: Flags [S], seq 4033216645, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620361 ens33 In IP bogon.55203 > bogon.8000: Flags [.], ack 1, win 4106, length 0
08:19:53.620373 ens33 Out IP bogon.8000 > bogon.55204: Flags [S.], seq 1391373289, ack 4033216646, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620666 ens33 In IP bogon.55204 > bogon.8000: Flags [.], ack 1, win 4106, length 0
08:19:53.621269 ens33 In IP bogon.55203 > bogon.8000: Flags [P.], seq 1:483, ack 1, win 4106, length 482
08:19:53.621284 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 483, win 126, length 0
08:19:53.625022 ens33 Out IP bogon.8000 > bogon.55203: Flags [P.], seq 1:156, ack 483, win 126, length 155
08:19:53.625126 ens33 Out IP bogon.8000 > bogon.55203: Flags [FP.], seq 156:960, ack 483, win 126, length 804
08:19:53.625287 ens33 In IP bogon.55203 > bogon.8000: Flags [.], ack 961, win 4102, length 0
08:19:53.627360 ens33 In IP bogon.55203 > bogon.8000: Flags [F.], seq 483, ack 961, win 4102, length 0
08:19:53.627499 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 484, win 126, length 0
08:19:53.786086 ens33 In IP bogon.55204 > bogon.8000: Flags [P.], seq 1:432, ack 1, win 4106, length 431
08:19:53.786125 ens33 Out IP bogon.8000 > bogon.55204: Flags [.], ack 432, win 126, length 0
08:19:53.800467 ens33 Out IP bogon.8000 > bogon.55204: Flags [P.], seq 1:186, ack 432, win 126, length 185
08:19:53.801092 ens33 Out IP bogon.8000 > bogon.55204: Flags [FP.], seq 186:521, ack 432, win 126, length 335
08:19:53.801272 ens33 In IP bogon.55204 > bogon.8000: Flags [.], ack 522, win 4104, length 0
08:19:53.803479 ens33 In IP bogon.55204 > bogon.8000: Flags [F.], seq 432, ack 522, win 4104, length 0
08:19:53.803500 ens33 Out IP bogon.8000 > bogon.55204: Flags [.], ack 433, win 126, length 0
TCP三次握手
08:19:53.620075 ens33 In IP bogon.55203 > bogon.8000: Flags [S], seq 3574316881, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
08:19:53.620109 ens33 Out IP bogon.8000 > bogon.55203: Flags [S.], seq 702696800, ack 3574316882, win 64240, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
08:19:53.620361 ens33 In IP bogon.55203 > bogon.8000: Flags [.], ack 1, win 4106, length 0
TCP四次挥手
08:19:53.625126 ens33 Out IP bogon.8000 > bogon.55203: Flags [FP.], seq 156:960, ack 483, win 126, length 804
08:19:53.625287 ens33 In IP bogon.55203 > bogon.8000: Flags [.], ack 961, win 4102, length 0
08:19:53.627360 ens33 In IP bogon.55203 > bogon.8000: Flags [F.], seq 483, ack 961, win 4102, length 0
08:19:53.627499 ens33 Out IP bogon.8000 > bogon.55203: Flags [.], ack 484, win 126, length 0
UDP抓包
通用格式
time src > dst: flags udp length
抓包示例
08:28:03.262132 ens33 B IP bogon.netbios-dgm > 192.168.200.255.netbios-dgm: UDP, length 201