天天看點

【linux】tcpdcmp抓包和分析

目錄

    • 一、簡介:
    • 二、安裝
    • 三、文法
    • 四、開始抓包(管理者權限操作)
    • 五、抓包後使用Wireshark分析資料包
    • 六、停止抓包

一、簡介:

tcpdump 是一款靈活、功能強大的抓包工具,能有效地幫助排查網絡故障問題。

tcpdump官網詳細介紹

二、安裝

在 Linux 中安裝 tcpdump(centos)

$ sudo yum install -y tcpdump

$ which tcpdump
/usr/sbin/tcpdump
           

三、文法

tcpdump [-adeflnNOpqStvx][-c<資料包數目>][-dd][-ddd][-F<表達檔案>][-i<網絡界面>][-r<資料封包件>][-s<資料包大小>][-tt][-T<資料包類型>][-vv][-w<資料封包件>][輸出資料欄位]

參數說明:
-a 嘗試将網絡和廣播位址轉換成名稱。
-c<資料包數目> 收到指定的資料包數目後,就停止進行傾倒操作。
-d 把編譯過的資料包編碼轉換成可閱讀的格式,并傾倒到标準輸出。
-dd 把編譯過的資料包編碼轉換成C語言的格式,并傾倒到标準輸出。
-ddd 把編譯過的資料包編碼轉換成十進制數字的格式,并傾倒到标準輸出。
-e 在每列傾倒資料上顯示連接配接層級的檔案頭。
-f 用數字顯示網際網絡位址。
-F<表達檔案> 指定内含表達方式的檔案。
-i<網絡界面> 使用指定的網絡截面送出資料包。
-l 使用标準輸出列的緩沖區。
-n 不把主機的網絡位址轉換成名字。
-N 不列出域名。
-O 不将資料包編碼最佳化。
-p 不讓網絡界面進入混雜模式。
-q 快速輸出,僅列出少數的傳輸協定資訊。
-r<資料封包件> 從指定的檔案讀取資料包資料。
-s<資料包大小> 設定每個資料包的大小。
-S 用絕對而非相對數值列出TCP關聯數。
-t 在每列傾倒資料上不顯示時間戳記。
-tt 在每列傾倒資料上顯示未經格式化的時間戳記。
-T<資料包類型> 強制将表達方式所指定的資料包轉譯成設定的資料包類型。
-v 詳細顯示指令執行過程。
-vv 更詳細顯示指令執行過程。
-x 用十六進制字碼列出資料包資料。
-w<資料封包件> 把資料包資料寫入指定的檔案
           

四、開始抓包(管理者權限操作)

#顯示TCP包資訊
tcpdcmp

#顯示指定數量包
tcpdump -c 20

#精簡版:顯示指定數量包
tcpdump -c 10 -q

#列出可以抓包的網絡接口
tcpdump -D

# any 可用于抓取所有活動的網絡接口的資料包
tcpdump -i any

#抓包5個之後停止
tcpdump -i any -c 5

# 抓包5個并顯示ip和端口号
tcpdump -i any -c5 -nn

#抓包後儲存為Wireshark可以打開的檔案,在第三方工具中分析
tcpdump -w test.pcap


           

五、抓包後使用Wireshark分析資料包

tcpdump -w test.pcap抓包後,用Wireshark打開test.pcap檔案分析

  • IP過濾:包括源IP或者目的IP
ip.src addr==192.168.0.208 or ip.src addr eq 192.168.0.208 顯示來源IP

ip.dst addr==192.168.0.208 or ip.dst addr eq 192.168.0.208 顯示目标IP

ip.src ==192.168.1.107 or ip.dst ==192.168.1.107
           
  • 端口過濾:
tcp.port eq 80 // 不管端口是來源的還是目标的都顯示

tcp.port == 80

tcp.port eq 2722

tcp.port eq 80 or udp.port eq 80

tcp.dstport == 80 // 隻顯tcp協定的目标端口80

tcp.srcport == 80 // 隻顯tcp協定的來源端口80

過濾端口範圍

tcp.port >= 1 and tcp.port <= 80
           
  • 協定過濾:

    tcp、udp、arp、icmp、http、smtp、ftp、dns、msnms、ip、ssl等

排除ssl包,如!ssl 或者 not ssl

  • 包長度過濾:
udp.length == 26 這個長度是指udp本身固定長度8加上udp下面那塊資料包之和

tcp.len >= 7 指的是ip資料包(tcp下面那塊資料),不包括tcp本身

ip.len == 94 除了以太網頭固定長度14,其它都算是ip.len,即從ip本身到最後

frame.len == 119 整個資料包長度,從eth開始到最後
           
  • http模式過濾:
http.request.method == “GET”

http.request.method == “POST”

http.request.uri == “/img/logo-edu.gif”

http contains “GET”

http contains “HTTP/1.”

// GET包包含某頭字段

http.request.method == “GET” && http contains “Host: ”

http.request.method == “GET” && http contains “User-Agent: ”

// POST包包含某頭字段

http.request.method == “POST” && http contains “Host: ”

http.request.method == “POST” && http contains “User-Agent: ”

// 響應包包含某頭字段

http contains “HTTP/1.1 200 OK” && http contains “Content-Type: ”

http contains “HTTP/1.0 200 OK” && http contains “Content-Type: ”
           
  • 連接配接符 and / or
  • 表達式:
!(arp.src==192.168.1.1) and !(arp.dst.proto_ipv4==192.168.1.243)
           
  • expert.message是用來對info資訊過濾,主要配合contains來使用

六、停止抓包

Ctrl+C

繼續閱讀