9to5ninja-projects/sentinel

GitHub: 9to5ninja-projects/sentinel

一款轻量级跨平台端点威胁监控器,结合YARA规则、VirusTotal和本地启发式引擎实时检测可疑进程与持久化入侵痕迹。

Stars: 0 | Forks: 0

# Sentinel v0.3 — 进程与端点威胁监控器 一款零臃肿的端点威胁监控器:枚举正在运行的进程、服务、计划任务、自启动项和 WMI 订阅。结合 VirusTotal 进行交叉引用,使用 YARA 规则进行扫描,实时监控文件系统以发现新威胁 —— 所有这些都由一个能为您节省 VT 配额的本地启发式引擎支持。 **仪表板是一个 Claude.ai artifact。** 将 `sentinel-dashboard.jsx` 粘贴到 Claude 中,Claude 会将其渲染为一个连接到您正在运行的 Sentinel 实例的交互式应用程序。Claude 同时也是 AI 解释层 —— 将威胁数据粘贴到对话中,它会告诉您这些检测结果的实际含义。 ## 架构 ``` ┌─────────────────┐ ┌──────────────┐ ┌───────────────┐ │ ProcessScanner │ │ FileWatcher │ │ YARA Engine │ │ (psutil) │ │ (watchdog) │ │ (yara-python) │ └────────┬────────┘ └──────┬───────┘ └───────┬───────┘ │ │ │ ┌────────┴───────────────────┴────────────────────┘ │ HeuristicEngine │ │ (offline static analysis — gates VT calls) │ └────────────────────────┬────────────────────────┘ │ ┌────────┴─────────┐ ▼ ▼ ┌──────────┐ ┌─────────────┐ │ REST API │ │ WebSocket │ ← real-time push │ (hydrate)│ │ /ws/events │ └──────────┘ └─────────────┘ ``` 额外的扫描器 (v0.3): - **ServiceScanner** — systemctl (Linux), SCM (Windows), launchd plist (macOS) - **ScheduledTaskScanner** — crontab + systemd timers (Linux), schtasks XML (Windows) - **AutostartScanner** — XDG autostart + shell profiles (Linux), Registry Run keys + startup folders (Windows) - **WMISubscriptionScanner** — event filters, consumers, bindings (Windows only) ## 功能特性 ### 进程与服务扫描 - 通过 psutil / systemctl / SCM 枚举所有正在运行的进程和服务 - 计算可执行文件的 SHA-256 哈希值并与 VirusTotal 交叉比对 - 显示 CPU、内存、网络连接、父进程、命令行 - 结果缓存在 SQLite 中(经 HMAC 签名 —— 防篡改) ### 启发式引擎 (离线,无需 API) - 分段 Shannon 熵 (PE/ELF) - 导入表异常评分(可疑 API 组合:注入、凭证窃取等) - 卡方字节频率 vs 编译代码分布 - PE/ELF 结构分析(节名、大小比率、子系统标志) - 评分范围 0.0–1.0;控制 VT 查询 —— 只有真正可疑的文件才会消耗 API 配额 ### 文件监控器 - 通过 watchdog 监控 Downloads、Desktop、/tmp 和持久化目录 - 通过扩展名和魔数检测新增/修改的可执行文件(可捕获重命名的二进制文件) - 检测到后立即进行 YARA 扫描 + VT 查询 ### YARA 扫描 - 热重载规则:将 `.yar` 文件放入 `yara_rules/`,点击重载 - 内置 13 条规则涵盖:加壳器、挖矿程序、反向 Shell、进程注入、凭证窃取、Web Shell、勒索软件、持久化、C2 - 匹配去重:每个二进制文件针对每条规则仅报告一次 ### 持久化与自启动扫描 - Linux: XDG autostart, shell profile 注入检测 (.bashrc, .zshrc, etc.) - Windows: Registry Run keys (HKCU/HKLM), startup folders, schtasks XML, WMI event subscriptions - 命令异常检测:18+ 种模式 (curl|bash, base64 -d, -EncodedCommand, /dev/tcp, etc.) ### WebSocket 实时事件 - 位于 `/ws/events` 的单通道传输类型化 JSON 事件 - 事件类型:`process_scan`, `service_scan`, `task_scan`, `autostart_scan`, `file_alert`, `yara_hit`, `vt_result`, `status_update` - REST 端点用于初始状态加载;WebSocket 用于实时更新 - 基于会话的 Bearer token 认证(启动时打印) - HMAC 签名的 SQLite 缓存;关键文件的自我完整性监控 ## 仪表板 — Claude.ai Artifact 工作流 仪表板 (`sentinel-dashboard.jsx`) 被设计为一个 **Claude.ai artifact**: 1. 在运行 Sentinel 的同一台机器上的浏览器中打开 [claude.ai](https://claude.ai) 2. 开始新对话 → 点击 artifact/canvas 图标 3. 粘贴 `sentinel-dashboard.jsx` 的全部内容 4. Claude 将其渲染为一个交互式 React 应用 5. 仪表板自动连接到 `localhost:8000` **为什么采用这种方式?** Claude 既是 UI 也是 AI 解释层。当您看到 YARA 命中或可疑进程时,可以直接询问 Claude:*"`UPX_Packed_Binary` 是什么意思?这是威胁吗?"* —— 并根据屏幕上的实际数据获得上下文相关的答案。 **不同的主机?** 在浏览器控制台中设置: ``` window.SENTINEL_HOST = "192.168.1.10:8000" ``` 然后重新加载 artifact。 ## 快速开始 ### Linux / WSL2 ``` git clone https://github.com/9to5ninja-projects/sentinel cd sentinel # 安装依赖 python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt # 设置 YARA 规则 mkdir -p yara_rules cp sentinel_base.yar yara_rules/ # 运行 bash scripts/run_sentinel.sh # 可选:VirusTotal 集成(免费版:4 次/分钟,500 次/天) VT_API_KEY=your_key bash scripts/run_sentinel.sh ``` ### Windows ``` git clone https://github.com/9to5ninja-projects/sentinel cd sentinel scripts\setup_windows.bat scripts\run_sentinel.bat ``` ### 运行测试 ``` # 必须先运行 Sentinel python3 tests/test_sentinel.py # 启用 VT 集成: VT_API_KEY=your_key python3 tests/test_sentinel.py ``` ## 配置 | 变量 | 默认值 | 描述 | |---|---|---| | `VT_API_KEY` | (无) | VirusTotal API key | | `VT_API_KEY_FILE` | (无) | 包含 VT key 的文件路径(推荐 —— 不在环境变量中) | | `SENTINEL_CACHE_DB` | `sentinel_cache.db` | SQLite 数据库路径 | | `SENTINEL_SCAN_INTERVAL` | `5` | 进程扫描间隔秒数 | | `SENTINEL_SERVICE_INTERVAL` | `60` | 服务扫描间隔秒数 | | `SENTINEL_TASK_INTERVAL` | `60` | 计划任务扫描间隔秒数 | | `SENTINEL_AUTOSTART_INTERVAL` | `60` | 自启动项扫描间隔秒数 | | `SENTINEL_WMI_INTERVAL` | `120` | WMI 扫描间隔秒数 (Windows only) | | `VT_RATE_PER_MIN` | `4` | 每分钟 VT 请求数 | | `VT_RATE_PER_DAY` | `500` | 每天 VT 请求数 | | `SENTINEL_YARA_DIR` | `yara_rules` | `.yar` 规则文件的目录 | | `SENTINEL_WATCH_DIRS` | 平台默认值 | 逗号分隔的要监控的目录 | | `SENTINEL_HEURISTIC_VT_THRESHOLD` | `0.3` | 触发 VT 查询的最小启发式分数 | | `SENTINEL_HEURISTIC_GATE_VT` | `false` | 根据启发式分数控制 VT 调用 | | `SENTINEL_WS_TOKEN` | (随机) | 固定的 WebSocket 认证 token(默认:每次会话随机) | | `SENTINEL_HMAC_KEY` | `.sentinel_hmac_key` | 用于缓存完整性的 HMAC key 文件路径 | ## API 参考 | 端点 | 方法 | 认证 | 描述 | |---|---|---|---| | `/api/auth/token` | GET | None (loopback only) | 获取会话 Bearer token | | `/ws/events` | WS | Token | 实时事件流 | | `/api/processes` | GET | Bearer | 所有进程及威胁数据 | | `/api/services` | GET | Bearer | 所有服务及威胁数据 | | `/api/tasks` | GET | Bearer | 计划任务 | | `/api/autostart` | GET | Bearer | 自启动项 | | `/api/wmi` | GET | Bearer | WMI event subscriptions (Windows) | | `/api/threats` | GET | Bearer | 所有类别的已标记项 | | `/api/alerts` | GET | Bearer | 最近的文件监控警报 | | `/api/yara/hits` | GET | Bearer | 最近的 YARA 匹配 | | `/api/status` | GET | Bearer | 系统信息、扫描器状态、速率限制器 | | `/api/yara/reload` | POST | Bearer | 从 `yara_rules/` 重新编译 YARA 规则 | | `/api/scan/{sha256}` | POST | Bearer | 强制查询已知哈希的 VT | ## 扩展 YARA 规则 将 `.yar` 或 `.yara` 文件放入 `yara_rules/` 目录,然后: ``` curl -X POST -H "Authorization: Bearer " http://localhost:8000/api/yara/reload ``` 或者点击仪表板中的重载按钮。 推荐的社区规则集: - [Yara-Rules/rules](https://github.com/Yara-Rules/rules) - [Neo23x0/signature-base](https://github.com/Neo23x0/signature-base) - [elastic/protections-artifacts](https://github.com/elastic/protections-artifacts) ## 局限性 - **无文件恶意软件**:磁盘上没有二进制文件可供哈希或扫描 - **零日漏洞**:尚未出现在 VirusTotal 或 YARA 签名中 - **Rootkits**:隐藏在进程枚举之外,不会出现在 psutil 中 - **多态二进制文件**:哈希值随副本变化,导致 VT 缓存失效 - **WMI 扫描**:仅限 Windows(需要 PowerShell,可能需要提升权限) - **注册表自启动**:仅限 Windows(HKLM keys 需要管理员权限) - **schtasks XML 解析**:在某些 Windows 版本上,多文档 XML 输出的回退处理尚不完善 对于遵循合理卫生习惯的开发者来说,这个工具加上 Defender/ClamAV 可以覆盖现实的威胁面,而且没有臃肿。 ## 许可证 MIT — 见 [LICENSE](LICENSE)
标签:Claude仪表盘, DNS 反向解析, EDR工具, HTTP工具, Psutil, Python安全工具, VirusTotal集成, Watchdog, WebSocket通信, WMI事件订阅, YARA规则扫描, 启发式分析引擎, 安全可视化, 实时文件监控, 持久化检查, 本地静态分析, 端点威胁检测, 系统态势感知, 网络信息收集, 网络安全审计, 自启动项管理, 计划任务分析, 逆向工具