针对中亚地区政府部门的攻击:通过Office漏洞传播新型Hawkball后门

41yf1sh 事件 2019年6月14日发布
Favorite收藏

导语:近期,FireEye Labs观察到针对中亚政府部门的攻击,该攻击利用众所周知的Microsoft Office漏洞CVE-2017-11882和CVE-2018-0802提供新型Hawkball后门。

一、概述

近期,FireEye Labs观察到针对中亚政府部门的攻击,该攻击利用众所周知的Microsoft Office漏洞CVE-2017-11882和CVE-2018-0802提供新型Hawkball后门。

Hawkball是一个后门,攻击者可以利用该后门收集受害者的信息,同时可以提供Payload。Hawkball能够对主机进行信息收集、创建命名管道执行本地Windows命令、终止进程、创建/删除及上传文件、搜索文件、列举驱动器。

下图展示了实际攻击中所使用的诱饵文件。

1.png

诱饵文件doc.rtf(MD5值为:AC0EAC22CE12EAC9EE15CA03646ED70C)包含一个OLE对象,该对象使用公式编辑器将嵌入的Shellcode放在%TEMP%中,名称为“8.t”。这一Shellcode通过EQENDT32.EXE在内存中解密。下图展示了EQENDT32.EXE中所使用的解密机制。

Shellcode解密例程:

2.png

解密后的Shellcode将作为Microsoft Word的插件WLL(MD5值为:D90E45FBF11B5BBDCA945B24D155A4B2),被投放到C:\Users\ADMINI~1\AppData\Roaming\Microsoft\Word\STARTUP目录下(如下图所示)。

Payload作为Word插件被投放:

3.png

二、技术细节

投放的Payload中包含一个DllMain,负责确定样本命令行中是否存在字符串“WORD.EXE”。如果该字符串不存在,则会退出恶意软件。如果该字符串存在,恶意软件将使用WinExec()函数执行命令RunDll32.exe < C:\Users\ADMINI~1\AppData\Roaming\Microsoft\Word\STARTUP\hh14980443.wll, DllEntry>。

DllEntry是Payload的唯一导出函数。恶意软件在%TEMP%中创建一个名为c3E57B.tmp的日志文件。恶意软件每次会以下面的格式写入当前本地时间与两个硬编码值:

<Month int>/<Date int> <Hours>:<Minutes>:<Seconds>\t<Hardcoded Digit>\t<Hardcoded Digit>\n

例如:

05/22 07:29:17 4          0

该日志文件每隔15秒写入一次。最后两位数字是硬编码的,并且会作为参数传递给函数(如下图所示)。

日志文件的字符串格式:

4.png

加密文件包含0x78字节的配置文件。这部分数据内容使用0xD9 XOR操作解密数据。解密后的数据包含命令和控制(C2)信息以及恶意软件初始化期间使用的互斥锁字符串。下图展示了解密例程以及解密的配置文件。

配置解密例程:

5.png

配置文件中的IP地址将使用本地时间写入到%TEMP%/3E57B.tmp。例如:

05/22 07:49:48 149.28.182.78.

2.1 创建互斥锁

恶意软件会创建一个互斥锁,以防止多个实例的执行。在命名互斥锁之前,恶意软件会首先确定它是否作为系统配置文件运行(如下图所示)。要验证恶意软件是否解析了%APPDATA%的环境变量,它会检查字符串config/systemprofile。

验证恶意软件是否作为系统配置文件运行:

6.png

如果恶意软件作为系统配置文件运行,则解密的配置文件中的字符串d0c会用于创建互斥锁。否则,字符串_cu将附加到d0c,互斥锁名称为d0c_cu(如下图所示)。

互斥锁创建:

7.png

在创建互斥锁后,恶意软件会在%TEMP%的日志文件中写入另一个条目,其值为32和0。

2.2 网络通信

Hawkball是一个后门程序,它使用HTTP与单个硬编码的C2服务器进行通信。C2服务器是从解密的配置文件中获得的,如下图所示。网络请求由硬编码后的值组成,例如User-Agent。恶意软件还会设置请求标头的其他字段,例如:

· Content-Length: <content_length>

· Cache-Control: no-cache

· Connection: close

恶意软件使用443端口上的HTTP协议向其C2 IP地址发送HTTP GET请求。下图展现了通过网络发送的GET请求。

网络请求:

8.png

网络请求由四个参数组成,格式如下图所示:

Format = "?t=%d&&s=%d&&p=%s&&k=%d"

GET请求参数的组成部分:

9.png

GET请求参数具体如下:

T:初始化设置为0;

S:初始化设置为0;

P:来自解密配置的字符串,位于0x68;

k:GetTickCount()的结果。

如果返回的响应为200,那么恶意软件会发送另一个GET请求(如下图所示),其中包含以下参数(如下图所示)。

Format = "?e=%d&&t=%d&&k=%d"

第二个GET请求:

10.png

第二个GET请求参数的组成部分:

11.png

GET请求参数具体如下:

E:初始化设置为0;

T:初始化设置为0;

K:GetTickCount()的结果。

如果返回的响应为200,那么恶意软件将会检查Set-Cookie字段。该字段会提供命令ID(Command ID)。如上方第二个GET请求的截图所示,字段Set-Cookie的响应ID=17。

该命令ID将作为恶意软件创建的函数表的索引。下图展示了将要执行的后门命令对应的虚拟函数表的创建过程。

函数表:

12.png

下面列出了Hawkball所支持的命令:

