Bedrock-Safeguard/gentlemen-decryptor
GitHub: Bedrock-Safeguard/gentlemen-decryptor
首个针对 The Gentlemen 勒索软件的公开解密器,通过从进程内存转储中提取 X25519 临时私钥实现文件恢复。
Stars: 2 | Forks: 0
# The Gentlemen 勒索软件解密器
**首个公开可用的 The Gentlemen 勒索软件解密方法。**
The Gentlemen(也称为 hastalamuerte)是目前全球最活跃的勒索软件即服务(RaaS)运营组织,截至 2026 年第一季度已有 **320+ 确认受害者**。迄今为止,所有主要的安全供应商 —— Cybereason、Group-IB、Check Point、ASEC、Trend Micro —— 均评估其加密在密码学上是不可破解的。此前不存在公开的解密工具。
我们破解了它。
## 工作原理
The Gentlemen 使用带有 X25519 ECDH 密钥交换的 XChaCha20 流加密。每个文件都使用从全新临时密钥对派生出的唯一密钥进行加密。其加密在数学上是可靠的 —— 我们并没有在数学上破解它。
我们破解了它的实现。
Go 的运行时在使用后不会清除 goroutine 栈或堆上的加密密钥材料。每个临时 X25519 私钥在勒索软件进程的**整个生命周期**内都会保留在进程内存中 —— 不仅在加密期间,而是从 Go crypto 模块初始化的那一刻起,直到进程终止。Go 的垃圾回收器会在堆代际之间复制数据,从而在进程地址空间中创建每个密钥的多个副本。
**在进程存活期间的任何时刻**(加密之前、期间或之后)获取的单个内存转储,都包含解密每个文件所需的所有密钥。
**结果:35/35 个文件被解密,准确率达 100%。在 0.6 秒内从单个内存转储中恢复了全部 35 个密钥。**
## 致受害者
如果您遭到了 The Gentlemen 勒索软件的攻击,只要您拥有该勒索软件执行期间任意时刻的进程内存转储,您就有可能恢复您的文件。这些密钥会在**整个进程生命周期**内持续存在,而不仅仅是在主动加密期间。
**内存转储的来源:**
1. **EDR/XDR 解决方案** —— CrowdStrike、SentinelOne、Carbon Black、Microsoft Defender for Endpoint 等 routinely 会在威胁检测过程中捕获进程内存。请检查您的 EDR 控制台,查找事件发生时的内存捕获记录或取证快照。
2. **事件响应** —— 如果您的 IR(事件响应)团队在终止勒索软件进程之前,使用了 `procdump`、任务管理器的“创建转储文件”或任何取证工具来捕获该进程。
3. **Windows 错误报告** —— 如果勒索软件发生了崩溃,Windows 可能已将转储文件保存在 `C:\ProgramData\Microsoft\Windows\WER\` 中。
4. **崩溃转储** —— 请检查 `C:\Windows\Minidump\` 和 `C:\Windows\MEMORY.DMP` 以获取内核模式崩溃数据。
5. **完整 RAM 捕获** —— 如果在机器重启前使用了工具(如 WinPmem、Magnet RAM Capture 或 FTK Imager)获取了系统 RAM 的取证镜像。
6. **休眠文件** —— 如果系统进入了休眠状态而不是关机,`C:\hiberfil.sys` 会包含一份 RAM 快照。
### 恢复步骤
```
# 1. 安装 dependencies
pip install cryptography
# 2. 从你的加密文件中提取 ephemeral public keys
python extract_keys_from_files.py --input-dir /path/to/encrypted/files --output keys.json
# 3. 在 memory dump 中搜索匹配的 private keys
python recover_keys.py --dump process_memory.dmp --pubkeys keys.json --output recovered_keys.json
# 4. 解密你的文件
python decrypt.py --keys recovered_keys.json --input-dir /path/to/encrypted/files --output-dir /path/to/recovered
```
## 技术分析
### 加密方案
```
Per-file encryption:
1. Generate 32 random bytes -> ephemeral private key (crypto/rand.Read)
2. X25519(ephemeral_priv, operator_pub) -> shared_secret (32 bytes)
3. XChaCha20(plaintext, shared_secret) -> ciphertext
4. Append to file: --eph----marker--GENTLEMEN
```
临时私钥是至关重要的秘密。它仅存在于进程内存中,且从不写入磁盘。但是,当变量超出作用域时,Go 的 goroutine 栈分配器不会将内存清零(CWE-244),这导致可以通过内存取证技术访问这些密钥材料。
### 漏洞分类
| ID | 描述 |
|----|-------------|
| CWE-244 | 释放前未正确清除堆内存 |
| CWE-316 | 在内存中明文存储敏感信息 |
### 密钥恢复方法
1. 在主动加密期间捕获完整的进程内存转储
2. 扫描位于 8 字节对齐偏移量处的 32 字节值
3. 对于每个候选值,计算 `public = X25519(candidate, basepoint)`
4. 将其与从加密文件尾部提取的临时公钥进行比对
5. 找到匹配项 = 恢复了该文件的私钥
6. 派生解密密钥:`shared_secret = X25519(ephemeral_private, operator_public)`
7. 使用 shared_secret 作为密钥,通过 XChaCha20 进行解密
## 妥协指标 (IoC)
### 运营者基础设施
| IoC | 值 |
|-----|-------|
| 运营者 X25519 公钥 | `fcb11717cab989424755a957c1d55361b119de4fdcfecdb2f2e56b15ad801922` |
| TOX ID | `88984846080D639C9A4EC394E53BA616D550B2B3AD691942EA2CCD33AA5B9340FD1A8FF40E9A` |
| 谈判邮箱 | `negotiation_hapvida@proton.me` |
| 泄露网站 (.onion) | `tezwsse5czllksjb7cwp65rvnk4oobmzti2znn42i43bjdfd2prqqkad.onion` |
### 分析样本
| 字段 | 值 |
|-------|-------|
| SHA256 | `3ab9575225e00a83a4ac2b534da5a710bdcf6eb72884944c437b5fbe5c5c9235` |
| 类型 | PE32+ x64, Go binary, Garble-obfuscated |
| 大小 | 2,962,944 字节 |
| 首次发现 | 2026-04-03 |
### 文件指标
| 指标 | 值 |
|-----------|-------|
| 勒索信 | `README-GENTLEMEN.txt` |
| 加密扩展名 | 每次构建随机生成(例如,`.axfsmg`) |
| 文件尾部 | `--eph----marker--GENTLEMEN` |
### 行为指标
- 通过 `vssadmin` 和 `wmic` 删除卷影副本
- 通过 `Add-MpPreference` 添加 Windows Defender 排除项
- 删除 Windows Prefetch 文件
- 在加密前终止数据库、备份和安全服务
- 将桌面壁纸更改为 `gentlemen.bmp`
- 使用 `LOCKER_BACKGROUND=1` 环境变量生成子进程
- CLI 标志:`--path`、`--fast`、`--full`、`--shares`、`--silent`、`--system`、`-T`(延迟)
## 主动防御
这项研究推动了 **[Bedrock RansomGuard](https://github.com/Bedrock-Safeguard/RansomGuard)** 的开发 —— 这是一个开源的 Windows 服务,可自动检测勒索软件加密,并在密钥被销毁之前捕获进程内存。RansomGuard 适用于任何勒索软件家族,不仅限于 The Gentlemen。
## 先前研究
这项工作将 [Adrien Guinet 的 WannaCry 密钥恢复 (2017)](https://github.com/aguinet/wannakey) 扩展到了使用椭圆曲线密码学的现代基于 Go 的勒索软件上。据我们所知,这是首次发表的有关通过内存取证技术针对任意勒索软件家族进行 X25519 临时密钥恢复的应用研究。
## 负责任的披露
- 加拿大网络安全中心 (CCCS) 和 RCMP NC3 已获悉这些发现。
- 本发布内容仅包含防御性信息。不包含任何受害者数据。
- 此处发布的加密方案细节已被运营者所知 —— 发布这些信息不会为他们提供任何攻击优势。
## 许可证
本项目基于 [商业源代码许可证 1.1](LICENSE) 进行授权 —— 可免费用于所有非商业用途、内部商业用途、事件响应和学术研究。
## 关于
**Bedrock Safeguard Inc.** 是一家加拿大网络安全情报公司,专门从事威胁行为者基础设施分析、恶意软件逆向工程和数字取证。这项研究是我们保护加拿大组织和个人免受勒索软件威胁的使命的一部分。
[bedrocksafe.ca](https://bedrocksafe.ca)
*如果您是 The Gentlemen 勒索软件的受害者并且需要密钥恢复方面的帮助,请通过 contact@bedrocksafe.ca 联系我们。*
标签:Burp Suite 替代, ECDH密钥交换, EDR, Go语言, hastalamuerte, RaaS, SecList, The Gentlemen, X25519, XChaCha20, 内存取证, 勒索软件, 垃圾回收机制, 威胁情报, 密钥提取, 密钥管理缺陷, 开发者工具, 情报收集, 数据恢复, 漏洞研究, 程序破解, 网络安全, 脆弱性评估, 解密工具, 进程内存转储, 逆向工具, 隐私保护