MohsanRazaq/zero-trust-ransomware-resilience
GitHub: MohsanRazaq/zero-trust-ransomware-resilience
一个用于模拟和测试勒索软件防御机制的轻量级Python原型系统。
Stars: 0 | Forks: 0



# 勒索软件韧性检测系统
## 概述
这是一个轻量级的勒索软件韧性原型系统,基于 Python 构建,利用行为监控、可疑扩展名检测、自动隔离、备份恢复和事件报告等功能。
系统实时监控受保护目录,检测类似勒索软件的行为模式,在可疑活动发生时自动锁定受保护的资产,并支持备份恢复以进行恢复测试。
本项目是作为一个专注于防御性安全架构和勒索软件韧性概念的教育性网络安全工程项目而开发的。
## 功能特性
- 使用 Watchdog 进行实时文件系统监控
- 行为层面的勒索软件活动检测(基于滑动窗口的大规模修改检测)
- 可疑扩展名检测(如 `.locked`、`.encrypted`、`.crypt`、`.enc`)
- 自动文件夹锁定与隔离
- 版本化备份系统,带自动清理功能(每个文件最多保留 3 个版本)
- 只读备份保护(写入后备份文件权限设为 `chmod 0o444`)
- 带路径遍历保护的备份恢复工作流
- 威胁报告生成
- 模块化分层架构
- 攻击模拟测试框架
- 持久化活动日志记录
- 基于环境变量的恢复密钥(无硬编码凭证)
## 架构
```
[Filesystem Event]
↓
[Monitor Layer] monitor.py
↓
[Detection Engine] detector.py
↓
[Containment Engine] response.py
↓
[Backup & Recovery] backup_manager.py / recovery.py
↓
[Threat Reporting] reporter.py / logger.py
```
系统遵循分层防御工作流架构。文件系统事件通过实时监控收集,由基于行为和扩展名的检测逻辑进行分析,并通过自动隔离和恢复机制进行响应。生成威胁报告和持久化日志,以支持事件跟踪和取证可见性。
## 项目结构
```
zero-trust-ransomware-resilience/
│
├── src/
│ ├── main.py # Entry point; coordinates monitoring and recovery
│ ├── constants.py # Single source of truth for all config values
│ ├── monitor.py # Filesystem event monitoring (Watchdog)
│ ├── detector.py # Behavioral and extension-based threat detection
│ ├── response.py # Containment and lockdown operations
│ ├── backup_manager.py # Versioned backup creation and pruning
│ ├── recovery.py # File restoration after containment
│ ├── reporter.py # Structured threat report generation
│ └── logger.py # Centralized activity logging
│
├── tests/
│ └── attack_simulator.py
│
├── protected/ # Directory being monitored (gitignored)
├── backup/ # Versioned backups (gitignored)
├── logs/ # Activity and threat logs (gitignored)
│
├── README.md
├── requirements.txt
└── .gitignore
```
## 安装说明
### 1. 克隆代码仓库
```
git clone https://github.com/MohsanRazaq/zero-trust-ransomware-resilience
cd zero-trust-ransomware-resilience
```
### 2. 创建虚拟环境
```
python3 -m venv venv
source venv/bin/activate
```
### 3. 安装依赖
```
pip install -r requirements.txt
```
### 4. 设置恢复密钥
恢复密钥**不会**存储在源代码中。在运行系统前,请将其设置为环境变量:
```
export RECOVERY_KEY="your-strong-secret-here"
```
## 使用方法
### 启动监控系统
```
python3 src/main.py
```
监控引擎将实时观察 `protected/` 目录,并对可疑的勒索软件行为做出响应。
### 停止监控并恢复文件
1. 按下 `Ctrl + C`
2. 在提示时输入您的 `RECOVERY_KEY`(允许 3 次尝试)
3. 系统将自动解锁受保护目录并恢复备份
## 攻击模拟
项目包含一个专门的模拟脚本,用于测试防御工作流。
```
python3 tests/attack_simulator.py
```
### 可用的模拟类型
**1. 大规模修改攻击**
模拟类似勒索软件的快速文件修改行为,以触发行为检测和自动隔离(阈值:10 秒内修改 5 次)。
**2. 可疑扩展名攻击**
模拟使用 `.locked`、`.encrypted`、`.crypt` 等扩展名的勒索软件式文件重命名。触发基于扩展名的检测、威胁报告和自动文件夹锁定。
## 威胁报告
当检测到可疑活动时,一份结构化报告将被追加到:
```
logs/threat_report.log
```
报告示例:
```
==================================================
Incident Timestamp : 2026-05-16 18:21:21
Attack Type : Suspicious Extension Detection
Affected Path : protected/victim.txt.locked
Response Action : Folder Lockdown
==================================================
```
## 恢复工作流
当检测到威胁时,系统将受保护目录设置为只读(`0o555`),并将单个文件设置为 `0o444`,以防止进一步修改。
恢复步骤:
1. 停止监控:`Ctrl + C`
2. 在提示时输入恢复密钥
3. 系统将:
- 解锁受保护目录(权限恢复为 `0o755` / `0o644`)
- 恢复每个文件的最新备份
- 保留所有事件日志
## 安全设计决策
| 决策 | 原因 |
|---|---|
| 恢复密钥存储为环境变量 | 防止凭证出现在源代码或 Git 历史中 |
| 使用 `hmac.compare_digest()` 比较密钥 | 防止基于时间的暴力破解攻击 |
| 恢复时 3 次尝试锁定 | 减缓本地暴力破解尝试 |
| 备份写入后设置 `chmod 0o444` | 防止勒索软件或意外操作覆盖安全副本 |
| 每个文件最多保留 3 个备份版本 | 限制磁盘使用;在隔离触发前阻止磁盘填满攻击 |
| 恢复路径使用 `os.path.basename()` | 防止路径遍历(例如 `../../etc/passwd` 文件名) |
| 对双端队列写入使用 `threading.Lock()` | 防止 Watchdog 线程和检测逻辑之间的竞态条件 |
| 所有配置集中在单个 `constants.py` 中 | 防止重复的 `SUSPICIOUS_EXTENSIONS` 列表不同步 |
## 未来改进方向
- [ ] 基于身份的访问控制(解锁前进行 MFA)
- [ ] 集成网络微隔离
- [ ] 文件熵分析,用于检测正在进行的加密
- [ ] 通过配置文件设置可配置的检测阈值
- [ ] 进程级归因(哪个 PID 触发了大规模修改)
- [ ] 锁定事件时发送电子邮件/网络警报
- [ ] 检测和恢复逻辑的单元测试覆盖率
## 免责声明
本项目严格出于教育和防御性网络安全目的开发。其勒索软件模拟组件仅用于在受控测试环境中展示行为检测、隔离、恢复和韧性概念。未经明确授权,请勿将此项目用于攻击系统、文件或环境。
标签:Python, Watchdog, 勒索软件弹性, 勒索软件防护, 备份恢复, 威胁报告, 安全原型, 攻击模拟, 教育项目, 数据恢复, 文件监控, 文件系统监控, 无后门, 网络安全, 自动化响应, 自动遏制, 行为检测, 逆向工具, 隐私保护, 零信任架构, 驱动签名利用