使用tcpdump抓包
Tcpdump 中的關(guān)鍵字主要有以下幾種
1.關(guān)于類型的關(guān)鍵字主要包括:host、net、port
2.確定傳輸方向的關(guān)鍵字主要包括:src、dst、dst or src、 dst and src。
3.第三種是協(xié)議的關(guān)鍵字,主要包括ip、arp、rarp、tcp、udp、icmp等類型。
4.其他重要的關(guān)鍵字:gateway, broadcast,less,greater。
5.三種邏輯運(yùn)算:取非運(yùn)算是not ,! ;與運(yùn)算是and,&&;或運(yùn)算 是or,││。多條件時(shí)可以用括號(hào),但是要用轉(zhuǎn)義。
使用:
一.初級(jí)篇
1.抓取指定網(wǎng)卡
tcpdump -i eth0
如果不加 -i參數(shù),默認(rèn)抓取所有網(wǎng)卡的數(shù)據(jù)包,包括回環(huán)網(wǎng)卡lo。
可以用-D 參數(shù)查看可以抓取的網(wǎng)卡。
2.抓取指定數(shù)量的包
tcpdump -c 10 -i eth0
3.保存抓取到的數(shù)據(jù)包
tcpdump -w save.file -i eth0
抓取到的數(shù)據(jù)包可以用wireshark分析,要確認(rèn)保存的目錄權(quán)限是777,否則會(huì)提示 Permission denied 。
4.讀取數(shù)包文件內(nèi)容
tcpdump -r save.file
5.顯示ip地址和端口號(hào)
tcpdump -n -i eth0 顯示ip
tcpdump -nn -i eth0 顯示ip+端口
默認(rèn)情況下抓包結(jié)果會(huì)顯示域名,端口會(huì)顯示對(duì)應(yīng)的協(xié)議,例如8.8.8.8顯示為8-8-8-8.rev.net.com.sg,而22端口顯示為ssh
6.抓包結(jié)果中顯示時(shí)間戳
tcpdump -tttt -i eth0
7.抓取指定協(xié)議的數(shù)據(jù)包
tcpdump -p udp -i eth0
-p也可以省略,支持協(xié)議ip、ip6、arp、rarp、tcp、udp、icmp
8.抓取指定端口的數(shù)據(jù)包
tcpdump port 80
9.以ASCII值顯示抓到的包
tcpdum -A -i eth0
二.中級(jí)篇
1.抓取包含8.8.8.8的數(shù)據(jù)
tcpdump -i eth0 -vnn host 8.8.8.8
2.抓取包含8.8.8.8/24段的數(shù)據(jù)包
tcpdump -i eth0 -vnn net 8.8.8.8/24
3.抓取源ip是8.8.8.8的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 8.8.8.8
4.抓取目的ip是8.8.8.8的數(shù)據(jù)包
tcpdump -i eth0 -vnn dst host 8.8.8.8
5.抓取源端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src port 22
6.抓取源ip是8.8.8.8 且包含端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 8.8.8.8 and dst port 22
7.抓取源ip是8.8.8.8 或者包含端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 8.8.8.8 or port 22
8.抓取源ip是8.8.8.8且端口不是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 8.8.8.8 and not port 22
9.抓取源ip是8.8.8.8且目的端口是22,或源ip是4.4.4.4且目的端口是80的數(shù)據(jù)包
tcpdump -i eth0 -vnn ( src host 8.8.8.8 and dst port 22 ) or ( src host 4.4.4.4 and dst port 80 )
10.抓取源ip是172.16.1.59且目的端口是22,或源ip是172.16.1.68且目的端口是80的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 172.16.1.59 and dst port 22 or src host 172.16.1.68 and dst port 80
11.從/tmp/fill記錄中讀取tcp協(xié)議的數(shù)據(jù)包
tcpdump –i eth0 -vnn -r /tmp/fil1 tcp
12.從/tmp/fill記錄中讀取包含172.16.1.58的數(shù)據(jù)包
tcpdump –i eth0 -vnn -r /tmp/fil1 host 172.16.1.58
13.摘取主機(jī)172.16.14.107和主機(jī)172.16.14.27或172.16.14.99的通信
tcpdump host 172.16.14.107 and (172.16.14.27 or 172.16.14.99 )
14.獲取主機(jī)172.16.14.107和排除172.16.14.27之后所有主機(jī)的數(shù)據(jù)包
tcpdump ip host 172.16.14.107 and ! 172.16.14.27
三.高級(jí)篇
1.打印所有源或目的端口是80, 網(wǎng)絡(luò)層協(xié)議為IPv4, 并且含有數(shù)據(jù),而不是SYN,FIN以及ACK-only等不含數(shù)據(jù)的數(shù)據(jù)包。
tcpdump tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)
2.抓取HTTP包
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 為"GET"前兩個(gè)字母"GE",0x4854 為"HTTP"前兩個(gè)字母"HT"。
3.抓取HTTP Request Headers
tcpdump -n -S -s 0 -A tcp dst port 80 | grep -B3 -A10 "GET /"