DanaBot银行木马更新,被配置为MaaS
字数 3704 2025-08-20 18:18:17

DanaBot银行木马深度分析与防御指南

1. DanaBot概述

DanaBot是一款用Delphi语言开发的银行木马恶意软件,最早于2018年5月被发现,最初与攻击澳大利亚企业的威胁活动有关。该恶意软件已发展为恶意软件即服务(MaaS)模式,攻击范围已扩展到波兰、意大利、德国、澳大利亚和美国等多个国家。

1.1 主要特点

  • 模块化架构:由三个主要组件组成(Loader、Main component和Modules)
  • 反分析技术:包含大量垃圾代码和混淆技术
  • C2通信:使用TCP 443端口的二进制协议(非TLS)
  • 多国攻击:针对银行用户的地理定位攻击能力
  • MaaS模式:通过affiliate系统分发

2. DanaBot技术架构

2.1 组件结构

DanaBot由三个核心组件构成:

  1. Loader(加载器)

    • 负责下载和加载主组件
    • 使用HTTP进行初始通信(早期版本)
    • 在v2.003版本中使用TCP 443端口的二进制协议
  2. Main component(主组件)

    • 负责下载、配置和加载模块
    • 管理所有恶意功能
    • 包含10个硬编码的C2 IP地址列表(每小时变化)
  3. Modules(模块)

    • 提供特定恶意功能
    • 动态下载和执行
    • 包括窃取器、远程控制等多种功能

2.2 版本识别

版本号基于version字符串识别(如图3所示),当前分析基于v2.003版本(2018年9月初出现)。

3. 反分析技术

DanaBot采用了多种反分析技术:

  1. 代码混淆

    • 大量垃圾代码(额外指令、条件描述和循环)
    • Delphi语言编写增加逆向难度
  2. API隐藏

    • 使用Windows API函数哈希
    • 防止自动化分析工具识别功能
  3. 字符串加密

    • 加密字符串保存在DWORDs数组中
    • 使用key和基本替换密文解密
    • 提供IDA Pro Python脚本用于解密(参考GitHub资源)

4. 命令与控制(C2)通信

4.1 通信协议

  • 协议类型:TCP 443端口的二进制协议(非TLS)
  • 消息结构:183字节header + 可选payload
  • Header结构
Offset 大小 描述
0x00 4 随机值(垃圾stack)
0x04 4 硬编码-1 (DWORD)
0x08 4 命令(DWORD)
0x0c 4 affiliate ID (DWORD)
0x10 4 硬编码1 (DWORD)
0x14 4 基于线性同余生成器的随机值
0x18 4 未知计数器变量
0x1c 4 系统架构
0x20 4 Windows版本信息
0x24 4 命令参数
0x28 4 管理员状态
0x2c 4 进程完整性级别
0x30 8 payload长度(QWORD)
0x38 1 下一字段长度(BYTE)
0x39 32 bot ID
0x59 1 下一字段长度(BYTE)
0x5a 32 命令相关数据
0x7a 1 下一字段长度(BYTE)
0x7b 32 随机数(nonce)
0x9b 随机值(垃圾stack)

4.2 主要命令

  1. Command 0x454 (1108): "请求主组件"

    • 由加载器执行,请求主模块
    • 参数指定架构(32或64位)
    • 响应包含加密数据和128字节RSA签名
    • 加密:AES-256-CBC,IV为\x00字节
  2. Command 0x453 (1107): "初始信标"

    • 主组件首次通信
    • 无数据交换,仅确认连接
  3. Command 0x44c (1100): "请求模块标识符"

    • 获取模块ID列表
    • 响应示例包含6个模块ID
  4. Command 0x44d (1101): "请求模块"

    • 下载特定模块
    • 包含1699字节subheader
    • 加密数据+128字节RSA签名
    • 可能使用ZLIB压缩
  5. Command 0x44f (1103): "获取配置文件"

    • 请求配置设置
    • 通信流程特殊:服务器响应前客户端发送\xff\xff\xff\xff\xff\xff\xff\xff
  6. Command 0x44e (1102): "发送数据到C2"

    • 上传系统信息、截屏等
    • 包含656字节subheader
    • 数据可能ZLIB压缩+AES-256-CBC加密

