0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Wireshark抓包和Tcpdump抓包實(shí)例分析!

jf_TEuU2tls ? 來(lái)源:浩道linux ? 2023-02-01 09:31 ? 次閱讀

前言

大家好,這里是浩道linux,主要給大家分享linux、python、網(wǎng)絡(luò)通信相關(guān)的IT知識(shí)平臺(tái)。

今天浩道跟大家分享2款網(wǎng)工生涯中必不可少的神器Wireshark及Tcpdump,掌握這2個(gè)神器的使用,運(yùn)維排查故障基本就是如魚得水。

一、wireshark是什么?

wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,簡(jiǎn)稱小鯊魚,功能十分強(qiáng)大??梢越厝「鞣N網(wǎng)絡(luò)封包,顯示網(wǎng)絡(luò)封包的詳細(xì)信息

wireshark是開(kāi)源軟件,可以放心使用??梢赃\(yùn)行在Windows和Mac OS上。對(duì)應(yīng)的,linux下的抓包工具是 tcpdump。使用wireshark的人必須了解網(wǎng)絡(luò)協(xié)議,否則就看不懂wireshark了。

二、Wireshark常用應(yīng)用場(chǎng)景

1. 網(wǎng)絡(luò)管理員會(huì)使用wireshark來(lái)檢查網(wǎng)絡(luò)問(wèn)題

2. 軟件測(cè)試工程師使用wireshark抓包,來(lái)分析自己測(cè)試的軟件

3. 從事socket編程的工程師會(huì)用wireshark來(lái)調(diào)試

4. 運(yùn)維人員用于日常工作,應(yīng)急響應(yīng)等等

總之跟網(wǎng)絡(luò)相關(guān)的東西,都可能會(huì)用到wireshark

三、Wireshark抓包原理

Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文交換。

Wireshark使用的環(huán)境大致分為兩種,一種是電腦直連網(wǎng)絡(luò)的單機(jī)環(huán)境,另外一種就是應(yīng)用比較多的網(wǎng)絡(luò)環(huán)境,即連接交換機(jī)的情況。

「單機(jī)情況」下,Wireshark直接抓取本機(jī)網(wǎng)卡的網(wǎng)絡(luò)流量;

「交換機(jī)情況」下,Wireshark通過(guò)端口鏡像、ARP欺騙等方式獲取局域網(wǎng)中的網(wǎng)絡(luò)流量。

端口鏡像:利用交換機(jī)的接口,將局域網(wǎng)的網(wǎng)絡(luò)流量轉(zhuǎn)發(fā)到指定電腦的網(wǎng)卡上。

ARP欺騙:交換機(jī)根據(jù)MAC地址轉(zhuǎn)發(fā)數(shù)據(jù),偽裝其他終端的MAC地址,從而獲取局域網(wǎng)的網(wǎng)絡(luò)流量。

四、Wireshark軟件安裝

軟件下載路徑:

d6e35f20-a1c6-11ed-bfe3-dac502259ad0.png

按照系統(tǒng)版本選擇下載,下載完成后,按照軟件提示一路Next安裝。

d7119e08-a1c6-11ed-bfe3-dac502259ad0.png

五、Wireshark抓包示例

先介紹一個(gè)使用wireshark工具抓取ping命令操作的示例,可以上手操作感受一下抓包的具體過(guò)程。

1、打開(kāi)wireshark,主界面如下:

d72d7b0a-a1c6-11ed-bfe3-dac502259ad0.png

2、選擇菜單欄上捕獲->選項(xiàng),勾選WLAN網(wǎng)卡。這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡(jiǎn)單的辦法可以看使用的IP對(duì)應(yīng)的網(wǎng)卡。點(diǎn)擊Start,啟動(dòng)抓包。

d73cbfa2-a1c6-11ed-bfe3-dac502259ad0.png

3、wireshark啟動(dòng)后,wireshark處于抓包狀態(tài)中。

d75b2b86-a1c6-11ed-bfe3-dac502259ad0.png

4、執(zhí)行需要抓包的操作,如在cmd窗口下執(zhí)行pingwww.baidu.com。

d76c73fa-a1c6-11ed-bfe3-dac502259ad0.png

5、操作完成后相關(guān)數(shù)據(jù)包就抓取到了,可以點(diǎn)擊 停止捕獲分組 按鈕。

d75b2b86-a1c6-11ed-bfe3-dac502259ad0.png

6、為避免其他無(wú)用的數(shù)據(jù)包影響分析,可以通過(guò)在過(guò)濾欄設(shè)置過(guò)濾條件進(jìn)行數(shù)據(jù)包列表過(guò)濾,獲取結(jié)果如下。說(shuō)明:ip.addr == 183.232.231.172 and icmp 表示只顯示ICPM協(xié)議且主機(jī)IP為183.232.231.172的數(shù)據(jù)包。說(shuō)明:協(xié)議名稱icmp要小寫。

d79fc502-a1c6-11ed-bfe3-dac502259ad0.png

