⚠️ 严正警告 (Disclaimer)
本项目仅用于合法的安全研究、教育和企业内部攻防演练目的。
在任何情况下,严禁在未经授权的系统上运行此程序。此工具旨在模拟对文件进行不可逆的加密操作。在非受控环境中运行可能导致真实的数据丢失和系统损坏。
使用者必须对自己的行为负责。 开发者对因滥用此工具而造成的任何损害不承担任何责任。
🚀 1. 项目简介
Ransomware Simulator 是一个高保真、跨平台的勒索软件攻击模拟器,使用 Go 语言编写。它旨在通过模拟真实世界勒索软件(如 LockBit、Conti 等)的关键攻击阶段,帮助组织和安全团队提升防御能力。
最新版本特性 (v2.7): 本工具已升级支持定向打击模式,可直接针对指定的文件或目录进行全格式加密,并增强了勒索信的投递逻辑,确保在每一个受影响的文件夹中留下痕迹,以最大程度模拟真实攻击场景。
核心价值
EDR/XDR 检测能力测试: 观察安全产品对文件操作、加密行为和网络 C2 信标的捕获能力。
备份与恢复策略验证: 在安全隔离环境中,检验数据恢复流程的有效性和时效性。
应急响应能力提升: 提供真实的模拟场景,演练事件调查、溯源、遏制和清除流程。
员工安全意识增强: 直观展示勒索软件的破坏力,作为内部安全培训的生动案例。
模拟的关键攻击阶段 (MITRE ATT&CK®)
✨ 2. 功能特性与技术细节
跨平台支持: 可编译为 Windows (
.exe), Linux 和 macOS (Intel/ARM) 的原生可执行文件。高强度混合加密 (AES + RSA):
使用强大的 AES-256 GCM 模式对文件内容进行流加密。
随机生成 AES 密钥,并使用从模拟 C2 服务器获取的 RSA-2048 公钥加密 AES 密钥,模拟真实勒索软件的密钥交换流程。
定向打击与全格式加密 (Targeted Strike):
支持单文件定位:可以直接指定某个具体文件进行加密(忽略扩展名限制)。
区域全灭模式:如果指定了目录,程序将自动忽略
-ext扩展名限制,加密该目录下的所有格式文件(系统保护文件除外)。
增强的投递逻辑:
无死角勒索信:不再仅投放在桌面,而是自动识别并投放到每一个发生加密行为的子文件夹中。
Linux 兼容性增强:修复了 Linux 环境下扩展名大小写敏感的问题(如
.JPG与.jpg均会被命中)。
测试友好的锁机制: 程序启动时会自动清理旧的互斥锁文件,方便在测试环境中反复运行,无需手动删除残留锁。
高效并发加密: 利用 Go 的并发特性,通过
-workers参数指定线程数,最大化利用多核心 CPU 资源。安全演习模式 (
-dry-run): 提供完全安全的沙箱模式,程序只会执行扫描和 C2 信标(可选),不会执行任何文件修改或破坏性操作。
🛠️ 3. 安装与编译指南
3.1. 先决条件
安装 Go 编程语言 (版本 1.18 或更高)。
3.2. 编译步骤
假设您已将 main.go (以及 decryptor.go) 文件放置在您的工作目录下。
提示:
-ldflags="-s -w"是一个可选参数,用于移除调试信息,减小最终可执行文件的大小。
⚙️ 4. 使用方法与功能指导
再次强调:强烈建议在虚拟机或隔离的沙箱环境中运行。
4.1. 命令行参数详解
4.2. 使用示例 (演练指导)
示例 1: 精准打击 - 加密单个重要文件
目标: 测试 DLP 或 EDR 是否能阻止对特定敏感文件(如 passwords.txt)的加密操作。
# 直接指定文件路径
./ransom_simulator_linux -dir /home/admin/secrets/passwords.txt -remove效果:程序将忽略扩展名检查,强制加密该文件并在同级目录下生成勒索信。
示例 2: 区域全灭 - 加密指定目录下的所有内容
目标: 模拟针对特定业务目录的毁灭性打击。
# 指定业务目录,开启8个线程并发加密
./ransom_simulator.exe -dir "C:\Users\Admin\Documents\Projects" -workers 8 -remove效果:该目录下的所有文件(无论后缀是 .txt 还是 .custom)都将被加密。勒索信将投递到该目录及其所有子目录中。
示例 3: 全盘扫描 - 传统勒索模式
目标: 模拟传统勒索软件,扫描全盘并只加密特定价值的文档。
# 不指定 -dir,则自动扫描全盘(或Linux根目录)
# 此时必须依赖内置的扩展名列表或通过 -ext 指定
./ransom_simulator_linux -ext .pdf,.docx,.xlsx -dry-run🔑 5. 程序加密与密钥流程详解
理解本模拟器的核心加密机制对于安全分析至关重要。程序采用混合加密(Hybrid Encryption)模型,结合了非对称加密(RSA)和对称加密(AES)的优点。
5.1 加密流程 (单个文件视角)
当程序加密一个文件时,会执行以下步骤:
生成会话密钥:在本地内存中为当前文件生成一个唯一、随机的 AES-256 密钥。此密钥仅用于加密这一个文件。
加密文件内容:使用上一步生成的 AES 密钥,通过 AES-GCM 算法对文件的全部内容进行加密。
封装会话密钥:使用 RSA-2048 公钥(从 C2 获取或使用内置的默认公钥)对第一步生成的 AES 密钥进行加密。
组装最终文件:
[Encrypted AES Key] + [Nonce] + [File Ciphertext]。勒索信投递:程序检测当前文件所在的文件夹。如果该文件夹尚未投放勒索信,程序会立即在该目录下生成
!!!_如何解密你的文件_!!!.txt。
5.2 互斥锁与持久化
为了模拟真实恶意软件的单实例特性,程序启动时会在临时目录创建 .lock 文件。
改进机制:在 v2.5 版本中,程序启动的第一步是强制尝试删除旧的锁文件。这意味着您在进行反复的自动化测试时,不再需要手动清理环境,程序会自动重置状态。
手动删除:rm /tmp/ransom_simulator_instance.lock
🔓 6. 解密流程与工具使用
本项目包含一个配套的解密工具 decryptor.go(需单独编译)。
6.1. 解密前提
必须拥有与加密时所使用的公钥配对的 RSA 私钥文件。
该程序通过UUID获取私钥链接:https://rsa-uuid.api.yangzifun.org
在线模式:如果模拟器成功连接了 C2,私钥在 C2 服务端
离线/Fallback模式:如果模拟器无法连接 C2(常见于内网演练),它会使用内置的硬编码公钥。对应的私钥在源代码注释或配套文档中,默认UUID:5137d4c3-3901-4528-bfa9-6d9ce88fa287。
6.2. 编译与运行
# 编译
go build -o decryptor decryptor.go
# 运行解密 (指向私钥文件)
./decryptor -key-file ./private_key.pem -dir /home/testuser/Documents -remove7. 免责声明与许可
本项目遵循 MIT 许可证。请查阅 LICENSE 文件了解详情。
再次强调,此工具的创建旨在赋能防御者,而非赋能攻击者。请在法律和道德允许的范围内负责任地使用。