由HTTPS抓包引发的一系列思考(HTTPS解密)
前言
在滲透測(cè)試過程中,必不可少的操作就是使用BurpSuite、Fildder等抓包工具對(duì)應(yīng)用程序的數(shù)據(jù)包進(jìn)行攔截、觀察和篡改。那么問題來了——對(duì)于使用HTTPS協(xié)議的站點(diǎn),在BurpSuite中攔截到的數(shù)據(jù)包為何也是“明文傳輸”?如下圖所示。
從大神那里獲得解答:
(1) BurpSuite能抓到HTTPS協(xié)議的“明文數(shù)據(jù)”是因?yàn)锽urpSuite在本地瀏覽器安裝了自己的證書,作為中間人的它分別建立起了“客戶端->代理服務(wù)器”、“代理服務(wù)器->服務(wù)端”兩段HTTPS通道,BurpSuite獲得Client消息后先解密后再重新加密,然后代替客戶端發(fā)給服務(wù)端,這個(gè)過程中BurpSuite自然能獲得明文。
(2) 但是如果使用WireShare來單純監(jiān)聽、嗅探HTTPS協(xié)議的數(shù)據(jù)包的話,我們就會(huì)看到TCP攜帶的Data都是密文,是無法拿到明文數(shù)據(jù)的。
WireShark抓包
接下來當(dāng)然是使用WireShare監(jiān)聽數(shù)據(jù)并觀察分析下,先簡單說下WireShare的基本使用。
首先開啟WireShark并配置受監(jiān)聽的網(wǎng)卡:
選擇正在使用的網(wǎng)卡,雙擊WLAN開始監(jiān)聽:
電腦中開啟瀏覽器或其他應(yīng)用的時(shí)候都會(huì)有流量產(chǎn)生,有流量產(chǎn)生就會(huì)被WireShark捕捉到。上圖為剛剛開啟WireShark后的捕捉狀態(tài),會(huì)抓到大量各種各樣的流量,稍后我們會(huì)進(jìn)行過濾操作。
HTTP站點(diǎn)
使用合天網(wǎng)安實(shí)驗(yàn)室的登陸頁面作為觀察對(duì)象。
在CMD中Ping域名,獲得站點(diǎn)IP地址58.20.54.226:
在WireShark中設(shè)置過濾規(guī)則“ip.dst==58.20.54.226”,發(fā)現(xiàn)登錄請(qǐng)求傳輸?shù)馁~號(hào)密碼信息:
也可以選擇資源為POST /sessions HTTP/1.1的流量然后鼠標(biāo)右鍵選擇追蹤流->TCP流,可以看到用戶名和密碼等敏感信息可以被嗅探:
查看前端代碼,可發(fā)現(xiàn)該HTTP站點(diǎn)確實(shí)對(duì)賬戶密碼做了前端加密后再進(jìn)行傳輸:
HTTPS站點(diǎn)
看完上面HTTP站點(diǎn)的數(shù)據(jù)在WireShark中“裸奔”,接下來看看HTTPS站點(diǎn)是不是也如此。
選用站點(diǎn)“墨者學(xué)院”作為觀察對(duì)象:
在WireShark中設(shè)置過濾規(guī)則“ip.dst==113.200.16.234”,可發(fā)現(xiàn)HTTP站點(diǎn)的流量均給出了具體的請(qǐng)求資源地址(如上面的POST /sessions HTTP/1.1),而HTTPS站點(diǎn)傳輸?shù)臅r(shí)候只提示為“Application Data”:
繼續(xù)選擇任意協(xié)議為TLSv1的流量后右擊選擇追蹤流->TCP流,發(fā)現(xiàn)數(shù)據(jù)均經(jīng)過加密,根本看不懂:
解密HTTPS數(shù)據(jù)
HTTPS協(xié)議使用了對(duì)稱加密,客戶端擁有并存儲(chǔ)了對(duì)稱加密的會(huì)話密鑰,瀏覽器在接收到服務(wù)端發(fā)送回來的密文數(shù)據(jù)之后,會(huì)使用存儲(chǔ)在本地的秘鑰對(duì)數(shù)據(jù)進(jìn)行解密。那么我們通過WireShark監(jiān)聽到的HTTPS站點(diǎn)的密文能否依靠此密鑰進(jìn)行自動(dòng)解密?答案是——可以。
接下來我們來實(shí)際操作并驗(yàn)證下:
1、以windows系統(tǒng)+Chrome瀏覽器為例,首先要導(dǎo)出瀏覽器存儲(chǔ)的密鑰,通過計(jì)算機(jī)屬性——高級(jí)系統(tǒng)設(shè)置——環(huán)境變量,新建一個(gè)變量名“SSLKEYLOGFILE”的變量,變量值是導(dǎo)出的密鑰具體文件地址。2、設(shè)置后可以通過重啟Chrome瀏覽器打開任意一個(gè)HTTPS網(wǎng)址,此時(shí)查看變量值對(duì)應(yīng)路徑,密鑰成功導(dǎo)出到本地啦,已經(jīng)生成sslkey.log文件:
3、現(xiàn)在可以將密鑰導(dǎo)入到Wireshark了,具體路徑如下:菜單欄—>編輯—>首選項(xiàng)—>Protocols—>TLS/SSL(選擇SSL還是TLS請(qǐng)根據(jù)實(shí)際情況):
4、配置完成,來看下最終的實(shí)際效果(此處同樣使用上文中“墨者學(xué)院”HTTPS站點(diǎn)作為測(cè)試對(duì)象,其初始的加密數(shù)據(jù)包狀態(tài)可翻看前文):
5、對(duì)比一下文章開頭BurpSuite攔截到的數(shù)據(jù)包:
【總結(jié)】至此,我們可以得知BurpSuite攔截HTTPS站點(diǎn)可獲得明文數(shù)據(jù)包,并非因?yàn)镠TTPS站點(diǎn)跟HTTP站點(diǎn)一樣進(jìn)行“裸奔”,而是BurpSuite代理服務(wù)器作為中間人,對(duì)HTTPS站點(diǎn)的數(shù)據(jù)包進(jìn)行了解密。
監(jiān)聽局域網(wǎng)流量
既然HTTP協(xié)議和HTTPS協(xié)議的明文數(shù)據(jù)我們都有辦法通過WireShark進(jìn)行獲取,那么問題來了——WireShark能否輕易獲得局域網(wǎng)內(nèi)部其他主機(jī)的數(shù)據(jù)包呢?(如果可以………我那存有兩毛錢巨款的賬戶的信息安全該咋辦?)
問題的答案是——Windows 10系統(tǒng)可以在一塊真實(shí)無線網(wǎng)卡基礎(chǔ)上再虛擬出一塊無線網(wǎng)卡,支持網(wǎng)絡(luò)共享,讓電腦變身WIFI熱點(diǎn),我們把接網(wǎng)卡共享后設(shè)置其IP為192.168.XXX.XXX,讓這個(gè)網(wǎng)卡做網(wǎng)關(guān),別的電腦連上WIFI后都通過這個(gè)網(wǎng)卡上網(wǎng),然后你就可以輕易的在這個(gè)網(wǎng)卡上捕獲別的電腦的數(shù)據(jù)包。
什么?你不信?那接下來進(jìn)行實(shí)操來驗(yàn)證下吧。
1、要通過Win10系統(tǒng)自帶的移動(dòng)熱點(diǎn)進(jìn)行WIFI共享,首先確保WLAN網(wǎng)卡開啟,WLAN網(wǎng)卡連接到其它無線WLAN網(wǎng)絡(luò)上:
2、移動(dòng)熱點(diǎn)即變?yōu)榭砷_啟狀態(tài),并點(diǎn)擊編輯按鈕進(jìn)行SSID無線名稱及連接密碼進(jìn)行設(shè)置即可:
3、在網(wǎng)絡(luò)連接設(shè)置頁面上找到剛剛開啟的虛擬AP網(wǎng)卡信息:
4、在CMD窗口中使用ipconfig命令查詢當(dāng)前主機(jī)的IP,結(jié)果為:
5、設(shè)置虛擬網(wǎng)卡的IP地址、子網(wǎng)掩碼、DNS服務(wù)器地址如下,點(diǎn)擊確認(rèn):
6、選擇WLAN 右鍵屬性—>共享設(shè)置,選擇共享并選擇剛剛開啟的無線AP熱點(diǎn),點(diǎn)擊確認(rèn):
7、通過手機(jī)或者其他支持WIFI上網(wǎng)的設(shè)備搜索該信號(hào)即可進(jìn)行連接并上網(wǎng),此處選擇手機(jī):
8、查看手機(jī)連上電腦熱點(diǎn)后分配到的IP地址:
9、在電腦打開WireShark,監(jiān)聽剛才開啟的虛擬無線網(wǎng)卡:
10、可以看到,成功監(jiān)聽到手機(jī)的數(shù)據(jù)包流量:
11、進(jìn)一步驗(yàn)證一下!!手機(jī)瀏覽器打開“合天網(wǎng)安實(shí)驗(yàn)室”站點(diǎn)的登錄頁面,并進(jìn)行登錄:
12、在WireShark輸入過濾規(guī)則“ip.src==192.168.137.251 and ip.dst==58.20.54.226”并查看登錄請(qǐng)求包,成功監(jiān)聽到明文賬號(hào)和密碼信息(已做前端加密):
至此,我們可以看到,手機(jī)平時(shí)在公眾場(chǎng)合連接未知的WIFI后進(jìn)行系統(tǒng)登錄、轉(zhuǎn)賬業(yè)務(wù)等敏感操作將是多么危險(xiǎn)!!!!一不小心賬號(hào)和密碼就被監(jiān)聽了!
總結(jié)
以上是生活随笔為你收集整理的由HTTPS抓包引发的一系列思考(HTTPS解密)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#删除字符串倒数第几个字符后的所有字符
- 下一篇: Nessus进行漏洞扫描的过程