# BetaBot 木马分析

Author: 乌云历史资料库 (@wooyun_archive)
Published: 2015-11-06T06:38:00Z
Canonical: https://wepostx.com/topics/1161

> 乌云历史资料归档
>
> **原始作者：** 阿里云安全
> **原始编号：** superkieran-wooyundrops:873
> **原始发布时间：** 2015-11-06 14:38
> **声明：内容仅用于技术研究和个人使用，版权归 wooyun.org。**

---

作者:喔欧（阿里巴巴安全部安全威胁情报中心）

# 0x00 背景介绍

在当下全球网络威胁活动中，国外攻击者主要使用Zeus、CryptoWall、Bedep、各类常见RAT工具等作为恶意负载，但在最近我们监控恶意威胁的过程中，发现个别高级样本攻击中使用了较为少见的BetaBot木马，关于此木马很少有相关的分析资料。在进一步了解、分析后发现，该木马还是具有很强的危害和对抗手段。为了方便监控BetaBot木马恶意攻击活动，所以记录相关分析结果，以供参考。

# 0x01 功能介绍

BetaBot，又被称为Neurevt，大概从2013年3月出现在地下市场被出售，售价大约在$120到$500。使用HTTP协议进行通信，使用RC4算法进行加密，代码使用C++语言编写，功能强大。据作者声称，该木马具备破坏杀软、自保护、BotKiller、Userkit(Ring3 Rootkit)、自定义注入技术、防其他木马感染、、DDoS、网络监视/阻塞、USB设备感染、SOCKS4代理、自校验保护、过UAC、反Sandbox等功能。
下图为示例的BetaBot服务端界面

![原文图片](/media/2016/06/70ebbe696851dbbee90447608298384c)

# 0x02 木马功能

## 系统驻留
添加注册表自启动

![原文图片](/media/2016/06/69161d211fcb8e6c57f2422277ac1970)

添加Windows Tasks

![原文图片](/media/2016/06/400142e9c25b39fe238a4636bc21f212)

## 收集信息
运行环境、系统信息、硬件信息、软件信息等
例如软件信息搜集

![原文图片](/media/2016/06/2fe438112a0d163abe30fcb58204886e)

## 启动参数
部分命令以程序启动参数传入解析并执行

![原文图片](/media/2016/06/2037c8513da31f7d62374c1dd93d2b32)

## DDoS
支持4种类型的DDoS攻击方式

![原文图片](/media/2016/06/988be77e2a7064ca80b659f1dd218071)

## System Wide Userkit(Ring3 Rootkit)
功能名称引用作者描述，用于隐藏保护木马。
HOOK API列表

![原文图片](/media/2016/06/8170067d0688414b894f6e6aac3f29c3)

![原文图片](/media/2016/06/041c0b31bf447323ac6e20008d359dd2)

## UAC欺骗绕过
根据用户语言习惯构造错误信息，欺骗用户

![原文图片](/media/2016/06/e4bf8240b922e130bd445014a3c74616)

调用cmd.exe或者rundll32.exe触发UAC，实际调用木马自身

![原文图片](/media/2016/06/ddf65cf1dc4df2210f71af2a8d080336)

根据用户语言习惯构造错误信息

![原文图片](/media/2016/06/85dea1f3c11d2056594be37e3209b388)

在BetaBot木马对抗杀软介绍时作者也提到了使用”社会工程学”的手段

![原文图片](/media/2016/06/28b61b463faf7782da372fe1bfbe378e)

## 配置解密

BetaBot的配置数据包含运行时所需要的释放目录位置、C&C、通信密钥等重要信息，并加密存放在木马文件内。
配置数据解密流程可以分为:

- 解密整体Config

- 依次解密C&C Entry
配置文件结构大小是0x0D56字节(随木马版本更新)，下图为解密整体config初始化代码，构造参数，动态解密执行代码，替换启动线程。

![原文图片](/media/2016/06/093d2928389b273e4197ed2886f496eb)

解密线程从imagebase搜索加密config特征，通过RC4和4字节异或进行解密，RC4解密key在自身代码中保存，解析出所需数据后，使用自更新的加密key重新加密。

![原文图片](/media/2016/06/de390eb58a6c28b147c578d9934f483b)

![原文图片](/media/2016/06/8359ec8c088e6bc6b3a152d0e763133b)

解密结果如下

![原文图片](/media/2016/06/f2b45f4dfaf1274ca9098f6360a29aa3)

上图中前半部分已经解密，偏移0x156起始的C&C Entry还需要使用图中偏移0x6选中内容作为key解密，解密流程见下图

![原文图片](/media/2016/06/0f7b4dbc4b9fd5019e34c1516fd4764c)

可以看出该木马最多可以支持16个C&C配置。
例如解密出的一条C&C配置，其中包含了域名(偏移0x26)、端口(偏移0x14)、path(偏移0x66)、C&C通信key1(偏移0xAA)、key2(偏移0XB7)。

![原文图片](/media/2016/06/3eb2443b057aed3816501f414fc77d17)

## C&C通信解密

### 请求过程

![原文图片](/media/2016/06/587df21b19ddb9ed809c10e9fff30d7a)

构造请求数据

![原文图片](/media/2016/06/89ebfe8b2980e9471350fa28d4014231)

