使用Burp Suite和Genymotion逆向工程Flutter移动应用的完整指南

4 阅读4分钟

使用Burp Suite和Genymotion逆向工程Flutter移动应用的完整指南

拦截Flutter应用的流量众所周知非常困难。与标准的安卓应用不同,Flutter使用Dart语言,它不遵循系统的代理设置。这意味着仅仅在手机上设置WiFi代理无法捕获其流量。

在本指南中,我们将使用reflutter来修补应用程序的二进制文件,从而绕过这一限制,使我们能够通过Burp Suite拦截流量。

前提条件

在开始之前,请确保您已安装以下工具:

  • Java(用于签名/APK编辑)
  • Python(用于运行reflutter)
  • APKEditor(可选——用于APK编辑)
  • uber-apk-signer(用于签名)
  • reflutter(Python包)
  • Burp Suite Community或Pro(代理工具)
  • Genymotion(用于模拟器)

步骤1:获取APK文件

从APKPure或APKCombo等来源下载您目标Flutter应用的APK文件。

关于XAPK文件的说明: 如果您的下载文件是.xapk格式,不能直接使用。您必须首先使用APKEditor将其合并成一个标准的APK文件。

(如果需要)将XAPK转换为APK:

# java -jar /path/to/APKEditor.jar m -i /path/to/app.xapk
sudo java -jar /Users/user/Documents/APKEditor-1.3.9.jar m -i /Users/user/Downloads/12.10.2_APKPure.xapk

步骤2:使用Reflutter修补APK

我们将使用reflutter来分析库文件并覆写负责SSL证书绑定和代理处理的代码。

首先,安装该工具:

pip3 install reflutter

接下来,在你的APK上执行reflutter:

# reflutter /path/to/your_app.apk
/Users/user/Library/Python/3.9/bin/reflutter /Users/user/Downloads/12.10.2_APKPure_merged.apk

配置过程:

工具会提示您进行选择。请选择选项1:流量监控和拦截

然后它会询问您的机器IP地址。这是运行Burp Suite的电脑的IP地址(不是模拟器的IP)。

查找您本机IP的方法:

  • Mac/Linux: 运行 ifconfig 命令(查找 en0wlan0 接口)。
  • Windows: 运行 ipconfig 命令。 或者您也可以在Wi-Fi设置中找到它。

reflutter将生成一个APK文件:release.RE.apk

完成后,reflutter会在您的目录中生成一个名为 release.RE.apk 的新文件。

步骤3:签名修补后的APK

如果签名无效,Android将不会安装APK。由于我们修改了二进制文件,必须使用uber-apk-signer重新签名。

运行以下命令:

# java -jar uber-apk-signer.jar --apk release.RE.apk
java -jar /Users/user/Documents/uber-apk-signer-1.3.0.jar  --apk /Users/user/release.RE.apk

您应该会看到一条消息:"Successfully processed 1 APKs and 0 errors in xx seconds"。将创建一个名为 release.RE-aligned-debugSigned.apk 的新文件。这就是我们稍后将在Genymotion中安装的文件。

步骤4:配置Burp Suite

因为reflutter将应用程序修补为直接将流量发送到特定的IP和端口(绕过标准的代理握手),我们必须配置Burp以通过隐形代理接受此流量。

  1. 打开Burp Suite,导航到 Proxy > Proxy Settings
  2. 点击 Add 创建一个新的监听器。
  3. Binding 标签页:
    • Bind to port: 输入 8083(这是reflutter默认的目标端口)。
    • Bind to address: 选择 "All interfaces"。
  4. Request Handling 标签页:
    • 勾选 Support invisible proxying 复选框。

步骤5:在Genymotion上安装

我们使用Genymotion是因为它通常比标准的Android Studio模拟器更快且更容易获取root权限和配置,尽管此方法适用于任何设备。

  1. 启动Genymotion。
  2. 创建一个新的虚拟设备(例如 Google Pixel 9),使用默认设置。
  3. 启动该设备。
  4. release.RE-aligned-debugSigned.apk 文件拖放到模拟器屏幕上进行安装。

步骤6:拦截流量

  1. 确保 Burp Suite 正在运行,并且监听器已设置在端口 8083 上。
  2. 在您的 Genymotion 模拟器上打开该应用程序。
  3. 在应用内执行操作(登录、刷新信息流等)。
  4. **成功!**🚀 您现在应该能在Burp Suite的代理历史记录中看到HTTP流量,这些流量已完全解密,可供分析。

结论

由于Dart处理网络流量的方式,逆向工程Flutter应用程序需要一种特定的方法。通过使用reflutter,我们成功绕过了通常阻碍标准拦截尝试的SSL证书绑定和代理感知问题。

⚠️ 免责声明: 本指南仅供教育和安全研究之用。在对他人软件进行逆向工程或渗透测试之前,请务必确保已获得应用程序所有者的许可。

**祝您黑客之旅愉快!**FINISHED CSD0tFqvECLokhw9aBeRqvJmZ3VQuQ9+032ugeDdA+zvHYOtRoGldYD4T+JurcVdtK9A33uh5+tZRYSHa92stvwcLpXHbJg9quxlxcQuSqVQWIYZ3Asx0BjEKckzT/b+QvBq4C11SP5JycAT+5TJWSLKmW009maf08KQAI2WnlQ=