最新Trickbot变种技术分析
字数 2532 2025-08-20 18:17:48

Trickbot最新变种技术分析与防御教学文档

1. Trickbot概述

Trickbot是一款自2016年开始活跃的多模块银行木马恶意软件,主要针对金融机构客户进行凭证窃取。其特点包括:

  • 模块化架构:不同模块负责不同恶意活动
  • 持续更新:开发者不断添加新技术和模块
  • 多功能性:包含浏览器数据窃取、Outlook数据窃取、系统锁定、信息收集等多种功能

2. 最新变种感染向量分析

2.1 初始感染方式

最新变种通过恶意Word文档传播(SHA256: aef2020534f81bbebec6c9b842b3de6fd4f5b55fe5aeb3d9e79e16c0a3ff37ab)

2.2 宏代码触发机制

  • 触发条件:用户开启宏并放大或缩小文档时执行
  • 绕过沙箱技术:依赖用户交互行为(窗口大小变化)
  • 关键函数InkPicture1_Resize方法响应缩放操作

2.3 宏代码执行流程

  1. 经过混淆的宏代码
  2. 最终执行PowerShell脚本
  3. PowerShell脚本下载并执行Trickbot主程序

3. Payload技术分析

3.1 基本信息

  • SHA256: 1c81272ffc28b29a82d8313bd74d1c6030c2af1ba4b165c44dc8ea6376679d9f
  • 调试路径泄露: c:\users\exploitdb\desktop\esetfuck\release\esetfuck.pdb

3.2 反分析技术

  1. 延迟执行

    • 调用Sleep(30000)休眠30秒
    • 目的是绕过沙箱监测
  2. 虚假API调用

    • 创建看似无用的窗口(CreateWindowEx)
    • 发送未定义消息(SendMessageW使用0x64/0xfa代码)
    • 调用GetLastErrorInSendMessage但不使用结果
  3. 短时间多次休眠

    • 调用Sleep(3)共3890次
    • 累计约11秒延迟
    • 规避沙箱的行为分析

3.3 资源解密机制

  1. 解密函数:位于0x405680

  2. 解密流程

    • 接收参数:private_key(密钥指针)和key size(16字节)
    • 使用CryptAcquireContextW获取加密服务提供商句柄(PROV_RSA_FULL)
    • 从嵌入的可执行文件中导入公钥BLOB
    • 复制内存中的BLOB头形成完整密钥
    • 使用CryptImportKey导入密钥
    • 使用CryptEncrypt进行实际解密
    • 清理密钥(CryptDestroyKey)
  3. 解密结果

    • DLL文件(SHA256: 31A4065460CEF51C8B4495EFC9827926A789F602F5AD5C735EA1D88CAFAC135A)
    • 输出函数shellcode_main

4. Process Hollowing技术实现

4.1 技术概述

最新变种使用直接系统调用实现process hollowing,与Flokibot银行木马技术相似,可能存在代码共享。

4.2 详细实现步骤

  1. 创建暂停进程

    • 使用CreateProcessW创建自身进程的挂起副本
  2. 获取线程上下文

    • 使用GetThreadContext保存主线程上下文
  3. 处理ntdll.dll

    • 使用CreateFileW获取ntdll.dll句柄
    • 使用ReadFile将ntdll.dll读入内存
    • 手动映射ntdll.dll到内存
  4. 函数解析

    • 使用CRC32算法计算函数名哈希值
    • 常数0xedb88320用于CRC32计算
    • 通过哈希匹配找到目标函数偏移量
  5. 直接系统调用

    • 提取系统调用号存入EAX
    • 通过sysenter指令进入内核
    • 栈中存放适当参数
  6. 关键系统调用序列

    • NtUnmapViewOfSection:删除原进程模块映射
    • NtCreateSection:创建写入恶意代码的section
    • NtMapViewOfSection:映射section到hollowed进程
    • NtWriteVirtualMemory:写入当前进程ImageBaseAddress
    • NtResumeThread:恢复挂起线程执行

4.3 与Flokibot的对比

  1. 相似点

    • 使用直接系统调用
    • 使用CRC32算法哈希函数名
    • process hollowing基本流程相同
  2. 差异点

    • Trickbot未对所有hollowing函数使用直接系统调用
    • Flokibot中CRC32与2字节XOR结合使用
    • 部分函数调用方式不同

5. 持久化与防御规避技术

5.1 文件操作

  1. 复制自身到C:\Users\%USERNAME%\AppData\Roaming\msnet
  2. 存放加密模块在同一目录

5.2 防御规避

执行以下命令关闭和删除Windows Defender:

sc stop WinDefend
sc delete WinDefend
powershell Set-MpPreference -DisableRealtimeMonitoring $true

6. 防御与检测建议

6.1 预防措施

  1. 宏安全

    • 默认禁用Office宏
    • 对必须使用宏的文件进行数字签名验证
    • 教育用户识别可疑文档
  2. PowerShell限制

    • 实施约束语言模式
    • 记录和监控PowerShell活动
    • 启用脚本块日志记录

6.2 检测技术

  1. 行为检测

    • 监控频繁的短时间Sleep调用
    • 检测异常的窗口消息发送模式
    • 识别直接系统调用行为
  2. 内存分析

    • 检测process hollowing特征
    • 查找手动映射的ntdll.dll
    • 监控异常的线程上下文修改
  3. 文件监控

    • 监控AppData\Roaming目录的可疑写入
    • 检测Windows Defender服务的异常停止

6.3 响应措施

  1. 隔离:立即隔离受感染主机
  2. 取证
    • 收集内存转储进行分析
    • 检查进程树和网络连接
  3. 修复
    • 删除恶意文件和注册表项
    • 恢复安全服务配置
  4. 加固
    • 更新终端防护软件
    • 实施应用程序白名单

