1. 程式人生 > >tcpdump抓包工具

tcpdump抓包工具

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利用他過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果表達式為空,則會捕獲所有所有的信息包

表達式類型:

  1. 類型關鍵字
    • host 192.168.30.10 指定一臺主機(默認)
    • net 192.168.30.0 指定一個網絡段
    • port 80 指定端口號
  2. 方向關鍵字
    • 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必須同時滿足
  3. 協議關鍵字
    • fddi FDDI(分布式光纖數據接口網絡)上的特定的網絡協議
    • ip
    • arp
    • rarp
    • tcp
    • utp
  4. 其他不常用關鍵字還有gateway,broadcast,less,greater,還有三種邏輯運算,取非運算是 ‘not ‘ ‘! ‘,與運算是‘and‘,‘&&‘;或運算 是‘or‘,‘││‘;這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要。

三.日常使用例子

  1. 抓取當前主機所有數據包,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 
  2. 抓取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
  3. 讀取-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
  4. 抓取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
  5. 抓取源地址為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
  6. 抓取指定主機的數據包

    # 抓取指定主機的數據包
    [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抓包工具