一. 抓包注意细节
-
1. 确定手机信任了证书,而且证书是放在系统目录
-
2. 确认手机时间是当前时间
-
3. 移动证书到根目录用magisk的move certificates模块挺方便
二. 抓包几种方法
-
1. 手机设置代理burp正常抓包
-
2. 手机转发流量,burp设置透明代理抓包
-
3. linux下共享无线,流量转发,mitm抓包
-
4. httpcanary在手机上抓包
-
5. frida通杀脚本抓包
-
6. 电脑共享无线,wireshark抓包
-
7. 逆向分析代码,拦截打印数据包经过的函数
-
8. 定制frida通杀脚本,针对特殊app
三. 抓包经验
-
1. 先用httpcanary抓,摸一下情况,httpcarya可以抓到tcp,udp的包,以防应用用tcp,udp传输,其他工具没抓到,而且burp,frida等工具配置还是比较麻烦
-
2. httpcanary抓过之后就能看出来应用是否有证书校验,是否有代理检测,好不好抓包
-
3. 有证书校验上frida过证书校验的脚本
-
4. 如果有代理检测,逆向分析hook掉或者burp透明代理上,透明代理更快
-
5. burp透明代理抓不到,在linux上用mitm抓,其实原理一样,但是这两工具响应速度上有差别,两个结合用以防配置出错或者有的请求响应时间短出问题
-
6. burp,mitm抓不到,用frida抓包通杀脚本,然后用wireshark分析,wireshark看http的包还是容易看的
-
7. frida通杀脚本拦截不到,应该就是应用自定义ssl发包了,在应用核心逻辑所在的so搜函数ssl_read,ssl_write,如果有,基本肯定是自定义ssl,定制frida通杀脚本,将脚本里面的“libssl”修改成应用核心so的名字,然后再拦截
-
8. 如果应用核心逻辑所在的so没有ssl_read,ssl_write函数,就用记事本等工具搜索整个应用目录文件,搜ssl_read,ssl_write这两词,它可能调用的其他so执行的,然后frida通杀脚本“libssl”修改成对应so的名字
-
9. 有的应用里面能搜到ssl_read,ssl_write,但是函数名有差别,比如有的用的是“ mbed_sslread”
-
10. 如果还抓不到,换ios平台抓包,ios相对安卓来说确实证书校验少点
-
11. 如果还抓不到,逆向分析,比如unity框架的,找发送包的函数拦截
-
12. 建议先换各种工具抓,最后逆向分析,逆向分析还是比较费劲
-
13. 证书校验如果frida脚本绕不过,ddms跟踪下,看checkServerTrust这类函数是否有调用,再逆向分析hook掉。如果证书强校验在so,目前见过的在so发包的就libssl.so的函数或者mbedssl里的东西,找到对应函数,阅读ssl框架或者mbedssl框架源码,知道它是怎么校验证书的,然后so里找到对应函数hook掉
-
14. 关注log,log中有时会提示证书校验错误
-
15. 针对Cronet的抓包,看引用链接,关键点还在于对特殊的发包框架做特殊修改
-
16. 针对flutter应用的抓包,看本星球前期文章“Flutter应用逆向抓包”,它关键在于设置全局代理,避免不走系统代理,自定义端口等一些特殊情况
-
17. 针对微信小程序的抓包,降低微信版本是个好选择
-
18. 针对抓wss的情况,用charles开socket5抓
-
19. 针对tcp、udp的情况,本人目前碰到的比较少,只是用wireshark硬看,没高效更好分析的方式
四. 总结
以上的抓包顺序、hook框架、抓包工具随意组合,灵活发挥,引用别的工具配合也可以。
引用文献:
[1] https://bbs.kanxue.com/thread-277996.htm
[2] Flutter应用逆向抓包
原文始发于微信公众号(移动安全星球):app抓包大全
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论