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思路:
写不出来了,等我以后一定填坑。
本篇(暂时)完结。
3.#技术|Android抓包的原理分析和实际操作,fiddler+Xposed+TrustMe++相关推荐
- Android逆向之旅---爆破一款资讯类应用「最右」防抓包策略原理分析
一.逆向分析 首先感谢王同学提供的样本,因为王同学那天找到我咨询我说有一个应用Fiddler抓包失败,其实对于这类问题,我一般都会这么回答:第一你是否安装Fiddler证书了,他说他安装了.第二你是否 ...
- 魔兽抓包——BattleLAN原理分析
冰封抓包结果如下: 1>开游戏,点"局域网"发出消息: 172.16.28.16-->255.255.255.255 udp LEN=udp 24B 端口: ...
- 前端人必须掌握的抓包技能(原理到实践)
https://juejin.cn/post/7140040425129115684 作者:jecyu 1. 前言 时隔 3 年,重新接触了移动端 h5 页面开发,上一次还是大四实习.这一次是 hyb ...
- Android抓包方法(一)之Fiddler代理
做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 具体步骤如下: 1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有 ...
- Android抓包方法(二) 之Tcpdump命令+Wireshark
前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等.学会抓包分析是测试人员必备的功课之一.最先想的基本上都会是Fiddler代理抓包, ...
- Android抓包方法(一) 之Fiddler代理
前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机项目测试,还是现在的企邮app测试,经常需要抓包,做 ...
- Android抓包指南①: 使用Fiddler抓HTTP/HTTPS包
抓包的重要性 网络抓包,是Android应用逆向分析的重中之重,很多时候我们拿到一个APP,不知道从何入手分析,往往是从抓包开始,先弄清楚他与服务器通信的内容,如果一目了然,我们完全可以照搬,自行写一 ...
- Android抓包方法之Win7笔记本Wifi热点+WireShark工具
Android抓包方法 之Win7笔记本Wifi热点+WireShark工具 前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第 ...
- Android抓包指南: 使用Fiddler抓HTTP/HTTPS包
本文由encoderlee发表于CSDN博客:https://blog.csdn.net/CharlesSimonyi/article/details/90493122 抓包的重要性 网络抓包,是An ...
- Android抓包方法(三) 之Win7笔记本Wifi热点+WireShark工具
前言 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 第一篇介绍Fiddler代理,如果APP不支持代理,则不适用:第二篇介绍的Tcp ...
最新文章
- CSS截取字符串,兼容浏览器
- ieee期刊_论文绘图神器来了:哈佛博士后开源,一行代码绘制不同期刊格式图表...
- leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
- ado.net 操作mysql_ADO.NET操作数据库(一)
- mvn本地库导入jar包
- 计算机在言语康复的应用,实物交互在言语康复训练中的应用.pdf
- PeopleTools 8.54 first install note
- string 与stringbuilder的区别
- Dubbo即将毕业,晋升为Apache顶级项目?
- VSS 2005,项目解决方案重新签入管理的方法
- 国外游戏开发公司10强
- 通过这些快捷键解决YouTube的“空格键问题”
- 大学生找工作如何做自我介绍?如何做好自我介绍?
- 直播系统开发:宋祖儿直播自曝“抠脚妹”
- volatility 基本用法
- 推荐|微信朋友圈营销的新尝试
- Android中TextView中的.setText和.append的区别
- python : 新概念英语 课文转为html
- Protobuf 了解
- postgresql等待锁排查——ShareLock ExclusiveLock
热门文章
- android剪贴板清空,如何访问和清除Android手机上的剪贴板
- C++ Test的使用
- 生物信息学:根据PDB名称、爬虫PDB数据库的信息、保存到Excel里
- 线性代数与空间解析几何重要知识点笔记
- stata 导出 相关系数表_STATA数据处理技巧与计量分析二|基本语句介绍
- 文献翻译——基于关联规则挖掘识别的鸡源大肠杆菌共有多重耐药模式(上)
- java参数配置jconsole_jconsole 配置详解
- 彻底凉了!全球最大电子书网站遭美政府封站
- 安装jdk的时候为什么会有两个jre文件
- 二、正确看待博弈论和经典理论的理论定位