Tommonkey

All greatness comes from a brave beginning

0%

安卓APP抓包失败解决思路

有些app现在只信任系统的CA凭证,所以常规的导入burp证书属于不信任的,app通过来自burp的回包检查发现burp的证书不在系统的CA库中就会认证握手失败,从而导致抓包失败。了解抓包失败的原因后解决思路也很清楚了,我们只要把burp证书放到安卓系统的CA库中,这样app在检查的时候就会通过,从而顺利抓到app包。
这里以某app来操作如何成功抓取流量包,一开始burp证书以常规方式安装,发送app数据包后界面弹出如下错误:

1
javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException: Trustanchor for certification path not found.

1-1
报错的原因就是SSL握手时,app发现从burp过来的CA凭证不在系统CA库中,导致握手失败,从而导致了此次的异常。接下来用安卓模拟器来演示如何将burp证书导入到系统CA库中。

导出与转换CA证书

burp导出CA证书
1-2
自己随意给证书起个名字和导出的位置,比如:
1-3
导出成功后,使用open-ssl来转换证书格式为PEM,因为安卓证书采用PEM格式,同时文件名以 .0 结尾的 subject_hash_old 值

1
openssl x509 -inform DER -in burp.der -out burp.pem

1-4
获取subject_hash_old值并修改文件名为该值同时以 .0结尾

1
2
3
4
# 获取subject_hash_old值
openssl x509 -inform PEM -subject_hash_old -in burp.pem |head -1
# 修改文件名
mv burp.pem 9a5ba575.0

1-5

用ADB导入

来到安卓模拟器的bin文件夹下,并将上面制作好的文件放入该文件夹下,同时在该目录下启动CMD窗口
1-6
adb提升root权限,并重新挂载,然后将文件放入/sdcard/下。然后使用adb shell进入系统将文件移动至/system/etc/security/cacerts/下,同时更改权限为644后,重启即可
1-7

验证结果

重启完成后配置问代理,进入app进行操作发现burp已经可以抓到数据包,同时异常信息也消失了
1-8

文章参考:https://blog.ropnop.com/configuring-burp-suite-with-android-nougat/#install-burp-ca-as-a-system-level-trusted-ca

OVER~

奖励作者买杯可乐?