攻破Flutter应用:iOS和Android网络流量拦截技术详解

本文详细介绍了如何绕过Flutter应用的代理规避和证书锁定安全机制,通过OpenVPN和Burp Suite配置实现iOS和Android应用的网络流量拦截,包含完整的技术步骤和代码示例。

攻破Flutter应用:iOS和Android网络流量拦截技术详解

大家好,我是Suprit,又名s3ctat0r。今天我们将学习如何捕获跨平台应用程序的流量,这对iOS和Android应用都很有用。

了解Flutter框架及其优势

Flutter是Google开发的开源UI框架,用于从单一代码库构建移动端(iOS和Android)、Web和桌面的原生编译应用。

  1. 跨平台开发 - 一次编写,多平台部署
  2. 快速性能 - 使用Dart语言并编译为原生ARM代码
  3. 热重载 - 无需重启即可立即反映应用中的更改
  4. 丰富的UI组件 - 提供Material和Cupertino小部件,具有原生感
  5. 强大的社区和Google支持 - 拥有活跃的开发者生态系统

为什么传统方法无法捕获Flutter流量?

渗透测试人员或安全研究人员能否使用传统方法捕获流量?答案是否定的,因为Flutter具有代理不可知特性。

  1. 代理规避 (findProxy = "DIRECT";) - 强制所有网络流量直接发送到服务器,绕过系统级代理设置
  2. 证书锁定 (badCertificateCallback) - 根据预定义的SHA256指纹验证服务器证书,即使系统代理尝试注入伪造证书也能防止MITM攻击
  3. 全局HTTP重写 (HttpOverrides.global = SecureHttpOverrides();) - 将这些设置应用于应用中的所有HTTP请求

绕过安全机制捕获流量

步骤1:设置OpenVPN配置

1
2
3
4
a. wget https://git.io/vpn -O openvpn-install.sh
b. sed -i "$(($(grep -ni "debian is too old" openvpn-install.sh | cut -d : -f 1)+1))d" ./openvpn-install.sh
c. chmod +x openvpn-install.sh
d. sudo ./openvpn-install.sh

按照下图所示设置配置:

[图片:OpenVPN配置截图]

步骤2:设置文件权限

导航到生成的OpenVPN文件,设置所有所需的读写权限,并将此文件共享到移动设备。

[图片:文件权限设置截图]

步骤3:安装VPN配置文件

在移动设备上安装此VPN配置文件,并与主机连接。

[图片:VPN连接截图]

步骤4:配置代理工具

这里我使用了Burp Suite。导航到代理设置,将接口设置为通配符,或者也可以设置主机的IP地址和端口8080。记得开启"Support invisible proxying"。

[图片:Burp Suite配置截图]

步骤5:配置iptables

使用隧道接口配置iptables以捕获移动设备流量:

1
2
3
a. sudo iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 8080
b. sudo iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 443 -j REDIRECT --to-port 8080
c. sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

[图片:iptables配置截图]

步骤6:成功捕获流量

现在我们已经成功从移动应用程序捕获到流量!

[图片:流量捕获成功截图]

恭喜 :) 你成功获取了流量,对吧?

开发者如何限制这种绕过?

  1. 实施VPN/代理检测检查,如下所示在应用程序中添加检测代码
  2. 使用直接套接字连接,如下代码片段所示

特别感谢我的朋友/导师Abhishek Rajak对Flutter框架的宝贵支持和见解。

注意:此方法适用于基于Flutter的iOS和Android应用。

希望你喜欢这篇博客,这对你有所帮助。

祝你黑客愉快 :D

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计