前言
有群友想直接了解一些常用的Android的抓包手段,直接安排,让你可以快速上手常见的app抓包的方式及工具。
前期准备工作
Android真机(推荐7.0以下比较容易,原因后面详解)或者模拟器。
ProxyDroid或者postern等代理app。
charles或者burpsuite抓包工具。
frida或者xposed框架(后续可能会出刷机教程或者是商城上架手机可以兑换嗷)。
动手实践
证书安装
首先是证书的安装,安装Charles或者burpsuite的证书到手机或者是模拟器上,推荐Android7以下是因为证书安装即可被信任,由于Android7以上只有系统级证书才能被信任,还需要移动证书。移动证书这个操作,常规操作还是很麻烦的。手机root后可以使用Magisk框架下的MoveCertificates,然后重启后证书就自动移动到系统级证书下面了。
第一层
最简单的抓包方式莫过于直接修改wifi配置设置代理,填入相应的ip及端口即可。
(网图 非真实ip)
第二层
有时https服务端会校验客户端的抓包,这时除了进行hook相关方法之外,还可以将apk后缀改为rar或者zip(apk的本质就是一个压缩包),然后搜索crt,cer,p12等与证书相关的后缀名,将这些证书直接导入到Charles或者burpsuite中,就可以成功对抗客户端校验了。
第三层
利用vpn代理抓包,设置postern或者是ProxyDroid,在手机上设置流量转发,charles设置socks端口。
第四层
证书绑定机制(SSLpinning),这就是说程序中直接不默认信任系统根证书目录中的证书了,中间人攻击的要点就是伪造一个假的服务端证书给了客户端,让客户端信以为真。这时SSL pinning就是说 客户端内直接内置一份证书,进行校验,如果校验不通过,直接就断开连接不再进行数据通信。
SSL pinning有两种方式:
证书锁定和公钥锁定
证书锁定
需要在客户端代码内置仅接受指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性,因此客户端与服务端(例如API网关)之间的通信是可以保证绝对安全。但是CA签发证书都存在有效期问题,缺点是在
证书续期后需要将证书重新内置到APP中。
公钥锁定
提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。制作证书密钥时,公钥在证书的续期前后都可以保持不变(即密钥对不变),所以可以避免证书有效期问题,一般推荐这种做法。
此时主要是就是利用hook关键函数的操作来进行了。
简单总结
R0capture使用
仔细想了一下,问题应该是出在了没有安装frida上。此处以模拟器(天然root)安装frida为例,首先在PC上安装frida。
pip install frida
pip install frida-tools
安装完成后输入frida --version出现版本就说明安装成功了。
接下来就是在模拟器上安装frida服务端,第一步先查看手机设备信息,避免下载之后没法用。
getprop ro.product.cpu.abi
这是查看cpu版本后,找到对应的server,注意frida版本也要对应。
下载下来后,尽量改一下名字,比如f14.2这样子的,因为有些app可能只是检测frida这个名字来进行frida检测。修改名字后可能就会有概率直接过了frida检测。
然后chmod 777 frida-server给权限。
再./frida-server就成功运行了。
更加详细的frida安装过程可以看一下子炎师傅的这一篇文章
https://zone.huoxian.cn/d/389-app
然后此时将R0capture中的库安装完成,就可以进行抓包了。
python3 R0capture.py -U 包名 -v -p test.pcap
推荐使用attach模式,可以在任何你想抓包的地方进行抓包,避免了抓出来的流量包过多,干扰分析。
总结
抓包问题更加详细的文章火线zone上也有很多,有什么问题大家一起交流呀。