黑客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攻击
- 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应用程序。
如何限制这种绕过? - 给开发者的建议
- 在应用程序中强制执行VPN/代理检测检查,如下所示
- 使用直接套接字连接,如下面的代码片段所示
我希望你喜欢这篇博客,这对你有所帮助。
快乐黑客 :D