7、wireshark抓包完成,并把本次抓包或者分析的結(jié)果進(jìn)行保存,就這么簡(jiǎn)單。關(guān)于wireshark顯示過(guò)濾條件、抓包過(guò)濾條件、以及如何查看數(shù)據(jù)包中的詳細(xì)內(nèi)容在后面介紹。

d7af85c8-a1c6-11ed-bfe3-dac502259ad0.png

六、Wireshakr抓包界面介紹

d7ce2032-a1c6-11ed-bfe3-dac502259ad0.png

Wireshark 的主界面包含6個(gè)部分:

菜單欄:用于調(diào)試、配置

工具欄:常用功能的快捷方式

過(guò)濾欄:指定過(guò)濾條件,過(guò)濾數(shù)據(jù)包

數(shù)據(jù)包列表:核心區(qū)域,每一行就是一個(gè)數(shù)據(jù)包

數(shù)據(jù)包詳情:數(shù)據(jù)包的詳細(xì)數(shù)據(jù)

數(shù)據(jù)包字節(jié):數(shù)據(jù)包對(duì)應(yīng)的字節(jié)流,二進(jìn)制

說(shuō)明:數(shù)據(jù)包列表區(qū)中不同的協(xié)議使用了不同的顏色區(qū)分。協(xié)議顏色標(biāo)識(shí)定位在菜單欄視圖-->著色規(guī)則。如下所示

d7e91324-a1c6-11ed-bfe3-dac502259ad0.png

WireShark 主要分為這幾個(gè)界面

1. Display Filter(顯示過(guò)濾器)

用于設(shè)置過(guò)濾條件進(jìn)行數(shù)據(jù)包列表過(guò)濾。菜單路徑:分析--> Display Filters

d80861d4-a1c6-11ed-bfe3-dac502259ad0.png

2. Packet List Pane(數(shù)據(jù)包列表)

顯示捕獲到的數(shù)據(jù)包,每個(gè)數(shù)據(jù)包包含編號(hào),時(shí)間戳,源地址,目標(biāo)地址,協(xié)議,長(zhǎng)度,以及數(shù)據(jù)包信息。不同協(xié)議的數(shù)據(jù)包使用了不同的顏色區(qū)分顯示。

d81952a0-a1c6-11ed-bfe3-dac502259ad0.png

3. Packet Details Pane(數(shù)據(jù)包詳細(xì)信息)

在數(shù)據(jù)包列表中選擇指定數(shù)據(jù)包,在數(shù)據(jù)包詳細(xì)信息中會(huì)顯示數(shù)據(jù)包的所有詳細(xì)信息內(nèi)容。數(shù)據(jù)包詳細(xì)信息面板是最重要的,用來(lái)查看協(xié)議中的每一個(gè)字段。各行信息分別為

(1)Frame:物理層的數(shù)據(jù)幀概況

(2)EthernetII:數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息

(3)Internet Protocol Version 4:互聯(lián)網(wǎng)層IP包頭部信息

(4)Transmission Control Protocol:傳輸層T的數(shù)據(jù)段頭部信息,此處是TCP

(5)Hypertext Transfer Protocol:應(yīng)用層的信息,此處是HTTP協(xié)議

d823f174-a1c6-11ed-bfe3-dac502259ad0.png

TCP包的具體內(nèi)容

從下圖可以看到wireshark捕獲到的TCP包中的每個(gè)字段。

d8312f6a-a1c6-11ed-bfe3-dac502259ad0.png

d8554c74-a1c6-11ed-bfe3-dac502259ad0.png

4. Dissector Pane(數(shù)據(jù)包字節(jié)區(qū))

報(bào)文原始內(nèi)容。

d877b084-a1c6-11ed-bfe3-dac502259ad0.png

七、Wireshark過(guò)濾器設(shè)置

初學(xué)者使用wireshark時(shí),將會(huì)得到大量的冗余數(shù)據(jù)包列表,以至于很難找到自己需要抓取的數(shù)據(jù)包部分。wireshark工具中自帶了兩種類型的過(guò)濾器,學(xué)會(huì)使用這兩種過(guò)濾器會(huì)幫助我們?cè)诖罅康臄?shù)據(jù)中迅速找到我們需要的信息。

1.抓包過(guò)濾器

捕獲過(guò)濾器的菜單欄路徑為捕獲-->捕獲過(guò)濾器。用于在抓取數(shù)據(jù)包前設(shè)置。

d89bf318-a1c6-11ed-bfe3-dac502259ad0.png

如何使用呢?設(shè)置如下。

d8aa54b2-a1c6-11ed-bfe3-dac502259ad0.png

ip host 183.232.231.172表示只捕獲主機(jī)IP為183.232.231.172的數(shù)據(jù)包。獲取結(jié)果如下:

d8e04f72-a1c6-11ed-bfe3-dac502259ad0.png

2. 顯示過(guò)濾器

顯示過(guò)濾器是用于在抓取數(shù)據(jù)包后設(shè)置過(guò)濾條件進(jìn)行過(guò)濾數(shù)據(jù)包。

