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由三个核心组件构成:
-
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基础设施变化和模块更新是有效防御的关键。