加密机制与漏洞分析 · 专题分册(共 5 册)

一、非对称加密的角色:不做"主力",专管"钥匙"

在混合加密体系中,RSA 与椭圆曲线(ECC)从不直接加密业务数据——那太慢。它们的唯一职责是密钥封装(Key Encapsulation):把每文件对称密钥"锁进"只有攻击者私钥才能打开的容器。理解非对称层的攻防,就是理解"钥匙链"的攻防。

RSA 封装路线

CryptoLocker(RSA-2048)、LockBit(RSA-2048)、Ryuk(RSA-4096)、Hive(RSA-2048)、Conti(RSA-2048)、Akira(RSA-4096)等。实现要点:填充模式(PKCS#1 v1.5 或 OAEP)、公钥内置还是运行时下发、私钥是否经第二级密钥再封装。Yanluowang 等家族曾以 RSA-4096 作为"军规级"宣传话术,但密钥长度不解决实现错误。

ECC / Curve25519 路线

REvil/Sodinokibi、BlackCat/ALPHV、Qilin 等家族采用 Curve25519(X25519 ECDH,RFC 7748;部分版本的 BlackCat 公开报告为 RSA-4096,以样本为准)。攻击者嵌入长期私钥对应的公钥,受害机生成临时密钥对完成 ECDH,派生出只用于封装该机器密钥的对称密钥。32 字节公钥、常数时间实现,非常适合嵌入样本。

路线特例:Conti 与 Akira 均不走 X25519。Conti 样本内嵌 RSA 公钥(公开分析报告多为 2048 位,部分样本为 4096 位),受害机本地生成 RSA 密钥对,私钥交由攻击者公钥封装;Akira 使用 ChaCha20 + RSA-4096(CISA AA24-109A 通报确认)。2022 年 2 月 Conti 源码泄露使其加密逻辑完全公开,Akira 因加密实现、排除列表等特征与其高度相似而被多家机构关联研判——家族换壳换代,加密框架却会"遗传"。
// X25519 密钥封装逻辑(REvil / BlackCat / Qilin 常见范式,示意) static uint8_t attacker_pub[32] // 内置于样本(只升不降:泄露=全家系换密钥) ephem_priv, ephem_pub = X25519_keypair() // 受害机本地生成临时密钥对 shared = X25519(ephem_priv, attacker_pub) // ECDH 协商共享秘密 enc_key = KDF(shared) // 派生封装密钥(HKDF/SHA-256 常见) blob = AEAD(enc_key, per_file_keys) // 封装全部文件密钥后随勒索信留存

非对称层审计清单

检查项关注点失守后果
公钥来源硬编码于 .rdata,还是运行时从 C2/勒索信获取硬编码公钥一旦被提取并溯源,可关联归因整个家族基础设施
填充与编码PKCS#1 v1.5 的确定性 vs OAEP 的随机性;Base64/十六进制封装确定性填充使相同 Kf 产生相同密文,泄露密钥相等性信息
二级封装每受害者私钥是否再被全局公钥加密(Ryuk 的三层密钥树)层级越多,密钥树任一环节被执法扣押的损失面越可控(也是双刃剑)
密钥销毁临时私钥、共享秘密使用后是否清零残留即内存取证提取点(见第二节)
归因价值:内嵌公钥是勒索样本最稳定的"指纹"之一。同一公钥出现在不同分支样本中,往往意味着同一运营者/同一构建器——Conti 源码泄露后,Akira 因加密特征与排除列表和 Conti 高度相似而被多家机构关联研判[18][25]。

二、密钥生命周期攻防:从随机源到内存取证

密钥的生命周期是加密体系的"命门走廊"。本节按阶段给出攻防要点,并与学院总览的"黄金一小时"应急响应规程衔接。

生成:CSPRNG 是生命线
规范路径应使用 Windows BCryptGenRandom/CNG(对应 NIST SP 800-90A/B/C 的 CTR_DRBG 体系)。审计时首要确认:是否调用系统 CSPRNG、自实现 PRNG 的熵源、种子更新频率。弱随机源是历史上最早被利用的勒索软件缺陷类型(CryptoDefense,2014)。
驻留:内存与页面文件
封装前的明文对称密钥、临时私钥、随机 nonce 在加密进行期间必然存在于进程内存,且可能换页至 pagefile/sys、休眠文件。这为"不断电、不重启用内存取证工具先抓内存镜像"提供了密码学依据——与"黄金一小时"规程的"严禁重启、先固证"完全一致。
存储与回传:离线与在线家族的分水岭
"在线加密"(CryptoLocker 早期)需连通 C2 才能取回每受害者公钥,网络隔离即瘫痪其加密能力;"离线加密"(主流现代家族)内嵌公钥、全程无需 C2,断网也照加密不误,但把全部信任押在"密钥只经由勒索交付"这一根链条上——这根链条正是执法打击与解密工具的主攻方向。
交付:执法扣押与运营者自毁
Operation Tovar 扣押 CryptoLocker 基础设施后,FireEye/Fox-IT 用收缴的私钥库发布官方解密工具;CoinVault 主密钥随荷兰警方逮捕行动公开;TeslaCrypt 运营者主动释放主私钥;Hive 私钥被 FBI 渗透获取并秘密提供数月——"密钥交付端"的失守往往比密码分析更快终结一个家族。

内存取证操作要点(应急向)

① 发现加密进行中或刚结束:不要重启、不要关机(除非无法避免),优先制作内存镜像(WinPmem/MAGNET RAM Capture/AVML);② 使用 Volatility 系列工具定位加密进程内存段,检索高熵 32/16 字节块与密钥材料模式;③ 同步保存 pagefile.sys 与休眠文件;④ 全程写保护、记录哈希链,保证证据可用于司法程序。依据 NIST SP 800-86 取证集成指南。

反恢复机制盘点(攻击者视角)

删除卷影副本(vssadmin delete shadows /allwmic shadowcopy delete)、关闭系统恢复(bcdedit /set recoveryenabled no)、终止备份/安全软件进程、原位覆写(LockBit 在对应扇区直接改写密文,消除恢复软件机会)、识别并删除备份代理(Ryuk 事件中的标准动作)。防御方对应手段:不可变备份(WORM/气隙)+ 备份网络微隔离。

三、反面教材之巅:NotPetya——"加密正确,交付为零"的擦除器

2017 年 6 月 27 日爆发的 NotPetya(ExPetr)常被误称为"勒索软件",但其密码学设计揭示了一个更黑暗的结论:它从未打算归还数据。这个案例是理解"密钥生命周期比算法本身更致命"的最佳教材。

三项密码学证据

受害者 ID 是垃圾:早期 Petya 的"个人安装密钥"实为 Salsa20 密钥经攻击者公钥加密后的 Base58 串;NotPetya 中该 ID 在密钥生成之前就已随机产生,与密钥无任何数学关联——攻击者拿到它也推不出密钥;② 密钥用后即焚:Salsa20 密钥完成 MFT 加密后即被从磁盘擦除,而非保留待赎;③ 通信通道自断:勒索信中的邮箱很快被服务商封禁,付款链路物理性中断。

研判与启示

Hasherezade 在 Malwarebytes 发表的逆向分析明确警告受害者:不要付款,这是一场骗局[20]。对防御方的启示:① 勒索信的"可联系性"与密钥回传机制本身是研判要点;② 遭遇"加密+无法交付"组合时,应按数据销毁(wiper)而非勒索来定性、响应与定损;③ 供应链投毒(M.E.Doc 更新通道)+ 蠕虫传播(永恒之蓝/永恒浪漫)使其成为破坏为主、求财为表的范式转移节点。

对照阅读:同为 2017 年,WannaCry 是"加密正确 + 交付可行"的纯勒索(其全局中断反而由非密码学的域名自杀开关实现);NotPetya 是"加密正确 + 交付为零"的伪勒索。两者共同说明:判断勒索事件性质时,加密机制与交付机制必须分开取证

四、密钥恢复五条途径:总览与成功率逻辑

实践中"不付赎金恢复数据"的成功案例,无一例外来自以下五条途径之一。它们按"攻击者是否还能补救"排序,也是第 5 册解密工具开发方法论的分类框架。

途径原理攻击者可补救性代表案例
① 主密钥缴获/释放执法扣押、运营者退休/道歉、作者主动公开低(家族整体换密钥/倒闭)CryptoLocker(Operation Tovar 后 FireEye/Fox-IT 工具);CoinVault(荷兰警方+Kaspersky);TeslaCrypt(作者放钥);Petya 原作者 2017 年公开 secp192k1 私钥[21]
② 源码/构建器泄露加密逻辑完全透明,定向审计找缺陷中(换分支迭代)Conti(2022.2 泄露);LockBit 3.0 构建器(2022);Babuk(2021)[25]
③ 实现缺陷利用弱随机、密钥流复用、封装缺陷等高(一个补丁即可修复)——必须保密交付Hive(2022);Akira(2023);Rhysida(2023–24);DoNex(2024)[13][17][24]
④ 内存/磁盘取证提取密钥明文驻留被捕获高(改进擦除逻辑)应急响应内存捕获规程;历史家族取证报告
⑤ 间歇加密数据抢救未加密分块拼接恢复业务数据中(提高加密比例)Ryuk 大文件部分加密的实战恢复[23]
分类框架参考 Emsisoft 与 No More Ransom 公开实践总结,案例细节见第 4 册。
为什么途径③必须坚持"先私下交付"?Emsisoft 的 Fabian Wosar 在 Rhysida 解密器公开发布时公开解释:依赖实现漏洞的解密器一旦公布细节,攻击者数日内即可修补并换壳重来;依赖泄露/缴获私钥的工具则安全得多——攻击者无法更换已泄露的密钥历史[24]。这一策略权衡值得每一位研究者在发布前深思。