由HTTPS抓包引發的一系列思考
- 2019 年 12 月 30 日
- 筆記
前言
在滲透測試過程中,必不可少的操作就是使用BurpSuite、Fildder等抓包工具對應用程序的數據包進行攔截、觀察和篡改。那麼問題來了——對於使用HTTPS協議的站點,在BurpSuite中攔截到的數據包為何也是「明文傳輸」?如下圖所示。

從大神那裡獲得解答:
(1) BurpSuite能抓到HTTPS協議的「明文數據」是因為BurpSuite在本地瀏覽器安裝了自己的證書,作為中間人的它分別建立起了「客戶端->代理服務器」、「代理服務器->服務端」兩段HTTPS通道,BurpSuite獲得Client消息後先解密後再重新加密,然後代替客戶端發給服務端,這個過程中BurpSuite自然能獲得明文。 (2) 但是如果使用WireShare來單純監聽、嗅探HTTPS協議的數據包的話,我們就會看到TCP攜帶的Data都是密文,是無法拿到明文數據的。
WireShark抓包
接下來當然是使用WireShare監聽數據並觀察分析下,先簡單說下WireShare的基本使用。
首先開啟WireShark並配置受監聽的網卡:

選擇正在使用的網卡,雙擊WLAN開始監聽:

電腦中開啟瀏覽器或其他應用的時候都會有流量產生,有流量產生就會被WireShark捕捉到。上圖為剛剛開啟WireShark後的捕捉狀態,會抓到大量各種各樣的流量,稍後我們會進行過濾操作。
HTTP站點
使用合天網安實驗室的登陸頁面作為觀察對象。

在CMD中Ping域名,獲得站點IP地址58.20.54.226:

在WireShark中設置過濾規則「ip.dst==58.20.54.226」,發現登錄請求傳輸的賬號密碼信息:

也可以選擇資源為POST /sessions HTTP/1.1的流量然後鼠標右鍵選擇追蹤流->TCP流,可以看到用戶名和密碼等敏感信息可以被嗅探:

查看前端代碼,可發現該HTTP站點確實對賬戶密碼做了前端加密後再進行傳輸:

HTTPS站點
看完上面HTTP站點的數據在WireShark中「裸奔」,接下來看看HTTPS站點是不是也如此。
選用站點「墨者學院」作為觀察對象:

在WireShark中設置過濾規則「ip.dst==113.200.16.234」,可發現HTTP站點的流量均給出了具體的請求資源地址(如上面的POST /sessions HTTP/1.1),而HTTPS站點傳輸的時候只提示為「Application Data」:

繼續選擇任意協議為TLSv1的流量後右擊選擇追蹤流->TCP流,發現數據均經過加密,根本看不懂:

解密HTTPS數據
HTTPS協議使用了對稱加密,客戶端擁有並存儲了對稱加密的會話密鑰,瀏覽器在接收到服務端發送回來的密文數據之後,會使用存儲在本地的秘鑰對數據進行解密。那麼我們通過WireShark監聽到的HTTPS站點的密文能否依靠此密鑰進行自動解密?答案是——可以。
接下來我們來實際操作並驗證下:
1、以windows系統+Chrome瀏覽器為例,首先要導出瀏覽器存儲的密鑰,通過計算機屬性——高級系統設置——環境變量,新建一個變量名「SSLKEYLOGFILE」的變量,變量值是導出的密鑰具體文件地址。2、設置後可以通過重啟Chrome瀏覽器打開任意一個HTTPS網址,此時查看變量值對應路徑,密鑰成功導出到本地啦,已經生成sslkey.log文件:

3、現在可以將密鑰導入到Wireshark了,具體路徑如下:菜單欄—>編輯—>首選項—>Protocols—>TLS/SSL(選擇SSL還是TLS請根據實際情況):

4、配置完成,來看下最終的實際效果(此處同樣使用上文中「墨者學院」HTTPS站點作為測試對象,其初始的加密數據包狀態可翻看前文):

5、對比一下文章開頭BurpSuite攔截到的數據包:

【總結】至此,我們可以得知BurpSuite攔截HTTPS站點可獲得明文數據包,並非因為HTTPS站點跟HTTP站點一樣進行「裸奔」,而是BurpSuite代理服務器作為中間人,對HTTPS站點的數據包進行了解密。
監聽局域網流量
既然HTTP協議和HTTPS協議的明文數據我們都有辦法通過WireShark進行獲取,那麼問題來了——WireShark能否輕易獲得局域網內部其他主機的數據包呢?(如果可以………我那存有兩毛錢巨款的賬戶的信息安全該咋辦?)
問題的答案是——Windows 10系統可以在一塊真實無線網卡基礎上再虛擬出一塊無線網卡,支持網絡共享,讓電腦變身WIFI熱點,我們把接網卡共享後設置其IP為192.168.XXX.XXX,讓這個網卡做網關,別的電腦連上WIFI後都通過這個網卡上網,然後你就可以輕易的在這個網卡上捕獲別的電腦的數據包。
什麼?你不信?那接下來進行實操來驗證下吧。
1、要通過Win10系統自帶的移動熱點進行WIFI共享,首先確保WLAN網卡開啟,WLAN網卡連接到其它無線WLAN網絡上:

2、移動熱點即變為可開啟狀態,並點擊編輯按鈕進行SSID無線名稱及連接密碼進行設置即可:

3、在網絡連接設置頁面上找到剛剛開啟的虛擬AP網卡信息:

4、在CMD窗口中使用ipconfig命令查詢當前主機的IP,結果為:

5、設置虛擬網卡的IP地址、子網掩碼、DNS服務器地址如下,點擊確認:

6、選擇WLAN 右鍵屬性—>共享設置,選擇共享並選擇剛剛開啟的無線AP熱點,點擊確認:

7、通過手機或者其他支持WIFI上網的設備搜索該信號即可進行連接並上網,此處選擇手機:

8、查看手機連上電腦熱點後分配到的IP地址:

9、在電腦打開WireShark,監聽剛才開啟的虛擬無線網卡:

10、可以看到,成功監聽到手機的數據包流量:

11、進一步驗證一下!!手機瀏覽器打開「合天網安實驗室」站點的登錄頁面,並進行登錄:

12、在WireShark輸入過濾規則「ip.src==192.168.137.251 and ip.dst==58.20.54.226」並查看登錄請求包,成功監聽到明文賬號和密碼信息(已做前端加密):

至此,我們可以看到,手機平時在公眾場合連接未知的WIFI後進行系統登錄、轉賬業務等敏感操作將是多麼危險!!!!一不小心賬號和密碼就被監聽了!
*本文原創作者:True521,本文屬於FreeBuf原創獎勵計劃,未經許可禁止轉載