一、簡(jiǎn)介
Wireshark是一款非常流行的網(wǎng)絡(luò)封包分析軟件,可以截取各種網(wǎng)絡(luò)數(shù)據(jù)包,并顯示數(shù)據(jù)包詳細(xì)信息。
為了安全考慮,wireshark只能查看封包,而不能修改封包的內(nèi)容,或者發(fā)送封包。
wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內(nèi)容
二、安裝
2.1、安裝地址
Wireshark開源地址:https://github.com/wireshark/wireshark
Wireshark下載地址:https://www.wireshark.org/download
安裝的話,就是傻瓜式的一步步點(diǎn)鼠標(biāo)安裝,沒什么可說(shuō)的了,安裝步驟這里就省略了。
三、抓包示例
3.1、Wireshark抓包簡(jiǎn)單流程
1)主界面
2)3.2、 選擇菜單欄上【捕獲】 -> 【選項(xiàng)】,當(dāng)然也可以點(diǎn)擊【捕獲選項(xiàng)】的圖標(biāo)一步到位,勾選【W(wǎng)LAN】網(wǎng)卡(這里需要根據(jù)各自電腦網(wǎng)卡使用情況選擇,簡(jiǎn)單的辦法可以看使用的IP對(duì)應(yīng)的網(wǎng)卡),點(diǎn)擊【開始】,啟動(dòng)抓包。
3)wireshark啟動(dòng)后,wireshark處于抓包狀態(tài)中。
4)在window CMD命令行ping baidu.com
5)通過在過濾欄設(shè)置過濾條件進(jìn)行數(shù)據(jù)包列表過濾,以免抓取無(wú)用包影響查看,這里就以ping baidu.com為例,只過濾百度的ip,設(shè)置如下:
ip.addr == 39.156.69.79 and icmp
表示只顯示ICPM協(xié)議且源主機(jī)IP或者目的主機(jī)IP為39.156.69.79的數(shù)據(jù)包。注意:協(xié)議名稱icmp要小寫。
關(guān)于Wireshark抓包流程就是如上步驟。
3.2、Wireshark抓包界面介紹
說(shuō)明:數(shù)據(jù)包列表區(qū)中不同的協(xié)議使用了不同的顏色區(qū)分。協(xié)議顏色標(biāo)識(shí)定位在菜單欄【視圖】-> 【著色規(guī)則】。如下所示:
WireShark 主要分為這幾個(gè)界面:
1)Display Filter(顯示過濾器), 用于設(shè)置過濾條件進(jìn)行數(shù)據(jù)包列表過濾。菜單路徑:【分析】-> 【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包頭部信息,屬于【網(wǎng)絡(luò)層】
(4)Transmission Control Protocol: 【傳輸層】T的數(shù)據(jù)段頭部信息,此處是TCP
(5)Hypertext Transfer Protocol: 【應(yīng)用層】的信息,此處是HTTP協(xié)議
TCP包的具體內(nèi)容
4)Dissector Pane(數(shù)據(jù)包字節(jié)區(qū))。
3.3、Wireshark過濾器設(shè)置
wireshark工具中自帶了兩種類型的過濾器,學(xué)會(huì)使用這兩種過濾器會(huì)幫助我們?cè)诖罅康臄?shù)據(jù)中迅速找到我們需要的信息。
1)抓包過濾器
捕獲過濾器的菜單欄路徑為【捕獲】 -> 【捕獲過濾器】。用于在抓取數(shù)據(jù)包前設(shè)置。
如何使用?可以在抓取數(shù)據(jù)包前設(shè)置如下:
ip host www.baidu.com表示只捕獲主機(jī)host為www.baidu.com的ICMP數(shù)據(jù)包。獲取結(jié)果如下:
2)顯示過濾器
顯示過濾器是用于在抓取數(shù)據(jù)包后設(shè)置過濾條件進(jìn)行過濾數(shù)據(jù)包。通常是在抓取數(shù)據(jù)包時(shí)設(shè)置條件相對(duì)寬泛或者沒有設(shè)置導(dǎo)致抓取的數(shù)據(jù)包內(nèi)容較多時(shí)使用顯示過濾器設(shè)置條件過濾以方便分析。
然后可以通過設(shè)置顯示器過濾條件進(jìn)行提取分析信息。ip.addr == 183.232.231.174 and icmp。并進(jìn)行過濾。
3.4、以上兩者間的語(yǔ)法以及它們的區(qū)別
1、wireshark過濾器表達(dá)式的規(guī)則
1)抓包過濾器語(yǔ)法和實(shí)例
抓包過濾器類型Type(host、net、port)、方向Dir(src、dst)、協(xié)議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運(yùn)算符(&& 與、|| 或、!非)
2)協(xié)議過濾
比較簡(jiǎn)單,直接在抓包過濾框中直接輸入?yún)f(xié)議名即可。
tcp,只顯示TCP協(xié)議的數(shù)據(jù)包列表
http,只查看HTTP協(xié)議的數(shù)據(jù)包列表
icmp,只顯示ICMP協(xié)議的數(shù)據(jù)包列表
3)IP過濾
host 192.168.182.104
src host 192.168.182.104
dst host 192.168.182.104
4)端口過濾
port 80
src port 80
dst port 80
5)邏輯運(yùn)算符&& 與、|| 或、!非
src host 192.168.182.104 && dst port 80 抓取主機(jī)地址為192.168.182.80、目的端口為80的數(shù)據(jù)包
host 192.168.182.104 || host 192.168.182.102 抓取主機(jī)為192.168.182.104或者192.168.182.102的數(shù)據(jù)包
!broadcast 不抓取廣播數(shù)據(jù)包
2、顯示過濾器語(yǔ)法和實(shí)例
1)比較操作符
比較操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。
2)協(xié)議過濾
比較簡(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過濾
ip.src ==192.168.182.104 顯示源地址為192.168.182.104的數(shù)據(jù)包列表
ip.dst==192.168.182.104, 顯示目標(biāo)地址為192.168.182.104的數(shù)據(jù)包列表
ip.addr == 192.168.182.104 顯示源IP地址或目標(biāo)IP地址為192.168.182.104的數(shù)據(jù)包列表
4)端口過濾
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ù)包列表。
4)Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的。
5)邏輯運(yùn)算符為 and/or/not
過濾多個(gè)條件組合時(shí),使用and/or。比如獲取IP地址為183.232.231.174的ICMP數(shù)據(jù)包表達(dá)式為ip.addr == 183.232.231.174 and icmp
四、Wireshark抓包分析TCP三次握手
1)TCP三次握手連接建立過程:
- 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.huawei.com。
- Step2:使用ping www.huawei.com獲取IP。
- Step3:輸入過濾條件獲取待分析數(shù)據(jù)包列表ip.addr == 120.240.100.48 and tcp,這里只抓取tcp的包,要不然其它信息有點(diǎn)多不好看。
圖中可以看到wireshark截獲到了三次握手的三個(gè)數(shù)據(jù)包。但是從上圖看不止一個(gè)三次握手;其實(shí)還有一個(gè)重要的信息,如果眼尖的同學(xué),會(huì)發(fā)現(xiàn)后面還有兩次TLS的握手,沒錯(cuò),因?yàn)槭峭ㄟ^https去發(fā)請(qǐng)求的,三次握手后就是TLS的握手了。雖然上面是通過http訪問,但是會(huì)跳到https,流程圖大致如下:
以下就是TLS握手過程
五、Wireshark分析tcpdump抓包結(jié)果
【文件】->【打開】選擇要解析的文件。最后點(diǎn)擊右邊的箭頭開始解析。






