前言
大家好,這里是浩道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軟件安裝
軟件下載路徑:
按照系統(tǒng)版本選擇下載,下載完成后,按照軟件提示一路Next安裝。
五、Wireshark抓包示例
先介紹一個(gè)使用wireshark工具抓取ping命令操作的示例,可以上手操作感受一下抓包的具體過(guò)程。
1、打開(kāi)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í)行pingwww.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)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é)議
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ì)寬泛或者沒(méi)有設(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 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ù)包列表
(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. 常見(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)始通訊。
2.Wireshark抓包獲取訪問(wèn)指定服務(wù)端數(shù)據(jù)包
Step1:?jiǎn)?dòng)wireshark抓包,打開(kāi)瀏覽器輸入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開(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。
數(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:
數(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ù)交互
十、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ò)分析和問(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包。如下圖所示:
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ù)包。
審核編輯:湯梓紅
-
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
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論