WannaCry 勒索软件深度分析与防御教学文档
1. WannaCry 概述
WannaCry 是一种具有蠕虫传播特性的勒索软件,于2017年全球大规模爆发。其主要特点包括:
- 利用了 NSA 泄露的 EternalBlue (MS17-010) 漏洞进行传播
- 结合了勒索软件和蠕虫的特性,传播速度惊人
- 采用 RSA+AES 双重加密机制
- 要求受害者支付比特币赎金
2. 样本基本信息
- MD5: 84c82835a5d21bbcf75a61706d8ab549
- 编译时间: 2010\11\21
- 编译器: Microsoft Visual C++ ver 5.0/6.0
- 加壳情况: 无壳
3. 执行流程分析
3.1 参数启动模式
样本启动时会检查是否有 /i 参数:
-
有
/i参数时:- 设置
C:\Intel\aypxkvhkzwrro805为当前目录 - 将样本重命名为
tasksche.exe并复制到上述目录 - 创建服务并以服务方式启动
- 设置
-
无参数时:
- 创建注册表项,包含勒索软件名称 "WanaCrypt"
- 将当前目录写入注册表
- 查找并释放资源文件(资源名称为 80A)
4. 文件释放与准备工作
样本会释放多个文件:
msg文件夹:包含多种语言的付款说明c.wnry:包含黑客的比特币地址(硬编码)t.wnry:包含关键加密代码(实际是一个DLL)u.wnry:解密程序(重命名为@WanaDecryptor@.exe)
执行命令:
- 设置当前目录隐藏属性
- 赋予 Everyone 用户完整控制权限
5. 加密机制详解
5.1 加密流程概述
- 生成一对 2048 位的 RSA 公私钥
- 公钥用于加密 AES 密钥
- 私钥用于后续解密(但被黑客的公钥加密)
- 为每个文件生成 128 位 AES 密钥
- 使用 AES 加密文件内容
- 用 RSA 公钥加密 AES 密钥
- 加密后的 AES 密钥与加密文件一起保存
5.2 具体加密过程
- 创建加密容器(类型为 PROV_RSA_AES)
- 导入黑客的 RSA 公钥(用于加密生成的私钥)
- 生成 2048 位 RSA 密钥对
- 导出公钥到
00000000.pky文件 - 导出私钥并用黑客公钥加密,保存到
0000000.eky - 创建
00000000.res文件存储随机数 - 启动
taskdl.exe删除临时文件 - 设置自启动
5.3 文件加密过程
- 从
0000000.pky导入公钥(用于加密 AES 密钥) - 导入另一个公钥(用于加密可免费解密的文件)
- 遍历文件系统,加密特定扩展名的文件
- 为每个文件生成 128 位 AES 密钥(通过 CryptGenRandom)
- 用 RSA 加密 AES 密钥
- 用 AES 加密文件内容
可免费解密的文件路径会记录在 f.wnry 中
6. 目标文件类型
WannaCry 会加密以下扩展名的文件(按类别分类):
办公文档
.doc, .docx, .xls, .xlsx, .ppt, .pptx, .pst, .ost, .msg, .eml, .vsd, .vsdx, .txt, .csv, .rtf, .123, .wks, .wk1, .pdf, .dwg, .onetoc2, .snt, .docb, .docm, .dot, .dotm, .dotx, .xlsm, .xlsb, .xlw, .xlt, .xlm, .xlc, .xltx, .xltm, .pptm, .pot, .pps, .ppsm, .ppsx, .ppam, .potx, .potm, .edb, .hwp, .602, .sxi, .sti, .sldx, .sldm
数据库文件
.mdf, .ldf, .ibd, .myi, .myd, .frm, .odb, .dbf, .db, .mdb, .accdb, .sql, .sqlitedb, .sqlite3
压缩/备份文件
.gz, .tar, .tgz, .7z, .rar, .zip, .backup, .iso, .vcd, .bz2, .tbk, .bak, .ARC, .PAQ
多媒体文件
.jpeg, .jpg, .bmp, .png, .gif, .raw, .cgm, .tif, .tiff, .nef, .psd, .ai, .svg, .djvu, .m4u, .m3u, .mid, .wma, .flv, .3g2, .mkv, .3gp, .mp4, .mov, .avi, .asf, .mpeg, .vob, .mpg, .wmv, .fla, .swf, .wav, .mp3
源代码/脚本
.sh, .class, .jar, .java, .rb, .asp, .php, .jsp, .pl, .vb, .vbs, .ps1, .bat, .cmd, .js, .asm, .h, .pas, .cpp, .c, .cs, .suo, .sln
工程文件
.brd, .sch, .dch, .dip, .lay6, .lay, .mml, .sxm, .otg, .odg, .uop, .std, .sxd, .otp, .odp, .wb2, .slk, .dif, .stc, .sxc, .ots, .ods, .3dm, .max, .3ds, .uot, .stw, .sxw, .ott, .odt
证书/密钥
.pem, .p12, .csr, .crt, .key, .pfx, .der
7. 传播机制
主要通过 taskhsvc 文件实现网络连接和传播:
- 利用 EternalBlue (MS17-010) 漏洞进行传播
- 具有蠕虫特性,可自动在网络中扩散
8. 防御措施
8.1 基础防护
- 及时安装 MS17-010 补丁
- 启用并配置主机防火墙
- 关闭不必要的 SMB 服务
8.2 高级防护
- 实施网络分段,限制 SMB 流量
- 部署入侵检测/防御系统 (IDS/IPS)
- 定期备份重要数据(离线存储)
- 禁用过时的 SMBv1 协议
8.3 应急响应
- 立即隔离感染主机
- 检查
f.wnry文件获取可免费恢复的文件列表 - 不要支付赎金(不能保证文件恢复)
- 使用专业解密工具尝试恢复(如后续发布的解密工具)
9. 总结
WannaCry 事件凸显了:
- 未修补漏洞的巨大风险
- 勒索软件与蠕虫结合的危险性
- 多层防御的重要性
- 应急响应和备份的关键作用
通过全面了解 WannaCry 的工作原理和传播机制,可以更有效地防御类似威胁。