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, 多模态安全, 威胁扫描, 文档结构分析, 无后门, 终端安全, 逆向工具