一、某安卓APP渗透测试背景
某次接到公司活需要对一款安卓APP产品进行渗透测试,渗透测试服务是一种模拟真实攻击手法,评估目标系统和应用程序的安全性,并提供安全建议和修复方案的服务。一般情况下使用安卓模拟器 + 抓包工具或者真机(需要root权限) + 抓包工具,但是在测试过程中遇到安卓APP双向认证而导致无法抓取数据包问题,后面通过不断调试环境成功解决了该问题,并继续进行下一步渗透。
二、某安卓APP抓包遇到的问题
1、某加速平台的安卓APP产品是VPN形态,第一次遇到登录安卓APP环境是VPN产品,测试该产品还做了服务端与客户端的双向校验。正常情况下,用手机登录安卓APP情况如下图所示:
2、用Burpsuite抓包测试遇到的相关问题:
由于该产品安卓APP不信任第三方证书的问题,它只信任自己的证书,所以会弹出证书信任的报错,且用Burpsuite抓包测试没法正常登录APP。测试用夜神模拟器在不设置代理情况下,先登录APP,然后再设置代理抓包,APP也会出现报错“null cannot be cast to non-null type kotlin.collections.List<*>”,无法获取到数据包的返回包。(如下图)
3、测试安卓模拟器版本问题是否影响APP正常登录:
在正常情况下,夜神模拟器Android12版本和MuMu模拟器12版本,在不配置代理情况下支持正常登录测试安卓APP。网络正常不设置代理,夜神模拟器Android7 64bit和Android7 32bit都不支持APP正常登录,并出现报错“Handshake failed”。(如图)
后面使用Proxifier + Burpsuite双层代理抓包测试方案,APP登录一样出现报错信息,且无法抓到正常数据包,报错信息如下:”java.security.cert.CertPathValidatorException:Trust anchor for certification...”(如下图)
三、某安卓APP抓包测试解决全过程(调试环境)
- 准备条件:
a)模拟器WiFi修改为本地电脑IP代理,端口与burpsuite对应。
b)导入系统证书(在安卓7.0以上的系统版本中,app默认不信任用户安装的证书,只默认信任系统证书,需要将burpsuite证书导入在系统证书内)。
注意:如果没有证书但设置了wifi代理能够抓取http的包,但是对于https的包无法抓取,因为流量出去但是无法代理也找不到目标服务器,所以直接在系统设置-安全-从SD卡安装证书安装的是用户证书,而不是系统证书。
- 调试环境过程:
- 准备Burpsuite证书
打开Burpsuite ,Proxy>options>import/ export CA CERTIFICATE,选择第一个一路点击下去,导出Burp证书,导出格式为burp.der。
直接用kali的工具进行转换证书格式,并重命名burp.pem文件为9a5