通常是在抓取數(shù)據(jù)包時(shí)設(shè)置條件相對(duì)寬泛或者沒(méi)有設(shè)置導(dǎo)致抓取的數(shù)據(jù)包內(nèi)容較多時(shí)使用顯示過(guò)濾器設(shè)置條件過(guò)濾以方便分析。

d8ee668e-a1c6-11ed-bfe3-dac502259ad0.png

同樣上述場(chǎng)景,在捕獲時(shí)未設(shè)置抓包過(guò)濾規(guī)則直接通過(guò)網(wǎng)卡進(jìn)行抓取所有數(shù)據(jù)包。

d964084e-a1c6-11ed-bfe3-dac502259ad0.png

執(zhí)行ping www.baidu.com獲取的數(shù)據(jù)包列表如下

d979212a-a1c6-11ed-bfe3-dac502259ad0.png

觀察上述獲取的數(shù)據(jù)包列表,含有大量的無(wú)效數(shù)據(jù)。這時(shí)可以通過(guò)設(shè)置顯示器過(guò)濾條件進(jìn)行提取分析信息。ip.addr == 183.232.231.172,并進(jìn)行過(guò)濾。

d99add60-a1c6-11ed-bfe3-dac502259ad0.png

上述介紹了抓包過(guò)濾器和顯示過(guò)濾器的基本使用方法。在組網(wǎng)不復(fù)雜或者流量不大情況下,使用顯示器過(guò)濾器進(jìn)行抓包后處理就可以滿足我們使用。下面介紹一下兩者間的語(yǔ)法以及它們的區(qū)別。

八、wireshark過(guò)濾器表達(dá)式的規(guī)則

1.抓包過(guò)濾器語(yǔ)法和實(shí)例

抓包過(guò)濾器類型Type(host、net、port)、方向Dir(src、dst)、協(xié)議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運(yùn)算符(&&與、|| 或、!非)

(1)協(xié)議過(guò)濾

比較簡(jiǎn)單,直接在抓包過(guò)濾框中直接輸入?yún)f(xié)議名即可。

tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表

http,只查看HTTP協(xié)議的數(shù)據(jù)包列表

icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表

(2)IP過(guò)濾

host 192.168.1.104

src host192.168.1.104

dst host192.168.1.104

(3)端口過(guò)濾

port 80

src port 80

dst port 80

(4)邏輯運(yùn)算符&&與、|| 或、!非

src host 192.168.1.104 &&dst port 80 抓取主機(jī)地址為192.168.1.80、目的端口為80的數(shù)據(jù)包

host 192.168.1.104 || host 192.168.1.102 抓取主機(jī)為192.168.1.104或者192.168.1.102的數(shù)據(jù)包

!broadcast 不抓取廣播數(shù)據(jù)包

2.顯示過(guò)濾器語(yǔ)法和實(shí)例

(1)比較操作符

比較操作符有

== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于

(2)協(xié)議過(guò)濾

比較簡(jiǎn)單,直接在Filter框中直接輸入?yún)f(xié)議名即可。注意:協(xié)議名稱需要輸入小寫。

tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表

http,只查看HTTP協(xié)議的數(shù)據(jù)包列表

icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表

d9a9acaa-a1c6-11ed-bfe3-dac502259ad0.png

(3) ip過(guò)濾

ip.src ==112.53.42.42 顯示源地址為112.53.42.42的數(shù)據(jù)包列表

ip.dst==112.53.42.42, 顯示目標(biāo)地址為112.53.42.42的數(shù)據(jù)包列表

ip.addr == 112.53.42.42 顯示源IP地址或目標(biāo)IP地址為112.53.42.42的數(shù)據(jù)包列表

d9c13a32-a1c6-11ed-bfe3-dac502259ad0.png

(4)端口過(guò)濾

tcp.port ==80, 顯示源主機(jī)或者目的主機(jī)端口為80的數(shù)據(jù)包列表。

tcp.srcport == 80, 只顯示TCP協(xié)議的源主機(jī)端口為80的數(shù)據(jù)包列表。

tcp.dstport == 80,只顯示TCP協(xié)議的目的主機(jī)端口為80的數(shù)據(jù)包列表。

d9e2a398-a1c6-11ed-bfe3-dac502259ad0.png

(5)http模式過(guò)濾

http.request.method=="GET", 只顯示HTTP GET方法的。

da15859c-a1c6-11ed-bfe3-dac502259ad0.png

(6)邏輯運(yùn)算符為 and/or/not

過(guò)濾多個(gè)條件組合時(shí),使用and/or。比如獲取IP地址為192.168.0.104的ICMP數(shù)據(jù)包表達(dá)式為ip.addr == 192.168.0.104 and icmp

da239f24-a1c6-11ed-bfe3-dac502259ad0.png

(7)按照數(shù)據(jù)包內(nèi)容過(guò)濾

假設(shè)我要以ICMP層中的內(nèi)容進(jìn)行過(guò)濾,可以單擊選中界面中的碼流,在下方進(jìn)行選中數(shù)據(jù)。

