CodeMeAPixel/pxSentinel

GitHub: CodeMeAPixel/pxSentinel

专为 FiveM 服务器打造的实时恶意软件与后门扫描器,通过签名匹配检测已知威胁并支持自动遏制和告警。

Stars: 0 | Forks: 0

# pxSentinel [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![FiveM](https://img.shields.io/badge/Platform-FiveM-orange)](https://fivem.net) [![Version](https://img.shields.io/badge/Version-1.0.0--beta.1-green)](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, 入侵检测系统, 后门检测, 威胁情报, 安全数据湖, 开发者工具, 恶意软件扫描, 服务端安全, 游戏服务器安全, 游戏防护, 病毒特征库, 网络安全, 自动防御, 资源监控, 隐私保护