7. 总结

Trickbot持续演进,最新变种展示了:

  • 更隐蔽的感染方式(依赖用户交互)
  • 先进的代码注入技术(直接系统调用)
  • 增强的反分析和沙箱规避能力
  • 与Flokibot的技术趋同现象

防御需要多层防护策略,重点在于预防初始感染、检测异常行为并及时响应。

Trickbot最新变种技术分析与防御教学文档 1. Trickbot概述 Trickbot是一款自2016年开始活跃的多模块银行木马恶意软件,主要针对金融机构客户进行凭证窃取。其特点包括: 模块化架构:不同模块负责不同恶意活动 持续更新:开发者不断添加新技术和模块 多功能性:包含浏览器数据窃取、Outlook数据窃取、系统锁定、信息收集等多种功能 2. 最新变种感染向量分析 2.1 初始感染方式 最新变种通过恶意Word文档传播(SHA256: aef2020534f81bbebec6c9b842b3de6fd4f5b55fe5aeb3d9e79e16c0a3ff37ab) 2.2 宏代码触发机制 触发条件 :用户开启宏并放大或缩小文档时执行 绕过沙箱技术 :依赖用户交互行为(窗口大小变化) 关键函数 : InkPicture1_Resize 方法响应缩放操作 2.3 宏代码执行流程 经过混淆的宏代码 最终执行PowerShell脚本 PowerShell脚本下载并执行Trickbot主程序 3. Payload技术分析 3.1 基本信息 SHA256 : 1c81272ffc28b29a82d8313bd74d1c6030c2af1ba4b165c44dc8ea6376679d9f 调试路径泄露 : c:\users\exploitdb\desktop\esetfuck\release\esetfuck.pdb 3.2 反分析技术 延迟执行 : 调用 Sleep(30000) 休眠30秒 目的是绕过沙箱监测 虚假API调用 : 创建看似无用的窗口( CreateWindowEx ) 发送未定义消息( SendMessageW 使用0x64/0xfa代码) 调用 GetLastError 和 InSendMessage 但不使用结果 短时间多次休眠 : 调用 Sleep(3) 共3890次 累计约11秒延迟 规避沙箱的行为分析 3.3 资源解密机制 解密函数 :位于0x405680 解密流程 : 接收参数:private_ key(密钥指针)和key size(16字节) 使用 CryptAcquireContextW 获取加密服务提供商句柄(PROV_ RSA_ FULL) 从嵌入的可执行文件中导入公钥BLOB 复制内存中的BLOB头形成完整密钥 使用 CryptImportKey 导入密钥 使用 CryptEncrypt 进行实际解密 清理密钥( CryptDestroyKey ) 解密结果 : DLL文件(SHA256: 31A4065460CEF51C8B4495EFC9827926A789F602F5AD5C735EA1D88CAFAC135A) 输出函数 shellcode_main 4. Process Hollowing技术实现 4.1 技术概述 最新变种使用直接系统调用实现process hollowing,与Flokibot银行木马技术相似,可能存在代码共享。 4.2 详细实现步骤 创建暂停进程 : 使用 CreateProcessW 创建自身进程的挂起副本 获取线程上下文 : 使用 GetThreadContext 保存主线程上下文 处理ntdll.dll : 使用 CreateFileW 获取ntdll.dll句柄 使用 ReadFile 将ntdll.dll读入内存 手动映射ntdll.dll到内存 函数解析 : 使用CRC32算法计算函数名哈希值 常数 0xedb88320 用于CRC32计算 通过哈希匹配找到目标函数偏移量 直接系统调用 : 提取系统调用号存入EAX 通过 sysenter 指令进入内核 栈中存放适当参数 关键系统调用序列 : NtUnmapViewOfSection :删除原进程模块映射 NtCreateSection :创建写入恶意代码的section NtMapViewOfSection :映射section到hollowed进程 NtWriteVirtualMemory :写入当前进程ImageBaseAddress NtResumeThread :恢复挂起线程执行 4.3 与Flokibot的对比 相似点 : 使用直接系统调用 使用CRC32算法哈希函数名 process hollowing基本流程相同 差异点 : Trickbot未对所有hollowing函数使用直接系统调用 Flokibot中CRC32与2字节XOR结合使用 部分函数调用方式不同 5. 持久化与防御规避技术 5.1 文件操作 复制自身到 C:\Users\%USERNAME%\AppData\Roaming\msnet 存放加密模块在同一目录 5.2 防御规避 执行以下命令关闭和删除Windows Defender: 6. 防御与检测建议 6.1 预防措施 宏安全 : 默认禁用Office宏 对必须使用宏的文件进行数字签名验证 教育用户识别可疑文档 PowerShell限制 : 实施约束语言模式 记录和监控PowerShell活动 启用脚本块日志记录 6.2 检测技术 行为检测 : 监控频繁的短时间Sleep调用 检测异常的窗口消息发送模式 识别直接系统调用行为 内存分析 : 检测process hollowing特征 查找手动映射的ntdll.dll 监控异常的线程上下文修改 文件监控 : 监控AppData\Roaming目录的可疑写入 检测Windows Defender服务的异常停止 6.3 响应措施 隔离 :立即隔离受感染主机 取证 : 收集内存转储进行分析 检查进程树和网络连接 修复 : 删除恶意文件和注册表项 恢复安全服务配置 加固 : 更新终端防护软件 实施应用程序白名单 7. 总结 Trickbot持续演进,最新变种展示了: 更隐蔽的感染方式(依赖用户交互) 先进的代码注入技术(直接系统调用) 增强的反分析和沙箱规避能力 与Flokibot的技术趋同现象 防御需要多层防护策略,重点在于预防初始感染、检测异常行为并及时响应。