tcpdump网络数据分析工具使用

基本指令

指定网络接口

-i INTERFACE

先查看当前设备的网卡信息

┌──(root㉿kali)-[/home/kali]
└─# ip a s  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
...

然后就可以指定需要监听的网卡

eg:

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
08:47:31.678427 IP 192.168.120.158.ssh > 192.168.120.1.10554: Flags [P.], seq 2972386559:2972386747, ack 2171887499, win 501, length 188
08:47:31.733926 IP 192.168.120.1.10554 > 192.168.120.158.ssh: Flags [.], ack 188, win 251, length 0
08:47:31.782932 IP 192.168.120.158.45348 > 192.168.120.2.domain: 11681+ PTR? 1.120.168.192.in-addr.arpa. (44)
08:47:31.882058 ARP, Request who-has 192.168.120.158 tell 192.168.120.2, length 46
08:47:31.882074 ARP, Reply 192.168.120.158 is-at 00:0c:29:0e:6e:46 (oui Unknown), length 28

限定监听的包数量

-c number

eg:

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0 -c 5
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
08:48:38.247548 IP 192.168.120.158.ssh > 192.168.120.1.10554: Flags [P.], seq 2972394591:2972394779, ack 2171887975, win 501, length 188
08:48:38.303258 IP 192.168.120.1.10554 > 192.168.120.158.ssh: Flags [.], ack 188, win 250, length 0
08:48:38.324125 IP 192.168.120.158.34940 > 192.168.120.2.domain: 42203+ PTR? 1.120.168.192.in-addr.arpa. (44)
08:48:38.401428 IP 192.168.120.2.domain > 192.168.120.158.34940: 42203 0/0/0 (44)
08:48:38.401768 IP 192.168.120.158.55678 > 192.168.120.2.domain: 9223+ PTR? 158.120.168.192.in-addr.arpa. (46)
5 packets captured
10 packets received by filter
0 packets dropped by kernel

读取/写入流量文件

写入:-w filename

读取:-r filename

eg:

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0 -c 2 -w 1.pcap 
tcpdump: listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
2 packets captured
2 packets received by filter
0 packets dropped by kernel
                                                                                                                                                                                                          
┌──(root㉿kali)-[/home/kali]
└─# tcpdump -r 1.pcap -c 2        
reading from file 1.pcap, link-type EN10MB (Ethernet), snapshot length 262144
08:51:26.495118 IP 192.168.120.158.ssh > 192.168.120.1.10554: Flags [P.], seq 2972397563:2972397687, ack 2171889099, win 501, length 124
08:51:26.550057 IP 192.168.120.1.10554 > 192.168.120.158.ssh: Flags [.], ack 124, win 251, length 0

更多常用命令

Command Explanation
tcpdump -i INTERFACE 捕获特定网络接口的包
tcpdump -w FILE 将捕获的包写入文件
tcpdump -r FILE 读取捕获的文件中的数据包
tcpdump -c COUNT 捕获特定数量的数据包
tcpdump -n 捕获特定数量的数据包
tcpdump -nn 不要解析 IP 地址,不要解析协议号
tcpdump -v 详细显示;可以通过 -vv-vvv 增加详细程度

一些例子

tcpdump -i eth0 -c 50 -v 通过监听 eth0 接口捕获并显示 50 个数据包,该接口为有线以太网,并以详细方式显示。

tcpdump -i wlo1 -w data.pcap 通过监听 wlo1 接口(WiFi 接口)捕获数据包并将其写入到 data.pcap 。它将持续进行,直到用户通过按 CTRL-C 键中断捕获。

tcpdump -i any -nn 在所有接口上捕获数据包,并在屏幕上显示,不进行域名或协议解析。

过滤表达式

过滤主机/端口

主机过滤:

  • 源主机:src host IP or src host HOSTNAME

  • 目的主机dst host IP or dst host HOSTNAME

端口过滤:

port 22

eg:

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0 -c 2 port 22  
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
08:58:41.913942 IP 192.168.120.158.ssh > 192.168.120.1.10554: Flags [P.], seq 2972406287:2972406475, ack 2171892331, win 501, length 188
08:58:41.967610 IP 192.168.120.1.10554 > 192.168.120.158.ssh: Flags [.], ack 188, win 252, length 0
2 packets captured
2 packets received by filter
0 packets dropped by kernel

协议过滤

在过滤的时候直接指定协议即可,一些常见协议:ip、ip6、udp、tcp、arp(建立通讯的MAC地址广播)、icmp

