1煮落,安裝tcpdump
tcpdump和ethereal可以用來(lái)獲取和分析網(wǎng)絡(luò)通訊活動(dòng)蝉仇,他們都是使用libpcap庫(kù)來(lái)捕獲網(wǎng)絡(luò)封包的殖蚕。
在混雜模式下他們可以監(jiān)控網(wǎng)絡(luò)適配器的所有通訊活動(dòng)并捕獲網(wǎng)卡所接收的所有幀睦疫。
要想設(shè)置網(wǎng)絡(luò)接口為混雜模式并執(zhí)行這些命令來(lái)捕獲所有的網(wǎng)絡(luò)封包,需要具有超級(jí)用戶的權(quán)限宛官。
你可以使用這些工具來(lái)探究網(wǎng)絡(luò)相關(guān)問(wèn)題底洗。你可以發(fā)現(xiàn)TCP/IP重發(fā)咕娄、窗口大小的縮放亥揖、名字解析的問(wèn)題、網(wǎng)絡(luò)配置錯(cuò)誤等圣勒。
注意這些工具只能監(jiān)控網(wǎng)絡(luò)適配器所接收到的幀费变,并不能監(jiān)控到整個(gè)網(wǎng)絡(luò)的通訊情況。
一些系統(tǒng)默認(rèn)沒(méi)有安裝圣贸,我們需要yum安裝下這個(gè)命令:
yum install tcpdump -y
2.參數(shù)介紹
參數(shù)介紹:
-A 以ASCII格式打印出所有分組挚歧,并將鏈路層的頭最小化。
-c 在收到指定的數(shù)量的分組后吁峻,tcpdump就會(huì)停止昼激。
-C 在將一個(gè)原始分組寫(xiě)入文件之前庇绽,檢查文件當(dāng)前的大小是否超過(guò)了參數(shù)file_size
中指定的大小橙困。如果超過(guò)了指定大小瞧掺,則關(guān)閉當(dāng)前文件,然后在打開(kāi)一個(gè)新的文件凡傅。參數(shù) file_size
的單位是兆字節(jié)(是1,000,000字節(jié)辟狈,而不是1,048,576字節(jié))。
-d 將匹配信息包的代碼以人們能夠理解的匯編格式給出夏跷。
-dd 將匹配信息包的代碼以c語(yǔ)言程序段的格式給出哼转。
-ddd 將匹配信息包的代碼以十進(jìn)制的形式給出。
-D 打印出系統(tǒng)中所有可以用tcpdump截包的網(wǎng)絡(luò)接口槽华。
-e 在輸出行打印出數(shù)據(jù)鏈路層的頭部信息壹蔓。
-E 用spi@ipaddr algo:secret解密那些以addr作為地址,并且包含了安全參數(shù)索引值spi的IPsec ESP分組猫态。
-f 將外部的Internet地址以數(shù)字的形式打印出來(lái)佣蓉。
-F 從指定的文件中讀取表達(dá)式,忽略命令行中給出的表達(dá)式亲雪。
-i 指定監(jiān)聽(tīng)的網(wǎng)絡(luò)接口勇凭。
-l 使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式。
-L 列出網(wǎng)絡(luò)接口的已知數(shù)據(jù)鏈路义辕。
-m 從文件module中導(dǎo)入SMI MIB模塊定義虾标。該參數(shù)可以被使用多次,以導(dǎo)入多個(gè)MIB模塊灌砖。
-M 如果tcp報(bào)文中存在TCP-MD5選項(xiàng)璧函,則需要用secret作為共享的驗(yàn)證碼用于驗(yàn)證TCP-MD5選選項(xiàng)摘要(詳情可參考RFC 2385)。
-n 不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字基显。
-N 不輸出主機(jī)名中的域名部分蘸吓。例如,link.linux265.com 只輸出link续镇。
-t 在輸出的每一行不打印時(shí)間戳美澳。
-O 不運(yùn)行分組分組匹配(packet-matching)代碼優(yōu)化程序。
-P 不將網(wǎng)絡(luò)接口設(shè)置成混雜模式摸航。
-q 快速輸出制跟。只輸出較少的協(xié)議信息。
-r 從指定的文件中讀取包(這些包一般通過(guò)-w選項(xiàng)產(chǎn)生)酱虎。
-S 將tcp的序列號(hào)以絕對(duì)值形式輸出雨膨,而不是相對(duì)值。
-s 從每個(gè)分組中讀取最開(kāi)始的snaplen個(gè)字節(jié)读串,而不是默認(rèn)的68個(gè)字節(jié)聊记。
-T 將監(jiān)聽(tīng)到的包直接解釋為指定的類型的報(bào)文撒妈,常見(jiàn)的類型有rpc遠(yuǎn)程過(guò)程調(diào)用)和snmp(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議;)排监。
-t 不在每一行中輸出時(shí)間戳狰右。
-tt 在每一行中輸出非格式化的時(shí)間戳。
-ttt 輸出本行和前面一行之間的時(shí)間差舆床。
-tttt 在每一行中輸出由date處理的默認(rèn)格式的時(shí)間戳棋蚌。
-u 輸出未解碼的NFS句柄。
-v 輸出一個(gè)稍微詳細(xì)的信息挨队,例如在ip包中可以包括ttl和服務(wù)類型的信息谷暮。
-vv 輸出詳細(xì)的報(bào)文信息。
-w 直接將分組寫(xiě)入文件中盛垦,而不是不分析并打印出來(lái)湿弦。
-x 以16進(jìn)制數(shù)形式顯示每一個(gè)報(bào)文 (去掉鏈路層報(bào)頭) . 可以顯示較小的完整報(bào)文, 否則只顯示snaplen個(gè)字節(jié).
-xx 以16進(jìn)制數(shù)形式顯示每一個(gè)報(bào)文(包含鏈路層包頭)。
-X 以16進(jìn)制和ASCII碼形式顯示每個(gè)報(bào)文(去掉鏈路層報(bào)頭)腾夯。
-XX 以16進(jìn)制和ASCII嗎形式顯示每個(gè)報(bào)文(包含鏈路層報(bào)頭)颊埃。
-y 設(shè)置tcpdump 捕獲數(shù)據(jù)鏈路層協(xié)議類型
-Z 使tcpdump 放棄自己的超級(jí)權(quán)限(如果以root用戶啟動(dòng)tcpdump, tcpdump將會(huì)有超級(jí)用戶權(quán)限), 并把當(dāng)前tcpdump的用戶ID設(shè)置為user, 組ID設(shè)置為user首要所屬組的ID
2,tcpdump使用
常用的一些簡(jiǎn)單用法俯在,一般是抓取對(duì)應(yīng)網(wǎng)卡竟秫、端口娃惯、對(duì)應(yīng)IP等跷乐。
tcpdump -nn 本地網(wǎng)卡地址以及外部鏈接地址 ,并采用IP地址趾浅、端口表示愕提。 如果不加-nn 則會(huì)本機(jī)主機(jī)名以及外部客戶端myblast顯示。
tcpdump -i eth1 抓取網(wǎng)卡eth1包鏈接情況皿哨。如果不指定網(wǎng)卡浅侨,默認(rèn)抓取eth0數(shù)據(jù)包。
tcpdump -i eth1 port 80 抓取eth1網(wǎng)卡80端口鏈接情況证膨。
tcpdump -nn -i eth1 port 80 -c 20 抓取eth1網(wǎng)卡80端口鏈接情況并長(zhǎng)度20如输。
tcpdump -nn tcp 抓取tcp 鏈接包。如udp央勒,則將tcp改成udp即可不见。
tcpdump -nn -i eth1 port 80 and host 118.112.163.61 -c 10 抓取抓取eth1網(wǎng)卡80端口和鏈接地址118.112.163.61鏈接情況并長(zhǎng)度10。
tcpdump -nn -s0 -i eth1 port 80 and host 118.112.163.61 -c 10 同上相比崔步,加了參數(shù)-s0 代表抓取完整包稳吮。
tcpdump -i any host 192.168.1.1 #-i指定網(wǎng)卡為所有
tcpdump -i any host 192.168.1.1 -nn -v -w client.pcap
tcpdump -i any src host 192.168.1.1 -nn
tcpdump -nn -i any dst 192.168.1.1
tcpdump -nn -i any net 192.168.1.1/32
tcpdump -nn -i any -s 84 host 192.168.1.1 #imcp協(xié)議默認(rèn)為“56字節(jié)”數(shù)據(jù)字節(jié)+“28字節(jié)”的ICMP頭,一共是84字節(jié)
tcpdump -nn -i any -s 0 host 192.168.1.1
tcpdump -nn -i any -s 0 icmp #只抓icmp協(xié)議
tcpdump -nn -i any -s 60 tcp port 80 #作為演示井濒,這里只抓60個(gè)頭部字節(jié)
tcpdump -nn -i any -s 0 udp port 22
tcpdump -nn -i any tcp portrange 53-80
tcpdump -nn -i any -s 0 port 22
tcpdump -nn -i any -s 0 host 192.168.1.1 and icmp
tcpdump -nn -i any -s 0 host 192.168.1.1 or icmp or src net 192.168.1.1/32
tcpdump -nn -i any -s 0 ! net 172.16.0.0/16 and icmp and ! tcp
tcpdump -nn -i any -s 0 dst host 192.168.1.197 and icmp and src net 192.168.1.1/32 or ( host 192.168.1.1 ) and ! tcp
tcpdump -nn -s 0 -i any host 192.168.1.1 and greater 1000 and icmp
tcpdump -nn -s 0 -i any host 192.168.1.1 and less 1000 and icmp
tcpdump -nn -s 0 -i any host 192.168.1.1 and less 800 and greater 690
01灶似、抓取所有網(wǎng)絡(luò)包列林,并在terminal中顯示抓取的結(jié)果,將包以十六進(jìn)制的形式顯示酪惭。
tcpdump
02希痴、抓取所有的網(wǎng)絡(luò)包,并存到 result.cap 文件中春感。
tcpdump -w result.cap
03润梯、抓取所有的經(jīng)過(guò)eth0網(wǎng)卡的網(wǎng)絡(luò)包,并存到 result.cap 文件中甥厦。
tcpdump -i eth0 -w result.cap
04纺铭、抓取源地址是192.168.1.100的包,并將結(jié)果保存到 result.cap 文件中刀疙。
tcpdump src host 192.168.1.100 -w result.cap
05舶赔、抓取地址包含是192.168.1.100的包,并將結(jié)果保存到 result.cap 文件中谦秧。
tcpdump host 192.168.1.100 -w result.cap
06竟纳、抓取目的地址包含是192.168.1.100的包,并將結(jié)果保存到 result.cap 文件中疚鲤。
tcpdump dest host 192.168.1.100 -w result.cap
07锥累、抓取主機(jī)地址為 192.168.1.100 的數(shù)據(jù)包
tcpdump -i eth0 -vnn host 192.168.1.100
08、抓取包含192.168.1.0/24網(wǎng)段的數(shù)據(jù)包
tcpdump -i eth0 -vnn net 192.168.1.0/24
09集歇、抓取網(wǎng)卡eth0上所有包含端口22的數(shù)據(jù)包
tcpdump -i eth0 -vnn port 22
10桶略、抓取指定協(xié)議格式的數(shù)據(jù)包,協(xié)議格式可以是「udp,icmp,arp,ip」中的任何一種,例如以下命令:
tcpdump udp -i eth0 -vnn
11诲宇、抓取經(jīng)過(guò) eth0 網(wǎng)卡的源 ip 是 192.168.1.100 數(shù)據(jù)包际歼,src參數(shù)表示源。
tcpdump -i eth0 -vnn src host 192.168.1.100
12姑蓝、抓取經(jīng)過(guò) eth0 網(wǎng)卡目的 ip 是 192.168.1.100 數(shù)據(jù)包鹅心,dst參數(shù)表示目的。
tcpdump -i eth0 -vnn dst host 192.168.1.100
13纺荧、抓取源端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src port 22
14旭愧、抓取源ip是 192.168.1.100 且目的ip端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 192.168.1.100 and dst port 22
15、抓取源ip是192.168.1.100或者包含端口是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 192.168.1.100 or port 22
16宙暇、抓取源ip是192.168.1.100且端口不是22的數(shù)據(jù)包
tcpdump -i eth0 -vnn src host 192.168.1.100 and not port 22
17输枯、抓取源ip是192.168.1.100且目的端口是22,或源ip是192.168.1.102且目的端口是80的數(shù)據(jù)包客给。
tcpdump -i eth0 -vnn ( src host 192.168.1.100 and dst port 22 ) or ( src host 192.168.1.102 and dst port 80 )
18用押、把抓取的數(shù)據(jù)包記錄存到/tmp/result文件中,當(dāng)抓取100個(gè)數(shù)據(jù)包后就退出程序靶剑。
tcpdump –i eth0 -vnn -w /tmp/result -c 100
19蜻拨、從/tmp/result記錄中讀取tcp協(xié)議的數(shù)據(jù)包
tcpdump -i eth0 tcp -vnn -r /tmp/result
20池充、想要截獲所有192.168.1.100 的主機(jī)收到的和發(fā)出的所有的數(shù)據(jù)包:
tcpdump host 192.168.1.100
21、如果想要獲取主機(jī)192.168.1.100除了和主機(jī)192.168.1.101之外所有主機(jī)通信的ip包缎讼,使用命令:
tcpdump ip host 192.168.1.100 and ! 192.168.1.101
22收夸、如果想要獲取主機(jī) 192.168.1.100 接收或發(fā)出的 telnet 包,使用如下命令:
tcpdump tcp port 23 host192.168.1.100