介紹
tcpdump 是一款強大的網絡抓包工具,運行在 linux 平臺上。熟悉 tcpdump 的使用能夠幫助你分析、調試網絡數據。
選項
-n 表示不要解析域名,直接顯示 ip。
-nn** 不要解析域名和端口。
-X 同時用 hex 和 ascii 顯示報文的內容。
-XX 同 -X,但同時顯示以太網頭部。
-S 顯示絕對的序列號(sequence number),而不是相對編號。
-i 監聽的網卡。
-v, -vv, -vvv 顯示更多的詳細信息。
-c number 截取 number 個報文,然後結束。
-A 只使用 ascii 打印報文的全部數據,不要和 -X 一起使用。
-D 列出所有可以監控的網卡。
過濾器
機器上的網絡報文數量異常的多,很多時候我們只關係和具體問題有關的數據報(比如訪問某個網站的數據,或者 icmp 超時的報文等等),而這些數據只佔到很小的一部分。把所有的數據截取下來,從裏面找到想要的信息無疑是一件很費時費力的工作。而 tcpdump 提供了靈活的語法可以精確地截取關心的數據報,簡化分析的工作量。這些選擇數據包的語句就是過濾器(filter)!
過濾器也可以簡單地分爲三類:type, dir 和 proto。
Type 讓你區分報文的類型,主要由 host(主機), net(網絡) 和 port(端口) 組成。src(源地址) 和 dst(目的地址) 也可以用來過濾報文的源地址和目的地址。
過濾的真正強大之處在於你可以隨意組合它們,而連接它們的邏輯就是常用的 與/AND/&& 、 或/OR/|| 和 非/not/!。
用例
1.監聽所有端口,直接顯示 ip 地址
tcpdump -nS
2.顯示更詳細的數據報文,包括 tos, ttl, checksum 等
tcpdump -nnvvS
3.顯示數據報的全部數據信息,用 hex 和 ascii 兩列對比輸出
tcpdump -nnvvXS
4.監控一個指定的網絡接口
tcpdump -i eth0
5.基於IP查找流量
tcpdump host 114.114.114.114
6.根據來源和目標進行篩選
tcpdump src 1.1.1.1 (源地址)
tcpdump dst 1.0.0.1 (目的地址)
tcpdump not src 1.1.1.1 (過濾源地址)
tcpdump not dst 1.0.0.1 (過濾目的地址)
7.查看某一網段或者子網的進出流量
tcpdump net 1.2.3.0/24
8.使用十六進制輸出
tcpdump -c 1 -X icmp
9.顯示特定端口的流量
tcpdump port 3389
tcpdump src port 1025
tcpdump dst port 1026
10.顯示特定協議的流量
tcpdump icmp
tcpdump udp
tcpdump tcp
11.查看某一範圍內的所有端口的流量
tcpdump portrange 21-23
12.將包存在文件中
tcpdump port 80 -w capture_file
13.從文件中讀取
tcpdump -r capture_file
14.來自特定的IP,發往特定的端口
tcpdump -nnvvS src 139.5.6.4 and dst port 3389
15.從某個網段來,到某個網段去
tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16
16.到某個IP的非ICMP流量
tcpdump dst 192.168.0.2 and src net and not icmp
tcpdump -vv src mars and not dst port 22
17.GET請求
tcpdump -vvAls0 | grep 'GET'
tcpdump -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
18.POST請求
tcpdump -vvAls0 | grep 'Host:'
tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
輸出
10:35:25.648675 IP chenlvzhoudembp.54018 > 192.168.1.1.domain: 18464+ PTR? 1.1.168.192.in-addr.arpa. (42)
10:35:25.650092 IP 192.168.1.1.domain > chenlvzhoudembp.54018: 18464* 1/0/0 PTR 192.168.1.1. (67)
10:35:25.895269 IP chenlvzhoudembp.58063 > 117.34.61.133.http: Flags [F.], seq 706908684, ack 3609747502, win 4096, length 0
10:35:25.896315 IP chenlvzhoudembp.52148 > 192.168.1.1.domain: 8596+ PTR? 133.61.34.117.in-addr.arpa. (44)
10:35:26.739836 IP chenlvzhoudembp.57928 > 14.215.177.39.https: Flags [F.], seq 907035098, ack 3372296595, win 4096, length 0
10:35:26.790594 IP 192.168.1.1.domain > chenlvzhoudembp.52148: 8596 NXDomain 0/1/0 (106)
第一列:時分秒毫秒
第二列:網絡協議
第三列:發送方的ip地址+端口號(或者協議)
第四列:>
第五列:接收方的ip地址+端口號(或者協議)
第六列:冒號
第七列:Flag標識符:
[S]:建立連接的標識SYN
[P]:發送數據的標識
[F]:結束連接的標識FIN
[.]:沒有標識