marmos91/ransomware

GitHub: marmos91/ransomware

一款安全的勒索软件攻击模拟演示工具,可在限定目录内完整复现加密攻击流程,用于安全意识培训、防御方案验证及数据保护产品演示。

Stars: 41 | Forks: 9

# 勒索软件示例 一个用于在本地模拟勒索软件攻击的简单演示工具 ## ⚠️ 免责声明 ⚠️ 本软件仅供演示和学习目的。 如果您想在本地运行测试,请注意您选择加密的目录。本软件基于 MIT 许可证发布。 本软件免费使用,但作者不对第三方对代码的任何非法使用承担责任。 ## 设置 只需运行以下命令即可设置该工具 ``` go install github.com/marmos91/ransomware@latest ``` ### 本地设置 若要在不安装的情况下在本地运行该工具 ``` go run main.go ``` ## 为什么 为了在受保护的环境中快速演示勒索软件的工作原理,**能够将其操作限制在一个目录内是非常有用的**。 这样,过程所需的时间要少得多(不需要加密整个操作系统)。 使用 Go 编写此工具,还**允许即使在非 Windows 环境中也能开发该工具**(Windows 是目前网上现有勒索软件支持最广泛的操作系统)。 ## 演示 该项目用于展示 [Cubbit](https://www.cubbit.io) 的对象存储对这类攻击的抵御能力,演示如何利用以下功能来防御此类工具。 Cubbit 的功能([版本控制](https://docs.cubbit.io/guides/bucket-and-object-versioning)、[对象锁定](https://docs.cubbit.io/guides/object-lock))。 完整内容可通过视频演示查看,视频可以在[这里](https://www.youtube.com/watch?v=w4vfng17eYg)找到。 [![观看视频](https://markdown-videos.vercel.app/youtube/w4vfng17eYg)](https://youtu.be/w4vfng17eYg) 演示中使用的恢复工具可在[这里](https://github.com/marmos91/s3restore)找到。 ## 如何使用 此工具用于模拟勒索软件攻击。使用它,您可以执行以下操作: 1. 设置密钥后,递归加密指定路径的内容 2. 请求密钥后,递归解密指定路径的内容 ## 帮助 ``` NAME: ransomware - A simple demonstration tool to simulate a ransomware attack USAGE: ransomware [global options] command [command options] [arguments...] VERSION: v1.0.0 AUTHOR: Marco Moschettini COMMANDS: create-keys, c Generates a new random keypair and saves it to a file encrypt, e Encrypts a directory decrypt, d Decrypts a directory help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --verbose Runs the tool in verbose mode (more logs) (default: false) --help, -h show help (default: false) --version, -v print the version (default: false) ``` ## 创建密钥对 您需要做的第一件事是创建一个密钥对。您可以通过运行以下命令来完成 ``` ransomware create-keys --path ~/Desktop ``` 如果您不指定路径,它将在 `pwd` 中创建密钥。 此命令将创建两个文件: - pub.pem - priv.pem 在真实场景中,您需要将 `私钥 (private key)` 放在服务器上,并仅在受害者支付赎金后提供。公钥则需要嵌入到勒索软件中以加密文件夹。 ## 加密目录 使用此命令,您可以递归加密指定目录内的每个文件。 ``` NAME: ransomware encrypt - Encrypts a directory USAGE: ransomware encrypt [command options] [arguments...] OPTIONS: --path value, -p value Runs the tool on a directory --publicKey value Loads the provided RSA public key in PEM format --extBlacklist value the extension to blacklist (default: ".enc") --extWhitelist value the extension to whitelist --skipHidden skips hidden folders (default: false) --dryRun encrypts files without deleting originals (default: false) --encSuffix value defines the suffix to add to encrypted files (default: ".enc") --addRansom if set to true add a ransom note to every encrypted folder (default: false) --ransomTemplatePath value defines where to find the template to use for the ransom note --ransomFileName value defines the name of the ransom file name (default: "IMPORTANT.txt") --bitcoinCount value how many bitcoins to ask as ransom (default: 0) --bitcoinAddress value the bitcoin address to use (default: "") --help, -h show help (default: false) ``` 例如,如果您想在 `~/Documents` 文件夹上运行该工具,请运行: ``` ransomware encrypt --publicKey ./pub.pem --path ~/Documents ``` 此命令提供以下选项: - `path`:要加密的路径。这是必需的 - `publicKey`:由 `create-keys` 命令创建的公钥 PEM 文件的路径 - `extBlacklist`:如果提供,则指定要跳过的扩展名列表(以逗号分隔)。**此功能对于排除像 `.exe` 这样的可执行文件非常有用** - `extWhitelist`:如果提供,则指定列入白名单的扩展名列表(以逗号分隔) - `skipHidden`:如果设置,则跳过隐藏文件夹 - `dryRun`:仅创建加密文件而不删除原始文件 - `encSuffix`:定义要设置在加密文件上的自定义扩展名(默认为 `.enc`) - `addRansom`:工具是否应为每个加密文件夹生成一个新的 ransom.txt 文件 - `ransomTemplatePath`:要用作勒索信的模板路径 - `ransomFileName`:要赋予勒索信文件的名称 - `bitcoinCount`:要求作为赎金的比特币数量 - `bitcoinAddress`:要在勒索信中使用的比特币地址 ### 示例 仅加密桌面上的 gif 文件 ``` ransomware encrypt --publicKey ./pub.pem --path ~/Desktop --extWhitelist .gif ``` 加密除 `.csv` 和 `.pdf` 文件以外的所有内容 ``` ransomware encrypt --publicKey ./pub.pem --path ~/Desktop --extBlacklist .csv,.pdf ``` 加密所有内容并添加勒索信文件 ``` ransomware encrypt --publicKey ./pub.pem --path ~/Desktop --addRansom --ransomTemplatePath ./ransom/IMPORTANT.txt ``` ### 勒索信文件 这是一个勒索信文件示例。模板字符串 `{{.BitcoinAddress}}`、`{{.BitcoinCount}}` 和 `{{.PubliKey}}` 将被脚本替换。请查看加密选项以了解可用的选项。 ``` !!! IMPORTANT !!! All of your files are encrypted with RSA 4096 and AES 256 ciphers. More information about RSA and AES can be found here: - https://en.wikipedia.org/wiki/RSA_(cryptosystem) - https://en.wikipedia.org/wiki/Advanced_Encryption_Standard Decrypting of your files is only possible with the private key and decrypt program, which is not available to you. To receive your private key please send {{.BitcoinCount}}BTC to {{.BitcoinAddress}} together with the public key used to encrypt your files The public key to use in the form is {{.PublicKey}} ``` ## 解密目录 使用此命令,您可以在受害者支付赎金后将文件夹解密回原始形式 ``` NAME: ransomware decrypt - Decrypts a directory USAGE: ransomware decrypt [command options] [arguments...] OPTIONS: --path value, -c value Runs the tool on a directory --privateKey value Loads the provided RSA private key in PEM format --dryRun decrypts files without deleting encrypted versions (default: false) --encSuffix value defines the suffix to add to encrypted files (default: ".enc") --ransomFileName value defines the name of the ransom file name (default: "IMPORTANT.txt") --help, -h show help (default: false) ``` 例如,如果您想在 `~/Documents` 文件夹上运行该工具,请运行: ``` ransomware decrypt --privateKey ./priv.pem --path ~/Desktop/toEncrypt ``` 此命令提供以下选项: - `path`:要加密的路径。这是必需的 - `privateKey`:由 `create-keys` 命令创建的私钥 PEM 文件的路径 - `dryRun`:仅创建解密文件而不删除加密版本 - `encSuffix`:定义加密文件的自定义扩展名(默认为 `.enc`) - `ransomFileName`:定义勒索信文件的名称。用于删除先前生成的文件 ## 工作原理 该工具实施了一种[**混合加密策略**](
标签:DAST, DevSecOps, EVTX分析, EVTX分析, Golang, Go语言, ProjectDiscovery, 上游代理, 加密解密工具, 勒索软件, 安全可观测性, 安全模拟, 安全演示, 安全编程, 对象存储, 恶意软件分析, 数据保护, 数据加密, 数据恢复, 文件加密, 日志审计, 版本控制, 程序破解, 网络安全, 防御演示, 隐私保护