KingxTheDev/KingxFiveMBackDoorRemover
GitHub: KingxTheDev/KingxFiveMBackDoorRemover
一款 Windows 桌面工具,通过多信号评分机制扫描 FiveM resources 文件夹中的混淆 JavaScript 后门并支持隔离或删除。
Stars: 0 | Forks: 0
# Backdoor Scanner
一款 Windows 桌面工具,用于扫描 FiveM 的 `resources` 文件夹,查找混淆的 JavaScript 后门并进行隔离或删除。由 Kingx Development 开发。
## 背景
以 `.js` 插件形式分发的 FiveM 脚本,有时会附带隐藏的、混淆的 payload,这些 payload 会在运行时解码并 `eval()` 恶意代码(数据泄露、远程代码执行等)。该工具会扫描文件夹树下的每个 `.js` 文件,并标记符合已知后门特征的文件,以便在服务器加载它们之前进行审查、隔离或移除。
## 检测机制
每个 `.js` 文件都会根据一组信号进行评分。当文件的评分超过阈值时,就会被标记:
- **隐藏文件** - 带有 Windows 隐藏属性的 `.js` 文件或点文件,本身就具有可疑性。
- **`require('vm')`** - 加载 Node 的 `vm` 模块以执行动态解码的代码。这在合法的 FiveM 资源脚本中几乎从未出现过。
- **`vm.runInThisContext()`** - 在当前上下文中直接执行解码后的内容。
- **`eval(decodeFn(payload, key))`** - 解码后的 payload 作为裸函数调用直接传入 `eval()`。这种确切的形式(`eval(` 立即包裹一个带有 1-2 个普通标识符参数的函数调用)正是本工具所基于的混淆 payload 存根的实际特征,无论文件大小如何,合法代码都不会这么写。
- **XOR 解码循环**(`String.fromCharCode(...) ^ key`)、**大型数字字节数组 payload** 以及**大量十六进制转义字符串** - 仅作为辅助证据。它们的权重都很低,单凭其中任何一项都无法标记一个文件,因为一个庞大的合法捆绑包(构建好的 NUI `index.js`、webpack 的 `build.js` 等)可能仅仅因为体积庞大就会触发其中某一项。只有当它们与上述某个信号同时出现时,才具有参考价值。
评分机制是根据实际在野发现的真实后门样本调整的,而非凭空猜测,但没有任何自动化扫描器是完美的。在决定删除被标记的文件之前,请务必先进行审查。
## 功能特性
- 递归扫描整个 `resources` 文件夹,跳过 `node_modules`/`.git` 和符号链接循环
- 扫描时显示实时进度
- 右键点击检测结果可执行**打开文件**、**打开文件位置**、**隔离**或**永久删除**
- 支持跨多个检测结果进行批量**隔离选中项** / **删除选中项**
- 隔离操作会将文件移动到扫描根目录下的 `_quarantine` 文件夹中(不会静默删除任何内容),并记录每次移动的时间戳和原因
- 删除操作需要明确的确认,因为该操作不可逆
## 环境要求
- Windows 10/11
- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) 用于构建
无其他运行时依赖 - 这是一个普通的 WPF 应用程序,不需要浏览器引擎或 WebView。
## 构建
```
dotnet build
```
这将在 `bin/Debug/net8.0-windows/` 中生成标准的依赖框架的构建版本。
## 发布单文件 exe
```
dotnet publish -c Release
```
输出:`bin/Release/net8.0-windows/win-x64/publish/BackdoorScanner.exe` - 一个独立的单文件可执行程序,无需附带任何其他文件。
## 用法
1. 打开应用程序,粘贴或浏览选择你的 FiveM `resources` 文件夹。
2. 点击 **Scan**。
3. 在结果列表中查看被标记的文件 - 右键点击任意一行查看选项。
4. 选择 **Quarantine** 将可疑文件移至一旁(可恢复),或选择 **Delete Permanently** 将其彻底删除。
## 免责声明
本工具仅供出于防御安全目的,在您拥有或被授权检查的服务器和文件上使用。它只会标记可疑的特征;它不能保证某个文件一定是恶意的,也不能保证一次干净的扫描就意味着服务器是安全的。在删除任何内容之前,请务必做好备份。
## 更新日志
### 1.1.0
- 添加了对 `eval(decodeFn(payload, key))` 的精确结构检查 - 能够捕获直接对其解码后的 payload 执行 `eval()` 而不通过 `vm.runInThisContext()` 的后门存根。
- 修复了 1.0 版本中的一个漏报问题:数字数组/十六进制转义信号之前受到一个小文件大小阈值的限制以减少误报,但这同时也默默禁用了对那些因编码后的 payload 数组导致文件体积超过该大小的真实后门的检测。现在这些信号不再受大小限制,但其权重足够低,单凭它们都无法标记一个文件。
- 添加了 Kingx Development 品牌标识和应用程序图标。
- 在右键菜单中添加了“打开文件”和“打开文件位置”。
### 1.0.0
- 初始版本:实现递归扫描 `.js` 文件、隐藏文件检测、带确认的隔离和删除功能,以及隔离日志。
标签:FiveM游戏, Windows桌面软件, 云安全监控, 后门扫描, 静态分析