点击关注公众号,知识干货及时送达👇
01
前言
在对app进行https抓包的过程中,总会遇到无法抓取有效数据包的情况,本篇文章就这个问题,收集并总结了一个解决方案,在这套环境配置完成之后可以为你后面的app抓包省下不少时间与麻烦。
02
借助burp抓Android7.0数据包
首先开启burp的代理
配置Proxifier
设置程序dnplayer.exe、Idvboxheadless.exe走刚刚设置的代理dnplayeri雷电模拟器启动程序和模拟器主程序;LdVBoxHeadless雷电模拟器对外网络协议走的都是这个程序。
把burp证书导入雷电模拟器进行安装,证书使用.cer的格式进行安装,凭据用途选VPN和应用
进入:/data/misc/user/0/cacerts-added这个文件夹下(该目录存储的是用户自己安装的证书文件)
复制该.0文件(文件名可能是不一样的)
复制到系统证书目录/etc/security/cacerts下(re文件管理器需要挂载读写权限、模拟器中自带root管理授权即可)
首先选中该文件
把选中的文件复制到/etc/security/cacerts下
现在浏览器不会在弹出该网站的安全证书有问题了,并且很多app只允许在Android7.0以上能跑起来也能抓到包了。
03
突破SSL Pinning
绕过SSL Pinning验证
下载JustTrustMe安装包并安装到手机里,在Xposted中激活并重启手机,就可以抓取手机中的流量。
SSLUnpinning2.0插件和JustMePlush插件当然也可以
04
eCapture Https明文抓包
需要一台ROOT的设备,并且符合使用的系统内核版本,将设备与电脑进行连接 adb shell
然后 cd /data/local/tmp
然后 ./ecapture tls 即可
后续操作想要监听的APP就能实时返回Https数据
05
绕过双向认证
当服务器启用了双向认证之后,除了客户端去验证服务器端的证书外,服务器也同时需要验证客户端的证书,也就是会要求客户端提供自己的证书,如果没有通过验证,则会拒绝连接,如果通过验证,服务器获得用户的公钥。
解决思路:
a.反编译找证书私钥
-
先通过工具反编译APK文件,找到证书的文件。一般证书文件可能会放在assets或者res目录下可以直接搜索证书文件。
-
证书文件格式后缀如:ct、cer、p12、pf等等。
-
找到证书文件后打开它会发现是需要私钥的。拿到证书文件名后,在反编译好的源代码中查找相关函数,找到私钥。
-
导入输入私钥后的证书到burpsuite后,即可正常抓包。
可以关键字搜索“key”、“password”、“ssl”等关键字,快速定位到私钥位置。
难点还是反编译后遇到难脱的壳和代码混淆的问题。
b.Hook SSL对数据解密的地方
虽然ttps在传输过程中是加密的,但在终端显示的时候,必然会解密,不然APP上都没法显示了。
所以如果能知道安卓解密SSL加解密是哪个类,Hook这个类,类里相关方法的输入输出肯定就是传输的明文数据。
06
小结
这是比较常用的抓包姿势,基本可以抓到未加固的或者debug版的App的数据包。代码混淆,入口加固,资源加固等App,混淆类的需要通过匹配函数的参数类型找到修改后的函数名自己重写方法、加固类的需要jadx-guif反编译后分析加固的的逻辑找到App的函数入口让其初始化解密后再重写相关函数等。
- End -
原文始发于微信公众号(希石安全团队):App抓不到包?试试这个方法!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论