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.
Goal
•
Installation
•
Usage
•
Examples
•
Issues
•
License
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, 云资产清单, 多人体追踪, 应用安全测试, 数据可视化, 数据展示, 目录枚举, 移动安全, 红队, 绕过防御, 自定义脚本, 自定义脚本, 运行时修改, 逆向工程