4.3 C2基础设施

  • IP列表:主组件包含10个硬编码C2 IP
  • 变化频率:每小时更新IP列表
  • 研究发现:24小时内收集240个IP(194唯一)
  • 活跃IP:仅10个有响应,其余可能是诱饵
  • 无效IP:包含不能路由的IP地址(如10.x, 225.x等)

5. 模块系统

5.1 模块类型

模块名称 功能描述
stealer.dll 窃取器功能
vnc.dll VNC远程控制
socks5.dll SOCKS5代理
loader.dll 加载其他恶意软件
clipper.dll 剪贴板监控
其他 额外功能模块

5.2 模块下载机制

  1. 获取模块ID列表(Command 0x44c)
  2. 请求特定模块(Command 0x44d)
  3. 接收包含:
    • 1699字节subheader
    • 加密模块数据
    • 128字节RSA签名
  4. 解密流程:
    • 使用CryptDeriveKey生成密钥
    • AES-256-CBC解密(IV为16\x00字节)
    • 可选ZLIB解压
  5. 通过rundll32.exe执行模块

6. 配置文件系统

DanaBot使用多种配置文件:

文件类型 用途
inject.txt 注入配置
grabber.txt 数据窃取配置
webinjects.txt 网页注入规则
black.txt 黑名单
white.txt 白名单
grey.txt 灰名单

配置文件通过Command 0x44f获取,使用类似模块的加密传输机制。

7. 传播方式

7.1 Hancitor攻击活动

  • 时间:2018年9月26日发现
  • 目标:美国接收者
  • 方式:大规模垃圾邮件攻击
  • 诱饵:eFax相关文档
  • 流程
    1. 邮件包含恶意URL
    2. 下载含恶意宏的文档
    3. 启用宏执行Hancitor
    4. Hancitor下载Pony窃取器和DanaBot

7.2 其他传播方式

  • 替代Panda银行木马进行传播
  • 通过恶意广告、漏洞利用工具包等

8. 与CryptXXX的关联

研究发现DanaBot可能与CryptXXX勒索软件有共同起源:

  1. 相同开发者

    • 都用Delphi编写
    • 使用相似的基于TCP 443的定制协议
    • DanaBot协议是CryptXXX的进化版
  2. 功能演进

    • CryptXXX → Reveton勒索软件 → DanaBot银行木马
    • 逐步增加窃取器、远程控制等功能
  3. 技术相似性

    • 相似的checkin格式
    • 都使用affiliate ID系统
    • 类似的模块化架构

9. 防御建议

9.1 检测指标

  1. 网络指标

    • TCP 443端口非TLS二进制通信
    • 特定C2 IP(如158.255.215.31等)
    • 183字节header的二进制协议
  2. 主机指标

    • 可疑的rundll32.exe进程
    • 模块文件(stealer.dll, vnc.dll等)
    • 特定注册表修改
  3. 行为指标

    • 大量垃圾代码的Delphi程序
    • API哈希使用行为
    • 字符串解密行为

9.2 防护措施

  1. 终端防护

    • 启用宏安全设置(禁用Office宏)
    • 使用高级端点防护(EDR)解决方案
    • 监控rundll32.exe可疑活动
  2. 网络防护

    • 拦截已知C2 IP通信
    • 检测非标准443端口流量
    • 监控二进制协议特征
  3. 用户教育

    • 警惕eFax等诱饵邮件
    • 不启用不明文档宏
    • 报告可疑邮件附件
  4. 系统加固

    • 保持系统和应用更新
    • 限制不必要的网络访问
    • 实施应用白名单

10. 分析与研究工具

  1. 逆向工具

    • IDA Pro(配合Python脚本)
    • Delphi反编译器
  2. 解密脚本

    • GitHub提供的字符串解密脚本
    • 函数哈希解析工具
  3. 网络分析

    • Wireshark(自定义解析器)
    • 流量分析工具

11. 总结

DanaBot代表了银行木马的现代化演进,具备:

  • 高度模块化设计
  • 强大的反分析能力
  • 灵活的C2基础设施
  • MaaS商业模式

