Linux下的Tcpdump網絡包分析工具使用指南

TCPDUMP是一款網絡分析命令行工具,最初由Van Jacobson,Sally Floyd,Vern Paxson和Steven McCanne於1988年編寫,可以捕捉通過計算機所連接網絡發送和接收的各類數據包。TCPDUMP相比 Wireshark 更原始,兩者常常結合使用。

參數釋義

可以使用man tcpdump命令查看參數tcpdump使用手冊,以下是一些常見參數的釋義:

  • -i any : 監聽所有網絡接口
  • -i eth0 : 監聽網卡eth0
  • -D : 顯示所有可用接口
  • -n : 不解析主機名,可避免DNC查詢
  • -nn : 不解析主機名,也不將協議和端口號轉換爲名稱
  • -q : quiet,打印更少的協議信息
  • -t : 不在每行打印時間戳
  • -tttt : 以2019-12-31 02:03:48.523512這樣的可讀性最強的形式打印時間戳
  • -X : 在解析和打印時,除了打印每個數據包的報頭外,還以十六進制和ASCII格式打印每個數據包的數據
  • -XX : 與-X相同,並額外顯示以太網報頭
  • -v, -vv, -vvv : 逐漸增加信息的詳細程度
  • -c : 進捕獲指定數量的數據包
  • -s : 以字節爲單位定義捕獲的包大小
  • -S : 打印TCP序列號的絕對值
  • -e : 表示在輸出中包含鏈路層頭信息,例如可用於打印以太網和IEEE 802.11等協議的MAC層地址
  • -E :通過提供加密密鑰來解密IPSEC流量

TCPDUMP語法

Syntax:   Protocol   Direction   Host(s)   Value   Logical Operations   Other expression
Example:   tcp   dst   port   80   and   tcp dst host 10.2.2.2

語法示例

Protocol,值可爲:ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp。

如果未指定,則默認使用所有協議

Direction,值可爲: src, dst, src and dst, src or dst

如果不指定,則默認使用 “src or dst” ,例如,”host 10.2.2.2″ 等於 “src or dst host 10.2.2.2”

Host(s),值可爲: net, port, host, portrange。

如果不指定,則默認使用 “host” ,例如,”src 10.1.1.1″ 等於 “src host 10.1.1.1”.

Logical Operations,值可爲: not, and, or。

“not”優先級最高,”or”和”and” 優先級相同,例如 “not tcp port 3128 and tcp port 23” 等於 “(not tcp port 3128) and tcp port 23″,而不等於 “not (tcp port 3128 and tcp port 23)”。

常見用法示例

1、列出所有網絡接口:

$ tcpdump -D

1.eth0
2.eth1
3.eth2

2、抓取特定接口的包:

tcpdump -i eth1

3、抓取指定數量的包:

tcpdump -i eth1 -c 10

4、抓包並保存至文件:

tcpdump -i eth1 -w tmp.pcap

5、包大小設爲最大, 0即65535 :

tcpdump -i eth1 -w tmp.pcap -s 0

6、讀取一個本地文件:

tcpdump -tttt -r tmp.pcap

7、抓包時時間戳顯示爲可讀性最佳:

tcpdump -i eth1 -tttt

8、僅抓取指定協議的數據包:

tcpdump -i eth1 arp

9、僅抓取源地址或目的地址爲指定IP的數據包:

tcpdump host 1.2.3.4

10、僅抓取源地址爲指定IP的數據包、 僅抓取目的地址爲指定IP的數據包、:

tcpdump src 2.3.4.5 
tcpdump dst 3.4.5.6

11、抓取一個網段的流量,通常結合src和dst使用:

tcpdump net 1.2.3.0/24

12、抓取指定端口的流量:

tcpdump -i eth1 port 22
tcpdump -i eth1 src port 1026

13、根據數據包大小過濾流量,可以使用greater、less或者數學符號:

tcpdump -i eth1 less 32 
tcpdump -i eth1 greater 64 
tcpdump -i eth1 <= 128

14、抓取指定IP和端口的流量:

tcpdump -i eth1 dst 10.181.140.216 and port 22

15、顯示更詳細的數據包信息:

tcpdump -i eth1 -vvv

16、顯示鏈路層頭信息:

tcpdump -i eth1 -e -t
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
52:54:00:e1:1c:10 (oui Unknown) > 01:80:c2:00:00:00 (oui Unknown), 802.3, length 60: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43
52:54:00:e1:1c:10 (oui Unknown) > 01:80:c2:00:00:00 (oui Unknown), 802.3, length 60: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43

17、不顯示時間戳:

tcpdump -i eth2 -t

listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43
STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43

如果不加-t參數,則會看到如下信息:

tcpdump -i eth2

listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
08:44:51.295229 STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43
08:44:53.296795 STP 802.1d, Config, Flags [none], bridge-id 8000.52:54:00:e1:1c:10.8003, length 43

18、顯示IP地址而不是DNS名稱:

tcpdump -i eth1 -n

19、 以ASCII 編碼顯示數據包:

tcpdump -i eth1 -A

20、以十六進制ASCII顯示捕獲的數據包:

tcpdump -i eth1 -XX

一些特殊用法

1、查找http用戶代理:

tcpdump -vvAls0 | grep 'User-Agent:'

2、查找明文get請求:

tcpdump -vvAls0 | grep 'GET'

3、查找http host頭:

tcpdump -vvAls0 | grep 'Host:'

4、查找http cookies:

tcpdump -vvAls0 | grep 'Set-Cookie|Host:|Cookie:'

5、查找SSH連接,此命令不論ssh使用何端口都可以使用:

tcpdump 'tcp[(tcp[12]>>2):4] = 0x5353482D'

6、查找DNS流量:

tcpdump -vvAs0 port 53

7、查找ftp流量:

tcpdump -vvAs0 port ftp or ftp-data

8、查找ntp流量:

tcpdump -vvAs0 port 123

9、查找明文密碼:

tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user '

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章