Egyan07/VaultSentry
GitHub: Egyan07/VaultSentry
一款Windows备份完整性监控工具,通过SHA-256哈希验证和Shannon熵值分析检测篡改、勒索加密和文件损坏,提供每日摘要邮件和快照恢复功能。
Stars: 1 | Forks: 0
# VaultSentry v1.0
**Windows 备份完整性监控器**
每日夜间自动检测篡改、勒索软件加密、损坏、文件丢失、备份过期以及备份容量骤降。
## 功能概述
VaultSentry 在首次运行时会对备份文件夹中的每个文件进行哈希计算,并将其存储为已知良好的基线。每天晚上,它会重新计算哈希值并进行比对。如果发现任何更改、丢失、损坏、疑似加密,或总备份大小下降的情况,它会触发警报。每日摘要邮件会在每天早上将所有信息汇总成一份清晰的报告。
**检测内容:**
- 哈希变更 — 自基线以来的篡改或损坏
- 勒索软件加密 — 哈希变更 + 熵值飙升至 7.8 以上
- 勒索信 — 名为 `readme_decrypt`、`how_to_restore` 等的新文件
- 文件丢失 — 备份被删除或移动
- 备份过期 — 最新备份的时间早于配置的阈值
- 文件损坏 — ZIP/Excel/Word 结构验证失败
- 备份容量骤降 — 总大小较上次运行下降 ≥30%
## 功能特性
| 功能 | 详情 |
|---|---|
| SHA-256 哈希 | 加密级别的强完整性验证 |
| Shannon 熵分析 | 无需特征码即可检测勒索软件加密 |
| 4 步夜间流水线 | 基线验证 → 新文件扫描 → 期限检查 → 结构完整性 |
| 备份容量趋势追踪 | 容量下降时警报,仪表盘显示迷你趋势图 |
| 警报去重 | 24 小时内抑制相同警报 |
| 每日邮件摘要 | 每天一份 HTML 摘要 —— 而非泛滥的单独警报邮件 |
| 基线快照 | 命名的节点时间副本,比对任意两个快照以查看变化 |
| 恢复能力 | 复制文件回原位并保留子文件夹结构 |
| 桌面 GUI | 深蓝色仪表盘 —— 包含 Dashboard、Alerts、Reports、Restore、Snapshots、Settings |
| Excel 报告 | 彩色编码的 3 页表格报告 |
| 邮件警报 | SMTP 并进行正确的 TLS 证书验证 |
| Windows Task Scheduler | 每晚 02:00 自动运行 |
| CLI 模式 | 用于脚本编写的无头 (headless) 运行模式 |
## 系统要求
- Windows 10 或 11
- Python 3.10+
- `pip install openpyxl` — 用于生成 Excel 报告
## 安装说明
```
right-click Install_VaultSentry.bat → Run as administrator
```
安装至 `C:\SecurityLogs\VaultSentry\`,创建计划任务,运行基线建立。
## 使用说明
```
python main.py --gui # Launch GUI
python main.py --baseline # First-time baseline hash
python main.py --verify # Nightly verification
python main.py --snapshot "Before audit Mar 2026" # Save named snapshot
python main.py --list-snapshots # List all snapshots
python main.py --restore # Interactive CLI restore
python main.py --digest # Send daily digest now
python main.py --report # Generate Excel report
python main.py --status # Quick console summary
```
## GUI 标签页
| 标签页 | 功能 |
|---|---|
| **Dashboard** | 实时统计卡片、备份容量趋势迷你图(最近 14 次运行)、扫描控制、实时日志 |
| **Alerts** | 完整警报历史、严重性筛选、详情面板 |
| **Reports** | 生成并浏览 Excel 报告 |
| **Restore** | 按状态筛选 → 预览计划 → 执行并提供逐文件覆盖提示 |
| **Snapshots** | 保存快照、浏览文件、比对两个快照、删除旧快照 |
| **Settings** | 配置查看器、路径检查、环境变量状态、快捷操作 |
## 邮件设置
**单独警报** — 在 `config.py` 中设置 `EMAIL_ENABLED = True`。
**每日摘要** — 设置 `DIGEST_ENABLED = True` 和 `DIGEST_TIME = 8`(发送时间,小时)。
摘要每天发送一封 HTML 邮件,包含完整摘要 —— 扫描结果、过去 25 小时内的所有警报以及状态横幅。单独的 CRITICAL 警报无论设置如何仍会立即触发。
将您的密码存储为环境变量 —— 切勿写在 config.py 中:
```
# 以管理员身份运行 PowerShell
[System.Environment]::SetEnvironmentVariable(
'VAULTSENTRY_EMAIL_PASSWORD', 'your_app_password', 'Machine')
```
## 测试
8 个模块共 162 个单元测试。覆盖率 73%。
```
pip install pytest pytest-cov
pytest tests/ -v
```
| 模块 | 测试数 | 覆盖内容 |
|---|---|---|
| `test_file_utils.py` | 35 | SHA-256、熵、文件遍历、完整性 |
| `test_database.py` | 20 | DB 层 —— 表、约束、统计 |
| `test_alerts.py` | 6 | 警报分发、去重、TLS 验证 |
| `test_scanner.py` | 16 | 4 步验证流水线 |
| `test_restore.py` | 20 | 恢复引擎 —— 计划、执行、边缘情况 |
| `test_snapshots.py` | 23 | 快照 CRUD + 差异比对 |
| `test_size_trend.py` | 12 | 容量追踪、骤降警报 |
| `test_digest.py` | 30 | HTML/文本构建器、发送逻辑、调度 |
## 项目结构
```
VaultSentry/
├── main.py # Entry point — CLI + GUI launcher
├── config.py # All settings ← edit before deploying
├── logger.py # Rotating log handler
├── Install_VaultSentry.bat
├── Uninstall_VaultSentry.bat
├── .github/workflows/ci.yml # Python 3.10/3.11/3.12 CI
├── core/
│ ├── database.py # DB layer — all queries, stats, snapshots, size trend, digest data
│ ├── alerts.py # Alert dispatcher — popup, msg.exe, email (TLS verified)
│ ├── scanner.py # Baseline + 4-step verification + size drop check
│ ├── restore.py # Restore engine — plan and execute
│ ├── digest.py # Daily HTML digest builder and sender
│ └── reports.py # Excel report generator
├── gui/
│ ├── app.py # Main window + tab switching
│ ├── theme.py # Dark blue colour scheme
│ ├── tab_dashboard.py # Stats + size trend sparkline + live log
│ ├── tab_alerts.py # Alert history with filter
│ ├── tab_reports.py # Generate + browse reports
│ ├── tab_restore.py # Restore with preview + per-file prompts
│ ├── tab_snapshots.py # Snapshot list, diff viewer, delete
│ └── tab_settings.py # Config viewer + quick actions
├── utils/
│ └── file_utils.py # SHA-256, entropy, file walking, integrity check
└── tests/
├── conftest.py
├── test_file_utils.py
├── test_database.py
├── test_alerts.py
├── test_scanner.py
├── test_restore.py
├── test_snapshots.py
├── test_size_trend.py
└── test_digest.py
```
## 勒索软件检测原理
Shannon 熵用于衡量字节级别的随机性。正常文件的得分在 4.0–6.5 之间。加密文件的得分在 7.5–8.0 之间。当哈希值发生变化 **且** 熵值飙升至 7.8 以上时,VaultSentry 会触发 CRITICAL 警报:**RANSOMWARE SUSPECTED — BACKUP ENCRYPTED**。
容量趋势检查增加了第二层防护:如果总备份大小一夜之间下降 ≥30%,将触发第二个 CRITICAL 警报 —— 勒索软件在勒索信出现之前,通常会先删除原文件并用较小的加密版本替换。
## 更新日志
**v1.0** *(当前版本)*
*Phase 5 — 每日邮件摘要*
- `core/digest.py` — `build_digest_html()`, `build_digest_text()`, `send_digest()`, `should_send_digest()`
- HTML 摘要邮件 —— 状态横幅、扫描摘要表、警报表、Red Parrot 品牌
- 针对不支持 HTML 渲染的邮件客户端的纯文本回退
- `DIGEST_ENABLED` 和 `DIGEST_TIME` 配置选项
- 在满足时间条件后于 `--verify` 运行完自动触发;每天不重复发送
- `--digest` CLI 标志用于按需发送
- 数据库层中的 `get_digest_data()` —— 查询该时段的警报 + 上次扫描运行
- `test_digest.py` 中增加 30 个测试,覆盖率提升至 73%
*Phase 4 — 备份容量趋势追踪*
- 每次验证运行时存储 `total_backup_size`
- 当大小较上次运行下降 ≥30% 时触发 CRITICAL 警报
- Dashboard 上的容量趋势迷你图(最近 14 次运行,骤降标红)
- `get_size_trend()`, `get_previous_backup_size()`, `_calculate_total_backup_size()`
- `test_size_trend.py` 中增加 12 个测试
*Phase 3 — 基线快照版本控制*
- `snapshots` 和 `snapshot_files` DB 表
- `create_snapshot()`, `list_snapshots()`, `get_snapshot_files()`, `diff_snapshots()`, `delete_snapshot()`
- Snapshots GUI 标签页,带分页差异查看器 (Added / Removed / Changed / Unchanged)
- `--snapshot "label"` 和 `--list-snapshots` CLI 标志
- `test_snapshots.py` 中增加 23 个测试
*Phase 2 — 恢复能力*
- `core/restore.py` — 计划并执行文件恢复,保留子文件夹结构
- Restore GUI 标签页 —— 筛选、预演预览、通过对话框进行逐文件覆盖提示
- `--restore` CLI 标志,带交互式提示
- `test_restore.py` 中增加 20 个测试
*Phase 1 — 测试 + CI*
- 修复 `starttls()` → `ssl.create_default_context()` (MITM 漏洞)
- 警报去重(24 小时冷却期)
- 76 个测试,CI 支持 Python 3.10/3.11/3.12
## 免责声明
VaultSentry 用于检测完整性违规 —— 它不会恢复文件或拦截勒索软件。请将任何 CRITICAL 警报视为需要立即处理的事件。
*由 Egyan | Red Parrot Accounting Ltd 构建*
标签:DeepSeek, HTML 报表, PB级数据处理, Ransomware Detection, SHA-256, TLS, Windows 安全工具, x64dbg, Zenmap, 任务计划, 备份恢复, 备份监控, 备份策略, 子域名变形, 安全运维, 异常检测, 数据完整性, 数据篡改检测, 文件哈希校验, 源代码审计, 熵值分析, 逆向工具, 邮件告警, 防勒索软件, 防御工具