編輯點評:
Wireshark(前稱Ethereal)是一個網絡封包分析軟件。網絡封包分析軟件的功能是擷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark使用WinPCAP作為接口,直接與網卡進行數據報文交換。
軟件簡介
Wireshark(前稱Ethereal)是一款免費開源的網絡嗅探抓包工具,世界上最流行的網絡協議分析器!網絡封包分析軟件的功能是擷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。Wireshark網絡抓包工具使用WinPCAP作為接口,直接與網卡進行數據報文交換,可以實時檢測網絡通訊數據,檢測其抓取的網絡通訊數據快照文件,通過圖形界面瀏覽這些數據,可以查看網絡通訊數據包中每一層的詳細內容。它的強大特性:例如包含有強顯示過濾器語言和查看TCP會話重構流的能力,支持上百種協議和媒體類型。
wireshark抓包新手使用教程
Wireshark是非常流行的網絡封包分析軟件,可以截取各種網絡數據包,并顯示數據包詳細信息。常用于開發測試過程各種問題定位。本文主要內容包括:
1、Wireshark軟件下載和安裝以及Wireshark主界面介紹。
2、WireShark簡單抓包示例。通過該例子學會怎么抓包以及如何簡單查看分析數據包內容。
3、Wireshark過濾器使用。通過過濾器可以篩選出想要分析的內容。包括按照協議過濾、端口和主機名過濾、數據包內容過濾。
軟件說明
wireshark是非常流行的網絡封包分析軟件,功能十分強大。可以截取各種網絡封包,顯示網絡封包的詳細信息。使用wireshark的人必須了解網絡協議,否則就看不懂wireshark了。
為了安全考慮,wireshark只能查看封包,而不能修改封包的內容,或者發送封包。
wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容,總結,如果是處理HTTP,HTTPS 還是用Fiddler, 其他協議比如TCP,UDP 就用wireshark.
WireShark 主要分為這幾個界面
1. Display Filter(顯示過濾器), 用于過濾
2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,端口號。 顏色不同,代表
3. Packet Details Pane(封包詳細信息), 顯示封包中的字段
4. Dissector Pane(16進制數據)
5. Miscellanous(地址欄,雜項)
Wireshark解密HTTPS流量的兩種方法
我們先回顧一下SSL/TLS的整個握手過程:
(1) Clienthello:發送客戶端的功能和首選項給服務器,在連接建立后,當希望重協商、或者響應服務器的重協商請求時會發送。
(2) version:客戶端支持的最佳協議版本
(3) Random:共32字節,28字節隨機數,4字節額外信息,受客戶端時鐘影響(為了避免瀏覽器指紋采集,現在一般會對4字節時鐘做扭曲)
(4) Session ID:32字節隨機數,用于和服務器重建會話,為空表示新建會話
(5) cipher suit:客戶端支持的所有密碼套件,按優先級排列
(6) Compression:客戶端支持的壓縮算法,默認無壓縮
(7) Extensions:由任意數量的擴展組成,攜帶額外數據
(8) ServerHello:
選擇客戶端提供的參數反饋客戶端
服務器無需支持客戶端支持的最佳版本,如果服務器不支持客戶端版本,可以提供其他版本以期待客戶端可以接受
(9) Certificate:
用于攜帶服務器X.509證書鏈
主證書必須第一個發送,中間證書按照正確的順序跟在主證書之后
服務器必須保證發送的證書和選擇的算法套件一致
Certificate消息時可選的
(10) ServerKeyExchange:攜帶密鑰交換的額外數據,取決于加密套件
(11) ServerHelloDone:服務器已將所有預計的握手消息發送完畢
(12) ClientkeyExchange:攜帶客戶端為密鑰交換提供的信息
(13) ChangeCipherSpec:發送端已取得用以連接參數的足夠的信息
(14) Finish:握手完成,消息內容加密,雙方可以交換驗證,整個握手完整性所需的數據
(15) 算法:verrify_data = PRF(master_secret , finished_label,hash(handshake_message))
要解密HTTPS流量,需要得到加密密鑰,加密密鑰由主密鑰、客戶端隨機數、服務器隨機數生成。由上述握手過程可知,客戶端隨機數和服務器隨機數在雙方握手消息中傳遞,而主密鑰(master_secret)則由預主密鑰(pre_master_secret)結合兩個隨機數生成。預主密鑰通過密碼套件中的密鑰交換算法進行交換(DH、RSA)。
因此,通過Wireshark解密HTTPS,可以從兩個地方下手:
密鑰交換算法選擇RSA,然后提取服務器的私鑰,將私鑰導入Wireshark,通過Wireshark解密密鑰交換過程中傳遞的預主密鑰,再結合之前的客戶端和服務器隨機數生成主密鑰,進一步生成加密密鑰,即可解密后續抓取到的加密報文。
直接從客戶端提取主密鑰,結合客戶端和服務器隨機數生成加密密鑰,實現對加密報文的解密。
下面演示兩種方法解密HTTPS流量。
方法一
從服務器上導出帶私鑰的P12格式的證書,或者直接導出服務器的私鑰。
捕獲從TCP三次握手開始的完整報文:
Wireshark解密HTTPS流量的兩種方法
可以看到此時的報文是被TLS加密的,無法看到具體的報文內容。
點擊編輯——>首選項——>協議——>SSL(有的版本只有TLS),導入RSA key:
Wireshark解密HTTPS流量的兩種方法
由于通過DH方法交換的密鑰不會在中間傳遞,所以這種方法只能解密通過RSA交換的密鑰。
導入服務器證書:
Wireshark解密HTTPS流量的兩種方法
點擊ok后,Wireshark會對捕獲的報文進行解密:
Wireshark解密HTTPS流量的兩種方法
報文被成功解密,可以直觀的看到HTTP報文的請求和響應。
第二種
通過設置環境變量截取瀏覽器的master_secret,進而實現解密HTTPS的目的。
環境變量中新建用戶變量SSLKEYLOGFILE=路徑\sslkey.log文件,之后再wireshark中ssl配置中制定該文件位置即可。
Wireshark解密HTTPS流量的兩種方法
點擊編輯>首選項>protocol>ssl:
Wireshark解密HTTPS流量的兩種方法
即可解密瀏覽器的訪問流量:
熱門評論
最新評論