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, 勒索软件, 安全实验室, 密码学, 密钥派生, 对称加密, 恶意软件分析, 手动系统调用, 教育项目, 数据保护, 文件加密, 文件遍历, 无后门, 漏洞评估, 网络安全, 自动化审计, 虚拟机测试, 逆向工具, 隐私保护