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