攻破Flutter应用:iOS和Android网络流量拦截技术详解
大家好,我是Suprit,又名s3ctat0r。今天我们将学习如何捕获跨平台应用程序的流量,这对iOS和Android应用都很有用。
了解Flutter框架及其优势
Flutter是Google开发的开源UI框架,用于从单一代码库构建移动端(iOS和Android)、Web和桌面的原生编译应用。
- 跨平台开发 - 一次编写,多平台部署
- 快速性能 - 使用Dart语言并编译为原生ARM代码
- 热重载 - 无需重启即可立即反映应用中的更改
- 丰富的UI组件 - 提供Material和Cupertino小部件,具有原生感
- 强大的社区和Google支持 - 拥有活跃的开发者生态系统
为什么传统方法无法捕获Flutter流量?
渗透测试人员或安全研究人员能否使用传统方法捕获流量?答案是否定的,因为Flutter具有代理不可知特性。
- 代理规避 (
findProxy = "DIRECT";
) - 强制所有网络流量直接发送到服务器,绕过系统级代理设置 - 证书锁定 (
badCertificateCallback
) - 根据预定义的SHA256指纹验证服务器证书,即使系统代理尝试注入伪造证书也能防止MITM攻击 - 全局HTTP重写 (
HttpOverrides.global = SecureHttpOverrides();
) - 将这些设置应用于应用中的所有HTTP请求
绕过安全机制捕获流量
步骤1:设置OpenVPN配置
|
|
按照下图所示设置配置:
[图片:OpenVPN配置截图]
步骤2:设置文件权限
导航到生成的OpenVPN文件,设置所有所需的读写权限,并将此文件共享到移动设备。
[图片:文件权限设置截图]
步骤3:安装VPN配置文件
在移动设备上安装此VPN配置文件,并与主机连接。
[图片:VPN连接截图]
步骤4:配置代理工具
这里我使用了Burp Suite。导航到代理设置,将接口设置为通配符,或者也可以设置主机的IP地址和端口8080。记得开启"Support invisible proxying"。
[图片:Burp Suite配置截图]
步骤5:配置iptables
使用隧道接口配置iptables以捕获移动设备流量:
|
|
[图片:iptables配置截图]
步骤6:成功捕获流量
现在我们已经成功从移动应用程序捕获到流量!
[图片:流量捕获成功截图]
恭喜 :) 你成功获取了流量,对吧?
开发者如何限制这种绕过?
- 实施VPN/代理检测检查,如下所示在应用程序中添加检测代码
- 使用直接套接字连接,如下代码片段所示
特别感谢我的朋友/导师Abhishek Rajak对Flutter框架的宝贵支持和见解。
注意:此方法适用于基于Flutter的iOS和Android应用。
希望你喜欢这篇博客,这对你有所帮助。
祝你黑客愉快 :D