0:将URI查询字符串设置为某个值;

16:未知;

17:收集系统信息;

18:使用CreateProcess执行提供的参数;

19:使用CreateProcess执行提供的参数,并上传输出结果;

20:创建cmd.exe的反向Shell,执行命令并上传输出结果;

21:关闭反向Shell;

22:未知;

23:关闭反向Shell;

48:下载文件;

64:获取逻辑驱动器C-Z的驱动器大小和可用空间大小;

65:检索有关特定目录的信息;

66:删除文件;

67:移动文件。

2.3 收集系统信息

命令ID 17索引至收集系统信息,并将其发送到C2服务器的功能。系统的信息包括:

· 计算机名称;

· 用户名;

· IP地址;

· 活动代码页;

· OEM页面;

· 操作系统版本;

· 系统架构细节(32位或64位);

· 字符串与解密的配置文件的0x68偏移量。

恶意软件使用以下WINAPI调用,从受害者计算机中检索上述信息:

Format = "%s;%s;%s;%d;%d;%s;%s %dbit"
GetComputerNameA
GetUserNameA
Gethostbyname and inet_ntoa
GetACP
GetOEMPC
GetCurrentProcess and IsWow64Process

系统信息:

13.png

收集到的系统信息,会使用分号分隔不同字段,并连接到一起,如下所示:

WIN732BIT-L-0;Administrator;10.128.62.115;1252;437;d0c;Windows 7 32bit

我们使用XOR操作来加密此信息。来自第二个GET请求的响应将作为加密密钥。如此前截图所示,第二个GET请求以4字节的XOR键值响应。在这种情况下,密钥为0xE5044C18。

在加密后,系统信息将会在HTTP POST的正文中发送。下图展示了使用POST请求通过网络发送的数据。

POST请求:

14.png

在请求标头中,字段Cookie使用发送响应的命令的命令ID进行设置。如上图所示,Cookie字段设置为ID=17,这是对前一个命令的响应。在收到的响应中,会在字段Set-Cookie中返回下一个命令。

下表展示了此POST请求的参数。

E:初始化设置为0;

T:XOR键值的十进制形式(采用小端字节顺序);

K:GetTickCount()的结果。

2.4 创建进程

恶意软件使用指定的参数创建进程,下图展示了该操作。

命令创建进程:

15.png

2.5 删除文件

恶意软件将删除指定参数中的对应文件,下图展示了该操作。

删除文件操作:

16.png

2.6 获取目录信息

恶意软件使用以下WINAPI调用,获取所指定目录地址的详细信息:

· FindFirstFileW

· FindNextFileW

· FileTimeToLocalFileTime

· FiletimeToSystemTime

下图展示了用于收集信息的API:

17.png

2.7 获取磁盘信息

该命令将检索驱动器C到Z盘的驱动器信息,以及每个驱动器的可用磁盘空间。

检索驱动器空间:

18.png

每个驱动器的信息将以如下格式存储:

Format = "%d+%d+%d+%d;"

例如:“8+512+6460870+16751103;”。

将所有可用驱动器的信息组合在一起之后,将会采用类似于“收集系统信息”的操作发送到服务器。

三、反调试技巧

3.1 使用PEB进行调试器检测

恶意软件使用PEB查询标志BeingDebugged的值,以检查进程是否正在被调试。

从PEB检索值:

19.png

3.2 NtQueryInformationProcess

恶意软件使用NtQueryInformationProcess API来检测它是否正在被调试。下面的标志将会被使用:

将值0x7传递给ProcessInformationClass。

ProcessDebugPort验证:

20.png

将值0x1E传递给ProcessInformationClass。

ProcessDebugFlags验证:

21.png

将值0x1F传递给ProcessInformationClass。

ProcessDebugObject:

四、总结

Hawkball是一个新型的后门程序,该后门为攻击者提供了可以从受害者计算机中收集信息并将新的Payload传递给目标的功能。在撰写本文时,我们的多向量执行(MVX)引擎可以识别并阻止此威胁。我们建议所有行业保持警惕,因为开展恶意活动的威胁参与者可能会扩大他们所针对的目标范围。

五、IoC

5.1 文件名及哈希值

Doc.rtf(MD5:AC0EAC22CE12EAC9EE15CA03646ED70C)

hh14980443.wll(MD5:D90E45FBF11B5BBDCA945B24D155A4B2)

5.2 网络通信

149.28.182[.]78:443

149.28.182[.]78:80

http://149.28.182[.]78/?t=0&&s=0&&p=wGH^69&&k=<tick_count>

http://149.28.182[.]78/?e=0&&t=0&&k=<tick_count>

http://149.28.182[.]78/?e=0&&t=<int_xor_key>&&k=<tick_count>

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)

六、检测

MD5:AC0EAC22CE12EAC9EE15CA03646ED70C

适用检测产品:邮件安全、网络安全、终端安全

检测名称:FE_Exploit_RTF_EQGEN_7、Exploit.Generic.MVX

防御方式:阻断   

MD5::D90E45FBF11B5BBDCA945B24D155A4B2

适用检测产品:邮件安全、网络安全、终端安全

检测名称:Malware.Binary.Dll、FE_APT_Backdoor_Win32_HawkBall_1、APT.Backdoor.Win.HawkBall

防御方式:阻断

本文翻译自:https://www.fireeye.com/blog/threat-research/2019/06/government-in-central-asia-targeted-with-hawkball-backdoor.htm如若转载,请注明原文地址: https://www.4hou.com/other/18532.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论