前言
为什么会有抓包的需求呢,因为在日常的各种渗透测试工作中,偶尔会遇到给定的目标是一个APP或者小程序,而这种情况下要进行测试第一步就是先抓包。刚好国庆假期有空就拿手机上的几个APP进行了一些尝试。
抓包前的准备
这是一台前段时间在某鱼上淘的小米平板4:
买回来之后先解锁、刷LineageOS
、刷Magisk
、装LSPosed
之后就拿来作为调试机了。
安装证书
在抓https的包之前得先把burp的证书导入到安卓设备中。在安卓7以上只有系统证书才能被信任,所以为了抓到包我需要将证书安装到系统证书中。
首先导出burp的证书:
在安卓设备中安装CA证书,之后在受信任的凭据中可以看到它被安装到用户证书中了:
接着我得把安装的用户证书移动到系统证书的目录,而为了解决Read only file system的问题,又得将/system
目录挂载为可读写的:
|
|
然后就能看到Burp的证书已经被安装到系统证书中了:
还有一种方案解决证书的问题是直接安装TrustMeAlready模块,在无法解决/system
目录写入权限问题的情况下可以用这种方案。
设置代理
设置代理前得先去burp中设置监听的网卡为All Interfaces
,让它能接收到安卓设备发来的http报文:
在安卓设备上设置代理这一步有好几种方式,我可以直接在WIFI的高级设置里面设置代理:
还可以用adb设置代理:
|
|
最后还有一种方案是通过HttpCanary
或者Proxifiler
进行抓包:
在完成以上的一些尝试之后我打开了几个手机上几个比较好抓的APP,在Burp上都能接收到:
使用frida获取AES密钥
国庆假期的时候测试了某不知名的涩涩APP,通过Proxifiler
设置代理进行抓包,发现参数被加密了:
就这一长串就是加密后的参数,如果想对报文进行修改,那还得对加解密的逻辑进行分析。将APP丢进jadx
,搜索Secret
关键字找到对应的函数,找到加密算法:
从这里看加密算法就是用的AES
的CBC
模式,用了PKCS7
填充。我这里使用objection
对key
和iv
的两个类的构造函数进行hook
:
|
|
这样的话APP在执行到这两个函数构造方法的时候就会就会将参数打印出来,这样就能获取到AES的key
和iv
:
再拿到python
中进行加解密:
|
|
到这里已经可以修改APP发起的HTTP请求,也能解开服务器返回的数据了。