一、簡介
Wireshark是一款非常流行的網絡封包分析軟件,可以截取各種網絡數據包,并顯示數據包詳細信息。
為了安全考慮,wireshark只能查看封包,而不能修改封包的內容,或者發送封包。
wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容
二、安裝
2.1、安裝地址
Wireshark開源地址:https://github.com/wireshark/wireshark
Wireshark下載地址:https://www.wireshark.org/download
安裝的話,就是傻瓜式的一步步點鼠標安裝,沒什么可說的了,安裝步驟這里就省略了。
三、抓包示例
3.1、Wireshark抓包簡單流程
1)主界面
2)3.2、 選擇菜單欄上【捕獲】 -> 【選項】,當然也可以點擊【捕獲選項】的圖標一步到位,勾選【WLAN】網卡(這里需要根據各自電腦網卡使用情況選擇,簡單的辦法可以看使用的IP對應的網卡),點擊【開始】,啟動抓包。
3)wireshark啟動后,wireshark處于抓包狀態中。
4)在window CMD命令行ping baidu.com
5)通過在過濾欄設置過濾條件進行數據包列表過濾,以免抓取無用包影響查看,這里就以ping baidu.com為例,只過濾百度的ip,設置如下:
ip.addr == 39.156.69.79 and icmp
表示只顯示ICPM協議且源主機IP或者目的主機IP為39.156.69.79的數據包。注意:協議名稱icmp要小寫。
關于Wireshark抓包流程就是如上步驟。
3.2、Wireshark抓包界面介紹
說明:數據包列表區中不同的協議使用了不同的顏色區分。協議顏色標識定位在菜單欄【視圖】-> 【著色規則】。如下所示:
WireShark 主要分為這幾個界面:
1)Display Filter(顯示過濾器), 用于設置過濾條件進行數據包列表過濾。菜單路徑:【分析】-> 【Display Filters】。
2)Packet List Pane(數據包列表), 顯示捕獲到的數據包,每個數據包包含編號,時間戳,源地址,目標地址,協議,長度,以及數據包信息。 不同協議的數據包使用了不同的顏色區分顯示。
3)Packet Details Pane(數據包詳細信息), 在數據包列表中選擇指定數據包,在數據包詳細信息中會顯示數據包的所有詳細信息內容。數據包詳細信息面板是最重要的,用來查看協議中的每一個字段。各行信息分別為:
(1)Frame: 【物理層】的數據幀概況
(2)Ethernet II: 【數據鏈路層】以太網幀頭部信息
(3)Internet Protocol Version 4: 互聯網層IP包頭部信息,屬于【網絡層】
(4)Transmission Control Protocol: 【傳輸層】T的數據段頭部信息,此處是TCP
(5)Hypertext Transfer Protocol: 【應用層】的信息,此處是HTTP協議
TCP包的具體內容
4)Dissector Pane(數據包字節區)。
3.3、Wireshark過濾器設置
wireshark工具中自帶了兩種類型的過濾器,學會使用這兩種過濾器會幫助我們在大量的數據中迅速找到我們需要的信息。
1)抓包過濾器
捕獲過濾器的菜單欄路徑為【捕獲】 -> 【捕獲過濾器】。用于在抓取數據包前設置。
如何使用?可以在抓取數據包前設置如下:
ip host www.baidu.com表示只捕獲主機host為www.baidu.com的ICMP數據包。獲取結果如下:
2)顯示過濾器
顯示過濾器是用于在抓取數據包后設置過濾條件進行過濾數據包。通常是在抓取數據包時設置條件相對寬泛或者沒有設置導致抓取的數據包內容較多時使用顯示過濾器設置條件過濾以方便分析。
然后可以通過設置顯示器過濾條件進行提取分析信息。ip.addr == 183.232.231.174 and icmp。并進行過濾。
3.4、以上兩者間的語法以及它們的區別
1、wireshark過濾器表達式的規則
1)抓包過濾器語法和實例
抓包過濾器類型Type(host、net、port)、方向Dir(src、dst)、協議Proto(ether、ip、tcp、udp、http、icmp、ftp等)、邏輯運算符(&& 與、|| 或、!非)
2)協議過濾
比較簡單,直接在抓包過濾框中直接輸入協議名即可。
tcp,只顯示TCP協議的數據包列表
http,只查看HTTP協議的數據包列表
icmp,只顯示ICMP協議的數據包列表
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)邏輯運算符&& 與、|| 或、!非
src host 192.168.182.104 && dst port 80 抓取主機地址為192.168.182.80、目的端口為80的數據包
host 192.168.182.104 || host 192.168.182.102 抓取主機為192.168.182.104或者192.168.182.102的數據包
!broadcast 不抓取廣播數據包
2、顯示過濾器語法和實例
1)比較操作符
比較操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。
2)協議過濾
比較簡單,直接在Filter框中直接輸入協議名即可。注意:協議名稱需要輸入小寫。
tcp,只顯示TCP協議的數據包列表
http,只查看HTTP協議的數據包列表
icmp,只顯示ICMP協議的數據包列表
3)ip過濾
ip.src ==192.168.182.104 顯示源地址為192.168.182.104的數據包列表
ip.dst==192.168.182.104, 顯示目標地址為192.168.182.104的數據包列表
ip.addr == 192.168.182.104 顯示源IP地址或目標IP地址為192.168.182.104的數據包列表
4)端口過濾
tcp.port ==80, 顯示源主機或者目的主機端口為80的數據包列表。
tcp.srcport == 80, 只顯示TCP協議的源主機端口為80的數據包列表。
tcp.dstport == 80,只顯示TCP協議的目的主機端口為80的數據包列表。
4)Http模式過濾
http.request.method=="GET", 只顯示HTTP GET方法的。
5)邏輯運算符為 and/or/not
過濾多個條件組合時,使用and/or。比如獲取IP地址為183.232.231.174的ICMP數據包表達式為ip.addr == 183.232.231.174 and icmp
四、Wireshark抓包分析TCP三次握手
1)TCP三次握手連接建立過程:
- Step1:客戶端發送一個SYN=1,ACK=0標志的數據包給服務端,請求進行連接,這是第一次握手;
- Step2:服務端收到請求并且允許連接的話,就會發送一個SYN=1,ACK=1標志的數據包給發送端,告訴它,可以通訊了,并且讓客戶端發送一個確認數據包,這是第二次握手;
- Step3:服務端發送一個SYN=0,ACK=1的數據包給客戶端端,告訴它連接已被確認,這就是第三次握手。TCP連接建立,開始通訊。
2)wireshark抓包獲取訪問指定服務端數據包
- Step1:啟動wireshark抓包,打開瀏覽器輸入www.huawei.com。
- Step2:使用ping www.huawei.com獲取IP。
- Step3:輸入過濾條件獲取待分析數據包列表ip.addr == 120.240.100.48 and tcp,這里只抓取tcp的包,要不然其它信息有點多不好看。
圖中可以看到wireshark截獲到了三次握手的三個數據包。但是從上圖看不止一個三次握手;其實還有一個重要的信息,如果眼尖的同學,會發現后面還有兩次TLS的握手,沒錯,因為是通過https去發請求的,三次握手后就是TLS的握手了。雖然上面是通過http訪問,但是會跳到https,流程圖大致如下:
以下就是TLS握手過程
五、Wireshark分析tcpdump抓包結果
【文件】->【打開】選擇要解析的文件。最后點擊右邊的箭頭開始解析。