Tide安全团队 2024年11月27日
Flutter框架APP绕过SSL验证
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Flutter框架的特点以及在抓包过程中遇到的挑战,例如APP不走系统代理、不支持设置代理、不信任系统证书等问题。文章深入分析了Flutter框架中HTTPS证书校验的机制,并详细阐述了如何利用Frida框架hook libflutter.so中的ssl_client函数来绕过证书校验,最终实现对Flutter框架APP的抓包。文中还提供了相关的Frida脚本和参考链接,方便读者学习和实践。文章强调了技术仅供学习交流使用,不得用于非法用途。

🤔Flutter框架APP的特点:使用Dart语言开发,lib文件夹下包含libapp.so和libflutter.so两个库,前者包含业务代码,后者包含基础类库。

🐞Flutter框架APP抓包的挑战:不走系统代理、不支持设置代理、不信任系统证书,导致常规SSL绕过方法失效。

🔍Flutter框架SSL证书校验机制:证书校验逻辑写死在SO文件里,通过hook libflutter.so中的ssl_client函数可以绕过。

🔧Frida脚本绕过SSL Pinning:利用Frida脚本hook libflutter.so中的ssl_client函数,修改函数返回值,从而绕过证书校验。

⚠️技术仅供学习交流:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!

声明:Tide安全团队原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!

0x01 前言

之前听说过Flutter框架APP没有通用的抓包方案,但一直没找到相关APP进行测试,正巧手头遇到了一个APP尝试用了之前写的方法都抓不到包,所以联想到有可能使用了Flutter框架。

APP抓包姿势总结

记一次APP双向认证抓包

强混淆APP SSLPinning Bypass

0x02 Flutter介绍

Flutter是Google构建在开源的Dart VM之上,使用Dart语言开发的移动应用开发框架,可以帮助开发者使用一套Dart代码就能快速在移动iOS 、Android上构建高质量的原生用户界面,同时还支持开发Web和桌面应用。

0x03 Flutter特征

当使用Flutter构建Android APP时,lib文件夹下的每个受支持的架构下会出现两个库:libapp.so和libflutter.so,libapp.so库包含了开发过程中编写的所有编译过的Dart业务代码。libflutter.so库则存放了flutter的一些基础类库。

0x04 Flutter抓取HTTPS

使用正常抓包测试流程发现该类APP不走系统代理、不支持设置代理、不信任系统证书后续了解才发现证书校验写死在SO文件里,所以导致JustTrustMe,SSLUnpinning等一些常规SSL绕过模块失效。通过配置postern代理发现报错如下。

通过搜索报错信息发现该错误提示指向Flutter框架的SSL证书验证。
HandshakeException: Handshake error in client (OS Error:
CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain(handshake.cc:393))



正巧这次机会来了一探究竟。查找boringssl库中ssl里Handshake.cc,看到在392行包含执行证书验证的逻辑之所以报错,可以看到是验证失败了

ret == ssl_verify_invalid

按照之前的方式hook函数返回值,但是后续发现hook该函数修改ret的值为ssl_verify_ok发现并不能成功绕过。问了下chatgpt发现可以hook session_verify_cert_chain函数


查找资料发现网上也有很多分析libflutter.so中ssl的文章,基本也是同一套方法。针对证书校验问题,利用Frida去hook libflutter.so中的ssl_client函数,然后回过头来分析下客户端,找到libflutter.so使用IDA打开app中的libflutter.so文件,打开后先转为字符串(view-open subviews-strings),然后搜索ssl_client


进入查看函数调用位置


查看该函数代码逻辑


sub_8695CB


确定目标函数


复制函数的前10个以上的字节,然后使用Frida脚本检测该模式出现的频率。如果只发生一次,说明找到该了函数,可以进行hook


下面就是编写frida脚本https://github.com/G123N1NJ4/c2hack/blob/master/Mobile/flutter-ssl-bypass.md

function hook_ssl_verify_result(address{
    Interceptor.attach(address, {
        onEnterfunction(args{
            console.log("Disabling SSL validation")
        },
        onLeavefunction(retval{
            console.log("Retval: " + retval);
            retval.replace(0x1);
        }
    });
}

function hookFlutter({
    var m = Process.findModuleByName("libflutter.so");
    var pattern = "FF C3 01 D1 FD 7B 01 A9 FC 6F 02 A9FA 67 03 A9 F8 5F 04 A9 F6 57 05 A9 F4 4F 06 A9 08 0A 80 52 48 00 00 39";
    var res = Memory.scan(m.base, m.size, pattern, {
        onMatchfunction(address, size){
            console.log('[+] ssl_verify_result found at: ' + address.toString());
            // Add 0x01 because it's a THUMB function
            // Otherwise, we would get 'Error: unable to intercept function at 0x9906f8ac; please file a bug'
            hook_ssl_verify_result(address);
        },
        onErrorfunction(reason){
            console.log('[!] There was an error scanning memory');
        },
        onCompletefunction({
            console.log("All done")
        }
    });
}
function main({
    Java.perform(function(){
        hookFlutter();
    });
}
setImmediate(main);

加载执行js文件,发现返回正常提示

burp成功显示抓取的数据包

0x05 参考链接

https://blog.csdn.net/weixin_44777218/article/details/134029395 

https://mp.weixin.qq.com/s/Xc6Qmf4AAlp29JwvzF1-9A 

https://github.com/G123N1NJ4/c2hack/blob/master/Mobile/flutter-ssl-bypass.md


往期推荐

E

N

D


Tide团队产品及服务

团队自研平台:潮汐在线指纹识别平台 | 潮听漏洞情报平台 | 潮巡资产管理与威胁监测平台 | 潮汐网络空间资产测绘 | 潮声漏洞检测平台 | 在线免杀平台 | CTF练习平台 | 物联网固件检测平台 | SRC资产监控平台  | ......


技术分享方向:Web安全 | 红蓝对抗 | 移动安全 | 应急响应 | 工控安全 | 物联网安全 | 密码学 | 人工智能 | ctf 等方面的沟通及分享


团队知识wiki:红蓝对抗 | 漏洞武器库 | 远控免杀 | 移动安全 | 物联网安全 | 代码审计 | CTF | 工控安全 | 应急响应 | 人工智能 | 密码学 | CobaltStrike | 安全测试用例 | ......


团队网盘资料:安全法律法规 | 安全认证资料 | 代码审计 | 渗透安全工具 | 工控安全工具 | 移动安全工具 | 物联网安全 | 其它安全文库合辑  | ......

?发表于:中国 甘肃

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Flutter 抓包 SSL Pinning Frida 移动安全
相关文章