017、WannaCry 勒索病毒的防御性分析
本章是历史事件的防御性复盘,不提供漏洞利用、传播或加密破坏的实现细节。样本分析必须在获得授权的隔离实验室中进行。
事件定位
WannaCry 是 2017 年大规模爆发的勒索蠕虫事件。分析时应把它拆成几个问题:
- 初始执行与环境检查。
- 勒索组件的部署和文件处理。
- 服务与进程行为。
- 基于 SMBv1 漏洞面的横向传播。
- 赎金界面、说明文件和恢复影响。
案例学习的重点是“组件如何协作、证据如何关联、事件如何遏制”,而不是复现传播链。
组件化观察
样本可能释放或启动多个文件与进程。阅读反汇编时先建立组件表:
| 组件 | 记录内容 |
|---|---|
| 初始载荷 | 入口、环境检查、释放或启动动作 |
| 服务组件 | 服务名称、命令行、启动与停止行为 |
| 勒索组件 | 文件枚举、扩展名筛选、密钥与界面逻辑 |
| 传播组件 | 网络扫描和 SMB 相关证据,仅做行为定性 |
| 辅助资源 | 语言、壁纸、说明文件和配置数据 |
不要仅凭文件名判定角色,需通过父子进程、调用关系和文件哈希交叉验证。
环境与网络检查
历史分析中广为人知的网络检查曾影响部分样本的执行路径。逆向这类逻辑时要记录:
- 检查发生在何时。
- 成功与失败分别走向哪个基本块。
- 它影响的是整个程序还是某个组件。
- DNS、HTTP 或网络错误如何被解释。
这类“开关”可能因样本变种而变化,不能作为唯一防线。
文件处理链
防御分析关注:
1 | 枚举目录和文件 |
需要记录哪些目录被排除、哪些文件类型被选择、失败如何处理,以及是否保留可恢复临时文件。
密码学部分怎么读
不必一开始就陷入所有算法细节。先识别:
- 调用了哪些系统或第三方密码 API。
- 对称密钥与非对称密钥分别用于什么层次。
- 密钥材料何时生成、导入、导出和销毁。
- 文件头或元数据保存了哪些恢复所需信息。
- 随机数来源是否可靠。
加密算法名称不能单独说明实现正确,也不能说明文件可恢复;必须结合具体数据流与样本版本判断。
传播面与 MS17-010
WannaCry 的大规模传播与未及时修补的 SMBv1 漏洞面密切相关。防守端应把分析结果转成资产问题:
- 哪些系统未安装相关安全更新。
- 哪些主机仍启用 SMBv1。
- 445 端口是否跨网段暴露。
- 工作站之间是否缺乏横向隔离。
- 是否存在无法打补丁的遗留系统。
关闭外网 445 端口并不足够。若内部网络平坦、旧系统未修补,感染仍可能在内网横向扩散。
事件响应顺序
1 | 确认告警与影响范围 |
不要在证据尚未保全时仓促清理所有文件;也不要为了观察行为让感染主机继续连接生产网络。
检测思路
建立多层检测:
- 文件层:已知哈希、说明文件、异常扩展名和释放路径。
- 进程层:异常服务创建、父子进程与批量文件操作。
- 网络层:异常 SMB 扫描、连接爆发和跨网段访问。
- 资产层:SMBv1、补丁状态、遗留操作系统。
- 恢复层:备份是否离线、不可变且定期演练。
复盘模板
1 | 样本与变种: |
学习检查清单
| 检查项 | 状态 |
|---|---|
| 能把样本拆成启动、勒索与传播组件 | 待复盘 |
| 能从控制流判断网络检查影响的执行路径 | 待复盘 |
| 能建立批量文件处理的行为链 | 待复盘 |
| 能说明补丁、SMBv1 与网络分段的防御价值 | 待复盘 |
| 能给出隔离、取证、恢复和长期整改顺序 | 待复盘 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ruiqy~!





