da5f47fe-a1c6-11ed-bfe3-dac502259ad0.png

右鍵單擊選中后出現(xiàn)如下界面

da862c70-a1c6-11ed-bfe3-dac502259ad0.png

選中后在過(guò)濾器中顯示如下

da945e6c-a1c6-11ed-bfe3-dac502259ad0.png

后面條件表達(dá)式就需要自己填寫。如下我想過(guò)濾出data數(shù)據(jù)包中包含"abcd"內(nèi)容的數(shù)據(jù)流。關(guān)鍵詞是contains,完整條件表達(dá)式為data contains "abcd"

daac1b1a-a1c6-11ed-bfe3-dac502259ad0.png

看到這, 基本上對(duì)wireshak有了初步了解。

3. 常見(jiàn)用顯示過(guò)濾需求及其對(duì)應(yīng)表達(dá)式

數(shù)據(jù)鏈路層:

篩選mac地址為043813:26的數(shù)據(jù)包

eth.src == 043813:26

篩選源mac地址為043813:26的數(shù)據(jù)包----

eth.src == 043813:26

網(wǎng)絡(luò)層:

篩選ip地址為192.168.1.1的數(shù)據(jù)包

ip.addr == 192.168.1.1

篩選192.168.1.0網(wǎng)段的數(shù)據(jù)

ip contains "192.168.1"

傳輸層:

篩選端口為80的數(shù)據(jù)包

tcp.port == 80

篩選12345端口和80端口之間的數(shù)據(jù)包

tcp.port == 12345 &&tcp.port == 80

篩選從12345端口到80端口的數(shù)據(jù)包

tcp.srcport == 12345 &&tcp.dstport == 80

應(yīng)用層:

特別說(shuō)明: http中http.request表示請(qǐng)求頭中的第一行(如GET index.jsp HTTP/1.1) http.response表示響應(yīng)頭中的第一行(如HTTP/1.1 200 OK),其他頭部都用http.header_name形式。

篩選url中包含.php的http數(shù)據(jù)包

http.request.uri contains ".php"

篩選內(nèi)容包含username的http數(shù)據(jù)包

http contains "username"

九、Wireshark抓包分析TCP三次握手

1. TCP三次握手連接建立過(guò)程

Step1:客戶端發(fā)送一個(gè)SYN=1,ACK=0標(biāo)志的數(shù)據(jù)包給服務(wù)端,請(qǐng)求進(jìn)行連接,這是第一次握手;

Step2:服務(wù)端收到請(qǐng)求并且允許連接的話,就會(huì)發(fā)送一個(gè)SYN=1,ACK=1標(biāo)志的數(shù)據(jù)包給發(fā)送端,告訴它,可以通訊了,并且讓客戶端發(fā)送一個(gè)確認(rèn)數(shù)據(jù)包,這是第二次握手;

Step3:服務(wù)端發(fā)送一個(gè)SYN=0,ACK=1的數(shù)據(jù)包給客戶端端,告訴它連接已被確認(rèn),這就是第三次握手。TCP連接建立,開(kāi)始通訊。

dabae65e-a1c6-11ed-bfe3-dac502259ad0.png

2.Wireshark抓包獲取訪問(wèn)指定服務(wù)端數(shù)據(jù)包

Step1:?jiǎn)?dòng)wireshark抓包,打開(kāi)瀏覽器輸入www.baidu.com。

Step2:使用ping www.baidu.com獲取IP。

dae36688-a1c6-11ed-bfe3-dac502259ad0.png

Step3:輸入過(guò)濾條件獲取待分析數(shù)據(jù)包列表 ip.addr == 183.232.231.172

dafaa654-a1c6-11ed-bfe3-dac502259ad0.png

圖中可以看到wireshark截獲到了三次握手的三個(gè)數(shù)據(jù)包。第四個(gè)包才是HTTPS的, 這說(shuō)明HTTPS的確是使用TCP建立連接的。

第一次握手?jǐn)?shù)據(jù)包

客戶端發(fā)送一個(gè)TCP,標(biāo)志位為SYN,序列號(hào)為0, 代表客戶端請(qǐng)求建立連接。

db09e9b6-a1c6-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)包的關(guān)鍵屬性如下:

SYN :標(biāo)志位,表示請(qǐng)求建立連接

Seq = 0 :初始建立連接值為0,數(shù)據(jù)包的相對(duì)序列號(hào)從0開(kāi)始,表示當(dāng)前還沒(méi)有發(fā)送數(shù)據(jù)

Ack =0:初始建立連接值為0,已經(jīng)收到包的數(shù)量,表示當(dāng)前沒(méi)有接收到數(shù)據(jù)

第二次握手的數(shù)據(jù)包

服務(wù)器發(fā)回確認(rèn)包, 標(biāo)志位為 SYN,ACK。將確認(rèn)序號(hào)(Acknowledgement Number)字段+1,即0+1=1。

db1c7dce-a1c6-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)包的關(guān)鍵屬性如下:

