安卓APP抓包
背景
在渗透测试项目中,有很多目标单位有专属的APP,其中APP自身安全和APP对应的服务端接口也是渗透测试的攻击面,但是现有的APP安全防护措施不断提高,从APP本身发现安全问题的可能性降低,且服务器与客户端的通信过程也有较多的安全校验,下文将介绍安卓APP的抓包方法,方便渗透测试过程中的漏洞挖掘。
证书校验
现在很多APP的网络请求都使用HTTPS,HTTP报文可以很轻松的通过在手机上设置代理然后通过BurpSuite等报文嗅探、代理软件截获,便于后续分析,但是HTTPS报文传输过程需要证书认证,现有多数APP还有双向认证机制,即不仅服务器要校验请求是否来源于真正的客户端,客户端也会校验收到的信息是否来自于服务器,而且安卓7.0之后,APP只会识别系统级别的证书,而从BurpSuite和Charles中导出安装的证书是用户级证书,因此导致在转包软件中无法抓到相应APP的流量数据,因此有两种方法可以安装:
- 获取Root权限,然后将抓包软件的证书安装为系统级证书
使用ADB安装证书
1 | # 1.从Charles取出证书 |
- 修改APP包Androidmanifest,文件并将APP重新打包
APP校验证书
有些APP会有SSL pinning通过APP自身代码校验证书和服务器的关系,这种情况下使用自己导出的证书无法通过此步认证,可以通过逆向APP将APP验证的证书提取出来,证书通常在/assets目录下,通过jeb等反编译工具全局搜索cer、p12、pem、ssl等关键字可以找到相应证书未知,将证书导出并导入到抓包程序内即可,如下如是某APP内证书存放位置:
模拟器抓包
可能为了更方便的实现模拟器自身的功能,目前市面上多款模拟器的安卓版本多为安卓6,因此在抓包就相对容易一些,首先在模拟器中安装Xposed框架,然后在框架中安装JustTrustMe模块,安装成功后界面如下:
在模拟器中将系统代理地址设置为Charles地址,默认为本机IP+8090端口
抓包成功示意图:
对于部分反分析功能比较完善的APP,以上分析方法可能就会失效,比如APP会校验自身运行环境是否已授权Root,如果已授权则禁止运行,或者检测是否安装Xposed这种通常在正常使用环境中不会出现的APP就会退出等,遇到这种APP还是要先通过逆向将检测逻辑给过掉才能继续分析。
代理APP
除了以上手机抓包方式,还有一个可以安装在目标安卓系统的一款APP:Packet Capture,此应用通过设置系统代理的方式截获其他APP的数据包,也可以对一些没有双向认证的APP进行简单地分析。
软件界面:
抓包界面:
总结
以上方法可以实现安卓客户端流量抓取,方便渗透测试过程中发现更多渗透入口。