Wambita/ransomware-lab
GitHub: Wambita/ransomware-lab
一个用于网络安全教学的勒索软件模拟项目,演示文件加密、密钥派生和安全文件处理的完整流程。
Stars: 0 | Forks: 0
# 勒索软件实验室 (教育项目)
## 项目概述
`ransomware-lab` 是一个网络安全学习项目,演示了:
* 使用 AES-256(CBC 模式)进行对称加密
* 使用 Scrypt 进行密钥派生
* Python 中的文件和目录遍历
* 安全随机 token 生成
* 加密和解密工作流程
* 跨平台路径处理(Windows、Linux、macOS)
本项目的目的是理解**文件加密是如何工作的**,以便学生能够更好地防御现实世界中的勒索软件威胁。
## 学习目标
通过参与这个项目,你将学到:
* 加密如何将明文转换为密文
* 盐值和 IV 如何提高加密安全性
* 密码/token 如何转换为加密密钥
* 如何在二进制模式下安全地处理文件
* 如何递归处理目录
* 为什么正确的密钥管理对恢复至关重要
## 重要免责声明
本项目:
* 绝不得用于你不拥有的系统。
* 绝不得用于危害、勒索或破坏数据。
* 绝不得在重要的个人或生产文件上执行。
请始终在以下环境中测试:
* 虚拟机 (VM)
* 受控的实验室环境
* 包含虚拟文件的专用测试文件夹
作者不对滥用行为承担任何责任。
## 🛠 环境要求
* Python 3.8+
* `cryptography` 库
安装依赖:
```
pip install cryptography
```
# 用法(仅供安全教育测试)
## 1. 使用虚拟机(必需)
为了安全起见,请在虚拟机 (VM) 中测试此项目。
推荐工具:
* VirtualBox
* VMware
* 任何 Linux 虚拟机环境
步骤:
1. 安装一个虚拟机软件。
2. 创建一个全新的 Linux 虚拟机。
3. 在虚拟机内克隆此代码库。
4. 仅使用虚拟测试文件。
这可确保:
* 你的真实文件受到保护。
* 任何错误都被隔离。
* 如有需要,你可以重置虚拟机。
## 2. 克隆代码库
在你的虚拟机内部:
```
git clone https://learn.zone01kisumu.ke/git/shfana/ransomware-lab.git
cd ransomware-lab
```
## 3. 创建虚拟环境(推荐)
```
python3 -m venv venv
source venv/bin/activate # linux/mac os
```
- 在 Windows 上
```
venv\Scripts\activate
```
## 4. 安装依赖
```
pip install -r requirements.txt
```
这将安装项目所需的一切
## 5. 创建测试文件夹
创建一个包含虚拟文件的安全文件夹:
```
mkdir ~/Desktop/test
```
在 `test` 文件夹内添加一些示例 `.txt` 文件。
切勿使用重要数据。
## 5. 加密文件夹
运行:
```
python3 Ransomware_Encrypt.py
```
程序将:
* 加密 `~/Desktop/test` 内的文件
* 生成恢复 token
* 创建一个勒索软件页面,通知用户其文件已被加密以及恢复账户的说明(勒索软件模拟 - 仅供教育目的)
## 6. 保存生成的 Token
- 打开包含 token 的生成文件。
- 复制 token。出于模拟目的,你将 token 发送到指定的电子邮件
### 解密(恢复文件(攻击者视角))
## 7. 解密文件
运行:
```
python decrypt.py
Enter recovery token: (Enter the token that was generated when the files were encrypted / code sent to you)
```
程序将:
* 定位 `.enc` 文件
* 使用提供的 token
* 恢复原始文件
# 安全准则
* 仅在虚拟机内测试。
* 仅使用虚拟测试文件。
* 切勿在生产系统上执行。
* 切勿在你不拥有的系统上执行。
* 不要修改系统目录。
* 在现实场景中始终维护备份。
# 为什么要使用 VM?
该项目有意修改文件以模拟加密行为。
使用 VM 可确保:
* 你可以还原到干净的快照。
* 避免意外的数据丢失。
* 实践负责任的安全研究。
# 教育目的
本实验室旨在帮助学生理解:
* 加密在实践中是如何工作的
* 为什么密钥管理至关重要
* 勒索软件在技术上是如何运作的
* 为什么防御策略(备份、隔离、监控)很重要
了解攻击机制有助于构建更强的防御。
## 工作原理
### 加密流程
1. 生成一个安全的随机 token。
2. 创建一个随机盐值。
3. 使用 Scrypt 派生密钥。
4. 生成一个随机 IV。
5. 数据被填充 (PKCS7)。
6. 使用 AES-256-CBC 加密数据。
7. 加密后的文件保存为 `.enc`。
加密文件结构:
```
[salt (16 bytes)] + [IV (16 bytes)] + [ciphertext]
```
### 解密流程
1. 提取盐值和 IV。
2. 使用相同的 token 派生密钥。
3. 解密密文。
4. 移除填充。
5. 恢复原始文件。
如果 token 不正确,解密将失败。
## 演示的安全概念
* AES-256 对称加密
* Scrypt 密钥派生函数 (KDF)
* 使用 `secrets` 进行安全随机生成
* 加盐的基于密码的加密
* 跨平台文件系统处理
## 教育价值
本实验室帮助学习者:
* 理解勒索软件在技术上是如何运作的
* 体会备份的重要性
* 学习安全的加密设计
* 练习防御性网络安全思维
了解攻击机制对于构建强大的防御至关重要。
## 未来改进(教育构想)
* 添加日志记录
* 添加文件完整性验证
* 添加备份模拟
* 添加审计模式(试运行而不加密)
* 添加 GUI 界面用于演示
## 作者
### Wambita Sheila Fana
专注于密码学和安全软件工程的网络安全与系统学习项目。
标签:AES-256, CBC模式, DAST, ProjectDiscovery, Python, Scrypt, 勒索软件, 安全实验室, 密码学, 密钥派生, 对称加密, 恶意软件分析, 手动系统调用, 教育项目, 数据保护, 文件加密, 文件遍历, 无后门, 漏洞评估, 网络安全, 自动化审计, 虚拟机测试, 逆向工具, 隐私保护