eg:

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0 -c 2 icmp   
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
09:01:54.201284 IP 192.168.120.158 > 39.156.70.239: ICMP echo request, id 1, seq 15, length 64
09:01:54.285802 IP 39.156.70.239 > 192.168.120.158: ICMP echo reply, id 1, seq 15, length 64
2 packets captured
2 packets received by filter
0 packets dropped by kernel

注:dns的报文不是直接指定 dns,而是 port domain or port 53

逻辑运算符

and : 捕获同时满足两个条件的包。例如, tcpdump host 1.1.1.1 and tcp 捕获带有 host 1.1.1.1tcp 流量。

or: 捕获当任一条件为真时的数据包。例如, tcpdump udp or icmp 捕获 UDP 或 ICMP 流量。

not :当条件不成立时捕获数据包。例如, tcpdump not tcp 捕获除 TCP 段之外的所有数据包;我们预计结果中会有 UDP、ICMP 和 ARP 数据包。

高级过滤

长度筛选

greater LENGTH :过滤长度大于或等于指定长度的数据包

less LENGTH :过滤长度小于或等于指定长度的数据包

进制运算&头部字节

& (并且)接受两个位,除非两个输入都是 1,否则返回 0,如下表所示。

| (或)接受两个位,除非两个输入都是 0,否则返回 1。这在下表中显示。

! (非)取一个比特并对其进行反转;输入为 1 时给出 0,输入为 0 时给出 1,如下表所示。

proto[expr:size] 引用头部中任何字节的 内容,其中:

  • proto 指的是协议。例如, arpethericmpipip6tcpudp 分别代表 ARP、以太网、ICMP、IPv4、IPv6、TCP 和 UDP。
  • expr 表示字节偏移量,其中 0 指的是第一个字节。
  • size 表示我们感兴趣的字节数,可以是 1、2 或 4 字节。它是可选的,默认为 1。

TCP中常见的头部标志字段

  • tcp-syn TCP 同步(SYN)
  • tcp-ack TCP 确认(确认)
  • tcp-fin TCP FIN(结束)
  • tcp-rst TCP 重置(RST)
  • tcp-push TCP 推送

案例

  • tcpdump "tcp[tcpflags] == tcp-syn" 仅捕获设置了 SYN(同步)标志的 TCP 数据包,而其他所有标志均未设置。
  • tcpdump "tcp[tcpflags] & tcp-syn != 0" 用于捕获至少设置了 SYN(同步)标志的 TCP 数据包。
  • tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0" 用于捕获至少设置了 SYN(同步)或 ACK(确认)标志的 TCP 数据包。

显示数据包

常用选项

  • -q :快速输出;打印简短的包信息
  • -e :打印链路层头部
  • -A :以 ASCII 格式显示数据包内容
  • -xx: 显示数据包数据为十六进制格式
  • -X :显示数据包的十六进制和 ASCII 格式的头部和数据

eg:捕获 icmp 协议的数据包,以ASCII和十六进制显示

┌──(root㉿kali)-[/home/kali]
└─# tcpdump -i eth0 -c 2 icmp -qnX 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
09:12:01.226434 IP 192.168.120.158 > 39.156.70.46: ICMP echo request, id 2, seq 51, length 64
	0x0000:  4500 0054 bf95 4000 4001 d402 c0a8 789e  E..T..@.@.....x.
	0x0010:  279c 462e 0800 6288 0002 0033 a193 cd67  '.F...b....3...g
	0x0020:  0000 0000 6474 0300 0000 0000 1011 1213  ....dt..........
	0x0030:  1415 1617 1819 1a1b 1c1d 1e1f 2021 2223  .............!"#
	0x0040:  2425 2627 2829 2a2b 2c2d 2e2f 3031 3233  $%&'()*+,-./0123
	0x0050:  3435 3637                                4567
09:12:01.298879 IP 39.156.70.46 > 192.168.120.158: ICMP echo reply, id 2, seq 51, length 64
	0x0000:  4500 0054 239a 0000 8001 6ffe 279c 462e  E..T#.....o.'.F.
	0x0010:  c0a8 789e 0000 6a88 0002 0033 a193 cd67  ..x...j....3...g
	0x0020:  0000 0000 6474 0300 0000 0000 1011 1213  ....dt..........
	0x0030:  1415 1617 1819 1a1b 1c1d 1e1f 2021 2223  .............!"#
	0x0040:  2425 2627 2829 2a2b 2c2d 2e2f 3031 3233  $%&'()*+,-./0123
	0x0050:  3435 3637                                4567
2 packets captured
2 packets received by filter
0 packets dropped by kernel
posted @ 2025-12-04 16:29  shinianyunyan  阅读(1)  评论(0)    收藏  举报