[SYN + ACK]: 標(biāo)志位,同意建立連接,并回送SYN+ACK

Seq = 0 :初始建立值為0,表示當(dāng)前還沒(méi)有發(fā)送數(shù)據(jù)

Ack = 1:表示當(dāng)前端成功接收的數(shù)據(jù)位數(shù),雖然客戶端沒(méi)有發(fā)送任何有效數(shù)據(jù),確認(rèn)號(hào)還是被加1,因?yàn)榘琒YN或FIN標(biāo)志位。(并不會(huì)對(duì)有效數(shù)據(jù)的計(jì)數(shù)產(chǎn)生影響,因?yàn)楹蠸YN或FIN標(biāo)志位的包并不攜帶有效數(shù)據(jù))

第三次握手的數(shù)據(jù)包

客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1。并且把服務(wù)器發(fā)來(lái)ACK的序號(hào)字段+1,放在確定字段中發(fā)送給對(duì)方,并且在Flag段寫ACK的+1:

db419956-a1c6-11ed-bfe3-dac502259ad0.png

數(shù)據(jù)包的關(guān)鍵屬性如下:

ACK :標(biāo)志位,表示已經(jīng)收到記錄

Seq = 1 :表示當(dāng)前已經(jīng)發(fā)送1個(gè)數(shù)據(jù)

Ack = 1 : 表示當(dāng)前端成功接收的數(shù)據(jù)位數(shù),雖然服務(wù)端沒(méi)有發(fā)送任何有效數(shù)據(jù),確認(rèn)號(hào)還是被加1,因?yàn)榘琒YN或FIN標(biāo)志位(并不會(huì)對(duì)有效數(shù)據(jù)的計(jì)數(shù)產(chǎn)生影響,因?yàn)楹蠸YN或FIN標(biāo)志位的包并不攜帶有效數(shù)據(jù))。

就這樣通過(guò)了TCP三次握手,建立了連接。開(kāi)始進(jìn)行數(shù)據(jù)交互

db6140a8-a1c6-11ed-bfe3-dac502259ad0.png

十、Wireshark分析常用操作

調(diào)整數(shù)據(jù)包列表中時(shí)間戳顯示格式。調(diào)整方法為視圖-->時(shí)間顯示格式-->日期和時(shí)間。調(diào)整后格式如下:

db6db086-a1c6-11ed-bfe3-dac502259ad0.png

一般Wireshark軟件也可以與各主流廠家的模擬器一起使用,更適合于項(xiàng)目準(zhǔn)確配置。

tcpdump前世今生

tcpdump是一個(gè)用于截取網(wǎng)絡(luò)分組,并輸出分組內(nèi)容的工具。tcpdump憑借強(qiáng)大的功能和靈活的截取策略,使其成為類UNIX系統(tǒng)下用于網(wǎng)絡(luò)分析和問(wèn)題排查的首選工具。

tcpdump提供了源代碼,公開(kāi)了接口,因此具備很強(qiáng)的可擴(kuò)展性,對(duì)于網(wǎng)絡(luò)維護(hù)和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系統(tǒng) 中,由于它需要將網(wǎng)絡(luò)界面設(shè)置為混雜模式,普通用戶不能正常執(zhí)行,但具備root權(quán)限的用戶可以直接執(zhí)行它來(lái)獲取網(wǎng)絡(luò)上的信息。因此系統(tǒng)中存在網(wǎng)絡(luò)分析工具主要不是對(duì)本機(jī)安全的威脅,而是對(duì)網(wǎng)絡(luò)上的其他計(jì)算機(jī)的安全存在威脅。

說(shuō)白了tcpdump就是linux下的一款抓包工具。通常用于故障診斷、網(wǎng)絡(luò)分析,功能十分的強(qiáng)大。了解了tcpdump是何物之后,讓我們通過(guò)實(shí)戰(zhàn)去一一掀開(kāi)它神秘的面紗。

tcpdump命令參數(shù)

tcpdump作為一個(gè)命令使用,其具有多樣的參數(shù)選項(xiàng)。

tcpdump基本命令如下:

tcpdump[option][proto][dir][type]

其中:

1、option即可選參數(shù),可以指定相關(guān)參數(shù),輸出特定信息。

可選參數(shù)很多,主要有以下:

-A 以ASCII格式打印出所有分組,并將鏈路層的頭最小化。
-c 在收到指定的數(shù)量的分組后,tcpdump就會(huì)停止。
-C 在將一個(gè)原始分組寫入文件之前,檢查文件當(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)榫彌_行形式,可以把數(shù)據(jù)導(dǎo)出到文件。
-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)。
-b 在數(shù)據(jù)-鏈路層上選擇協(xié)議,包括ip、arp、rarp、ipx都是這一層的。
-n 不把網(wǎng)絡(luò)地址轉(zhuǎn)換成名字。
-nn 不進(jìn)行端口名稱的轉(zhuǎn)換。
-N 不輸出主機(jī)名中的域名部分。例如,‘nic.ddn.mil‘只輸出’nic‘。
-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 直接將分組寫入文件中,而不是不分析并打印出來(lái)。

