MASTG-TECH-0110: 拦截 Flutter HTTPS 流量
Flutter 是由 Google 创建的开源 UI 软件开发工具包 (SDK)。它用于从单个代码库构建移动、Web 和桌面平台的原生编译应用程序。 Flutter 使用 Dart,Dart 不支持代理并使用自己的证书存储。应用程序不使用系统的代理配置,而是将数据直接发送到服务器。连接会根据内置证书进行验证,因此系统上安装的任何证书都会被忽略。因此,不可能拦截 HTTPS 请求,因为代理的证书永远不会被信任。
为了拦截 Flutter HTTPS 流量,我们需要处理两个问题
- 确保流量发送到代理。
- 禁用任何 HTTPS 连接的 TLS 验证。
通常有两种方法: reFlutter 和 Frida for iOS。
- reFlutter:此工具创建一个修改后的 Flutter 模块,然后将其重新打包到 IPA 中。它配置内部库以使用指定的代理并禁用 TLS 验证。
- Frida:disable-flutter-tls.js 脚本可以动态删除 TLS 验证,而无需重新打包。由于它不修改代理配置,因此需要额外的步骤(例如,VPN、DNS、iptables、WIFI 热点)。
使用 reFlutter 拦截流量¶
-
修补应用程序以启用流量拦截。
运行命令以修补应用程序并选择选项流量监控和拦截,然后输入运行拦截代理的机器的 IP。
$ reflutter demo.ipa Choose an option: Traffic monitoring and interception Display absolute code offset for functions [1/2]? 1 Example: (192.168.1.154) etc. Please enter your BurpSuite IP: 192.168.29.216
这将在输出文件夹中创建一个 release.RE.ipa 文件。
-
使用 Apple 证书对修补的 release.RE.ipa 进行签名 ( 签名 IPA 文件)。这将在输出文件夹中创建一个签名的 “.ipa” 文件。
-
在移动设备上安装已签名的修补应用程序。
-
配置拦截代理。例如,在 Burp 中
-
在 Proxy -> Proxy settings -> Add new Proxy setting 下。
- 将监听端口绑定到
8083
。 - 选择
Bind to address
到All interfaces
。 -
请求处理 -> 支持隐形代理。
-
打开应用程序并开始拦截流量。
使用 WIFI 热点 / 带有 Frida 的 openVPN 拦截流量¶
-
使用 WIFI 热点 / openVPN 方法进行配置,以将请求重定向到 Burp。
-
在移动设备上安装 iOS UnCrackable L1。
-
配置拦截代理。例如,在 Burp 中
-
在 Proxy -> Proxy settings -> Add new Proxy setting 下。
- 将监听端口绑定到
8080
。 - 选择
Bind to address
到All interfaces
。 -
请求处理 -> 支持隐形代理。
-
运行 disable-flutter-tls-verification Frida 脚本。
frida -U -f eu.nviso.flutterPinning -l disable-flutter-tls.js
-
开始拦截流量。