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

請(qǐng)問(wèn)Matter Android APP是否支持連接市面上的Matter設(shè)備?
【Thunderboard Sense試用體驗(yàn)】之(二)動(dòng)手編譯APP
關(guān)于Android下的APP開(kāi)發(fā)體驗(yàn)過(guò)程記錄
基于HARN改進(jìn)算法的雙向認(rèn)證方案
Android開(kāi)發(fā)APP應(yīng)該如何省電

該如何滲透檢測(cè)APP存在的安全漏洞
Java代碼加密支持Android App Bundle動(dòng)態(tài)化框架

Android 12“App Pairs”功能:改造分屏多任務(wù)能力
基于Android的果蠅識(shí)別APP
APK滲透測(cè)試工具:AppMessenger
Arduino/Android藍(lán)牙伺服電機(jī)控制安卓APP

Android App開(kāi)發(fā)新選擇:使用Chaquopy輕松結(jié)合Python

評(píng)論