在实习过程中,我接触到了一些SDL安全提测的工作。原来我是学web端渗透比较多的,移动端这块基本没怎么试过手,结果刚开始一直踩坑,连抓包都抓不到(T▽T)。
下面记录下我遇到的部分问题和解决方法,由于问题都太基础了,没好意思请教大佬同事,基本都是自己学习解决的,大家看得不爽轻喷,有误请指教~
移动端抓包配置(Android)
材料:root手机、Magisk框架、EdXposed框架、riru-edxposed模块
这里建议大家可以直接买好root的手机,某宝某鱼都可以,直接让老板帮你把面具和EdXposed框架安装好会节省很多时间,我自己也是直接买了一个小米的root机。
拿到手机,首先和web端抓包一样,需要导入自己的burp证书。从这里导出证书,修改为cer格式,上传安装到手机里。手机通常在设置->系统安全->加密与凭证,可以从存储设备安装。
证书安装以后,配置代理,这里跟web端抓包也是一样的。让手机和电脑处于同一网络下,在burp->Proxy->Options这里添加监听器,ip是电脑ip,端口随意设置即可,其余的都不用修改
移动端这边可以直接在wifi设置里添加手动代理,如果觉得麻烦也可以使用Drony一类的代理软件。
完成这些就可以抓到简单的APP数据包了,如果只需要测试一些无壳或没有什么安全验证机制的APP到这里就差不多了。简单的测试需求直接用模拟器就够了,可以百度下教程很多。
解决证书问题
很多情况下,由于Android 10的一些机制,我们自己导入的证书会不能使用,导致抓不到包。这里我们需要用到Move Certificates模块将用户证书转为系统证书,下面是教程。
Move Certificates模块可以直接在Magisk框架里安装,也可以去github上面下载再本地安装。安装后启动模块
重启手机,可以看到用户证书转为了系统证书
绕过ssl校验
如果APP的流量采取HTTPS协议传输,会对ssl进行校验。我测试过程中遇到很多APP前面的配置都没问题还是抓不到包,查看终端报错信息如下
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found
或
javax.net.ssl.SSLPeerUnverifiedException: Certificate pinning failure!
Peer certificate chain:
看起来应该是ssl的检测机制产生的问题,可以使用SSLUnpinning模块绕过。
SSLUnpinning模块可以直接在EdXposed Manager里下载,如果下载不了,可能需要挂一下VPN,也可以去github下载自行安装。
添加完记得把模块启动,不然不会生效
在SSLUnpinning中选择你要测试的app即可,这里貌似随便选一个就会让所有app都实现绕过。
测试可以正常抓包