跳过内容

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 验证。
  • Fridadisable-flutter-tls.js 脚本可以动态删除 TLS 验证,而无需重新打包。由于它不修改代理配置,因此需要额外的步骤(例如,VPN、DNS、iptables、WIFI 热点)。

使用 reFlutter 拦截流量

  1. 修补应用程序以启用流量拦截。

    运行命令以修补应用程序并选择选项流量监控和拦截,然后输入运行拦截代理的机器的 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 文件。

  2. 使用 Apple 证书对修补的 release.RE.ipa 进行签名 ( 签名 IPA 文件)。这将在输出文件夹中创建一个签名的 “.ipa” 文件。

  3. 在移动设备上安装已签名的修补应用程序。

  4. 配置拦截代理。例如,在 Burp 中

  5. 在 Proxy -> Proxy settings -> Add new Proxy setting 下。

  6. 将监听端口绑定到 8083
  7. 选择 Bind to addressAll interfaces
  8. 请求处理 -> 支持隐形代理。

  9. 打开应用程序并开始拦截流量。

使用 WIFI 热点 / 带有 Frida 的 openVPN 拦截流量

  1. 使用 WIFI 热点 / openVPN 方法进行配置,以将请求重定向到 Burp。

  2. 在移动设备上安装 iOS UnCrackable L1

  3. 配置拦截代理。例如,在 Burp 中

  4. 在 Proxy -> Proxy settings -> Add new Proxy setting 下。

  5. 将监听端口绑定到 8080
  6. 选择 Bind to addressAll interfaces
  7. 请求处理 -> 支持隐形代理。

  8. 运行 disable-flutter-tls-verification Frida 脚本。

    frida -U -f eu.nviso.flutterPinning -l disable-flutter-tls.js
    
  9. 开始拦截流量。