tcpdump抓包工具
阿新 • • 發佈:2018-10-19
ive link 簡單 網絡管理 直接 抓取 可擴展性 less read
tcpdump抓包工具
一:TCPDump介紹
? TcpDump可以將網絡中傳送的數據包的“頭”完全截獲下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。tcpdump就是一種免費的網絡分析工具,尤其其提供了源代碼,公開了接口,因此具備很強的可擴展性,對於網絡維護和入侵者都是非常有用的工具。tcpdump存在於基本的FreeBSD系統中,由於它需要將網絡界面設置為混雜模式,普通用戶不能正常執行,但具備root權限的用戶可以直接執行它來獲取網絡上的信息。因此系統中存在網絡分析工具主要不是對本機安全的威脅,而是對網絡上的其他計算機的安全存在威脅。
二:日常使用
1.參數介紹
tcpdump
- -i 指定網絡接口
- -c 指定要監控的包的數量
- -w 將抓包結果以文件的形式存放
- -a 將網絡地址和廣播地址轉變成名字;
- -d 將匹配信息包的代碼以人們能夠理解的匯編格式給出;
- -dd 將匹配信息包的代碼以c語言程序段的格式給出;
- -ddd 將匹配信息包的代碼以十進制的形式給出;
- -e 在輸出行打印出數據鏈路層的頭部信息;
- -f 將外部的Internet地址以數字的形式打印出來;
- -l 使標準輸出變為緩沖行形式;
- -n 不把網絡地址轉換成名字;
- -t 在輸出的每一行不打印時間戳;
- -v 輸出一個稍微詳細的信息,例如在ip包中可以包括ttl和服務類型的信息;
- -vv 輸出詳細的報文信息;
- -F 從指定的文件中讀取表達式,忽略其它的表達式;
- -r 從指定的文件中讀取包(這些包一般通過-w選項產生);
- -T 將監聽到的包直接解釋為指定的類型的報文,常見的類型有rpc (遠程過程調用)和snmp(簡單網絡管理協議;)
2.表達式介紹
? 表達式是一個正則表達式,tcpdump利用他過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果表達式為空,則會捕獲所有所有的信息包
表達式類型:
- 類型關鍵字
- host 192.168.30.10 指定一臺主機(默認)
- net 192.168.30.0 指定一個網絡段
- port 80 指定端口號
- 方向關鍵字
- src 192.168.30.10 指定包中的源地址
- dst 192.168.30.20 指定包中的目的地址
- dst 192.168.30.20 or src 192.168.30.20 dst和src滿足一個就獲取
- dst 192.168.30.20 and src 192.168.30.20 dst和src必須同時滿足
- 協議關鍵字
- fddi FDDI(分布式光纖數據接口網絡)上的特定的網絡協議
- ip
- arp
- rarp
- tcp
- utp
- 其他不常用關鍵字還有gateway,broadcast,less,greater,還有三種邏輯運算,取非運算是 ‘not ‘ ‘! ‘,與運算是‘and‘,‘&&‘;或運算 是‘or‘,‘││‘;這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要。
三.日常使用例子
抓取當前主機所有數據包,tcpdump默認在當前終端運行
[root@mweb07 ~]# tcpdump tcpdump: WARNING: eth0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 10:03:25.585291 IP 172.20.10.2.hsrp > all-routers.mcast.net.hsrp: HSRPv0-hello 20: state=active group=10 addr=172.20.10.1 10:03:26.680044
抓取100個數據包,並且在指定的文件存放起來,默認tcpdump文件是不允許直接查看的
[root@mweb07 ~]# tcpdump -c 100 -w tcpdump.out tcpdump: WARNING: eth0: no IPv4 address assigned tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 100 packets captured # 抓取100個包後,他就會自動停止 100 packets received by filter 0 packets dropped by kernel
讀取-w參數導出的文件
[root@mweb07 ~]# tcpdump -r 443_tcpdump.out reading from file 443_tcpdump.out, link-type EN10MB (Ethernet) 10:22:49.771433 IP 180.168.69.242.50838 > mweb07.https: Flags [.], seq 1094068907:1094068908, ack 4179967795, win 16537, length 1 10:22:49.771447 IP mweb07.https > 180.168.69.242.50838: Flags [R], seq 4179967795, win 0, length 0 10:22:51.525702 IP 180.168.69.242.50836 > mweb07.https: Flags [F.], seq 932060733, ack 2342938202, win 16344, length 0
抓取6379端口的100個包
[root@mweb07 ~]# tcpdump -i bond0 -c 100 -w 443_tcpdump.out tcp port 443 tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes 100 packets captured 102 packets received by filter 0 packets dropped by kernel
抓取源地址為180.168.69.242,端口為443的數據包
[root@mweb07 ~]# tcpdump -i bond0 -c 3 -w 443_tcpdump.out src 180.168.69.242 and tcp port 443 tcpdump: listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes 3 packets captured 3 packets received by filter 0 packets dropped by kernel
抓取指定主機的數據包
# 抓取指定主機的數據包 [root@mweb07 ~]# tcpdump -i bond0 -c 10 host 172.20.10.17 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes 10:28:40.375233 IP mweb07.34822 > mweb08.vrace: Flags [P.], seq 2258399624:2258400017, ack 3133621198, win 18960, options [nop,nop,TS val 941802562 ecr 941809211], length 393 10:28:40.375935 IP mweb08.vrace > mweb07.34822: Flags [.], seq 1:4345, ack 393, win 2841, options [nop,nop,TS val 941811328 ecr 941802562], length 4344 10:28:40.375945 IP mweb07.34822 > mweb08.vrace: Flags [.], ack 4345, win 18960, options [nop,nop,TS val 941802563 ecr 941811328], length 0 10:28:40.375957 IP mweb08.vrace > mweb07.34822: Flags [.], seq 4345:7241, ack 393, win 2841, options [nop,nop,TS val 941811328 ecr 941802562], length 2896 10:28:40.375960 IP mweb07.34822 > mweb08.vrace: Flags [.], ack 7241, win 18960, options [nop,nop,TS val 941802563 ecr 941811328], length 0 10:28:40.376008 IP mweb08.vrace > mweb07.34822: Flags [.], seq 7241:10137, ack 393, win 2841, options [nop,nop,TS val 941811328 ecr 941802562], length 2896 10:28:40.376012 IP mweb07.34822 > mweb08.vrace: Flags [.], ack 10137, win 18960, options [nop,nop,TS val 941802563 ecr 941811328], length 0 10:28:40.376015 IP mweb08.vrace > mweb07.34822: Flags [P.], seq 10137:10298, ack 393, win 2841, options [nop,nop,TS val 941811328 ecr 941802562], length 161 10:28:40.376017 IP mweb07.34822 > mweb08.vrace: Flags [.], ack 10298, win 18960, options [nop,nop,TS val 941802563 ecr 941811328], length 0 10:28:40.397701 IP mweb07.46871 > mweb08.6379: Flags [P.], seq 2597564002:2597564092, ack 617045751, win 1260, options [nop,nop,TS val 941802584 ecr 941811100], length 90 10 packets captured 10 packets received by filter 0 packets dropped by kernel # 可以發現,如果兩臺主機之間沒有通信,是無法抓取的 [root@mweb07 ~]# tcpdump -i bond0 -c 10 host 172.20.10.10 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on bond0, link-type EN10MB (Ethernet), capture size 65535 bytes四:日常場景
tcpdump抓包工具