利用Hook技術實現瀏覽器HTTPS劫持
* 原創作者:浪子_三少,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
現在很多網站都使用了 https 的方案,保證了傳輸中的數據不被修改或者被第三方封包軟體看見,但是由於https有一些隱含的缺陷或者伺服器驗證的不嚴格,https被劫持的可能性存在,就像之前出現了」凈廣大師」病毒劫持https,往百度搜索里插入廣告id,他使用的方法就是中間人攻擊,強行插入自己的證書實現解密https,今天我們介紹一種瀏覽器劫持的方法實現https劫持,現在我們就開始分析去找到瀏覽器中https加密的入口。
一)分析方法
首先我們打開瀏覽器
(注意:這裡涉及的瀏覽器的名字都會被隱去)
,輸入baidu.com,在baidu里輸入666666我們可以看到baidu搜索時瀏覽器地址欄里,baidu的網站使用的是https鏈接地址。
接下來使用調試器ollydbg去附加瀏覽器,然後在命令輸入
bp WSASend
然後重新點擊百度里的搜索按鈕,這是調試器會斷在
WSASend
地方:
我們再看堆棧區域,往下翻堆棧會看到
有sha256相關的hash計算的,這裡就是說在發送數據之前經過一些tls的計算的過程,下面我繼續走掉返回到調用WSASend的地方:
0x66F20F20
這裡並不是明文所在的地方,一般進入發包的地方時已經被加密了,我們繼續走下去,返回到調用該函數區域的所在函數,因為這個函數沒什麼特徵性,應該還沒到達https加密前所在的地方,返回到一個調用比較特別的地方。
當我們返回到這裡
CALL DWORD PTR DS:[EDX+8]
,
我們要引起注意,可以大概這樣假設,這裡是調用 c++一個類的虛表函數。我們直接下斷點在
CALL DWORD PTR DS:[EDX+8]
,
然後F9
,接下來瀏覽器就停在了這句代碼上,我們具體分析下內存EDX 地址是:0×68337724
發現此地址確實是個函數表
這時我們在翻堆棧信息時發現了明文的請求信息
按下快捷鍵:
ctrl + G
,輸入0x66FC422D
,進入該函數地址區域:發現這裡並沒有什麼特殊地方我們可以繼續F8 單步走下去,當我們走到地址
67034AB0
,
知道我們之前調用有個特殊的函數,call [eax+0x30],
可以猜測這裡的調用也是一個虛表裡的函數。
接下來我們把之前的所有斷點全部禁用
然後在這個函數地方下斷點,重新開始baidu搜索,這時瀏覽器停在了這個函數
call [eax+0x30]
的地方 ,此時eax值為0x683A1908
查看
eax
的內存所在的地址確實是個函數表,是虛表沒錯了,edi地址也有明文。在分析堆棧,該函數有三個參數
在
call [eax+0x30]
前有三個
push [ebp+8]
push edi
push esi
說明該函數是三個參數,在上面堆棧中我們找到前三個值分別是
0x197D8EE8是第一個參數,這是一個c++類地址,因為0x197D8EE8里的值就是eax的值。
0x19F2A390 第二個參數為明文緩衝區地址
0x6BF 第三個參數為緩衝區的長度
下面我們驗證下我們對以上三個參數的驗證, 按
F9
,下次瀏覽器會繼續停在該函數的地方。查看堆棧,確實如上猜測 :
我們再繼續回過頭分析eax這個值,0x683A1980, 這個地址在當前這個程序的這個代碼模塊內,且在這個模塊的」.rdata」程序段內,那這足以證明該地址就是一個https的加密類,而0×30 的偏移的函數就是加密函數入口。
二)代碼實現
分析到了具體的地方,我們就可以寫程序去掛鉤這個虛表函數去獲取瀏覽器每次發出去的明文請求。
我們可以定義一個c++ 虛類
其中
pSSL_Crypt
這個地址就是0×30的偏移的函數指針,接著我就寫一個hijack類去實現hook瀏覽器(
想研究代碼的,還是閱讀原文吧,三少的代碼real長
)
在以上代碼我們獲取了模塊加密類的虛表地址後就替換剛才那個偏移地址,修改指針去實現hook,當我們在瀏覽器里百度搜索時,會停在我們的函數里
Buffer參數
Len值
結果和我們預想的一樣,這樣我們就通過hook實現了瀏覽器https明文的截獲,在我們的hook函數中我們可以做任何事情,可以過濾數據,可以轉發數據,甚至我們還能修改請求數據,如果我們再hook了瀏覽器的https的解密函數,也能過濾或者修改從伺服器端接受的https數據回應信息,實現我們想要的各種功能。
總結
自此本文結束,綜上所講的hook技術能夠破壞瀏覽器程序本身,導致https被劫持,而瀏覽器卻無法察覺,可見瀏覽器廠商對自身的安全性保障也是一個很重要的、值得他們去深思研究的問題。
(注意:本文只是屬於技術分享,請勿用於非正常途徑,故而會隱去瀏覽器的名稱)
* 原創作者:浪子_三少,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
※什麼是集中管控式大數據安全架構?
※基於ArduinoLeonardo板子的BadUSB攻擊實戰
※用機器學習玩轉惡意URL檢測
※Android系統20萬美元入侵計劃無人問津,研究人員稱獎金太少
※學點演算法搞安全之SVM
TAG:FreeBuf |
※Google啟動HSTS機制,瀏覽器強制執行HTTPS加密協議
※SAMSUNG 自研三星瀏覽器已向 Google Play 商店開放下載
※VR普及的動力 火狐瀏覽器開發商Mozilla力推WebVR
※Mimesys利用ARKit作為一個移動瀏覽器進入協作虛擬環境
※瀏覽器解析HTML,CSS過程
※Chrome瀏覽器增加谷歌紙盒對WebVR的支持
※iOS端Edge瀏覽器上手體驗
※Chrome瀏覽器將支持Daydream WebVR瀏覽
※微軟Edge瀏覽器登錄iOS與Android平台
※Chrome瀏覽器更新,谷歌Daydream用戶現可在VR中無縫瀏覽網頁
※谷歌更新Chrome瀏覽器 支持Touch Bar
※利用Chrome瀏覽器「自動下載」功能竊取Windows登錄密碼
※第一大瀏覽器Chrome強殺HTTP網站:不安全!
※Mozilla宣布Gear VR支持Servo瀏覽器引擎
※微軟官方公布iOS/Android版Edge瀏覽器內核
※谷歌將與ESET合作,Chrome瀏覽器也能提供安全防護能力
※無奈 Windows 手機不好賣?微軟 Edge 瀏覽器將推 iOS、Android 版
※如何使用谷歌Chrome瀏覽器竊取Windows密碼
※火狐瀏覽器更新 正式支持WebVR