WikiLoader最新攻击样本加载执行过程详细分析
字数 1678 2025-08-03 16:48:51
WikiLoader恶意软件攻击样本分析教学文档
一、恶意软件概述
-
基本信息
- 名称:WikiLoader
- 首次曝光时间:2022年12月
- 关联组织:TA544(针对意大利组织的攻击活动)
- 功能:多层ShellCode下载器,通过修改系统DLL模块加载恶意代码,最终加载Ursnif银行木马。
-
攻击链流程
PDF文档 → 压缩包(JS脚本) → 嵌套JS下载 → ZIP压缩包(Notepad++插件) → 恶意DLL加载 → ShellCode执行
二、攻击样本详细分析
1. 初始感染阶段
- 载体:恶意PDF文档,诱导用户点击下载按钮。
- 下载文件:解压后得到混淆的JS脚本(
script.js)。 - JS脚本功能:
- 通过
WScript.Shell执行命令。 - 从C2服务器下载下一阶段JS脚本(二次混淆)。
- 通过
2. 第二阶段JS脚本
- 去混淆后关键行为:
- 下载ZIP压缩包(伪装为Notepad++安装包)。
- 压缩包内容:
- 合法Notepad++程序(掩盖恶意行为)。
- 恶意插件:
plugins/mimeTools.dll(Notepad++默认加载路径)。
3. 恶意DLL加载(mimeTools.dll)
- 执行流程:
- 调用
VirtualAlloc分配内存。 - 读取同目录下
certificate.pem文件(实际为加密的ShellCode)。 - 加载加密库
Crypt32.dll和bcrypt.dll,使用AES解密数据(密钥:9rY6YT5dDI9LInMD8Ht2i0wZlS5k2Flg)。 - 解密后得到第一阶段ShellCode,设置内存属性为可执行(
PAGE_EXECUTE_READWRITE)。
- 调用
4. ShellCode执行与DLL注入
- 关键步骤:
- 动态加载系统DLL:
bingmaps.dll(合法模块)。 - 修改
bingmaps.dll入口点代码,注入恶意ShellCode。 - 劫持导出函数
GetBingsMapFactory,将其替换为ShellCode跳转指令。 - 执行最终Payload(Ursnif恶意软件)。
- 动态加载系统DLL:
三、技术亮点与对抗手段
- 多阶段加载
- 通过PDF→JS→ZIP→DLL的链式加载规避静态检测。
- DLL劫持与代码注入
- 利用合法DLL(如
bingmaps.dll)的加载机制,修改内存代码实现持久化。
- 利用合法DLL(如
- 加密与混淆
- 使用AES加密ShellCode,密钥硬编码在二进制中。
- JS脚本多层混淆(如变量名替换、垃圾代码插入)。
四、威胁情报与防御建议
-
IoC指标
- 文件:
mimeTools.dll、certificate.pem。 - 网络请求:C2域名(需从动态分析中提取)。
- 密钥:
9rY6YT5dDI9LInMD8Ht2i0wZlS5k2Flg(AES解密)。
- 文件:
-
检测与防御
- 行为监控:
- 异常DLL模块修改(如
bingmaps.dll的代码段写入)。 VirtualAlloc+PAGE_EXECUTE_READWRITE组合告警。
- 异常DLL模块修改(如
- 静态分析:
- 检测JS脚本中的
WScript.Shell和ADODB.Stream调用。
- 检测JS脚本中的
- 网络层:
- 拦截对可疑域名的ZIP/JS下载请求。
- 行为监控:
五、复现与调试指南
-
所需工具
- 调试器:x64dbg/OllyDbg。
- 分析工具:IDA Pro、Process Monitor。
- 样本来源:MalwareBazaar(SHA256需自行获取)。
-
调试重点
- 跟踪
mimeTools.dll的CryptStringToBinaryA调用,定位解密逻辑。 - 断点设置在
GetBingsMapFactory注入后的跳转指令。
- 跟踪
六、总结
WikiLoader通过复杂的加载链和DLL注入技术,实现高隐蔽性攻击。防御需结合行为检测与静态分析,重点关注:
- 异常DLL加载行为。
- 内存权限修改(如可执行内存申请)。
- 多阶段文件下载(PDF→JS→ZIP)。
附录:样本哈希(示例)
mimeTools.dll:SHA256:a1b2c3...(需从MalwareBazaar获取实际值)
(注:实际分析中需替换为真实IoC数据,并确保在隔离环境中操作。)