某社交App cs簽名算法解析(一) SSL雙向認證

一、目標

奮飛: 老板,咱們得招幾個妹子呀,咱們公司男女比例太失衡了。

李老板: 你去這個App上晃晃,據(jù)說上面妹子很多。

main.png

我去,包都抓不到,耍個毛線呀。

TIP: 新鮮熱乎的 v3.83.0

二、步驟

SSL雙向認證

問了下谷歌,有不少同道都遇到了返回值是 400 No required SSL certificate was sent 這種情況。

他們一致認為,是遇到了SSL雙向認證。

不過谷歌傳來的消息是,搞SSL雙向認證很簡單,把客戶端證書,搞出來,然后再導(dǎo)入到 Charles,就大功告成了。

client.p12

在Apk包里面輕松找到 /assets/client.p12, 下一步就是找對應(yīng)的證書密碼,so easy嘛。

Jadx上,搜索字符串 "client.p12" 或者 "client.cer", 字符串倒是都找到了,不過問題是,找不到這些字符串被調(diào)用的地方。

看來被同道們搞了好幾輪,新版本的App做了修改了。

Hook KeyStore來Dump證書

只要客戶端有證書,那就一定會在使用中導(dǎo)入,我們在他導(dǎo)入的時候Dump出來,這樣應(yīng)該可以通殺了。

Java.perform(function() {
    console.log("在https雙向認證的情況下,dump客戶端證書為p12. 存儲位置:/sdcard/Download/client_keystore_{nowtime}.p12 證書密碼: fenfei");
    
    Java.use("java.security.KeyStore$PrivateKeyEntry").getPrivateKey.implementation = function() {
        var result = this.getPrivateKey();
        let filePath = "/sdcard/Download/client_keystore_" + "_" + getNowTime() + '.p12';
        dump2sdcard(this.getPrivateKey(), this.getCertificate(), filePath);
        return result;
    }
    
    Java.use("java.security.KeyStore$PrivateKeyEntry").getCertificateChain.implementation = function() {
        var result = this.getCertificateChain();
        let filePath = "/sdcard/Download/client_keystore_" + "_" + getNowTime() + '.p12';
        dump2sdcard(this.getPrivateKey(), this.getCertificate(), filePath);
        return result;
    }
})

運行之前先允許這個App有讀寫存儲卡的權(quán)限,因為最后我們是把證書寫到sd卡里面了,否則會提示:

Error: java.io.FileNotFoundException: /sdcard/Download/client_keystore__2021_05_24_xx_xx_xx_53.p12 (Permission denied)

跑一下,程序崩潰了。

這也難不倒我們,估計大概率是被檢測到了, 那么換frida端口,然后把fridaServer換成hluda-server。

再來,還是崩潰。奇怪,還有啥呢? Xposed。 把Xposed Status關(guān)掉。 再來。

dump File
dump OK !!!
dump:/sdcard/Download/client_keystore__2021_05_24_16_48_09_24.p12

完美,證書出來了,咱們趕緊拷出來。

Charles添加證書

Proxy -> SSL Porxy Settings

import.png

然后輸入證書監(jiān)控的host , *.sxxapp.cn ,端口是 443

host.png

迫不及待了,跑一把試試。

rc.png

完美收工。

三、總結(jié)

frida的spawn模式啟動這個App的時候會崩掉,我認為是Xposed的原因,把Xposed關(guān)掉就好了。當然也許是我的手機環(huán)境有問題。

大家都在進步,所以要多掌握幾種方法,東邊不亮西邊亮。

Dump證書的方法,參考 https://github.com/CreditTone/hooker 中的 keystore_dump.js 感謝大佬們提供的神奇工具。

ffshow.jpg

當別人都很老實的時候,你就耍點兒小聰明;當別人都耍小聰明的時候,你就老實做人。當別人既會耍小聰明又會做老實人的時候,你就干點別的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容