2、proto即類過(guò)濾器,指定過(guò)濾某種協(xié)議的數(shù)據(jù)包。如tcp、udp、ip、arp、icmp等。

3、dir即類過(guò)濾器,根據(jù)數(shù)據(jù)流向進(jìn)行過(guò)濾,可識(shí)別的關(guān)鍵字有src、dst、 src or dst等。

4、type即類過(guò)濾器,可識(shí)別的關(guān)鍵字有:host, net, port, port range等,這些關(guān)鍵字后邊需要再接具體參數(shù)。

tcpdump安裝

1、linux系統(tǒng)默認(rèn)沒(méi)有安裝tcpdump工具的,所以需要我們自己安裝,這里我通過(guò)yum進(jìn)行安裝。

yum-yinstalltcpdump

2、安裝完成,通過(guò)tcpdump -h查看它相關(guān)版本信息。

[root@haodaolinux1~]#tcpdump-h
tcpdump version 4.9.2
libpcap version 1.5.3
OpenSSL 1.0.2k-fips  26 Jan 2017
Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ]
                [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
                [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ]
                [ -Q|-P in|out|inout ]
                [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ]
                [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ]
                [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ]
                [ -Z user ] [ expression ]
[root@haodaolinux1 ~]#

tcpdump實(shí)戰(zhàn)

下面通過(guò)常見(jiàn)的具體抓包實(shí)例,讓你加深其使用技巧。

1、常用抓包命令1

tcpdump-ieno16777736

該命令參數(shù)表示抓取網(wǎng)口eno16777736上所有的數(shù)據(jù)包。

2、常用抓包命令2

tcpdump -i eno16777736 -s 0 -w hao1.cap

該命令參數(shù)大概意思是針對(duì)網(wǎng)口eno16777736抓取不限制大小的報(bào)文,保存為文件hao1.cap

3、常用抓包命令3

tcpdump -ni eno16777736 -c 10 dst host 192.168.3.165

該命令參數(shù)表示抓取網(wǎng)口eno16777736發(fā)往目的主機(jī)192.168.3.165的數(shù)據(jù)包,并且抓取10個(gè)包后,自動(dòng)停止抓包。

4、常用抓包命令4

tcpdump-rhao1.cap

該命令是讀取抓包文件hao1.cap,結(jié)果如下:

[root@haodaolinux1 ~]# tcpdump -r hao1.cap 
reading from file hao1.cap, link-type EN10MB (Ethernet)
1542.826813 IP 192.168.3.199.ssh > 192.168.3.165.8162: Flags [P.], seq 211541184:211541316, ack 3983093332, win 255, length 132
1542.862614 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 546175073, win 16293, length 0
1543.026135 IP 192.168.3.165.8162 > 192.168.3.199.ssh: Flags [.], ack 132, win 16425, length 0
1543.609384 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 7, length 64
1543.621431 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 7, length 64
1543.621610 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 1:133, ack 0, win 255, length 132
1543.821278 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 133, win 16260, length 0
1544.610696 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 8, length 64
1544.624632 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 8, length 64
1544.624842 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 133:265, ack 0, win 255, length 132
1544.824397 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 265, win 16227, length 0

5、常用抓包命令5

tcpdump-ieno16777736host183.232.231.172andtcpport80

即表示抓取主機(jī)183.232.231.172所有在TCP 80端口的數(shù)據(jù)包。

6、常用抓包命令6

tcpdump-ieno16777736host183.232.231.172anddstport80

即表示抓取HTTP主機(jī)183.232.231.172在80端口接收到的數(shù)據(jù)包。

7、常用抓包命令7

tcpdump -i eno16777736 port 80

即表示抓取所有經(jīng)過(guò)eno16777736,目的或源端口是80的網(wǎng)絡(luò)數(shù)據(jù)。

8、常用抓包命令8

tcpdump -i eno16777736 icmp

即表示過(guò)濾出icmp包。如下圖所示:

db7b270c-a1c6-11ed-bfe3-dac502259ad0.png

9、常用抓包命令9

tcpdumphost192.168.20.110

即表示監(jiān)聽(tīng)本機(jī)跟主機(jī)192.168.20.110之間往來(lái)的通信包。

備注:出、入的包都會(huì)被監(jiān)聽(tīng)。

10、常用抓包命令10

tcpdumpport8080

即表示監(jiān)聽(tīng)特定端口8080的通信包。

11、常用抓包命令11

tcpdump tcp

即表示監(jiān)聽(tīng)TCP的通信包。

12、常用抓包命令12

tcpdumptcpport22andsrchost192.168.20.110

即表示監(jiān)聽(tīng)來(lái)自主機(jī) 192.168.20.110在端口 22 上的TCP數(shù)據(jù)包。

13、常用抓包命令13

tcpdumpiphost192.168.20.110and192.168.20.120

即表示監(jiān)聽(tīng)來(lái)自主機(jī)192.168.20.110和主機(jī)192.168.20.120之間的數(shù)據(jù)包。

tcpdumpiphost192.168.20.110and! 192.168.20.120

即表示監(jiān)聽(tīng)來(lái)自主機(jī)192.168.20.110 除了和主機(jī)192.168.20.120之外的主機(jī)之間的數(shù)據(jù)包

14、常用抓包命令14


tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項(xiàng)等都要放到第一個(gè)參數(shù)的位置,用來(lái)過(guò)濾數(shù)據(jù)報(bào)的類型;

(2)-i eth1 : 只抓經(jīng)過(guò)接口eth1的包;

(3)-t : 不顯示時(shí)間戳;

(4)-s 0 : 抓取數(shù)據(jù)包時(shí)默認(rèn)抓取長(zhǎng)度為68字節(jié)。加上-S 0 后可以抓到完整的數(shù)據(jù)包;

(5)-c 100 : 只抓取100個(gè)數(shù)據(jù)包;

(6)dst port ! 22 : 不抓取目標(biāo)端口是22的數(shù)據(jù)包;

(7)src net 192.168.1.0/24 : 數(shù)據(jù)包的源網(wǎng)絡(luò)地址為192.168.1.0/24(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析。

15、常用抓包命令15

tcpdump-s1024-l-A-nhost192.168.9.56
tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56
sudo tcpdump -A -s 1492 dst port 80

即表示監(jiān)聽(tīng)查看http請(qǐng)求的header數(shù)據(jù)包。

16、常用抓包命令16

tcpdump -i eth0 port http
tcpdump -i eth0 port http or port smtp or port imap or port pop3 -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|userna me:|password:|login:|pass |user '

即表示監(jiān)聽(tīng)查看網(wǎng)卡eth0的http請(qǐng)求的tcp包。

17、常用抓包命令17

tcpdump-n-vtcporudporicmpandnotport22

即表示監(jiān)聽(tīng)查看tcp,upd,icmp非ssh的包。

18、常用抓包命令18

sudo tcpdump -i eth0 port 80 -w -

即表示監(jiān)聽(tīng)查看http請(qǐng)求的request 包。

19、常用抓包命令19

sudotcpdump-ien1-n-s0-w-|grep-a-o-E"GET/.*|Host:.*"

即表示過(guò)濾http響應(yīng)的get host頭信息包。

20、常用抓包命令20

sudotcpdump-ien0'udpport53'

即表示監(jiān)聽(tīng)DNS查詢請(qǐng)求響應(yīng)包。

21、常用抓包命令21

tcpdumptcpport22andhost192.168.20.110

即表示監(jiān)聽(tīng)主機(jī) 192.168.20.110 接收和發(fā)出的 tcp 協(xié)議的 ssh 的數(shù)據(jù)包。

22、常用抓包命令22

tcpdumpicmpandsrc192.168.20.110-iens33-n

即表示過(guò)濾 icmp 報(bào)文并且源 IP 是 192.168.20.110。

23、常用抓包命令23

tcpdumpsrchost 192.168.20.110-iens33-n -c 5

即表示過(guò)濾源 IP 地址是 192.168.20.110 的包。

24、常用抓包命令24

tcpdumpdsthost192.168.20.110-iens33-n-c5

即表示過(guò)濾目的 IP 地址是 192.168.20.110 的包。

25、常用抓包命令25

tcpdump port 22 -i ens33 -n -c 5

即表示過(guò)濾端口號(hào)為 22, 即 ssh 協(xié)議的 的包

26、常用抓包命令26

tcpdump portrange 22-433 -i ens33 -n -c 8

即表示過(guò)濾過(guò)濾端口號(hào) 22-433 內(nèi)的數(shù)據(jù)

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11304

    瀏覽量

    209535
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3545

    瀏覽量

    88713
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7568

    瀏覽量

    88796
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84694
  • Wireshark
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    6518
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    WiresharkTcpdump實(shí)例分析

    wireshark是開(kāi)源軟件,可以放心使用??梢赃\(yùn)行在Windows和Mac OS上。對(duì)應(yīng)的,linux下的包工具是 tcpdump。使用wireshark的人必須了解網(wǎng)絡(luò)協(xié)議,否則
    的頭像 發(fā)表于 02-01 09:31 ?3047次閱讀

    USB軟件分析工具之三:Wireshark-華山派華山劍法

    Wireshark雖然以以太網(wǎng)聞名于江湖,尤其是其分析能力,借助USBPcap其也在USB
    的頭像 發(fā)表于 05-02 21:41 ?3.4w次閱讀
    USB軟件<b class='flag-5'>抓</b><b class='flag-5'>包</b><b class='flag-5'>分析</b>工具之三:<b class='flag-5'>Wireshark</b>-華山派華山劍法

    WIZnet芯片通訊時(shí)怎么?

    `Q:WIZnet芯片進(jìn)行公網(wǎng)通訊或者芯片間通訊的話怎么?A:芯片和PC通訊的話可以直接通過(guò)Wireshark,如果芯片和公網(wǎng)直接通
    發(fā)表于 03-13 11:32

    wireshark數(shù)據(jù)分析問(wèn)題

    用網(wǎng)絡(luò)調(diào)試助手作為Tcp Server給STM32F429發(fā)送數(shù)據(jù),每次傳輸完21845bytes后,就出現(xiàn)問(wèn)題。用WireShark的數(shù)據(jù)有些不太理解。上圖為用串口調(diào)試助手調(diào)試后的信息,每次傳輸?shù)?1846bytes就接收
    發(fā)表于 04-08 04:35

    如何使用WireShark進(jìn)行網(wǎng)絡(luò)

      如何使用WireShark進(jìn)行網(wǎng)絡(luò):準(zhǔn)備工作、wireshark 主界面介紹、封包列表介紹
    發(fā)表于 04-02 07:05

    空口方式和wireshank分析工具使用介紹

    主要介紹下最近使用中感覺(jué)很萬(wàn)能的空口方式和wireshank分析工具使用;目的:抓取各種設(shè)備網(wǎng)絡(luò)通信過(guò)程中數(shù)據(jù),定位并分析軟硬件設(shè)計(jì)中
    發(fā)表于 01-18 09:11

    使用tcpdump后生成的pcap文件大小為0

    請(qǐng)大佬們幫忙看看怎么回事吧 我在SSH中使用“sudo tcpdump -i eth0 dst 192.168.0.55”命令進(jìn)行,control+c停止后,使用“sudo tcpdump
    發(fā)表于 05-18 22:29

    使用wireshark分析TCP及UDP的資料詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用wireshark分析TCP及UDP的資料詳細(xì)說(shuō)明。
    發(fā)表于 05-09 17:36 ?27次下載
    使用<b class='flag-5'>wireshark</b><b class='flag-5'>抓</b><b class='flag-5'>包</b><b class='flag-5'>分析</b>TCP及UDP的資料詳細(xì)說(shuō)明

    Wireshark數(shù)據(jù)網(wǎng)絡(luò)協(xié)議的分析

    Wireshark 是目前最受歡迎的包工具。它可以運(yùn)行在 Windows、Linux 及 MAC OS X 操作系統(tǒng)中,并提供了友好的圖形界面。同時(shí),Wireshark 提供功能強(qiáng)大的數(shù)據(jù)
    發(fā)表于 10-12 08:00 ?1次下載
    <b class='flag-5'>Wireshark</b>數(shù)據(jù)<b class='flag-5'>抓</b><b class='flag-5'>包</b>網(wǎng)絡(luò)協(xié)議的<b class='flag-5'>分析</b>

    tcpdump如何實(shí)現(xiàn)內(nèi)核態(tài)的

    的呢?有的同學(xué)知道 tcpdump 是基于 libpcap 的,那么 libpcap 的工作原理又是啥樣的呢。如果讓你裸寫一個(gè)程序,你有沒(méi)有思路? 按照飛哥的風(fēng)格,不搞到最底層的原理咱是不會(huì)罷休的。所以我對(duì)相關(guān)的源碼進(jìn)行了深
    的頭像 發(fā)表于 10-08 10:34 ?2736次閱讀
    <b class='flag-5'>tcpdump</b>如何實(shí)現(xiàn)<b class='flag-5'>抓</b>內(nèi)核態(tài)的<b class='flag-5'>包</b>

    MCU_Wireshark USB 過(guò)濾(特定端口地址)

    啟動(dòng)WiresharkUSB的過(guò)程如下,這里點(diǎn)擊“開(kāi)始”就可以進(jìn)入界面了。不過(guò),Wireshark啟動(dòng)USB
    發(fā)表于 12-08 16:36 ?14次下載
    MCU_<b class='flag-5'>Wireshark</b> USB <b class='flag-5'>抓</b><b class='flag-5'>包</b>過(guò)濾(<b class='flag-5'>抓</b>特定端口地址)

    Wireshark從入門到精通之網(wǎng)絡(luò)協(xié)議分析必備

    Wireshark從入門到精通之網(wǎng)絡(luò)協(xié)議分析必備
    發(fā)表于 01-18 13:53 ?9次下載

    詳細(xì)的Wireshark分析

    選擇菜單欄上Capture -> Option,勾選WLAN網(wǎng)卡(這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡(jiǎn)單的辦法可以看使用的IP對(duì)應(yīng)的網(wǎng)卡)。點(diǎn)擊Start。啟動(dòng)。
    的頭像 發(fā)表于 11-24 15:29 ?1396次閱讀

    如何利用eNSP進(jìn)行實(shí)驗(yàn)?

    使用Wireshark工具進(jìn)行ping,并分析報(bào)文
    的頭像 發(fā)表于 09-12 09:32 ?4274次閱讀
    如何利用eNSP進(jìn)行<b class='flag-5'>抓</b><b class='flag-5'>包</b>實(shí)驗(yàn)?

    CentOS中使用tcpdump

    CentOS中使用tcpdump
    的頭像 發(fā)表于 10-28 14:48 ?249次閱讀