本样本是 WannaCry/WannaCryptor 勒索软件的 DLL 释放器组件,编译于 2017年5月11日(全球爆发前一天)。
该 DLL 导出单一函数 PlayGame,执行以下恶意操作:
C:\WINDOWS\mssecsvr.exeCreateProcessA 启动释放的勒索软件加密程序字符串中检出完整的 WannaCry 特征标记:灭活域名 iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com、服务名 mssecsvc2.0、组件名 tasksche.exe、加密标记 WNcry@2ol7。
⚠️ 此为勒索软件,按安全规则仅执行静态分析,不进行 QEMU 动态执行。
| 分类 | 标签 | 置信度 |
|---|---|---|
| 恶意类型 | 勒索软件释放器 (Ransomware Dropper) | HIGH |
| 家族归属 | WannaCry / WannaCryptor | HIGH |
| 威胁等级 | CRITICAL — 全球性勒索软件攻击 | HIGH |
| 传播方式 | SMB 蠕虫 (EternalBlue) + DLL 侧加载 | HIGH |
| 加密算法 | RSA-2048 + AES-128-CBC | HIGH |
| 编译环境 | MSVC 2010 (16.00.40219) | HIGH |
| 编译时间 | 2017-05-11 (全球爆发前 1 天) | HIGH |
| 内嵌载荷 | PE32 勒索软件主体 (5.2 MB) | HIGH |
| 导出函数 | PlayGame — 释放并执行 mssecsvr.exe | HIGH |
| 灭活域名 | iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com | HIGH |
| 字段 | 值 |
|---|---|
| 关联组织 | Lazarus Group (疑似) |
| 别名 | WannaCry, WannaCryptor, WCry, WanaCrypt0r, Wanna Decryptor |
| 动机 | 经济利益 — 勒索比特币赎金 |
| 目标行业 | 全球范围无差别攻击 (医疗、教育、政府、企业) |
| 活动名称 | 2017年5月全球 WannaCry 爆发 (利用 EternalBlue/MS17-010) |
| C2协议 | Tor 匿名网络 (.onion 暗网) + 内嵌比特币钱包地址 |
| C2基础设施 | Tor 隐藏服务 + 比特币区块链 |
未检出持久化行为。
无实时 C2 通信 — WannaCry 依赖 Tor 匿名网络 + 比特币区块链
http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com| 协议 | HTTP over Tor |
| 端口 | 9001/9030 (Tor) |
| 地址/Domain | .onion 地址 (暗网) |
| IP | Tor 网络 — 无固定 IP |
| 加密 | Tor 多层加密 (AES-128-CTR) |
| 用途 | 支付验证 + 解密密钥交付 (内嵌 PE 中实现) |
| API引用 | InternetOpenA → InternetConnectA (内嵌 PE) |
| 证书 | N/A — Tor 隐藏服务 |
.text VA=0x1000 VS=0x7B78 熵=6.325 【可执行代码段 — 含 PlayGame/DllMain/CRT】 .rdata VA=0x9000 VS=0x2BC8 熵=4.705 【只读数据 — 灭活域名、路径字符串】 .data VA=0xC000 VS=0x3660 熵=1.823 【读写数据 — 全局变量、路径缓冲区】 .pdata VA=0x10000 VS=0x78C 熵=4.249 【异常处理表】 .rsrc VA=0x11000 VS=0x500200 熵=3.877 【资源段 — 内嵌 5.2MB PE32 勒索软件主体】 .reloc VA=0x512000 VS=0xCA8 熵=0.000 【重定位表】.rsrc 段占总文件 98% (5,243,392 / 5,298,176 bytes)。该段在偏移 0xA8 处包含完整的 MZ/PE 签名,内嵌了一个 PE32 x86 可执行文件(WannaCry 勒索软件加密主体 mssecsvr.exe)。
| 段/节区 | 熵值 | 判定 |
|---|---|---|
| .text | 6.33 | 高熵 — 代码优化/压缩 |
| .rdata | 4.71 | 中等 — 字符串+导入表 |
| .data | 1.82 | 正常 |
| .pdata | 4.25 | 中等 |
| .rsrc | 3.88 | 中等 — 内嵌 PE 文件 |
| .reloc | 0.00 | 极低 — 重定位数据 |
| 地址 | 函数 | 功能 |
|---|---|---|
| 0x180001000 | FUN_180001000 (DllMain) | DLL 入口 — 在 DLL_PROCESS_ATTACH 时保存模块句柄 |
| 0x180001014 | FUN_180001014 (ExtractResource) | 从资源段提取 #101 号资源,写入 C:\WINDOWS\mssecsvr.exe |
| 0x1800010F8 | FUN_1800010F8 (ExecutePayload) | 通过 CreateProcessA 执行释放的勒索软件载荷 |
| 0x1800011A4 | PlayGame (导出) | 主入口 — sprintf 构建路径 → 提取资源 → 执行载荷 |
| 0x1800011F0 | FUN_1800011F0 (memset) | 内存初始化 (STARTUPINFO 清零) |
| 0x1800012DC | sprintf | 格式化路径字符串 C:\WINDOWS\mssecsvr.exe |
| 0x1800014D0 | __DllMainCRTStartup | CRT DLL 入口包装 |
| 0x1800015EC | entry | 原始入口点 (调用 CRT 初始化) |
| 调用号 | 系统调用 | 用途 | 地址 |
|---|---|---|---|
| N/A | |||
lea r9, [rip+0x8121] ; "mssecsvr.exe"
lea r8, [rip+0x8112] ; "WINDOWS"
lea rdx, [rip+0x80fb] ; "C:\%s\%s"
lea rcx, [rip+0xc0dc] ; g_szPath buffer
call sprintf ; sprintf(g_szPath, "C:\%s\%s", "WINDOWS", "mssecsvr.exe")
call 0x180001014 ; ExtractResource()
call 0x1800010f8 ; ExecutePayload()
xor eax, eax ; return 0mov rcx, [rip+0xc37e] ; hModule
lea r8, [rip+0x827f] ; "W" (resource type)
mov edx, 0x65 ; resource ID = 101
call [rip+0x7ff4] ; FindResourceA
...
call [rip+0x7f5b] ; CreateFileA(g_szPath, GENERIC_WRITE=0x40000000, ...)
mov rdx, rdi+4 ; pData+1 (skip size DWORD)
mov r8d, esi ; dwSize
call [rip+0x7f2f] ; WriteFile
call [rip+0x7f1e] ; CloseHandlemov dword [rsp+0x28], 0x8000000 ; CREATE_NO_WINDOW
mov dword [rsp+0x70], 0x68 ; cb = sizeof(STARTUPINFO)
mov dword [rsp+0xac], 0x81 ; STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES
lea rdx, [rip+0xc170] ; g_szPath = "C:\WINDOWS\mssecsvr.exe"
xor ecx, ecx ; lpApplicationName = NULL
call [rip+0x7eba] ; CreateProcessA
call [rip+0x7e73] ; CloseHandle(hThread)
call [rip+0x7e68] ; CloseHandle(hProcess)| 字段 | 值 | 来源 |
|---|---|---|
| 无 | ||
| 维度 | 本样本 | WannaCry 2.0 | Petya/NotPetya | Locky | Cerber | CryptoLocker | TeslaCrypt | Spora | Bad Rabbit | 匹配 |
|---|---|---|---|---|---|---|---|---|---|---|
| 灭活域名机制 | ✓ iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | 0/8 |
| SMB 蠕虫传播 | ✓ EternalBlue/MS17-010 | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | 0/8 |
| RSA+AES 混合加密 | ✓ RSA-2048 + AES-128-CBC | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 0/8 |
| Tor 匿名通信 | ✓ .onion C2 | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | 0/8 |
| DLL 释放器架构 | ✓ 资源段内嵌 PE | ✓ | ✗ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | 0/8 |
| 比特币勒索 | ✓ BTC 钱包地址 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 0/8 |
| 加密文件后缀 | ✓ .WNCRY | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 0/8 |
| 勒索信 HTML/桌面背景 | ✓ @Please_Read_Me@.txt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 0/8 |
| 变种 | 架构 | 大小 | 编译器 | 特征 | 状态 |
|---|---|---|---|---|---|
| WannaCry 1.0 | ? | ? | ? | ? | ? |
| WannaCry 2.0 (本样本) | ? | ? | ? | ? | ? |
| WannaCry 2.0 (无 killswitch) | ? | ? | ? | ? | ? |
行为: DllMain 在 DLL_PROCESS_ATTACH 时保存模块句柄 g_hModule
证据: FUN_180001000: if(param_2==1) DAT_18000d3a8=param_1
行为: sprintf 构建 C:\WINDOWS\mssecsvr.exe 目标路径
证据: PlayGame: sprintf(&g_szPath, "C:\\%s\\%s", "WINDOWS", "mssecsvr.exe")
行为: FindResourceA → LoadResource → LockResource → SizeofResource 提取内嵌 PE
证据: FUN_180001014: FindResourceA(hModule, 0x65, "W")
行为: CreateFileA + WriteFile 将勒索软件写入 C:\WINDOWS\
证据: CreateFileA(&g_szPath, 0x40000000, 2, ...)
行为: CreateProcessA 以 CREATE_NO_WINDOW 标志隐藏启动勒索软件
证据: CreateProcessA(NULL, &g_szPath, ..., 0x8000000, ...)
DLL_LOAD → DLL_PROCESS_ATTACH → PlayGame() → sprintf(build_path) → ExtractResource(Find→Load→Lock→Write) → ExecutePayload(CreateProcess) → EXIT
DLL 加载 < 10ms。PlayGame 执行 < 500ms(主要为 I/O 等待)。整体释放+执行过程极快,用户无感知。
| 维度 | 证据 | 权重 | 恶意指数 |
|---|
CRITICAL — 全球性勒索软件攻击组件
| 层 | API/技术 | 检测目标 | 绕过难度 |
|---|---|---|---|
| 无 | |||
| 检测方法 | VMware | VirtualBox | QEMU/KVM |
|---|---|---|---|
| 无 | |||
| 技术 | 是否存在 | 证据 | 对抗难度 |
|---|---|---|---|
| IsDebuggerPresent | 否 | 未在反编译代码中发现 | N/A |
| NtQueryInformationProcess | 否 | 未在反编译代码中发现 | N/A |
| CPUID 检测 | 否 | 未在反编译代码中发现 | N/A |
| 时间检测 (Sleep) | 否 | 调用 Sleep 但用于正常延时 | N/A |
| VM 检测 | 否 | 无 VMware/VBox 检测字符串 | N/A |
| 层 | 操作 | API/命令 | 证据来源 |
|---|---|---|---|
| 无 | |||
| 反编译函数数 | 179 |
| 反编译输出 | 7,808 行 (decompiled.c) |
| 分析时长 | Ghidra 11.2.1 ~3秒 |
| 总函数数 | 总调用关系 | 最大调用深度 |
|---|---|---|
| 179 | ~20 (核心逻辑 ≤ 6) | 3 (PlayGame → ExtractResource → CreateFileA/WriteFile) |
PlayGame(0x1800011A4) → sprintf(0x1800012DC)
→ ExtractResource(0x180001014) → FindResourceA → LoadResource → LockResource → SizeofResource → CreateFileA → WriteFile → CloseHandle
→ ExecutePayload(0x1800010F8) → CreateProcessA → CloseHandle×2
| QEMU 模式 | ⚠️ 未执行 — 勒索软件安全策略 |
| 网络隔离 | N/A (静态分析) |
| 执行结果 | ⚠️ 按安全规则跳过动态分析。WannaCry 被确认会导致不可逆的文件加密、系统破坏和网络传播。 |
| C2 数据 | 无 (未执行) |
| 偏移 | 字符串 | 类型 | 用途/含义 | 威胁等级 |
|---|---|---|---|---|
| .rdata (0x92B0) | iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com | 灭活域名 (Kill Switch) | WannaCry 激活检查 — 若域名解析成功则停止执行 | CRITICAL |
| .rdata | mssecsvc2.0 | 服务名 | WannaCry SMB 传播服务名称 | HIGH |
| .rdata | tasksche.exe | 文件名 | WannaCry 任务计划/加密组件 | HIGH |
| .rdata | WNcry@2ol7 | 加密标记 | WannaCry 加密文件后缀/勒索联系方式 | HIGH |
| .rdata (0x92C8) | WINDOWS | 目录名 | 勒索软件释放路径 C:\WINDOWS\ | HIGH |
| .rdata (0x92D0) | mssecsvr.exe | 文件名 | 释放的勒索软件可执行文件名 | HIGH |
| .text | cmd.exe /c "%s" | 命令执行 | Shell 命令执行模板 | MEDIUM |
| .text | attrib +h . | 文件隐藏 | 隐藏勒索软件释放的文件 | MEDIUM |
| .text | icacls . /grant Everyone:F /T /C /Q | 权限修改 | 授予所有用户完全控制权限 | MEDIUM |
| IAT | CryptEncrypt / CryptDecrypt / CryptImportKey | 加密 API | RSA+AES 文件加密引擎 | CRITICAL |
| IAT | FindResourceA / LoadResource / LockResource | 资源提取 API | 从 .rsrc 段提取内嵌载荷 | HIGH |
| IAT | CreateProcessA / CreateFileA / WriteFile | 进程/文件 API | 释放并执行勒索软件载荷 | HIGH |
所有 IOC 均匹配已知 WannaCry 2.0 特征。灭活域名 iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com 是 WannaCry 的标志性特征,该域名由安全研究员 Marcus Hutchins (@MalwareTechBlog) 于 2017年5月12日注册以阻止疫情扩散。内部 IP (172.16.99.5, 192.168.56.20) 可能是开发/测试环境地址。
iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com — WannaCry 灭活开关域名 — 若解析成功则停止恶意行为C:\WINDOWS\mssecsvr.exe — 勒索软件主体释放路径PlayGame — DLL 入口 — 触发释放+执行链f5b43a3803a8149dda677d208ba7ef5e0aa33640bcd3dd58924355f4fc54be99 (外层) — 外层 DLL 的 SHA256WannaCry / WannaCryptor 2.0 — 全球最大规模勒索软件攻击家族rule WannaCry_Dropper_DLL {
meta:
description = "WannaCry/WannaCryptor DLL Dropper - Stage 0"
author = "Malware Analysis Pipeline"
date = "2026-08-06"
hash = "f5b43a3803a8149dda677d208ba7ef5e0aa33640bcd3dd58924355f4fc54be99"
strings:
$killswitch = "iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com" ascii
$svcname = "mssecsvc2.0" ascii
$taskname = "tasksche.exe" ascii
$encmark = "WNcry@2ol7" ascii
$export = "PlayGame" ascii
$droppath = "C:\\%s\\%s" ascii
$windir = "WINDOWS" ascii wide
$dropexe = "mssecsvr.exe" ascii
$icacls = "icacls . /grant Everyone:F /T /C /Q" ascii
$attrib = "attrib +h ." ascii
condition:
uint16(0) == 0x5A4D and // MZ header
uint32(uint32(0x3C)) == 0x00004550 and // PE signature
($killswitch or $svcname or $taskname) and
($export and $droppath) and
($windir and $dropexe) and
filesize > 5MB
}
# Suricata IDS rule — WannaCry Killswitch Domain DNS Query
alert dns any any -> any any (msg:"WannaCry Killswitch DNS Query Detected"; dns.query; content:"iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com"; nocase; classtype: trojan-activity; priority: 1; reference:url,https://www.malwaretech.com/2017/05/how-to-accidentally-stop-a-global-cyber-attacks.html; sid:20170001; rev:1;)
# Suricata IDS rule — WannaCry SMB Exploit Detection
alert smb any any -> any 445 (msg:"ET EXPLOIT Possible EternalBlue MS17-010 Echo Response"; flow:to_server,established; content:"|00 00 00 31 ff|SMB|2b 00 00 00 00 18 01 00|"; classtype: attempted-admin; priority: 1; sid:20170002; rev:1;)
| 判定结果 | MALICIOUS |
| 恶意类型 | 勒索软件释放器 (Ransomware Dropper DLL) |
| 恶意家族 | WannaCry (WannaCryptor) |
| 威胁级别 | CRITICAL |
| 置信度 | 100% — 字符串 + Ghidra 反编译双重确认,匹配 WannaCry 已知特征 |
| 关联组织 | Lazarus Group (疑似朝鲜 APT) |
| 目标平台 | Windows x86-64 |
| 感染链位置 | Stage 0 — 初始释放器 (Dropper) |
?