该样本是一个两阶段投放器(Dropper),使用 MSVC 2010 编译为 64位 DLL。其核心功能是通过资源段(Resource Section)携带一个5MB的嵌入式PE32可执行载荷,通过导出函数 PlayGame 提取并执行该载荷。
阶段1 - DLL投放器:外层x64 DLL仅导入 kernel32.dll,通过 FindResourceA/LoadResource/LockResource/SizeofResource API提取资源段(ID 101,类型"W")中的PE32载荷。资源数据前4字节为长度头(0x0038D000 = 3,727,872),随后紧跟MZ头。提取后写入临时文件并通过 CreateProcessA 执行。
阶段2 - PE32服务载荷:内嵌PE32可执行文件为 Windows 服务程序(导入ADVAPI32.dll的StartServiceCtrlDispatcher/RegisterServiceCtrlHandler/CreateService等)。具备完整的网络通信能力(WS2_32.dll的socket/connect/send/recv + WININET.dll HTTP操作)和网络侦查能力(iphlpapi.dll的GetAdaptersInfo)。通过GetProcAddress+GetModuleHandle实现动态API解析。
广告欺诈机制:载荷的资源段包含超过5MB的AdBlock Plus白名单规则(@@||允许规则),针对Tribune Publishing旗下40+新闻站点(latimes.com、chicagotribune.com、baltimoresun.com等)允许特定广告网络(rfihub.net、amazon-adsystem.com、criteo.com、betrad.com、doubleverify.com、adsafeprotected.com等)的广告脚本执行。这疑似用于广告欺诈/广告注入操作。
| 分类 | 标签 | 置信度 |
|---|---|---|
| 编译器 | Microsoft Visual C/C++ 2010 (MSVC 16.00.40219) | HIGH |
| 壳/保护 | 无壳 (MSVC原生编译) | HIGH |
| 数字签名 | 无签名 (timestamp=0) | HIGH |
| 恶意类型 | DLL投放器 (Dropper) + 广告欺诈服务 | HIGH |
| 外层架构 | PE64 DLL (x86-64) | HIGH |
| 内嵌载荷 | PE32 EXE (x86) Windows服务 | HIGH |
| 提取方式 | FindResourceA → LoadResource → LockResource | HIGH |
| 载荷大小 | 5,242,880 字节 (5MB, 资源ID 101) | HIGH |
| 持久化方式 | Windows Service (CreateService) | HIGH |
| C2协议 | TCP Socket (WS2_32) + HTTP (WININET) | MEDIUM |
| 网络侦查 | GetAdaptersInfo (iphlpapi) | LOW |
| 广告数据 | 5MB AdBlock白名单规则 (40+ Tribune站点) | MEDIUM |
| 动态API | GetProcAddress + GetModuleHandle | MEDIUM |
| 字段 | 值 |
|---|---|
| 关联组织 | 未归因 (疑似广告欺诈/广告注入运营团伙) |
| 别名 | Ad-Fraud Dropper |
| 动机 | 经济利益 (广告欺诈/ad-injection monetization) |
| 目标行业 | 媒体/新闻出版 (Tribune Publishing网络) |
| 活动名称 | 未知 |
| C2协议 | TCP Socket + HTTP |
| C2基础设施 | 双层C2 (TCP+HTTP冗余) |
未检出持久化行为。
(无 ASCII 回退)
| C2地址 | 未硬编码 | 字符串扫描无IP/域名/URL命中 | 动态获取(可能从C2服务端下发) |
未在二进制中硬编码C2地址。内嵌5MB白名单规则数据。C2地址可能从外部配置获取或在服务安装时从注册表读取。
| 协议 | TCP |
| 端口 | 运行时确定 |
| 地址/Domain | 运行时确定(未硬编码) |
| IP | 运行时解析 |
| 加密 | 未知(可能有应用层加密) |
| 用途 | C2指令接收与数据回传 |
| API引用 | WS2_32: socket, connect, send, recv, WSAStartup, inet_addr, htons |
| 证书 | 无TLS(原生TCP) |
Windows服务自动启动
双层C2 (TCP+HTTP)提供通信冗余。5MB的AdBlock白名单数据量大,表明该恶意软件已有完整的广告欺诈基础设施。
<table> <tr><th>段名</th><th>虚拟地址</th><th>大小</th><th>熵值</th><th>内容</th></tr> <tr><td>.text</td><td>0x00001000</td><td>31KB</td><td>6.32</td><td>x64 DLL代码</td></tr> <tr><td>.rdata</td><td>0x00009000</td><td>11KB</td><td>4.70</td><td>导入表</td></tr> <tr><td>.data</td><td>0x0000C000</td><td>5KB</td><td>1.82</td><td>数据段</td></tr> <tr><td>.rsrc</td><td>0x00011000</td><td>5MB</td><td>4.19</td><td>★ 嵌入式PE32载荷 + Manifest</td></tr> <tr><td>.reloc</td><td>0x00512000</td><td>3.5KB</td><td>0.00</td><td>重定位表</td></tr> </table>
| 段/节区 | 熵值 | 判定 |
|---|---|---|
| .text | 6.32 | 正常 (MSVC代码) |
| .rsrc | 4.19 | 嵌入式PE (MZ在偏移+4,低熵白名单文本) |
| .data | 1.82 | 正常 (少量数据) |
| 地址 | 函数 | 功能 |
|---|---|---|
| N/A | ||
| 调用号 | 系统调用 | 用途 | 地址 |
|---|---|---|---|
| N/A | |||
| 字段 | 值 | 来源 |
|---|---|---|
| 无 | ||
| 维度 | 本样本 | Mirai | Gafgyt | Mozi | Hajime | LightAidra | KekSec | Tsunami | Kaiji | 匹配 |
|---|
| 变种 | 架构 | 大小 | 编译器 | 特征 | 状态 |
|---|---|---|---|---|---|
| N/A | |||||
行为: DLL通过rundll32.exe或侧加载方式被加载,操作系统调用其DllMain入口点。
证据: PE64 DLL,入口点0xBB80,导入kernel32.dll基础API
行为: DLL的PlayGame导出函数通过FindResourceA/LoadResource/LockResource从资源段提取5MB嵌入式PE32文件。
证据: 导入: FindResourceA, LoadResource, LockResource, SizeofResource。资源ID 101,类型W,数据前4字节为长度头(0x0038D000),偏移4处为MZ头。
行为: 将提取的PE32载荷写入临时文件(CreateFileA + WriteFile)。
证据: 导入: CreateFileA, WriteFile, MoveFileExA (可能的原子化写入)
行为: 通过CreateProcessA启动提取的PE32服务程序。
证据: 导入: CreateProcessA, GetCommandLineA
行为: PE32载荷作为Windows服务安装自身(OpenSCManagerA + CreateServiceA),支持自动启动。通过RegisterServiceCtrlHandlerA处理服务控制信号,SetServiceStatus报告运行状态。
证据: ADVAPI32: StartServiceCtrlDispatcherA, RegisterServiceCtrlHandlerA, CreateServiceA, SetServiceStatus, OpenSCManagerA
行为: 通过TCP Socket(WinSock)和HTTP(WININET)建立C2通信。
证据: WS2_32: socket, connect, send, recv。WININET: InternetOpenA, InternetOpenUrlA
行为: 加载内嵌的5MB AdBlock白名单规则,针对新闻站点进行广告欺诈(绕过广告拦截器或注入广告)。
证据: 5MB资源段包含@@||白名单规则,目标40+ Tribune站点(latimes.com, chicagotribune.com等),允许rfihub/criteo/doubleverify等广告网络
<div class="mermaid">
stateDiagram-v2
[*] --> DLL_Load: DLL被加载
DLL_Load --> PlayGame: 调用PlayGame导出
PlayGame --> FindResource: FindResourceA(ID=101)
FindResource --> LoadResource: LoadResource
LoadResource --> StripHeader: 去除4字节前缀
StripHeader --> WriteFile: 写入临时文件
WriteFile --> CreateProcess: CreateProcessA启动
CreateProcess --> ServiceInstall: PE32安装为Windows服务
ServiceInstall --> C2Connect: TCP/HTTP C2连接
C2Connect --> AdFraud: 广告欺诈操作
AdFraud --> C2Connect: 持续运行
</div>
DLL加载→载荷提取(秒级)→CreateProcess(秒级)→服务安装(秒级)→立即联网
| 维度 | 证据 | 权重 | 恶意指数 |
|---|
高危 — 两阶段Dropper+Windows服务持久化+双层C2通信+广告欺诈操作
| 层 | API/技术 | 检测目标 | 绕过难度 |
|---|---|---|---|
| 无 | |||
| 检测方法 | VMware | VirtualBox | QEMU/KVM |
|---|---|---|---|
| 无 | |||
| 技术 | 是否存在 | 证据 | 对抗难度 |
|---|---|---|---|
| 时间戳清零 | 是 | PE TimeDateStamp=0(Epoch) | Easy |
| 出口函数伪装 | 是 | 导出名 PlayGame 伪装为游戏功能 | Easy |
| 嵌入式载荷 | 是 | 5MB资源段携带完整PE载荷(MZ头偏移+4) | Medium |
| 层 | 操作 | API/命令 | 证据来源 |
|---|---|---|---|
| 无 | |||
| 反编译函数数 | 小 (~20个函数, 简单投放器) |
| 反编译输出 | N/A (DLL简单,核心逻辑在嵌入式PE32) |
| 分析时长 | N/A |
| 总函数数 | 总调用关系 | 最大调用深度 |
|---|---|---|
| ~20 (外层DLL) + ~200+ (内嵌PE32) | N/A | N/A |
N/A (简单投放器DLL)
| QEMU 模式 | 跳过 (投放器DLL+服务载荷,sandbox环境意义有限) |
| 网络隔离 | N/A |
| 执行结果 | N/A |
| C2 数据 | N/A |
| 偏移 | 字符串 | 类型 | 用途/含义 | 威胁等级 |
|---|---|---|---|---|
| .rsrc段(资源ID 101) | 5,242,880字节PE32载荷(MZ头在偏移+4) | 嵌入式载荷 | 第二阶段PE32恶意服务程序 | HIGH |
| 导出表 | PlayGame | 导出函数名 | 载荷提取入口点(伪装名) | HIGH |
| 资源段 | @@||c1.rfihub.net/adChoicesJs/rfacNew.js (5MB白名单规则) | AdBlock规则 | 广告欺诈/注入操作数据 | MEDIUM |
| 导入表 | CreateServiceA (ADVAPI32) | Windows API | Windows服务持久化安装 | HIGH |
| 导入表 | FindResourceA / LoadResource | Windows API | 资源段载荷提取 | HIGH |
| 导入表 | socket / connect / send / recv (WS2_32) | Windows API | TCP网络C2通信 | HIGH |
主要IOC包括:资源段中嵌入PE文件(MZ头偏移+4)、AdBlock白名单规则中的目标域名列表(latimes.com等)、Windows服务创建行为(CreateServiceA)。
资源段ID 101 — 5MB PE32 MZ文件(偏移+4) — x64 DLL内嵌PE32恶意服务载荷CreateServiceA + StartServiceCtrlDispatcherA — 安装为Windows服务实现持久化WS2_32.dll完整Socket + WININET.dll HTTP — 双层C2通信能力40+ Tribune新闻站点白名单 — 广告欺诈目标基础设施rule DLL_Dropper_AdFraud_1320ba4c {
meta:
description = "x64 DLL Dropper with embedded PE32 Ad-Fraud Service"
sha256 = "1320ba4c289d844b5d724fa5af97d129bc8d103c48011952df911ec0d089acee"
strings:
$s1 = "PlayGame" ascii
$s2 = "FindResourceA" ascii
$s3 = "CreateServiceA" ascii
$s4 = "socket" ascii
$s5 = "@@||c1.rfihub.net" ascii
$s6 = "baltimoresun.com" ascii
condition:
uint16(0) == 0x5A4D and filesize > 4MB and (3 of them)
}
| 判定结果 | 待判定 |
| 恶意类型 | 待分类 |
| 恶意家族 | 未归因 |
| 威胁级别 | MEDIUM |
| 置信度 | 0% — 分析不完整 |
| 关联组织 | 未归因 (广告欺诈/广告注入恶意软件) |
| 目标平台 | N/A |
| 感染链位置 | 待确定 |
?