<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搞IT運(yùn)維,不僅要懂Wireshark抓包,還要會(huì)Tcpdump抓包

          共 15599字,需瀏覽 32分鐘

           ·

          2024-05-24 08:00

          今天跟大家分享2款I(lǐng)T運(yùn)維生涯中必不可少的神器Wireshark及Tcpdump,掌握這2個(gè)神器的使用,運(yùn)維排查故障基本就是如魚得水。可以這么說(shuō),一名合格的IT運(yùn)維,不僅要懂Wireshark抓包,還要會(huì)Tcpdump抓

          一、wireshark是什么?

          wireshark是非常流行的網(wǎng)絡(luò)封包分析軟件,簡(jiǎn)稱小鯊魚,功能十分強(qiáng)大。可以截取各種網(wǎng)絡(luò)封包,顯示網(wǎng)絡(luò)封包的詳細(xì)信息。

          wireshark是開源軟件,可以放心使用。可以運(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ò)問題

          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軟件安裝


          軟件下載路徑:

          https://www.wireshark.org/

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

          五、Wireshark抓包示例


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

          1、打開wireshark,主界面如下:

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

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

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


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


          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要小寫。

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


          六、Wireshakr抓包界面介紹


          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ī)則。如下所示

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

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

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

          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ū)分顯示。

          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)Ethernet II: 數(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é)議

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

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

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

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


          七、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è)置。

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

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

          2. 顯示過(guò)濾器

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

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

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

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

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

          上述介紹了抓包過(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 host 192.168.1.104

          dst host 192.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ù)包列表

          (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ù)包列表

          (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ù)包列表。

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

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

          (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

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

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

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

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

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

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

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

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

          篩選mac地址為04:f9:38:ad:13:26的數(shù)據(jù)包

          eth.src == 04:f9:38:ad:13:26

          篩選源mac地址為04:f9:38:ad:13:26的數(shù)據(jù)包----

          eth.src == 04:f9:38:ad:13: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連接建立,開始通訊。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Ack = 1:表示當(dāng)前端成功接收的數(shù)據(jù)位數(shù),雖然客戶端沒有發(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:

          數(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ù)端沒有發(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三次握手,建立了連接。開始進(jìn)行數(shù)據(jù)交互

          十、Wireshark分析常用操作

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


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


          tcpdump前世今生

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


          tcpdump提供了源代碼,公開了接口,因此具備很強(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)去一一掀開它神秘的面紗。



          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)前文件,然后在打開一個(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)聽的網(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è)分組中讀取最開始的snaplen個(gè)字節(jié),而不是默認(rèn)的68個(gè)字節(jié)。-T 將監(jiān)聽到的包直接解釋為指定的類型的報(bào)文,常見的類型有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)沒有安裝tcpdump工具的,所以需要我們自己安裝,這里我通過(guò)yum進(jìn)行安裝。

          yum -y install tcpdump

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

          [root@haodaolinux1 ~]# tcpdump -htcpdump version 4.9.2libpcap version 1.5.3OpenSSL 1.0.2k-fips  26 Jan 2017Usage: 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ò)常見的具體抓包實(shí)例,讓你加深其使用技巧。


          1、常用抓包命令1

          tcpdump -i eno16777736

          該命令參數(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 -r hao1.cap

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

          [root@haodaolinux1 ~]# tcpdump -r hao1.cap reading from file hao1.cap, link-type EN10MB (Ethernet)15:22:42.826813 IP 192.168.3.199.ssh > 192.168.3.165.8162: Flags [P.], seq 211541184:211541316, ack 3983093332, win 255, length 13215:22:42.862614 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 546175073, win 16293, length 015:22:43.026135 IP 192.168.3.165.8162 > 192.168.3.199.ssh: Flags [.], ack 132, win 16425, length 015:22:43.609384 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 7, length 6415:22:43.621431 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 7, length 6415:22:43.621610 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 1:133, ack 0, win 255, length 13215:22:43.821278 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 133, win 16260, length 015:22:44.610696 IP 192.168.3.199 > 183.232.231.172: ICMP echo request, id 9275, seq 8, length 6415:22:44.624632 IP 183.232.231.172 > 192.168.3.199: ICMP echo reply, id 9275, seq 8, length 6415:22:44.624842 IP 192.168.3.199.ssh > 192.168.3.165.armtechdaemon: Flags [P.], seq 133:265, ack 0, win 255, length 13215:22:44.824397 IP 192.168.3.165.armtechdaemon > 192.168.3.199.ssh: Flags [.], ack 265, win 16227, length 0


          5、常用抓包命令5

          tcpdump -i eno16777736 host 183.232.231.172 and tcp port 80 

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


          6、常用抓包命令6

          tcpdump -i eno16777736 host 183.232.231.172 and dst port 80 

          即表示抓取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包。如下圖所示:



          9、常用抓包命令9

          tcpdump host 192.168.20.110

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

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


          10、常用抓包命令10

          tcpdump port 8080

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



          11、常用抓包命令11

          tcpdump tcp

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


          12、常用抓包命令12

          tcpdump tcp port 22 and src host 192.168.20.110

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


          13、常用抓包命令13

          tcpdump ip host 192.168.20.110 and 192.168.20.120

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


          tcpdump ip host 192.168.20.110 and ! 192.168.20.120

          即表示監(jiān)聽來(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 -s 1024 -l -A -n host 192.168.9.56tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56sudo tcpdump -A -s 1492 dst port 80

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


          16、常用抓包命令16

          tcpdump -i eth0 port httptcpdump -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)聽查看網(wǎng)卡eth0的http請(qǐng)求的tcp包


          17、常用抓包命令17

          tcpdump -n -v tcp or udp or icmp and not port 22

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


          18、常用抓包命令18

          sudo tcpdump -i eth0 port 80 -w -

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


          19、常用抓包命令19

          sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E 'GET \/.*|Host\: .*'

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


          20、常用抓包命令20

          sudo tcpdump -i en0 'udp port 53'

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


          21、常用抓包命令21

          tcpdump tcp port 22 and host 192.168.20.110

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


          22、常用抓包命令22

          tcpdump icmp and src 192.168.20.110 -i ens33 -n

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


          23、常用抓包命令23

          tcpdump src host 192.168.20.110 -i ens33 -n -c 5

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


          24、常用抓包命令24

          tcpdump dst host 192.168.20.110 -i ens33 -n -c 5

          即表示過(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ù)

          文章轉(zhuǎn)自浩道Linux

          瀏覽 109
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91色伦| 激情片91 | 成人电影69 | 欧美网站成人 | 亚洲欧洲日本国产一区二区 |