IDA nb,Frida nb!
0x00.前言
这是第二次在这里提到Frida
这个Hook
工具了,但是这次的背景却更加简单,只是为了挂签到脚本而已
本文根据时间顺序从前至后回顾编写,章节无比跳跃,大佬轻(rao
)喷(ming
)
第一次前情回顾:Frida 初体验
0x01.Fiddler
抓包
HomeAssistant
局域网唤醒台式机,远程桌面连进去之后先开启热点让手机连上,然后打开Fiddler
(海鲜市场以十五折售出,手里现在没有显卡。。。但是这个时候自己并不知道这个应用是基于Flutter
构建的,自然是有用的api
啥都没抓到
注:此时安卓的基础抓包环境是没有问题的(狗东和你b
的客户端请求都能看到)
点击此处 ← 查看折叠
0x02.WireShark
抓包
一气之下打开WireShark
瞅瞅(请无视客户端为macOS
版本
注:这里WireShark
解析的结果,是已经配置过TLS
协议的(Pre)-Master-Secret
文件
点击此处 ← 查看折叠
但是显然Application Data
仍然是加密的,那么有没有方法把这一层再解开呢?答案是肯定的,毕竟已经是Mitm
环境了啥证书都能拿到或者伪造(吧)
0x03.Fiddler
抓包再放送
参照利用Fiddler和Wireshark解密SSL加密流量,只需对应网站的私钥即可,在Fiddler
中需要把证书生成器修改为CertMaker
(注:默认选项是另外一个)
于是只好被迫删掉当前证书,然后切换到CertMaker
,接下来把证书安装到安卓手机上,此时的自己并不知道一个巨坑已经挖下了
由于K20Pro
几个月之前从Android 10
升级到了11
版本,出于安全性考虑不再能通过直接点击.crt
文件来安装证书了
于是只能按照弹框所提示的方法进行操作了,进入到设置
-密码与安全
-系统安全
,点击高级
下的加密与凭据
点击此处 ← 查看折叠
网上有说法选择第一个CA
证书并忽视报错,但是总感觉类型其实是第二种
点击此处 ← 查看折叠
安装完成之后总得试一下是否生效,结果突然陷入僵局,因为更新完新的Fiddler
证书之后狗东和你b
的客户端请求都看不到,这是自己没想到的
折腾了好多次一气之下狠心删掉全部证书,重启,安装证书,再重启也无果,包括上述的第二种选项也尝试了,可就是抓包不能
点击此处 ← 查看折叠
并且其实信任的凭据
中已经能看到新证书位于系统
中了,而用户
证书是空的
点击此处 ← 查看折叠
这时候已经接近七点钟天都黑了,还没吃晚饭于是果断停止了思考,不(chi
)搞(fan
)了
0x04.静态分析
やだよ,静态分析
相比(轻车熟路的)分析通信
实在是太痛苦了,でも仕方がないです(从来就没有动态分析
过.jpG
在lib
的arm64-v8a
目录下,看到有libflutter.so
和libapp.so
,その通りです,这个应用是基于Flutter
构建的
这就一下子点明了方向,只需要去查找Flutter
应用的抓包方法即可
注 ①:其实最开始是直接扔到了JEB
里,然后在那里看到是Flutter
应用,后来才去解压的apk
(当时显然后者更简单2333
点击此处 ← 查看折叠
注 ②:额外吐槽下Flutter
构建的应用加密是真nb
,libapp.so
啥函数都看不着
点击此处 ← 查看折叠
0x05.Charles
抓包
因为安卓证书炸了,Fiddler
抓包不能,被迫回到macOS
生产力平台,打开Charles
一顿操作猛如虎,光速配置完成
点击此处 ← 查看折叠
并且看到了Flutter iOS App https抓包这篇文章,直接暴力替换TCP
连接的IP
地址有被震惊到,思路清奇开了个反向代理
也真是骚操作(Σ(o゚д゚oノ)
这里贴一下修改好的Frida
注入脚本
「Talk is cheap. Show your the code」
点击此处 ← 查看折叠
1 | /* |
开启反向代理然后Hook
,生效了吗?并没有((╯°□°)╯︵┻━┻
注 ①:macOS
开启热点不是在网络
而是在共享
设置里草(差点以为mini
不能开热点……
点击此处 ← 查看折叠
注 ②:到现在Magisk
里的Frida-Server
仍然是用不了的状态,只能手动切换到su
用户来运行
点击此处 ← 查看折叠
0x05.Flutter
抓包
言归正传,参照安卓 flutter app证书绑定校验抓包绕过
macOS
上也下了AS
,这样就能USB
调试了,顺带必需的ADB
工具就也有了,点开Logcat
,过滤只看flutter
,有一个报错出自handshake.cc:354
因为Flutter
是开源的,于是去gh
找一下对应的位置,请无视行号因为版本不一致,但是函数是对的
根据大佬的文章,更好的Hook
位置在ssl_crypto_x509_session_verify_cert_chain()
打开IDA
,把libflutter.so
拽进去,稍等片刻等分析得差不多了的时候再开始
搜索字符串
ssl_server
双击跳到字符串定义
反查
交叉引用
,得到偏移量5873D4
光速
Hook
しかし,Hook
之后应用确实可以正常访问网络了,但是抓包的结果却是空白,此时已是半夜三点多了,无奈只能关电脑睡觉了
注:不分析完得到的地址是不正确的草,又多走弯路了
点击此处 ← 查看折叠
0x06.引用
本文表情包出自:震惊!耗时还能这么优化??
MacOS 下 Wireshark 抓取 Chrome HTTPS
安卓11安装Burp证书
移动应用安全基础篇:APP抓包姿势总结
未完待续……