Flutter应用网络流量拦截技术全解析

本文详细介绍了Flutter框架的网络通信特性及安全机制,并提供了完整的iOS和Android应用网络流量拦截技术方案,包括OpenVPN配置、Burp Suite代理设置和iptables规则配置等实操步骤。

黑客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. HttpOverrides.global = SecureHttpOverrides(); 将这些设置应用于应用程序中的所有HTTP请求

要捕获移动应用程序与服务器之间的通信,需要绕过这些安全机制。

步骤1:设置OpenVPN配置

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

并按照下图所示设置配置

步骤2:导航到生成的OpenVPN文件,并按照下面的截图设置所有必需的读/写权限。然后在移动设备上共享此文件

步骤3:现在在移动设备上安装此VPN配置文件,并与主机连接

步骤4:让我们配置代理工具,这里我使用了Burp Suite。导航到代理设置并将接口设置为通配符,或者你也可以设置主机的IP地址和端口8080。记得打开"Support invisible proxying"

步骤5:现在让我们使用隧道接口配置iptables以捕获移动设备流量,如下所示

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

步骤6:成功!我们能够成功捕获来自移动应用程序的流量

恭喜 :) 你获得了流量,对吧?

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

参考文献:在iOS上拦截Flutter流量 - NVISO实验室

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

如何限制这种绕过? - 给开发者的建议

  1. 在应用程序中强制执行VPN/代理检测检查,如下所示
  2. 使用直接套接字连接,如下面的代码片段所示

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

快乐黑客 :D

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