其攻击范围持续扩大,防御需要多层防护策略,特别关注:

  • 邮件安全网关
  • 端点行为监控
  • 网络异常检测

持续跟踪其C2基础设施变化和模块更新是有效防御的关键。

DanaBot银行木马深度分析与防御指南 1. DanaBot概述 DanaBot是一款用Delphi语言开发的银行木马恶意软件,最早于2018年5月被发现,最初与攻击澳大利亚企业的威胁活动有关。该恶意软件已发展为恶意软件即服务(MaaS)模式,攻击范围已扩展到波兰、意大利、德国、澳大利亚和美国等多个国家。 1.1 主要特点 模块化架构 :由三个主要组件组成(Loader、Main component和Modules) 反分析技术 :包含大量垃圾代码和混淆技术 C2通信 :使用TCP 443端口的二进制协议(非TLS) 多国攻击 :针对银行用户的地理定位攻击能力 MaaS模式 :通过affiliate系统分发 2. DanaBot技术架构 2.1 组件结构 DanaBot由三个核心组件构成: Loader(加载器) : 负责下载和加载主组件 使用HTTP进行初始通信(早期版本) 在v2.003版本中使用TCP 443端口的二进制协议 Main component(主组件) : 负责下载、配置和加载模块 管理所有恶意功能 包含10个硬编码的C2 IP地址列表(每小时变化) Modules(模块) : 提供特定恶意功能 动态下载和执行 包括窃取器、远程控制等多种功能 2.2 版本识别 版本号基于version字符串识别(如图3所示),当前分析基于v2.003版本(2018年9月初出现)。 3. 反分析技术 DanaBot采用了多种反分析技术: 代码混淆 : 大量垃圾代码(额外指令、条件描述和循环) Delphi语言编写增加逆向难度 API隐藏 : 使用Windows API函数哈希 防止自动化分析工具识别功能 字符串加密 : 加密字符串保存在DWORDs数组中 使用key和基本替换密文解密 提供IDA Pro Python脚本用于解密(参考GitHub资源) 4. 命令与控制(C2)通信 4.1 通信协议 协议类型 :TCP 443端口的二进制协议(非TLS) 消息结构 :183字节header + 可选payload Header结构 : | Offset | 大小 | 描述 | |--------|------|------| | 0x00 | 4 | 随机值(垃圾stack) | | 0x04 | 4 | 硬编码-1 (DWORD) | | 0x08 | 4 | 命令(DWORD) | | 0x0c | 4 | affiliate ID (DWORD) | | 0x10 | 4 | 硬编码1 (DWORD) | | 0x14 | 4 | 基于线性同余生成器的随机值 | | 0x18 | 4 | 未知计数器变量 | | 0x1c | 4 | 系统架构 | | 0x20 | 4 | Windows版本信息 | | 0x24 | 4 | 命令参数 | | 0x28 | 4 | 管理员状态 | | 0x2c | 4 | 进程完整性级别 | | 0x30 | 8 | payload长度(QWORD) | | 0x38 | 1 | 下一字段长度(BYTE) | | 0x39 | 32 | bot ID | | 0x59 | 1 | 下一字段长度(BYTE) | | 0x5a | 32 | 命令相关数据 | | 0x7a | 1 | 下一字段长度(BYTE) | | 0x7b | 32 | 随机数(nonce) | | 0x9b | | 随机值(垃圾stack) | 4.2 主要命令 Command 0x454 (1108): "请求主组件" 由加载器执行,请求主模块 参数指定架构(32或64位) 响应包含加密数据和128字节RSA签名 加密:AES-256-CBC,IV为\x00字节 Command 0x453 (1107): "初始信标" 主组件首次通信 无数据交换,仅确认连接 Command 0x44c (1100): "请求模块标识符" 获取模块ID列表 响应示例包含6个模块ID Command 0x44d (1101): "请求模块" 下载特定模块 包含1699字节subheader 加密数据+128字节RSA签名 可能使用ZLIB压缩 Command 0x44f (1103): "获取配置文件" 请求配置设置 通信流程特殊:服务器响应前客户端发送\xff\xff\xff\xff\xff\xff\xff\xff Command 0x44e (1102): "发送数据到C2" 上传系统信息、截屏等 包含656字节subheader 数据可能ZLIB压缩+AES-256-CBC加密 4.3 C2基础设施 IP列表 :主组件包含10个硬编码C2 IP 变化频率 :每小时更新IP列表 研究发现 :24小时内收集240个IP(194唯一) 活跃IP :仅10个有响应,其余可能是诱饵 无效IP :包含不能路由的IP地址(如10.x, 225.x等) 5. 模块系统 5.1 模块类型 | 模块名称 | 功能描述 | |----------|----------| | stealer.dll | 窃取器功能 | | vnc.dll | VNC远程控制 | | socks5.dll | SOCKS5代理 | | loader.dll | 加载其他恶意软件 | | clipper.dll | 剪贴板监控 | | 其他 | 额外功能模块 | 5.2 模块下载机制 获取模块ID列表(Command 0x44c) 请求特定模块(Command 0x44d) 接收包含: 1699字节subheader 加密模块数据 128字节RSA签名 解密流程: 使用CryptDeriveKey生成密钥 AES-256-CBC解密(IV为16\x00字节) 可选ZLIB解压 通过rundll32.exe执行模块 6. 配置文件系统 DanaBot使用多种配置文件: | 文件类型 | 用途 | |----------|------| | inject.txt | 注入配置 | | grabber.txt | 数据窃取配置 | | webinjects.txt | 网页注入规则 | | black.txt | 黑名单 | | white.txt | 白名单 | | grey.txt | 灰名单 | 配置文件通过Command 0x44f获取,使用类似模块的加密传输机制。 7. 传播方式 7.1 Hancitor攻击活动 时间 :2018年9月26日发现 目标 :美国接收者 方式 :大规模垃圾邮件攻击 诱饵 :eFax相关文档 流程 : 邮件包含恶意URL 下载含恶意宏的文档 启用宏执行Hancitor Hancitor下载Pony窃取器和DanaBot 7.2 其他传播方式 替代Panda银行木马进行传播 通过恶意广告、漏洞利用工具包等 8. 与CryptXXX的关联 研究发现DanaBot可能与CryptXXX勒索软件有共同起源: 相同开发者 : 都用Delphi编写 使用相似的基于TCP 443的定制协议 DanaBot协议是CryptXXX的进化版 功能演进 : CryptXXX → Reveton勒索软件 → DanaBot银行木马 逐步增加窃取器、远程控制等功能 技术相似性 : 相似的checkin格式 都使用affiliate ID系统 类似的模块化架构 9. 防御建议 9.1 检测指标 网络指标 : TCP 443端口非TLS二进制通信 特定C2 IP(如158.255.215.31等) 183字节header的二进制协议 主机指标 : 可疑的rundll32.exe进程 模块文件(stealer.dll, vnc.dll等) 特定注册表修改 行为指标 : 大量垃圾代码的Delphi程序 API哈希使用行为 字符串解密行为 9.2 防护措施 终端防护 : 启用宏安全设置(禁用Office宏) 使用高级端点防护(EDR)解决方案 监控rundll32.exe可疑活动 网络防护 : 拦截已知C2 IP通信 检测非标准443端口流量 监控二进制协议特征 用户教育 : 警惕eFax等诱饵邮件 不启用不明文档宏 报告可疑邮件附件 系统加固 : 保持系统和应用更新 限制不必要的网络访问 实施应用白名单 10. 分析与研究工具 逆向工具 : IDA Pro(配合Python脚本) Delphi反编译器 解密脚本 : GitHub提供的字符串解密脚本 函数哈希解析工具 网络分析 : Wireshark(自定义解析器) 流量分析工具 11. 总结 DanaBot代表了银行木马的现代化演进,具备: 高度模块化设计 强大的反分析能力 灵活的C2基础设施 MaaS商业模式 其攻击范围持续扩大,防御需要多层防护策略,特别关注: 邮件安全网关 端点行为监控 网络异常检测 持续跟踪其C2基础设施变化和模块更新是有效防御的关键。