-v :解压缩VBA宏
上面两个参数结合起来用就可以找出宏源码:
oledump.py -s 7 -v invoice_62891.doc
可以看到宏代码被解析出来了。在实际分析时,-s后的参数可以选择a,表示分析所有段的数据,还可以使用‘>’符号
将宏代码数据存储在新文件中,比如
oledump.py -s a -v invoice_62891.doc>1.txt
这样就能把宏代码输出到文件了,即使这个文档是带有密码的
动态调试
接下来说明如何在office自带的宏代码编辑器中调试宏代码
设置断点
按快捷键F9或者在左侧单击可以为当前行设置断点
清除所有断点
按快捷键Ctrl+Shit+F9可以清除所有断点
控制执行流程查看变量
在当前行单击鼠标右键,添加监视,可以查看变量
搜索指定内容
按Ctrl+F可以选择在当前模块或者过程查找指定内容
宏代码混淆解决方案
被混淆的宏代码其实有一种非常取巧的解决方案,纯粹的宏能做到事情实际上是有限的,大多数的宏病毒都是通过解密或下载一个恶意的PE文件,从而利用PE来完成最终的目的。而下载或解密都是通过Shell、WScript.Shell、Application.Run等方式。我们可以直接搜索这些字符串,定位到关键代码的位置。
以这一次的目标样本为例,直接打开文档 按Alt+F11打开宏编辑器,这个病毒同样是有宏密码保护的,怎么绕过去想必大家已经会了吧?
打开之后直接搜索Shell字符,在当前行下断点,F5运行
接下来将变量添加到监视
你会发现病毒调用shell执行一条cmd命令,这个cmd命令就是这个宏病毒的最终目的了,从另一个角度来看,这不仅是一种去混淆的方法,也是一种偷懒的方法
实战分析宏病毒
接下来分析真正分析这个宏病毒,在AutoOpen函数下断 按F5运行
F8单步跟踪,
在跟踪的过程可以右键把表达式添加到监视
一直往下跟踪,你会发现所有的操作都是在拼接字符串,虽然说变量名是经过混淆的,但这丝毫不影响我们的分析
一直单步到这一句的时候,重点来了,通过变量的字符串拼接,程序创建了一个文件系统对象
然后用文件系统对象创建文件 路径为"C:\Users\GuiShou\AppData\Local\Temp\microsoft.pfx",参数True表示覆盖原文件
接下来将这一段看上去似乎乱码的字符串写入到文件
然后拼接一个字符串,我们不需要关心每一部分是什么,只需要将变量添加监视就能直接看到拼接的最终结果
然后调用shell执行这条命令
"cmd /c certutil -decode %TMP%\\microsoft.pfx %TMP%\\microsoft.exe & start %TMP%\\microsoft.exe"
这条命令的含义是调用cmd命令先将Temp目录下的microsoft.pfx文件解密,然后运行microsoft.exe
那么我们先将截取这条命令的前半部分将病毒写入的这个文件进行解密,调用下面这条命令将解密后的文件输出
直接打开解密后的1.txt,MZ开头 很明显这是个PE文件了
那么这个宏病毒的最终目的已经很明显了 输出一个加密的exe文件,利用cmd将其解密后执行
宏病毒的部分已经分析完成了。至于exe的恶意程序不在本节讨论范围之内
powershell病毒分析powershell简介
Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首