实验3宏病毒.docx
《实验3宏病毒.docx》由会员分享,可在线阅读,更多相关《实验3宏病毒.docx(12页珍藏版)》请在冰豆网上搜索。
实验3宏病毒
XI`ANTECHNOLOGICALUNIVERSITY
实验报告
实验课程名称宏病毒
专业:
信息对抗技术
班级:
130609
姓名:
李佩隆
学号:
130609105
实验学时:
12学时
指导教师:
曹子建
成绩:
2016年3月28日
一.实验目的
1.理解Word宏病毒的感染方式
2.理解Word宏病毒的工作原理
3.掌握Word宏病毒的杀毒方法
二.实验原理
Word的文件建立是通过模板来创建的,模板是为了形成最终文档而提供的特殊文档,模板可以包括以下几个元素:
菜单、宏、格式(如备忘录)等。
模板是文本、图形和格式编排的蓝图,对于某一类型的所有文档来说,文本、图像和格式编排都是类似的。
Word提供了几种常见文档类型的模板,如备忘录、报告和商务信件。
你可以直接使用模板来创建新文档,或者加以修改,也可以创建自己的模板。
一般情况下,Word自动将新文档基于缺省的公用模板Normal.dot。
由此可以看出,模板在建立整个文档中起的作用是作为基类,文档继承模板的属性,包括宏、菜单、格式等。
另外,Word还提供强大的宏功能。
宏是能组织到一起作为一个独立命令使用的一系列Word命令,它能使日常工作变得更容易。
在Word启动时,会自动加载Normal.dot模板,以及它们所包含的宏。
您可以为宏指定特殊的名称,使其变为自动宏,以便在执行某一操作时,如:
启动Word或打开文档,就自动执行具有特殊命名的宏。
同其他宏一样,你可以将自动宏定义在一个共用模板上,也可以将其定义在一个特定模板上。
宏病毒主要寄生在以下3个宏中:
AutoOpen、AutoNew、AutoClose。
带病毒文档打开时,将病毒传染给Normal.dot公用模板中,再由公用模板传染给所有其它正常的文档。
二.MothersDayVirus病毒感染机制
MothersDayVirus宏病毒感染Word文档和Normal.dot文档。
被感染的Word文档打开时或关闭时会首先弹出一个对话框,对话框关闭后再将控制权转移给正常的Word文档执行。
MothersDayVirus使用Document_Open宏(文档打开时执行)感染Normal.dot,使用AutoClose自动宏感染其它文档。
MothersDayVirus病毒执行流程如下:
(1)判断当前文档和Normal.dot是否感染;
(2)如果Normal.dot未被感染,清空Normal.dot,并将病毒复制到Normal.dot,同时将宏重命名为AutoClose;
(3)如果当前文档未被感染,清空当前文档宏命令,并将病毒复制到当前文档,同时将宏重命名为Document_Open;
(4)禁用Word的宏编辑功能;
(5)添加自动保存功能;
(6)病毒发作执行的操作(弹出对话框);
(7)返回到程序正常路径执行。
三.Microsoftword对象
Application对象表示MicrosoftOfficeWord2003应用程序本身。
每次编写代码时,都应从Application对象开始。
可以从Application对象访问Word公开的所有其他对象和集合,以及Application对象自身的属性和方法。
引用Application对象后,就可以使用其方法和属性。
在用户启动一个Word时段的同时,也创建了一个Application对象。
用户可以使用Application对象的属性或方法来控制或返回应用程序范围内的特性、控制应用程序窗口的外观或者调整Word对象模型的其他方面。
可以使用Application属性来返回WordApplication对象。
以下的示例从视图状态切换到打印预览状态。
Application对象的一些属性控制着应用程序的外观。
例如,如果DisplayStatusBar属性为True,那么状态栏是可见的,如果WindowState属性值为wdWindowStateMaximize,那么应用程序窗口处于最大化状态。
以下的示例设置了屏幕上应用程序窗口的大小。
Application对象的属性也可以访问处于对象层次中较低级的对象,比如Windows集合(代表了当前所有打开的窗口)和Documents集合(代表了当前所有打开的文档)。
用户可以使用属性,有时候也叫做访问者,从对象层次中最高一级的Application对象向下访问到较低级的对象(Document对象、Window对象、Selection对象等等)。
可以使用以下两个示例之一来打开MyDoc.doc。
因为Document属性是共用的,所以Application属性是可选的。
共用属性和方法无需Application对象限定符。
要在“对象浏览器”中浏览共用属性和方法的列表,可以在“类别”栏中单击“<共用>”。
共用项就会列在“成员”栏中。
注释Option对象包含了控制Word共用行为的一些属性。
许多Option对象的属性对应于Option对话框中的各项(Tools菜单)。
使用Application对象的Option属性可以返回Option对象。
以下的示例设置了三个应用程序范围内的选项(因为Option属性是共用的,所以在本示例中无需Application属性)。
(1)运用Document对象。
当用户在Word中打开或创建一个文件的同时,也创建了一个Document对象。
用户可以使用Document对象或Documents集合的属性或方法来打开、创建、保存、激活或者关闭文件。
(2)返回Document对象。
用户可以使用语法Documents(index)来返回作为一个Document对象的任何打开的文档,在这里index是该文档的名字或索引号。
(3)打开文档。
要打开一个已经存在的文档,可以使用Open方法。
Open方法应用于通过Document属性返回的Documents集合。
以下的示例打开了文件Test.doc(从当前文件夹)并且启动了更改跟踪。
注意到在上例中Open方法的返回值是一个Document对象,该对象表示刚被打开的文档。
在此示例中的文件名不包含路径;因此,是假定了该文件在当前的文件夹中。
但这会导致出现一个运行时错误,因为一旦用户创建了与当前文件夹不同的文件夹,VisualBasic就再也找不到该文件了。
但是,用户可以通过指明完整的路径,就如同下表所示的那样,来确保打开正确的文件。
(4)关闭文档。
要关闭一个文档,可以对Document对象应用Close方法。
以下的示例关闭了名为“Sales.doc”的文档。
如果对文档进行过修改,Word会显示出一条消息来询问用户是否要保存所进行的修改。
用户可以随SaveChanges参数使用wdDoNotSaveChanges或wdSaveChanges常量来使该提示不再出现。
以下的示例保存并且关闭了Sales.doc。
要关闭所有已打开的文档,可以对Documents集合应用Close方法。
以下的示例没有保存修改就关闭了所有的文档。
(5)向文档添加对象。
可以使用随着能在Document对象中访问的集合对象的Add方法来向文档添加诸如脚注、备注或表格这样的对象。
例如,以下命令在myRange变量(myRange是一个包含了一个Range对象的对象变量)所指定的位置上添加了一张3x3的表格。
以下的示例在myRange变量所指定的位置上添加了一个脚注。
要获得支持Add方法的集合对象列表,请参阅“帮助”中的“Add方法”。
(6)修改Word命令。
在“工具”菜单中,用鼠标指向“宏”,然后单击“宏的位置”。
在“宏的位置”一栏中,单击“Word命令”。
在“宏名”一栏中,选中要修改的Word命令(例如,)。
在“宏的位置”一栏中,选择要保存宏的模板或文档的位置。
例如,单击Normal.dot(共用模板)来创建一个共用宏(命令将会自动地对所有文档进行修改)。
单击“创建”打开VisualBasic编辑器,会显示出一个模块,该模块包含有一个与刚才被选中的命令同名的新过程。
如果选中了命令,那么就出现宏。
(7)保存活动文档或模板。
用户可以添加附加的命令或删除已有的ActiveDocument.Save命令。
命令每次运行时,宏都将Word命令来执行。
要恢复原来的命令,需要更改宏的名字或删除它。
此外,用户还可以通过创建与Word命令(例如,)同名的代码模块来用一个名为“Main”的子例程替换一条Word命令。
(8)Document事件。
当用户打开或关闭一个已经存在的文档时,或者用户在新建一个文档时,就发生了文档事件,事件描述如下:
当关闭一个文档时发生Close事件。
当创建一个基于模板的新文档时发生New事件。
当打开一个文档时发生Open事件。
一个文档事件过程的范围取决于它保存的位置。
如果在一个文档中保存Open或Close事件过程,那么该过程仅当用户关闭或打开该文档时才发生;如果在一个模板中保存Open或Close事件,那么当打开或关闭基于该模板的文档或该模板本身时,该过程才发生。
一个新事件过程必须保存在模板中;一个保存在文档中新事件过程决不会运行,因为文档只能基于模板来创建。
四.使用VBA、VBS创建杀毒宏
1.使用VBA杀毒
通过宏的VBA代码恢复被病毒篡改的设置,然后删除病毒宏和杀毒宏本身。
首先查看一下MothersDay病毒的ATTACK部分。
在病毒体被注入到文档中之后,MothersDay病毒将设置病毒感染标记,将Microsoftword对象名称“ThisDocument”改为“MothersDay”。
我们要恢复这些设置,只要创建一个杀毒宏并将上述代码中被置为“False”的值都改为“True”并将Microsoftword对象名称改回“ThisDocument”即可,恢复设置后再将病毒宏和杀毒宏一起删除就可以去除打开或关闭被感染的文档时弹出消息“计算机已感染母亲节病毒”。
在删除病毒宏时,要分别删除模板和当前活动文档中的病毒宏代码。
在对文档进行杀毒后,对文档进行保存。
总结杀毒宏的基本结构为:
(1)恢复设置。
(2)删除模板中的病毒。
(3)删除活动文档中的病毒。
(4)保存文档。
杀毒宏代码编写完成后,添加至病毒宏末尾,然后运行此病毒宏即可将MothersDay病毒删除。
2.使用VBS杀毒
使用VBS脚本语言根据病毒感染标记判断文档是否被感染,若感染病毒则向此文档中写入杀毒宏并运行将病毒清除。
首先将杀毒宏代码存入字符串中,等待被写入。
在写入字符串时要使用一些转义字符如双引号要使用“Chr(34)”来替代,换行符要用“vbCr”替代,字符串之间要使用“&”来连接。
上述代码我们假定杀毒宏的名字是“killvir”,所有字符串都要放入双引号中,“vbCr&_”为换行标志,这样可以使宏代码在VBS脚本中更清晰。
还要注意将宏代码存入字符串时,字符串之间不能有空行或注释。
上述代码被写入Word宏中的效果如下:
创建一个“Word.Application”对象,假定对象名为“app”,打开文档时不可见。
通过“document.open(“路径\文件名”)”方法打开指定文档。
如果有病毒感染标记,则向病毒文档中写入杀毒宏并运行。
其中admacro为存有杀毒宏的字符串。
保存文档、关闭文档并退出Word。
三.实验步骤
一.病毒感染
(1)主机A进入实验平台,点击工具栏中“实验目录”按钮,进入宏病毒实验目录。
双击打开Sufferer1.doc、Sufferer2.doc和Normal.dot模板(位于目录C:
\DocumentsandSettings\Administrator\ApplicationData\Microsoft\Templates下),观察程序未感染病毒时的正常现象,关闭文件。
填写表33-1-1。
「注」默认状态下ApplicationData文件夹是隐藏的。
打开“资源管理器”,依次单击菜单栏“工具”|“文件夹选项”菜单项,进入“查看”选项卡,选中“显示所有文件和文件夹”,单击“确定”按钮,显示隐藏文件。
(2)主机A打开实验目录中的MothersDayVirus.doc,然后关闭文件。
此时病毒已感染到Normal.dot模板上。
填写表33-1-1。
(3)主机A打开Sufferer1.doc,然后关闭文件,此时病毒感染到Sufferer1.doc上,观察关闭文档时的现象。
填写表33-1-1。
二.病毒的传播
「注」在操作此步骤时不能打开其它word文档,否则实验不会成功。
(1)主机B打开实验目录下的Sufferer1.doc和Sufferer2.doc,观察程序未感染病毒时的正常现象,然后关闭文件。
(2)主机A将已感染病毒的Sufferer1.doc文件作为邮件附件发送给主机B。
(3)主机B接收此邮件,并将附件保存在宏病毒实验目录下,替换原来的Sufferer1.doc,打开此附件(Sufferer1.doc),然后关闭。
此时病毒感染到主机模板Normal.dot上。
(4)主机B打开Sufferer2.doc”,然后关闭。
此时病毒已经感染到Sufferer2.doc上,观察关闭文档时的现象。
三.分析被感染文件
(1)主机A、主机B都打开Sufferer2.doc,然后关闭并再次打开,使用快捷键“Alt+F11”打开VisualBasic编辑器。
(2)在VisualBasic编辑器的“工程”视图中打开“Normal\MicrosoftWord对象\MothersDay”和“Project(Sufferer2)\MicrosoftWord对象\MothersDay”,查看病毒源码。
(3)分析两份代码,理解MothersDayVirus的工作过程,关闭Sufferer2.doc。
两份文件代码的第一行是否相同?
代码第一行代表什么意义?
答:
不相同:
一个打开文件,一个关闭文件
病毒代码感染模板和当前活动文档时病毒宏名分别是什么?
答:
autoclose和autoopen
模板和当前活动文档中的病毒宏分别在什么时候运行?
答:
模板在打开文件的时候运行;第一次打开关闭后,第二次打开。
当模板文件被感染后,为什么无毒文件第一次打开时没有病毒提示关闭时有病毒提示,而第二次打开和关闭时都有病毒提示?
答:
因为第一个没有感染病毒:
第二个执行了病毒代码。
(学习的目的是增长知识,提高能力,相信一分耕耘一分收获,努力就一定可以获得应有的回报)