有些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. |
报错的原因就是SSL握手时,app发现从burp过来的CA凭证不在系统CA库中,导致握手失败,从而导致了此次的异常。接下来用安卓模拟器来演示如何将burp证书导入到系统CA库中。
导出与转换CA证书
burp导出CA证书
自己随意给证书起个名字和导出的位置,比如:
导出成功后,使用open-ssl来转换证书格式为PEM,因为安卓证书采用PEM格式,同时文件名以 .0 结尾的 subject_hash_old 值
1 | openssl x509 -inform DER -in burp.der -out burp.pem |
获取subject_hash_old值并修改文件名为该值同时以 .0结尾
1 | # 获取subject_hash_old值 |
用ADB导入
来到安卓模拟器的bin文件夹下,并将上面制作好的文件放入该文件夹下,同时在该目录下启动CMD窗口
adb提升root权限,并重新挂载,然后将文件放入/sdcard/下。然后使用adb shell进入系统将文件移动至/system/etc/security/cacerts/下,同时更改权限为644后,重启即可
验证结果
重启完成后配置问代理,进入app进行操作发现burp已经可以抓到数据包,同时异常信息也消失了
Gitalking ...