逆向工程实战手册 第 75 章

第 75 章 勒索软件深度分析(加密实现与解密研究)

勒索软件是影响最大的恶意软件类别。本章深入三个层次:行为链(感染→加密→勒索)、加密实现(算法/密钥管理——解密研究的关键)、解密研究(如何恢复数据)。这是恶意软件逆向中"研究价值最高"的领域。

📍 知识点地图 | 主题:勒索软件 | 前置:第17章 | 后续:— | 核心概念:行为链、混合加密、解密研究、密钥管理

75.1 勒索软件行为链(六阶段模型)

1. 初始感染: 钓鱼附件/漏洞/RDP 爆破/供应链
2. 提升权限: 横向移动 + 提权(第 62/60-61 章)
3. 侦察: 找目标数据(文件服务器/共享/数据库)
4. 破坏备份: 
   vssadmin delete shadows /all(删卷影)
   wbadmin delete catalog(删备份目录)
   PowerShell: Remove-Item *vss*
5. 加密: 批量加密目标文件
6. 勒索: 勒索信(HTML/TXT)+ 计时器 + 联系方式

分析价值: 每阶段都有可提取的行为特征(检测规则)

75.2 加密实现分析(解密研究的关键)

勒索软件加密的通用架构

混合加密(几乎所有现代勒索软件):
  1. 生成"会话密钥"(对称密钥,每个文件/会话随机)
  2. 用会话密钥快速加密文件(AES/XChaCha20/自研)
  3. 用"攻击者公钥"(RSA/ECC)加密会话密钥
  4. 会话密钥密文写入文件(头部/尾部/伴生文件)

攻击者不需要存密钥: 只有攻击者的私钥能解会话密钥
受害者不付钱 → 数据不可恢复(设计目标)

逆向要点(哪些决定能否解密)

□ 会话密钥生成: 是否真随机?(弱 RNG → 可预测!)
□ 密钥管理:
   - 会话密钥是否删除?(内存擦除?)
   - 密钥加密流程(RSA? 是否含"恢复密钥"后门?)
□ 加密算法: 标准(AES)还是自研?(自研 = 可能有弱点)
□ 文件处理:
   - 覆盖 vs 写新文件(覆盖 = 无恢复可能;写新文件+删原文件 = 可能恢复)
   - 大文件只加密头部?(部分加密 → 部分恢复)
□ 加密范围: 排除列表(系统文件不加密)
□ 解密器是否存在(某些样本带"解密后门")

75.3 解密研究流程(最硬核的部分)

1. 拿到样本 + 被加密的文件样本(明文对)
2. 分析加密实现(75.2)→ 画出密钥流图
3. 找弱点:
   □ 密钥可预测(种子固定/时间戳/文件内容派生)
   □ 会话密钥重复使用
   □ 密钥保留在文件里(明文/可提取)
   □ 加密算法实现错误(可数学攻击)
   □ 有"解密器"或"恢复密钥"机制
4. 写解密脚本(还原密钥 → 批量解密)
5. 验证: 用明文对验证解密正确性
6. 发布: 解密工具/研究论文(社区共享)

工具: 逆向(第 35-38 章)+ 密码分析(第 34 章)+ 自写 Python

75.4 家族案例分析(模式感)

家族 加密特点 解密可能
Ryuk AES + RSA,密钥随机 需私钥(难)
Conti 定制 AES,密钥在内存 早期版本可提取
REvil 密钥加密流程有缺陷 曾发布通用解密器
GandCrab 密钥派生可逆 可解密(早期版本)
LockBit 参数化(可配置) 部分版本可解
自研加密家族 弱实现常见 分析后常可解

规律:攻击者用的标准算法越规范,越难解密;实现越"DIY",越可能有弱点。

75.5 分析环境与安全

□ 绝对隔离(VM 快照/无网络/无共享盘)
□ 用"诱饵文件"环境(加密的是测试数据)
□ 监控: Process Monitor/API Monitor 记录文件操作
□ 模拟 C2(inetsim)防回连
□ 样本只读,改动在副本
□ 不真实支付/联系(研究场景)

75.6 检测与防御(蓝队视角)

检测信号:
  □ 大量文件重命名/写入(.locked/.encrypted 后缀)
  □ vssadmin delete shadows(破坏备份命令)
  □ 批量文件枚举(FindFirstFile 循环)
  □ 高熵写入(加密文件)
  □ 勒索信创建(RESTORE_*.txt/README*.html)
  □ 进程横向移动迹象

防御:
  □ 备份策略(3-2-1 原则 + 离线备份)
  □ 最小权限(防横向)
  □ 监控关键命令(vssadmin/wbadmin)
  □ 文件活动基线(异常加密模式告警)
  □ 补丁+邮件防护(阻断初始感染)

75.7 勒索软件分析检查清单

□ 行为链还原(六阶段,每阶段证据)
□ 初始感染向量确认
□ 备份破坏动作确认
□ 加密实现逆向(算法/密钥流)
□ 密钥管理弱点分析(可解密?)
□ 文件处理方式(覆盖/部分加密/删除原文件)
□ 解密可行性评估
□ 解密脚本(如可行)
□ IOC + 检测规则产出
□ 报告: 行为+加密+解密+防御

动手练习

  1. 在隔离环境运行一个开源"演示勒索软件"(GitHub 有教学项目),用 Process Monitor 记录它的完整行为链。
  2. 逆向一个"弱 RNG 密钥"的示例勒索软件,写出密钥恢复+解密脚本。
  3. 分析加密文件结构:被加密文件头部/尾部的元数据(会话密钥密文在哪)。
  4. 写一份"家族分析报告":行为链+加密实现+解密评估(对照 75.7 清单)。

深入阅读

  • 仓库:skills/malware-analysis/SKILL.md(六阶段框架)
  • 仓库:CTF-Sandbox-Orchestrator/competition-malware-config/(配置提取)
  • 仓库:skills/reverse-engineering/crypto-decode-tools.md(密码工具)
  • 仓库:skills/llm-security/references/(AI 辅助分析)
  • 外部: NoMoreRansom(官方解密器平台)、勒索软件家族研究报告