CodeMeAPixel/pxSentinel
GitHub: CodeMeAPixel/pxSentinel
专为 FiveM 服务器打造的实时恶意软件与后门扫描器,通过签名匹配检测已知威胁并支持自动遏制和告警。
Stars: 0 | Forks: 0
# pxSentinel
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://fivem.net)
[](https://github.com/CodeMeAPixel/pxSentinel/releases)
**FiveM 服务端恶意软件扫描器。** pxSentinel 扫描所有已加载资源以查找已知的后门和恶意软件签名,在控制台中记录包含修复指导的详细检测报告,通过 Discord 向您的团队发出警报,并可选择停止受感染的资源或暂停服务器。
## 功能
| | |
|---|---|
| **全面启动扫描** | 服务器完成启动后扫描每个已加载的资源。 |
| **运行时检测** | 在整个会话期间监控动态启动的资源。 |
| **即时遏制** | 无需完全重启服务器即可停止受感染的资源。 |
| **Discord 告警** | 在任何检测时向配置的 webhook 发送格式化的嵌入消息。 |
| **白名单** | 受信任的资源将被完全排除在扫描之外。 |
| **安全匹配** | 纯文本签名匹配 — Lua 模式字符始终被视为字面量。 |
## 环境要求
- FiveM 服务器 artifact 版本 `22934` 或更新
- Lua 5.4 (`fxmanifest.lua` 中设置 `lua54 'yes'`)
## 安装
1. 将此仓库克隆或下载到您服务器的 `resources` 目录中,并将文件夹命名为 `pxSentinel`。
2. 将以下行添加到您 `server.cfg` 的**末尾**,位于所有其他资源之后:
ensure pxSentinel
3. 通过服务器 convar 配置您的 Discord webhook(推荐 — 使凭证远离源文件):
set pxSentinel:webhook "https://discord.com/api/webhooks/YOUR_WEBHOOK_HERE"
4. 检查 `config.lua`、`blocked.lua` 和 `allowed.lua` 并根据您的服务器进行调整。
## 配置
配置分布在三个文件中以保持关注点分离。
### `config.lua` — 通用设置
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| `Config.Enable` | `boolean` | `true` | 完全启用或禁用扫描器。 |
| `Config.ConsolePrint` | `boolean` | `true` | 在控制台打印格式化的检测报告和修复步骤。 |
| `Config.StopResources` | `boolean` | `false` | 检测到后立即停止每个受感染的资源。请参阅下文警告。 |
| `Config.StopServer` | `boolean` | `false` | 处理完所有检测后暂停服务器。 |
| `Config.ScanDelay` | `number` | `5000` | 初始扫描运行前等待的毫秒数。如果资源列表较大,请增加此值。 |
| `Config.Discord.Enabled` | `boolean` | `true` | 检测到时发送 Discord 告警。 |
| `Config.Discord.Webhook` | `string` | `""` | Webhook URL。建议使用 `pxSentinel:webhook` convar 而非硬编码。 |
### `blocked.lua` — 恶意软件签名
定义 `Config.Signatures`,这是一个纯文本字符串列表,用于与每个已加载资源中的每个服务端脚本进行匹配。条目按类别分组:已知面板域名、C2 基础设施、数据窃取模式和混淆器水印。
要添加签名,请将其附加到列表中:
```
Config.Signatures = {
-- existing entries ...
'my-malicious-string',
}
```
所有条目必须是纯字符串。Lua 模式元字符(`.`、`%`、`(`、`)` 等)始终被视为字面量。
### `allowed.lua` — 安全资源
定义 `Config.SafeResources`,这是一个 pxSentinel 永远不会扫描的资源文件夹名称列表。任何列出的资源都将被跳过,且不读取其任何文件。
默认列表涵盖 CFx 平台资源、ox stack、QBCore、ESX 和常见的可信独立资源。在底部添加您自己的资源:
```
Config.SafeResources = {
-- existing entries ...
'my-trusted-resource',
}
```
## 工作原理
启动时,pxSentinel 等待 `Config.ScanDelay` 毫秒以让所有资源完成注册,然后遍历每个已加载的资源,读取每个声明的服务端脚本文件,并使用纯文本匹配将其内容与 `Config.Signatures` 中的每个签名进行比对。列在 `Config.SafeResources` 中的资源将被完全跳过。
**当检测到阳性结果时,pxSentinel 会:**
1. 按资源对发现进行分组,并将报告打印到控制台 —— 包括资源名称、文件路径、匹配的签名和建议的修复步骤。
2. 向配置的 webhook 发送 Discord 嵌入消息告警。
3. 如果启用了 `Config.StopResources`,则对受感染的资源调用 `StopResource()`。
4. 如果启用了 `Config.StopServer`,则调用 `os.exit(1)` 以暂停服务器。
初始扫描之后,pxSentinel 会监听 `onResourceStart` 并扫描任何在运行时动态启动的资源。在稳定窗口内启动的资源将被全面扫描覆盖,因此不会重复扫描。
## 保持签名更新
内置签名列表针对发布时已知的后门面板、C2 域名、数据窃取模式和混淆器水印。随着新威胁被识别,仓库中的 `blocked.lua` 会进行更新。
要贡献签名,请提交包含该字符串、简要说明其针对目标以及任何已知十六进制编码变体的 Pull Request。
## 延伸阅读
| 文档 | 描述 |
|---|---|
| [BACKDOORS.md](.github/BACKDOORS.md) | 真实后门样本目录,包含结构分析、检测签名和修复步骤。 |
| [DEVELOPMENT.md](.github/DEVELOPMENT.md) | 架构决策、设计理念,以及 pxSentinel 在开发过程中如何针对实时后门进行加固的说明。 |
| [SECURITY.md](.github/SECURITY.md) | 支持的版本以及报告 pxSentinel 本身漏洞的负责任披露流程。 |
## 许可证
[AGPL-3.0-or-later](LICENSE)
标签:AGPL-3.0, Discord告警, FiveM, Lua, WSL, 入侵检测系统, 后门检测, 威胁情报, 安全数据湖, 开发者工具, 恶意软件扫描, 服务端安全, 游戏服务器安全, 游戏防护, 病毒特征库, 网络安全, 自动防御, 资源监控, 隐私保护