最近遇到的一款进行双向认证的app,记录一下怎么解决app的双向认证。
正常配置burp证书后,开启代理抓包,发现返回包报错。
No required SSL certificate was sent
当服务器启用了证书双向认证之后,除了客户端去验证服务器端的证书外,服务器也同时需要验证客户端的证书,也就是会要求客户端提供自己的证书,如果没有通过验证,则会拒绝连接,如果通过验证,服务器获得用户的公钥。关于双向认证更多细节参考https://www.songma.com/news/txtlist_i39807v.html。
双向认证的客户端有一个证书文件。通过修改安装包后缀名为zip,直接解压文件,在assets中可找到.p12的证书文件。
点击安装发现需要密码。
接下来就需要寻找证书密码了,这个密码一般都是硬编码在代码中,接下来需要反编译apk查找证书密码。
我这里使用的jeb工具进行apk反编译,全局搜索 client.p12 字符串。
分析代码发现此处是加载证书的地方,load方法的第二个参数就是密码,通过追踪v1参数发现是通过native调用so文件获取密码值。
查看该方法调用的so文件,在apk解压文件中查找 libsoulpower.so 文件 丢入ida进行反编译。
在function中搜索getStorePasswd,发现函数。
按F5查看伪代码,没能发现密码。
寻找密码的旅程进行到这里就卡住了。既然没法直接在代码中找到密码,就只能祭出hook大法了。
xposed框架hook编写参考https://www.cnblogs.com/gordon0918/p/6689883.html
我这里直接hook的的a方法,在获取到密码之后进行打印。
编译项目将生成的apk安装到模拟器,将编写的模块选手重启。
此时打开目标app发送请求包,查看xposed日志成功获取到证书密码
burp选择user options -> SSL
选择填写host的时候注意,如果请求包里面host是域名就填域名,ip就填ip。
选择p12文件,输入密码导入勾选即可使用。
此时可以正常使用抓包了。
参考文章,感谢各位大佬的倾情奉献
https://xz.aliyun.com/t/6551#toc-10
https://www.songma.com/news/txtlist_i39807v.html
https://www.anquanke.com/post/id/190080#h2-0
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
admin | 100.00 | 0 | 2020-06-01 15:03:51 | 建议将参考文章内容汇总,完善一篇专题 |
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.