RCZ88/Sentinel

GitHub: RCZ88/Sentinel

Sentinel 是一款 Windows 11 本地威胁扫描器,通过五个视角检测挖矿程序、恶意 npm 包和持久化威胁,并以可逆方式修复。

Stars: 0 | Forks: 0

# 🛡️ Sentinel — 本地威胁扫描器 (Windows 11) Sentinel 是一款防御性的、**读取优先**的安全工具,专门用于搜寻你所描述的那种 威胁:一个隐藏的进程(通常是挖矿程序或恶意的 npm 供应链 payload),它会周期性拉高你的 CPU,在闲暇时让游戏卡顿, 并悄悄向外进行通信。它**从五个独立的视角进行扫描**,用通俗易懂的语言解释每一个发现,推荐相应的操作, 并且能够**可逆地移除威胁** — 绝对不会进行任何硬删除。 ## 为什么它能捕捉到你的症状 CPU 每隔几分钟飙升一次,并且在你打开任务管理器时*立刻回落*,这是一个 典型的**规避监控的挖矿程序**。在游戏平静场景(而不是 激烈的战斗中)出现的卡顿,是因为挖矿程序在 GPU/CPU 空闲时窃取了 闲置的计算周期。Sentinel 的**进程监控器**专门: - 对窗口内的每个进程的 CPU 进行采样,并运行**自相关**来检测*规律的开/关周期*, - 运行**监控规避探针** — 它会开启一个监视器,并标记任何在认为自己被监视时 CPU 占用率骤降的进程, - 检查**数字签名**和**文件来源** (temp/AppData 路径), - 匹配已知的**挖矿进程名称**。 同时,**网络扫描器**会捕捉对外连接的部分(挖矿池 / stratum 端口),而 **npm 扫描器**会捕捉可能的*来源* — 由你的 agent 引入的被感染包。 ## 五个扫描视角 | # | 视角 | 检查内容 | |---|-------------|------------------| | 1 | **npm** | 被感染的包版本(例如 2025 年 9 月的 `chalk`/`debug` 活动)、Shai-Hulud 蠕虫标记、安装生命周期脚本、混淆 / `eval(atob())`、钱包地址、原始 IP 获取请求、被投毒的 lockfile | | 2 | **process** | CPU 周期性、规避任务管理器行为、未签名 binaries、可疑的父→子进程链、挖矿进程名称 | | 3 | **network** | 映射到进程的活动连接、挖矿池 / stratum endpoint、信标模式 | | 4 | **persistence** | Run/RunOnce 注册表项、Startup 文件夹、指向脚本 / temp 目录 / 未签名的 binaries 的计划任务 | | 5 | **browser** | Chrome/Edge/Brave 扩展:已知的恶意 ID、过于宽泛的权限、页面内的挖矿代码 (CoinHive 风格 / WASM) | 你可以选择任意组合 — 视角越多 = 越彻底,但速度越慢。UI 和 CLI 都会在你开始前显示预估时间。 ## 安装 ``` # Windows 11, PowerShell, Python 3.10+ python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ## 使用方法 ### 命令行 ``` # 全面扫描,所有五个视角 python -m sentinel.cli scan --all # 针对性快速 triage(快速) python -m sentinel.cli scan --perspectives process,network # 全面扫描 + 自动移除高可信度威胁 python -m sentinel.cli scan --all --auto # 查看过去的扫描 / 隔离区 python -m sentinel.cli history # 撤销任何操作(一切都是可逆的) python -m sentinel.cli restore ``` 每次扫描都会将交互式的 **HTML 报告**和 **JSON 报告**写入到 `%LOCALAPPDATA%\Sentinel\reports\`。 ### 仪表板 ``` python -m sentinel.cli serve # then open http://127.0.0.1:8787 ``` 仪表板允许你选择视角,观看**实时进度**,审查每一个 标记的发现(严重程度、置信度、被标记的原因、证据),并且 可以逐个或批量进行修复 — 提供一键**选择所有推荐项**的功能。 ## 修复如何保持安全 - 在批次执行第一个操作之前,会尝试创建一个**系统还原点**。 - 文件会被**移动到加密的隔离保险库** (Fernet/AES) 中,绝对不会被 删除。包目录和扩展会被移到一旁;注册表值在移除前会进行 备份;计划任务会被禁用(而不是删除)。 - 每一项操作都会写入到**仅追加的审计日志**中,并且可以通过 **还原 token** 进行逆转。 ## 标记方案 🔴 严重 · 🟠 高危 · 🟡 中危 · 🟢 低危 · ⚪ 信息 每一项发现都有一个**判定** (干净 / 可疑 / 恶意)、一个**置信度** 得分、一段**通俗语言的说明**、其背后的**证据**,以及 一项**推荐操作**。 ## 架构 ``` CLI / Web UI │ ▼ Orchestrator ──fans out──▶ 5 scanners (isolated worker threads) │ │ emit Finding[] │ ▼ │ Scoring engine ──▶ verdict + confidence + rationale │ │ ├──────────────▶ Reports (HTML + JSON) │ └──────────────▶ Remediation engine ──▶ Quarantine vault + SQLite ledger │ Restore (one-click undo) ``` 威胁情报是离线打包的 (`sentinel/data/intel/*.json`),并且可以在 联网时从公共数据源 (OSV, abuse.ch ThreatFox/URLhaus) 刷新 — 扫描始终可以使用最后已知的 indicators 离线工作。 ## 验证构建 ``` python tests/run_selftest.py # 22 end-to-end checks, exits 0 on success ``` 自测会植入合成的 IOC (一个已知的恶意 `chalk@5.6.1`,一个 Shai-Hulud `evil-pkg`,一个被投毒的 lockfile),并验证检测、评分、报告 以及完整的隔离→还原往返过程 — 在一个 良性包上实现**零**误报。 ## 注意事项与限制 - 为 **Windows 11** 量身定制并进行了调优。代码可以在任何操作系统上导入并运行以供 开发,但持久化扫描器和签名检查仅限 Windows 使用。 - Sentinel 是一个专注的**防御性分诊工具**,不能替代 Microsoft Defender / 完整的 EDR。请将它们配合使用。 - 检测列表是基础种子 — 扩展 `sentinel/data/intel/*.json` 并根据 你的环境调优 `config.yaml` (在 `npm_roots` 下添加你的项目文件夹)。
标签:IP 地址批量处理, Python, 多模态安全, 威胁扫描, 文档结构分析, 无后门, 终端安全, 逆向工具