#概述
本教程面向進行流量分析的安全專業人員。本教程假定你已經熟悉Wireshark的基本使用,并使用Wireshark 3.x版。
在審查可疑的網絡活動時,我們經常會遇到加密的流量。因為大多數網站使用安全超文本傳輸?協議(HTTPS)協議。和網站一樣,各種類型的惡意軟件也使用HTTPS。在檢查惡意軟件活動中的PCAP時,了解感染后流量中包含的內容非常重要。
該Wireshark教程講解如何使用https日志文件從Wireshark中的pcap解密HTTPS流量。該日志包含https加密密鑰數據。使用此密鑰日志文件,我們可以從pcap中解密HTTPS活動并查看其內容。
本教程以檢查Dridex惡意軟件感染的HTTPS活動作為例子。
注意:該教程已假設你已經會自定義Wireshark顯示方式了,如果不會可以參考教程:
https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/
本教程使用的pcap和密鑰日志文件下載:
https://github.com/pan-unit42/wireshark-tutorial-decrypting-HTTPS-traffic
警告:本教程使用的pcap包含基于windows的惡意軟件。如果使用Windows計算機,則存在感染的風險。我們建議您盡可能在非Windows環境(例如BSD,linux或macOS)中查看此pcap。
#加密流量背景
在1990年代中期至后期,網站使用的最常見協議是超文本傳輸??協議(HTTP),該協議生成未加密的Web流量。但是,隨著安全性日益受到關注,網站開始切換到HTTPS,現在我們很少看到來自Web瀏覽的HTTP流量。
HTTPS本質上是一個包含HTTP流量的加密通信隧道。這些隧道首先使用安全套接字層(SSL)作為加密協議。如今,大多數HTTPS流量都使用傳輸層安全(TLS)。
#HTTPS Web流量
HTTPS流量通常會顯示一個域名。例如,當在Web瀏覽器中查看https://www.wireshark.org時,在自定義的Wireshark列顯示中查看時,pcap將顯示www.wireshark.org作為此流量的服務器名稱。不幸的是,我們不知道其他詳細信息,例如實際的URL或從服務器返回的數據。從傳輸控制協議(TCP)流看不會顯示此流量的內容,因為它是經過加密的。
#加密密鑰日志文件
加密密鑰日志是一個文本文件。如圖所示。
這些日志是在最初記錄PCAP時使用中間人(MITM)技術創建的。如果在記錄pcap時沒有創建這樣的文件,則無法解密該pcap中的HTTPS流量。
#具有密鑰日志文件的PCAP示例
這個Github存儲庫提供了一個受密碼保護的ZIP存檔,其中包含pcap及其密鑰日志文件。轉到Github頁面,單擊ZIP存檔條目,然后下載它,如下圖所示。值得注意的是,此ZIP存檔中包含的pcap在使用密鑰日志解密時提供了對基于Windows的惡意軟件示例的訪問。一如既往,我們建議您謹慎行事,并在非Windows環境中遵循本教程中的步驟。
使用"infected"作為密碼從ZIP存檔中提取pcap和密鑰日志文件。這將提供兩個文件,如圖所示:
#沒有密鑰日志文件的HTTPS流量
在Wireshark中打開
Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap。按照上一教程中關于Wireshark過濾器的說明,使用基本的網絡過濾。針對Wireshark 3.x的基本過濾是:
(http.request or tls.handshake.type eq 1) and !(ssdp)
此pcap來自Windows 10主機上的Dridex惡意軟件感染。所有Web流量(包括感染活動)都是HTTPS。如果沒有密鑰日志文件,我們將無法看到流量的任何詳細信息,只能看到IP地址、TCP端口和域名,如圖所示。
#加載密鑰日志文件
在Wireshark中打開
Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap。然后使用菜單Edit-->Preferences調出Preferences菜單,如圖所示。
在Preferences菜單的左側,單擊Protocol,如圖所示。
如果您使用的是Wireshark版本2.x,向下滾動直到找到SSL并將其選中。如果您使用的是Wireshark 3.x版,請向下滾動至TLS并選擇它。選擇SSL或TLS后,您應該會看到一行(Pre)-Master-Secret log filename。單擊“Browse”按鈕并選擇名為
Wireshark-Tutorial-KeysLogFile.txt的密鑰日志文件,如圖所示。
#具有密鑰日志文件的HTTPS流量
單擊“OK”之后,在使用基本過濾時,Wireshark列顯示將在每行HTTPS下列出解密的HTTP請求,如圖所示。
在此pcap中,我們現在看到對先前隱藏在HTTPS流量中的microsoft.com和sky pe.com域的HTTP請求。我們還發現了由Dridex感染造成的以下流量:
foodsgoodforliver[.]com - GET /invest_20.dll
105711[.]com - POST /docs.php
對foodsgood forliver[.]com的GET請求返回了Dridex的DLL文件。對105711[.]COM的POST請求是來自感染Dridex的Windows主機與命令和控制(C2)的通信。
我們可以通過跟蹤HTTP流來查看流量。右鍵單擊該行以將其選中,然后左鍵單擊以調出跟隨HTTP流的菜單。下圖顯示了對foodsgood forliver[.]com的HTTP GET請求的HTTP流。
由于我們有此流量的密鑰日志文件,因此現在可以從pcap中導出此惡意軟件。使用菜單path File-->Export Objects-->HTTP從pcap中導出此文件,如圖所示。
如果您在BSD,Linux或macOS環境中,請打開一個終端窗口,然后使用file命令確認這是一個DLL文件。然后使用shasum -a 256獲取文件的SHA256哈希,如下圖所示。
此惡意軟件的SHA256哈希為:
31cf42b2a7c5c558f44cfc67684cc344c17d4946d3a1e0b2cecb8eb58173cb2f
如果在線搜索此散列,則應至少從兩個公開可用的在線沙箱環境中找到結果。
最后,我們可以查看此Dridex感染的C2流量。使用基本網絡過濾,然后沿著其中一個POST請求的HTTP流到達105711[.]com。如下圖顯示了其中一個HTTP流的示例。
#結論
本教程講解了如何使用密鑰日志文本文件通過Wireshark解密pcap中的HTTPS流量。如果在最初記錄pcap時沒有創建密鑰日志文件,將無法在Wireshark中解密來自該pcap的HTTPS流量。
有關Wireshark的更多幫助,請參閱我們之前的教程:
- Customizing Wireshark – Changing Your Column Display
- Using Wireshark – Display Filter Expressions
- Using Wireshark: Identifying Hosts and Users
- Using Wireshark: Exporting Objects from a Pcap
- Wireshark Tutorial: Examining Trickbot Infections
- Wireshark Tutorial: Examining Ursnif Infections
- Wireshark Tutorial: Examining Qakbot Infections
#說明
本文由合天網安實驗室編譯,轉載請注明來源。
原文地址:
https://unit42.paloaltonetworks.com/wireshark-tutorial-decrypting-https-traffic/