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数据包的三道难关

二、 不同安卓版本抓包所遇到的困难


为什么要将安卓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…
四、小结

讲了半天了,总要给个方案吧?
所以,我最后决定采用:

解释:


贴个链接:派大星版Xposed安装教程
五、安装步骤:

1.安装雷电模拟器,安装Xposed框架



重启后激活完成

2.安装ProxyDroid和Trustme++

把这两个安装包拖进来即可


3.打开ProxyDroid设置代理

类型选择http即可。

4.fiddler查看

访问一下百度,不出意外的话,已经抓到了。
http和https的都能抓到。

六、疑难解答:

七、安卓5和安卓11思路:

写不出来了,等我以后一定填坑。
本篇(暂时)完结。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4