Android APP滲透之雙向認證突破
今天有hxd發來一個APP說存在雙向認證,沒法正常抓包進行滲透,抓包的結果長下面這個樣子,一般抓包看到服務器返回“400 No required SSL certificate was sent”那基本就可以確認測試的目標APP使用了雙向認證,這種情況下,想要正常抓包進行滲透的話,就必須要從APP客戶端中,把客戶端證書以及證書密鑰給找出來,然后導入抓包工具,即可正常抓包(同時需開啟justtrustme等繞過服務端證書校驗的插件)。
客戶端證書及密鑰獲取
接下來,我們就來看看怎么獲取APP客戶端證書及密鑰,一般情況下,能用工具一把梭的話那肯定最好,平時常用的dump證書及密鑰的工具主要有以下幾個:
r0capture
r0capture具備客戶端證書導出功能:默認開啟;必須以Spawm模式運行;
運行腳本之前必須手動給App加上存儲卡讀寫權限;
并不是所有App都部署了服務器驗證客戶端的機制,只有配置了的才會在Apk中包含客戶端證書;
導出后的證書位于/sdcard/Download/包名xxx.p12路徑,導出多次,每一份均可用,密碼默認為:r0ysue;
hooker
也是基于frida的hook工具,支持客戶端證書dump
平時常用的自動dump證書的工具就這兩個,不過這次遇到的雙向認證APP,使用證書dump也沒有成功。
手動尋找證書及密鑰
獲取證書
既然用工具沒法直接獲取到證書及密鑰,那就只好自己動手分析了,首先我們先來找客戶端證書文件。客戶端證書文件的話,一般直接解壓apk包,在解壓文件夾里的assets目錄下可能會存在客戶端證書文件,如下:
看到有這兩個明顯的證書文件,證書文件一般直接雙擊即可安裝導入到本地,這2個證書文件中的client.pfx雙擊安裝證書的過程中,提示需要密碼,而另一個不需要,經過驗證,不需要密碼的證書不是客戶端證書(導入BurpSuite后抓包驗證)
獲取密鑰
APP脫殼后反編譯查看源碼,因為APP要使用客戶端證書,肯定要從資源文件目錄下去讀取,因此嘗試在源碼中搜索關鍵字:"client.pfx",
通過閱讀代碼,感覺在instance.load(open, "".toCharArray()); 代碼處,應該傳入證書密碼打開證書文件,但是代碼中顯示的是一個空""字符串。第一次遇到空密碼,有點拿不準,網上檢索一下類似代碼片段。
發現在加載證書調用load方法的時候,參數2就是證書密碼。
驗證密鑰
既然代碼中顯示證書密鑰為空"",那本地安裝client.pfx 輸入空密碼試試。
輸入空密碼,證書導入成功,說明這個APP的證書密碼確實為空。
客戶端證書導入BurpSuite
經過前面的操作,我們已經拿到的客戶端證書文件,以及客戶端證書密鑰
導出key
openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key
由于之前通過反編譯查看源碼確認證書密鑰為空,因此提示輸入密碼的時候直接回車就行。
合成p12證書文件
將pfx證書和key文件合并成“.p12”證書文件
openssl pkcs12 -export -inkey client.key -in client.pfx -out client.p12
導入p12證書抓包
在BurpSuite→User options→TLS→Client TLS Certificates中添加導入客戶端證書:
設置證書及證書密鑰
密碼輸入正確即可導入成功。
成功抓包
成功搞定雙向認證抓取到數據包
-
Android
+關注
關注
12文章
3937瀏覽量
127497 -
dump
+關注
關注
0文章
13瀏覽量
9520
發布評論請先 登錄
相關推薦
評論