ToB企服应用市场:ToB评测及商务社交产业平台
标题:
3.#技术|Android抓包的原理分析和实际操作,fiddler+Xposed+TrustMe++
[打印本页]
作者:
农民
时间:
2022-6-24 04:52
标题:
3.#技术|Android抓包的原理分析和实际操作,fiddler+Xposed+TrustMe++
一、写在前面
目的:
实现对安卓应用的抓包,主要讲述Android 7.0+,因为大多新生app不再支持sdk6.0以下,而安卓11(10)的抓包在不装有 Magisk 等繁琐的操作下难以实现(后文再聊),所以选用安卓7的设备,目前还能满足绝大多数需求,(虽然不知道以后会怎么样),所以在此文中会一并给出安卓5.0和安卓11的抓包思路。
探寻过程中读到一篇文章,对计算机网络的知识讲解的十分透彻,覆盖https通信过程以及安卓底层代码的实现原理,文章很长但确实给了我很大的帮助,希望有兴趣的同学也能读一读。
附上链接:
legalwyy的法学笔记跨越Android 11监听https数据包的三道难关
二、 不同安卓版本抓包所遇到的困难
Android5.0:无困难,网上的教程一大堆,但是app陆续不再支持。
Android7.0以上:不再信任用户证书,需要将放到根目录。并且设置中修改代理后,app有权限不走系统代理。(这一点网上的文章都没有提及,导致我们往往在最后一步出问题)。
Android10:引入的动态分区阻止用户将system分区挂载为可读写,无法将证书放入根目录。
Android11:同上,而且越来越难抓。
为什么要将安卓10 和11 分开呢,可能是因为国产厂商深度定制的问题,用
Httpcanary(黄鸟)
等手机抓包app依然能对其导入的用户证书添加信任,也就是说你的手机是安卓10及以下或许仍然能用抓包app进行简单抓包。对了,还有华为的HarmonyOS截止文章发布前也可以添加信任。(可能也有些
玄学
的因素吧,但确实是抓到了。)
而安卓11更差不多凉凉了,必须root设备+Magisk+Trustme插件(hook),此处先按下不表,最后再说。
三、软件厂商反抓包的措施
除了上面遇到的系统性的困难,各类软件厂商还想出了一些反抓包措施,又给我们增添了
超级多的困难。
1.客户端内置根证书
2020年前后吧,各大软件厂商都纷纷更进先进检测手段,以至于现在大厂app都将自己的证书内置在了手机软件里,在建立链接传输数据前先检测接收到的证书是否与内置根证书一致,否则直接中断链接。
这确实恶心,但是否有解决的办法呢?
答案是肯定的的,但我们也不得不
root
手机,然后装上
Xposed框架
(或者Magisk),再安装
JustTrustMe
一类的插件,才能勉强解决。
JustTrustMe原理:
基于一种Hook技术(钩子),App检测ssl证书与内置根证书是否一致时,此插件将app中检测证书的api钩住,不管一致与否,直接强行通过。类似于忽略ssl证书错误。
其中的坑:
JustTrustMe只能识别未被混淆的变量名称,一旦厂商做了混淆(这很容易),我们就比较难识别,也就Hook不出来了。
还好有大佬对插件做了更新,并在GitHub上开源,叫TrustMe++,使其也能识别混淆的变量。
但这并不是长久之计,但我们目前也就只能这样了,早晚有一天这条路会被堵死(悲伤)。
2.服务器端检测(究极恶心且无解)
我们以为客户端验证就结束了吗?不,为数不多的厂商为了保证通信
绝对绝对绝对
的安全,会在服务器端再次检测客户端证书是否一致,这就保证了用户不可能进行篡改,一旦证书检测未通过,服务器端会主动断开连接。。。
我的天呢,这,这,这,真的心累了。
我们看似是我们手机的主人,却发现系统在防着我们,app在防着我们,甚至远在云端的后台也在防着我们。
有解吗?
可能有吧,要具体的看厂商采用的验证措施了,这意味着你要进行一次超级彻底的安卓逆向工程,反编译、反混淆脱壳,去签名验证、巴拉巴拉等等等等等,最后找到加密验证的源代码,然后一顿分析,试图发现证书秘钥或绕过加密。。。
看来这次是真的无解了。
不过现在用这条路的app比较少,但如果互联网环境继续恶化下去的话,mabye…
四、小结
讲了半天了,总要给个方案吧?
所以,我最后决定采用:
雷电4.0X的模拟器
安卓7.1.2的镜像
ProxyDroid代理软件
派大星版Xposed框架
Trustme++插件
Fildder抓包工具
解释:
我怕还是有人看不懂,Xposed框架、ProxyDroid、Trustme++,是3个手机软件,需要你装到模拟器里面的。
模拟器我换了好几个,最后还是用了雷电模拟器,但我不建议你去官网下,广告太他妈多了。
安卓镜像我也不建议用官方的,最好用别人精简好的。找不到的话可以联系我,我给你发。
ProxyDroid是个代理app,因为安卓7.0 设置了wifi代理后,应用可以选择绕过系统代理。
这个地方巨坑,巨坑,巨坑,而且网上没人说。
Xposed框架需要自己装,但是国外服务器连不上,我就用的国内兄弟自己做的镜像app。
Trustme++找不到的话联系我,我给你发。
贴个链接:
派大星版Xposed安装教程
五、安装步骤:
1.安装雷电模拟器,安装Xposed框架
重启后激活完成
2.安装ProxyDroid和Trustme++
把这两个安装包拖进来即可
3.打开ProxyDroid设置代理
类型选择http即可。
4.fiddler查看
访问一下百度,不出意外的话,已经抓到了。
http和https的都能抓到。
六、疑难解答:
Xposed框架安装可能会失败,看一下你的镜像是不是X86的。还有我用的派大星版,这个是作者改了国内下载地址的,如果你从GitHub上下载的Xposed,因为有墙的原因,不会显示安装。
看看这个链接:
派大星版Xposed安装教程
Trustme++插件安装后需要重启激活,然后你用了这个东西是不需要安装fiddler证书的。直接就能忽略ssl证书错误,如果你还是抓不到的话,也可以安装fiddler证书试试。
七、安卓5和安卓11思路:
写不出来了,等我以后一定填坑。
本篇(暂时)完结。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4