阳子
阳子
发布于 2025-07-08 / 35 阅读
0
0

Ransomware Simulator - 安全意识与应急响应演练工具

⚠️ 严正警告 (Disclaimer)

本项目仅用于合法的安全研究、教育和企业内部攻防演练目的。

在任何情况下,严禁在未经授权的系统上运行此程序。此工具旨在模拟对文件进行不可逆的加密操作。在非受控环境中运行可能导致真实的数据丢失和系统损坏

使用者必须对自己的行为负责。 开发者对因滥用此工具而造成的任何损害不承担任何责任。


🚀 1. 项目简介

Ransomware Simulator 是一个高保真、跨平台的勒索软件攻击模拟器,使用 Go 语言编写。它旨在通过模拟真实世界勒索软件(如 LockBit、Conti 等)的关键攻击阶段,帮助组织和安全团队提升防御能力。

最新版本特性 (v2.7): 本工具已升级支持定向打击模式,可直接针对指定的文件或目录进行全格式加密,并增强了勒索信的投递逻辑,确保在每一个受影响的文件夹中留下痕迹,以最大程度模拟真实攻击场景。

核心价值

  • EDR/XDR 检测能力测试: 观察安全产品对文件操作、加密行为和网络 C2 信标的捕获能力。

  • 备份与恢复策略验证: 在安全隔离环境中,检验数据恢复流程的有效性和时效性。

  • 应急响应能力提升: 提供真实的模拟场景,演练事件调查、溯源、遏制和清除流程。

  • 员工安全意识增强: 直观展示勒索软件的破坏力,作为内部安全培训的生动案例。

模拟的关键攻击阶段 (MITRE ATT&CK®)

Tactic (战术)

ID

模拟行为

执行 (Execution)

TA0002

模拟通过社工手段获取执行权限。

防御规避 (Defense Evasion)

TA0005

模拟删除卷影副本 (vssadmin) 或备份 (tmutil) 的行为。

命令与控制 (C2)

TA0011

模拟向攻击者控制的服务器发送网络信标(Beacon Check-in)。

发现 (Discovery)

TA0007

扫描文件系统,支持特定扩展名筛选指定路径的全量扫描

影响 (Impact)

TA0040

核心载荷:使用 AES-256 + RSA-2048 混合加密算法对目标文件进行加密。全覆盖勒索信:在每个包含加密文件的目录中投放勒索信。


✨ 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) 文件放置在您的工作目录下。

目标平台

命令

输出文件示例

Linux (64位)

GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ransom_simulator_linux ransom_simulator.go CGO_ENABLED=0 go build -o ransom_simulator_linux_static ransom_simulator.go

ransom_simulator_linux ransom_simulator_linux_static

Windows (64位)

GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o ransom_simulator.exe ransom_simulator.go

ransom_simulator.exe

macOS (Intel)

GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" -o ransom_simulator_macos_intel ransom_simulator.go

ransom_simulator_macos_intel

macOS (Apple Silicon)

GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o ransom_simulator_macos_arm ransom_simulator.go

ransom_simulator_macos_arm

提示:-ldflags="-s -w" 是一个可选参数,用于移除调试信息,减小最终可执行文件的大小。


⚙️ 4. 使用方法与功能指导

再次强调:强烈建议在虚拟机或隔离的沙箱环境中运行。

4.1. 命令行参数详解

参数

类型

状态

描述

关键用途

-dir

string

推荐

指定攻击目标。可以是目录路径单个文件路径。多个路径用逗号分隔。注意:使用此参数时,将忽略 -ext 限制,强制加密目标内所有格式文件。

精准打击:定向加密特定文件或目录,便于测试。

-ext

string

可选

指定要加密的文件扩展名(如 .txt,.doc)。仅在未指定 -dir 时生效(全盘扫描模式)。

范围控制:在全盘扫描模式下限制文件类型。

-workers

int

可选

并发 Worker 线程数量 (默认: CPU核心数)。

性能模拟:测试系统资源消耗和响应延迟。

-dry-run

bool

可选

演习模式:只查找、列出目标,不进行加密或破坏性操作。

安全测试:初步验证扫描和检测规则。

-remove

bool

可选

[高危] 加密成功后删除原始文件。

真实模拟:模拟真实勒索软件的彻底破坏。

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 加密流程 (单个文件视角)

当程序加密一个文件时,会执行以下步骤:

  1. 生成会话密钥:在本地内存中为当前文件生成一个唯一、随机的 AES-256 密钥。此密钥仅用于加密这一个文件。

  2. 加密文件内容:使用上一步生成的 AES 密钥,通过 AES-GCM 算法对文件的全部内容进行加密。

  3. 封装会话密钥:使用 RSA-2048 公钥(从 C2 获取或使用内置的默认公钥)对第一步生成的 AES 密钥进行加密。

  4. 组装最终文件[Encrypted AES Key] + [Nonce] + [File Ciphertext]

  5. 勒索信投递:程序检测当前文件所在的文件夹。如果该文件夹尚未投放勒索信,程序会立即在该目录下生成 !!!_如何解密你的文件_!!!.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 -remove

7. 免责声明与许可

本项目遵循 MIT 许可证。请查阅 LICENSE 文件了解详情。

再次强调,此工具的创建旨在赋能防御者,而非赋能攻击者。请在法律和道德允许的范围内负责任地使用。


评论