NorthwaveSecurity/fridax

GitHub: NorthwaveSecurity/fridax

基于 Frida 的 Node.js 工具,专门用于在运行时 hook 和修改 Xamarin/Mono 移动应用的 .NET 程序集。

Stars: 178 | Forks: 23


Fridax is a Node package for dealing with Xamarin applications while using the Frida API.
GoalInstallationUsageExamplesIssuesLicense
Built with ❤ by the Northwave Red Team


## 目标 在 Northwave Red Team,我们对移动应用程序等内容进行安全渗透测试。在几乎每次移动应用程序渗透测试中,我们都希望通过某种方式修改应用程序的行为,使其绕过某些检查(例如 PIN 码检查)。 Frida 正是一个能让我们实现这一点的工具包。它是一个面向开发者、逆向工程师和安全研究人员的动态插桩工具包。使用 Frida,你可以例如在运行时注入并修改 iOS 和 Android 应用程序的代码。然而,如果正在进行渗透测试的应用程序是一个 Xamarin 应用程序,由于 Xamarin 应用程序本质上是运行 .NET 二进制文件的包装器,因此在运行时修改代码会变得更加困难。 **Fridax 来救场了!** Fridax 允许你轻松地在运行时修改 Xamarin 应用程序内的 .NET 二进制文件。我们包含了一些示例脚本,例如用于修改构造函数和函数参数的脚本。 祝黑客愉快! ## 安装说明 克隆此 Git 仓库。 ``` git clone git@github.com:NorthwaveNL/fridax.git ``` 使用包管理器 [npm](https://www.npmjs.com/) 安装 Fridax 的依赖项。 ``` cd fridax npm install ``` ## 使用说明 在开始之前,请查看 [已知问题](#issues)。 1. 连接你的设备(确保它能够被列出)。 - `frida-ls-devices` 2. 将一个示例脚本复制到 scripts 文件夹。 - `cp examples/modify_class_function_argument.js scripts/modify_class_function_argument.js` 3. 根据你的需要调整(你复制的)脚本中的某些配置变量。 - 更新 `settingClassName`、`settingMethodName` 和 `settingMethodArgCount` 4. 在你的设备上启动应用程序并运行你的脚本! - `./fridax.js inject --scripts scripts/modify_class_function_argument.js` **所有选项** ``` ./fridax.js Commands: ./fridax.js inject [scripts] Inject the given scripts list. Options: --version Show version number [boolean] -h, --help Show help [boolean] --device The address of the remote Frida device to connect to (or the string "usb") [default: "usb"] Examples: ./fridax.js inject --scripts scripts/modify_function_argument.js scripts/intercept_password.js scripts/sql_injection.js ``` ## 示例 示例脚本可以在 `./examples` 中找到。将示例脚本放在 `./scripts` 文件夹中以进行尝试。使用示例脚本,可以读取/拦截下面示例类中的所有变量/函数。 ``` namespace CompanyName.ProjectName { class Settings { // Static int can be read public static readonly int secret1 = 1234; // Static bool can be read public static readonly bool secret2 = false; // Static object can be read public static readonly ObfuscatedString secret3 = ObfuscatedString("yGVhqI5yzbgYUnCP+ZukDw=="); // Static string can be read public static readonly string secret4 = "SecretValue"; // Constructor can be intercepted and arguments can be modified Settings(string a, string b, string c) { } // Function can be intercepted and argument can be modified GetElement(string id) { } } } ``` 例如,要读取 `public static readonly bool secret2`,你可以在将 `./examples/read_static_bool_from_class.js` 复制到 `./scripts/read_static_bool_from_class.js` 后运行下面的命令。你还需要编辑该文件中的 `Company.ProjectName.Settings` 类名和 `secret2` 变量名以符合你的需求。你可以通过在 IPA/APK 中的 Mono 二进制文件上使用 [dnSpy](https://github.com/0xd4d/dnSpy) 来找出所需的名称。 ``` ./fridax.js inject --scripts scripts/read_static_bool_from_class.js ``` ## 问题 问题或新功能可以通过 [GitHub issue tracker](https://github.com/NorthwaveNL/fridax/issues) 报告。在提交新问题之前,请确保你的问题或功能尚未被其他人报告。 **已知问题** * Xamarin 应用程序需要在启动此脚本之前运行(有关更多信息,请参见 [this issue](https://github.com/freehuntx/frida-mono-api/issues/4))。 * 你收到错误 `Export not found: mono_aot_get_method`。这是由于你的应用程序是 JIT 编译的。请使用前缀为 `jit_` 而不是 `aot_`(AOT 编译)的示例脚本。有关更多信息,请参见 [issue #3](https://github.com/NorthwaveNL/fridax/issues/3)。 ## 许可证 Fridax 是根据 [MIT license](https://github.com/NorthwaveNL/fridax/blob/develop/LICENSE.md) 许可的开源软件。
标签:Android安全, AOT, Docker支持, Frida, GNU通用公共许可证, Hook, iOS安全, JIT, MITM代理, Mono, Node.js, Northwave, Xamarin, 云资产清单, 多人体追踪, 应用安全测试, 数据可视化, 数据展示, 目录枚举, 移动安全, 红队, 绕过防御, 自定义脚本, 自定义脚本, 运行时修改, 逆向工程