RC4加密请求数据并进行bin2hex转换，加密key是由C&C Entry配置的key1和随机字节序列拼接处理得到。

![原文图片](/media/2016/06/e1670de5b12b8a7f1d2d7b89a9bd8d2e)

第一次请求会附上额外信息。

![原文图片](/media/2016/06/dde3a1c27e7e0c36365267bf267b708b)

额外信息异或特定值并进行bin2hex转换。

![原文图片](/media/2016/06/3cecfa435bc63c6b04d49e0a9e7bf442)

最后将参与加密请求数据的随机字节序列进行bin2hex转换和上述bin2hex转换信息一起发送到服务端。

![原文图片](/media/2016/06/152c79db93d8ec5cb46e773956dc3f31)

发送数据如下

![原文图片](/media/2016/06/c9367d5b5376162699dc39ad1731e99f)

### 响应过程

![原文图片](/media/2016/06/311d323d3c90bf8ec1692a79f9ae971e)

服务器响应包含两部分，header和body。

![原文图片](/media/2016/06/6e3b96a4b0b63198847e7edd37ae5ac2)

首先需要解密header，其中最重要的是8个DWORD组成的数组streams_array，位于偏移0x3C，表示body各个结构的长度。
解密过程如下，RC4加密key是由C&C Entry的key1和response数据的前四个字节组合异或得到。

![原文图片](/media/2016/06/0844782c8379f79d20b3cde3fb8f66ba)

最后根据streams_array计算body长度然后解密。

![原文图片](/media/2016/06/466452228037637aa6ebf3b9e5164aca)

加密的body位于偏移0x5C，解密过程如下，RC4加密key是由C&C Entry的key2和response数据偏移0x4四个字节组合异或得到。

![原文图片](/media/2016/06/0f2d92cd92cc906f0b2b501643c35afe)

最终解密结果如下图，此图所示是服务端下发的监视域名列表配置。

![原文图片](/media/2016/06/514c306c54630c36987ddd0f926483ed)

## 其他
DNS阻断、表格抓取等功能可见参考链接。

# 0x03 对抗手法

## 反调试
1.ZwQueryInformationProcess检测DebugPort

![原文图片](/media/2016/06/182eb8f9c936c6422c469a7d1cadde08)

2.DbgBreakPoint对抗

![原文图片](/media/2016/06/65afe74426de2dc0897e9f1a5a8a36dc)

3.ZwSetInformationThread

![原文图片](/media/2016/06/99acc2cf90de145d58ac5cd6b5981467)

4.多处代码执行过程反调试对抗
例如解密config代码中

![原文图片](/media/2016/06/1b15136b21584db16391fd35b0a1abe2)

## 反虚拟机

![原文图片](/media/2016/06/aa9babbff613cd28b98bca25f8543dad)

## 反JoeBox,GFI,Kasperksy,CWSandbox,Anubis等沙箱

![原文图片](/media/2016/06/fb5e66de96b2a4128dd7ef96530b32be)

## 反Sandboxie沙箱

![原文图片](/media/2016/06/52efe5b795caa144b678031881eb318e)

## 反wine

![原文图片](/media/2016/06/d4055785765e6af84450b93ef2d28d3e)

## 导入API加密
通过遍历系统dll导出表，拼接成moduleName+’.’+APIName计算hash进行搜索
Hash计算方式

![原文图片](/media/2016/06/a271189299833b8c2d86d69c99d442a4)

## 对抗杀软
检测杀软类型

![原文图片](/media/2016/06/62eb939361858e54ee2e5af2b383b313)

![原文图片](/media/2016/06/5af42909a2b98196639a2c0afdcfcb0e)

![原文图片](/media/2016/06/d96580bbe46c3654e5e3ec8c61d3285f)

禁用杀软

![原文图片](/media/2016/06/9e722516606c420995e5f78695b5aa60)

![原文图片](/media/2016/06/de51ae16c1c581afe72b80c22e9b6419)

![原文图片](/media/2016/06/7741b0bf5b03dae207c11a6515eba798)

## 代码加密、动态替换
解密执行代码过程，例如解密Config线程函数体内容

![原文图片](/media/2016/06/7489293e0c5075cc81fbdd97c762b90c)

在一些函数调用时通过替换stub参数实现。例如stub原始代码

![原文图片](/media/2016/06/2e7b3c46cabe83c0e1410b3543b6cd67)

替换参数

![原文图片](/media/2016/06/01f3d717add94d58a359ad8f7f2244d5)

## Snort检测规则

```text
alert http any any -> any any (msg: "Betabot Windows RAT Trojan Online Request"; flow: established, to_server; content: "POST"; http_method; content:"="; http_client_body; pcre: "/=\d{8}&/P"; content: "1="; distance:1; http_client_body; content: "2="; distance:1; content: "3="; distance:1; content: "4="; distance:1; content: "5="; distance:1; flowbits: set, betabot_online; classtype: trojan-detect; sid:010200291; rev:1; )
```

# 0x04 参考链接

- [https://securityintelligence.com/beta-bot-phish/](https://securityintelligence.com/beta-bot-phish/)

- [http://www.slideshare.net/securityxploded/dissecting-betabot](http://www.slideshare.net/securityxploded/dissecting-betabot)

## Replies
