博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
针对中亚地区政府部门的攻击:通过Office漏洞传播新型Hawkball后门
阅读量:4172 次
发布时间:2019-05-26

本文共 4936 字,大约阅读时间需要 16 分钟。

一、概述

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

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

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

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

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

Shellcode解密例程:

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

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

Payload作为Word插件被投放

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

二、技术细节

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

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

/
 
:
:
\t
\t
\n

例如:

05/22 07:29:17 4          0

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

日志文件的字符串格式:

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

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

配置解密例程:

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

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

05/22 07:49:48 149.28.182.78.

2.1 创建互斥锁

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

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

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

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

互斥锁创建:

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

在创建互斥锁后,恶意软件会在%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请求。

网络请求

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

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

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

GET请求参数的组成部分:

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

GET请求参数具体如下:

T:初始化设置为0;

S:初始化设置为0;

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

k:GetTickCount()的结果。

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

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

第二个GET请求:

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

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

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

GET请求参数具体如下:

E:初始化设置为0;

T:初始化设置为0;

K:GetTickCount()的结果。

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

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

函数表:

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

下面列出了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"GetComputerNameAGetUserNameAGethostbyname and inet_ntoaGetACPGetOEMPCGetCurrentProcess and IsWow64Process

系统信息:

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

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

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

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

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

POST请求:

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

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

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

E:初始化设置为0;

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

K:GetTickCount()的结果。

2.4 创建进程

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

命令创建进程:

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

2.5 删除文件

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

删除文件操作:

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

2.6 获取目录信息

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

· FindFirstFileW

· FindNextFileW

· FileTimeToLocalFileTime

· FiletimeToSystemTime

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

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

2.7 获取磁盘信息

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

检索驱动器空间:

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

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

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

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

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

三、反调试技巧

3.1 使用PEB进行调试器检测

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

从PEB检索值:

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

3.2 NtQueryInformationProcess

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

将值0x7传递给ProcessInformationClass。

ProcessDebugPort验证:

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

将值0x1E传递给ProcessInformationClass。

ProcessDebugFlags验证:

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

将值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

防御方式:阻断

转载地址:http://uncai.baihongyu.com/

你可能感兴趣的文章
SPI Nor Flash
查看>>
ARM Linux BenchMark
查看>>
完整精确导入Kernel与Uboot参与编译了的代码到Source Insight,Understand, SlickEdit
查看>>
Freescale IMX6 Android (5): APP通过JNI控制LED
查看>>
PPT分享: Linux启动流程 关于initrd与initramfs的区分及其发展历程
查看>>
Freescale IMX6 Android (7): Android启动动画死循环 Home界面不出来与pid XXX exit 可能的原因汇总
查看>>
Yocto i.MX6 (TQIMX6) (01) : 3.14.28内核的适配
查看>>
Yocto tips (6): Yocto中如何共享已经下载的文件
查看>>
Yocto tips (1): Yocto 编译后文件放在了哪里 输出文件位置
查看>>
Yocto tips (2): Yocto Linux内核编译目录在哪?
查看>>
Yocto tips (3): Yocto 如何重新编译Linux内核与dtb,并放到deploy目录?
查看>>
Yocto tips (4): Yocto 如何确定(找到)一个包的名字
查看>>
start kernel 之后没有任何输出与uboot无法将bootargs传入内核的调查方法与解决之道
查看>>
Yocto tips (5): Yocto如何更改source code的下载与git clone地址
查看>>
Yocto tips (7): Yocto Bitbake的clean与cleanall以及cleansstate的区别
查看>>
Yocto tips (19): Yocto SDK Toolchian的使用
查看>>
Yocto i.MX6 (TQIMX6) (04) : 使用mjpg-streamer做一个WebCam Server
查看>>
Nexus 7 Cyanogenmod OS Compile and errors
查看>>
Yocto tips (20): Yocto中qemu模拟器的使用,以zynq Cortex-A9为例
查看>>
打造嵌入式ARM Linux防火墙:1. iptables基础
查看>>