文章总结: 本文介绍了Flutter框架应用的抓包方法,指出Flutter应用不走系统代理、不信任系统证书等特点。针对代理问题,建议使用Postern或ProxyDroid工具;针对证书验证问题,提供了通过IDA分析libflutter.so文件定位SSL验证函数,并使用frida脚本注入绕过验证的详细技术方案。
综合评分: 91
文章分类: 移动安全,渗透测试,逆向分析,安全工具,漏洞分析
flutter框架抓包方法
原创
小白鱼来了
Joker One Security
2025年10月31日 23:52
北京
/*本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。*/
flutter框架app特点
APP的apk包中包含libflutter.so即可确定是Flutter开发的
可以使用工具进行检测,直接本地打开html,将apk传入进行检测
检测方法
- 不走系统代理
- 不支持设置代理
- 不信任系统证书
- 证书校验写死在so文件里
解决方法
代理
针对不走代理可以使用基于VPN模式的Postern,也可以使用基于iptables的ProxyDroid
postern使用方式参考以下链接
https://cn-sec.com/archives/1723105.html#google_vignette
证书
利用frida hooklibflutter.so中的函数
利用ida打开libfilutter.so文件,打开后先转为字符串,后ctrl+F搜索ssl_client
双击进入
找一下这个堆栈,点击红圈函数,按x追踪
点击第一个进去
F5进去查看伪代码,寻找函数地址码
利用frida脚本进行注入
https://github.com/G123N1NJ4/c2hack/blob/master/Mobile/flutter-ssl-bypass.md
function hook_ssl_verify_result(address){ Interceptor.attach(address, { onEnter: function(args) { console.log("Disabling SSL validation") }, onLeave: function(retval) { console.log("Retval: " + retval) retval.replace(0x1); } });}function disablePinning(){ // Change the offset on the line below with the binwalk result // If you are on 32 bit, add 1 to the offset to indicate it is a THUMB function: .add(0x1) // Otherwise, you will get 'Error: unable to intercept function at ......; please file a bug' var address = Module.findBaseAddress('libflutter.so').add(需要修改的地址) hook_ssl_verify_result(address);}setTimeout(disablePinning, 1000)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Joker One Security 小白鱼来了《flutter框架抓包方法》