首款针对 The Gentlemen 勒索软件的解密器——通过提取 X25519 临时密钥,从进程内存转储中恢复加密密钥。35/35 个文件已解密。由 Bedrock Safeguard Inc. 研究。
首个公开可用的 The Gentlemen 勒索软件解密方法。
The Gentlemen(又名 hastalamuerte)目前是全球最活跃的勒索软件即服务(RaaS)行动,截至 2026 年第一季度已有 320+ 确认受害者。此前,所有主要安全厂商——Cybereason、Group-IB、Check Point、ASEC、Trend Micro——均评估其加密在密码学上无法破解。不存在公开的解密器。
我们打破了它。
The Gentlemen 使用 XChaCha20 流加密配合 X25519 ECDH 密钥交换。每个文件使用从新临时密钥对派生的唯一密钥加密。加密在数学上可靠——我们并未破解数学原理。
我们破解了实现。
Go 语言在使用后不会将堆上的加密密钥材料归零(CWE-244)。一旦为某个文件生成了临时 X25519 私钥,它就会残留在进程内存中而不会被清除——因此对正在运行的进程进行转储,可以恢复已加密文件的密钥,而且往往存在多个 GC 遗留副本。进程退出后,操作系统会回收这部分内存。
对正在运行的进程进行内存转储(在加密期间或接近结束时获取),通常包含截至该时刻已处理的所有文件的临时密钥——在我们的 35 个文件分析中,全部成功恢复。
结果:35/35 个文件以 100% 准确率解密。从单个内存转储中,0.6 秒内恢复所有 35 个密钥。
如果您遭受了 The Gentlemen 勒索软件攻击,若勒索软件进程运行时捕获了其内存映像,则有可能恢复文件。恢复过程通过从该映像中提取每个文件的临时私钥来实现,因此是尽力而为且可能不完整——只有那些密钥已生成且在捕获时刻仍驻留内存的文件才能被恢复。
具体含义如下:
可能存在可用内存映像的来源——每种来源只有在其捕获了进程运行期间的状态时才有帮助:
procdump、任务管理器→“创建转储文件”或其他取证工具捕获了进程。C:\ProgramData\Microsoft\Windows\WER\。C:\Windows\Minidump\ 和 C:\Windows\MEMORY.DMP,如果进程运行时发生了错误检查(只有完整内存转储包含进程内存;小型转储通常不包含)。C:\hiberfil.sys,如果系统在勒索软件进程活跃时休眠(此时会冻结该时刻的 RAM 快照)。不确定您的攻击事件中是否存在这些来源?请联系我们 [email protected],我们可以帮助您检查。
# 1. 安装依赖
pip install cryptography
# 2. 从加密文件中提取临时公钥
python extract_keys_from_files.py --input-dir /path/to/encrypted/files --output keys.json
# 3. 在内存转储中搜索匹配的私钥
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
--fast / --superfast / --ultrafast)The Gentlemen 加密器支持速度标志,对大于 1 MB 的文件执行部分加密。在 --superfast 模式下,大型文件中仅约 3% 的字节被加密;其余约 97% 以明文形式保留在原始磁盘位置。此特性已在多个发布的分析(ASEC、Trend Micro、Cybereason)中得到验证。
对部分加密文件执行全局 XChaCha20 解密会导致未加密区域被双重破坏——用密钥流对明文段进行异或运算会将其变成垃圾,破坏可恢复数据。
因此,decrypt.py 默认拒绝处理大于 1 MB 的文件。如果您确认加密器以全加密模式运行(仅小文件,或未使用速度标志的构建版本),请传递 --force-large 以覆盖此限制。
对于部分加密受害者,请对未加密区域使用格式感知恢复工具:
Bedrock Safeguard 正在积极逆向工程部分加密模式的数据块偏移几何结构。这项工作完成后,此解密器将更新以安全处理部分加密段。
每个文件加密:
1. 生成 32 个随机字节 -> 临时私钥(crypto/rand.Read)
2. X25519(临时私钥, 操作者公钥) -> 共享密钥(32 字节)
3. XChaCha20(明文, 共享密钥) -> 密文
4. 追加到文件末尾:--eph--<base64(临时公钥)>--marker--GENTLEMEN
临时私钥是关键秘密。它仅存在于进程内存中,从未写入磁盘。但 Go 语言的协程栈分配器在变量超出作用域时不会将内存归零(CWE-244),因此通过内存取证可以访问该密钥材料。
| ID | 描述 |
|---|---|
| CWE-244 | 释放前对堆内存清除不当 |
| CWE-316 | 内存中明文的敏感信息存储 |
公钥 = X25519(候选值, 基点)共享密钥 = X25519(临时私钥, 操作者公钥)| IOC | 值 |
|---|---|
| 操作者 X25519 公钥 | fcb11717cab989424755a957c1d55361b119de4fdcfecdb2f2e56b15ad801922 |
| 字段 | 值 |
|---|---|
| SHA256 | 3ab9575225e00a83a4ac2b534da5a710bdcf6eb72884944c437b5fbe5c5c9235 |
| 类型 | PE32+ x64, Go 二进制, Garble 混淆 |
| 大小 | 2,962,944 字节 |
| 首次发现 | 2026-04-03 |
| 指标 | 值 |
|---|---|
| 勒索信 | README-GENTLEMEN.txt |
| 加密文件扩展名 | 每次构建随机化(例如 .axfsmg) |
| 文件尾部 | --eph--<base64>--marker--GENTLEMEN |
vssadmin 和 wmic 删除卷影副本Add-MpPreference 添加 Windows Defender 排除项gentlemen.bmpLOCKER_BACKGROUND=1 环境变量生成子进程--path, --fast, --full, --shares, --silent, --system, -T(延迟)本研究成果促成了 Bedrock RansomGuard 的开发——一个开源 Windows 服务,可自动检测勒索软件加密并在密钥被销毁前捕获进程内存。RansomGuard 适用于任何勒索软件家族,不仅限于 The Gentlemen。
本工作扩展了 Adrien Guinet 的 WannaCry 密钥恢复(2017),应用于使用椭圆曲线密码学的现代 Go 语言勒索软件。据我们所知,这是首次公开将 X25519 临时密钥恢复从内存取证应用于任意勒索软件家族。
本项目采用 Business Source License 1.1 许可——对所有非商业用途、内部业务用途、事件响应和学术研究免费。
Bedrock Safeguard Inc. 是一家加拿大网络安全情报公司,专注于威胁行为者基础设施分析、恶意软件逆向工程和数字取证。本研究是我们保护加拿大组织和个人免受勒索软件威胁使命的一部分。
如果您是 The Gentlemen 勒索软件的受害者并需要密钥恢复协助,请联系我们 [email protected]。
| TOX ID |
88984846080D639C9A4EC394E53BA616D550B2B3AD691942EA2CCD33AA5B9340FD1A8FF40E9A |
| 协商邮箱 | [email protected] |
| 泄露站点 (.onion) | tezwsse5czllksjb7cwp65rvnk4oobmzti2znn42i43bjdfd2prqqkad.onion |