目錄
-
- 一、簡介:
- 二、安裝
- 三、文法
- 四、開始抓包(管理者權限操作)
- 五、抓包後使用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