5、Word宏病毒清除技术
2月13日,本是国家政府机关和大型企事业单位春节后刚刚上班的日子。谁都没有料到会有一种计算机病毒向他们袭来,这就是“台湾1号”宏病毒,因为这天是13日,该病毒于96年12月13日首次在大陆被发现。
受宏病毒感染的用户有个共同特点就是他们是大量使用Word文档处理器的国家机关。如果说Concept病毒引出了word宏病毒的概念,“台湾1号”便引来了Word宏病毒的发作,引来了人们对Word宏病毒的重视。
5.1Word宏病毒揭密
MicrosoftWord中对宏定义为:“宏就是能组织到一起作为一独立的命令使用的一系列Word命令,它能使日常工作变得更容易。”
Word使用宏语言WordBasic将宏作为一系列指令来编写。
要想搞清楚宏病毒的来龙去脉,必须了解Word宏的知识及WordBasic编程技术。(关于这点请参阅《MicrosoftWord开发工具》一书)
Word宏病毒是一些制作病毒的专业人员利用MICROSOFTWord的开放性即Word中提供的WordBASIC编程接口,专门制作的一个或多个具有病毒特点的宏的集合,这种病毒宏的集合影响到计算机使用,并能通过DOC文档及DOT模板进行自我复制及传播。
★宏病毒的特点
传播极快
Word宏病毒通过DOC文档及DOT模板进行自我复制及传播,而计算机文档是交流最广的文件类型。多年来,人们大多重视保护自己计算机的引导部分和可执行文件不被病毒感染,而对外来的文档文件基本是直接浏览使用,这给Word宏病毒传播带来很多便利。特别是Internet网络的普及,E-mail的大量应用更为Word宏病毒传播铺平道路。
制作、变种方便
Word使用宏语言WordBasic来编写宏指令。宏病毒同样用WordBasic来编写。
目前,世界上的宏病毒原型已有几十种,其变种与日骤增,追究其原因还是Word的开放性所致。现在的Word病毒都是用WordBasic语言所写成,大部分Word病毒宏并没有使用Word提供的Execute—Only处理函数处理,它们仍处于可打开阅读修改状态。
所有用户在Word工具的宏菜单中很方便就可以看到这种宏病毒的全部面目。当然会有“不法之徒”利用掌握的Basic语句把其中病毒激活条件和破坏条件加以改变,立即就生产出了一种新的宏病毒,甚至比原病毒的危害更加严重。
破坏可能性极大
鉴于宏病毒用WordBasic语言编写,WordBasic语言提供了许多系统级底层调用,如直接使用DOS系统命令,调用WindowsAPI,调用DDE、DLL等。这些操作均可能对系统直接构成威胁,而Word在指令安全性完整性上检测能力很弱,破坏系统的指令很容易被执行。宏病毒Nuclear就是破坏操作系统的典型一例。
★宏病毒的兼容性
Word模板(TEMPLATE)是开发Word应用程序的唯一方法。病毒宏也不例外。
模板的不兼容使英文Word中的病毒模板在同一版本中文Word中打不开而自动失效,反之亦然,同时高版本的Word7.0的文档在低版本的Word6.0下是打不开的,这就是为什么宏病毒在中国大陆发现较少的原因。然而,中文Word7.0可以打开英文Word6.0中的宏。所以在Word7.0大量普及后,必然会使许多在英文Word中制作的宏病毒泛滥。“台湾1号”是在台湾中文Word下做的,其模板与大陆中文Word兼容,在大陆中传播很快。
★宏病毒的共性:
宏病毒会感染DOC文档文件和DOT模板文件。
被它感染的DOC文档属性必然会被改为模板而不是文档,而用户在另存文档时,就无法将该文档转换为任何其它方式,而只能用模板方式存盘。这一点在多种文本编辑器需转换文档时是绝对不允许的。
病毒宏的传染通常是Word在打开一个带宏病毒的文档或模板时,激活了病毒宏,病毒宏将自身复制至Word的通用(Normal)模板中,以后在打开或关闭文件时病毒宏就会把病毒复制到该文件中。
大多数宏病毒中含有AutoOpen,AutoClose,AutoNew和AutoExit等自动宏。只有这样,宏病毒才能获得文档(模板)操作控制权。有些宏病毒还通过FileNew,FileOpen,FileSave,FileSaveAs,FileExit等宏控制文件的操作。
病毒宏中必然含有对文档读写操作的宏指令。
宏病毒在DOC文档、DOT模板中是以BFF(BinaryFileFormat)格式存放,这是一种加密压缩格式,每种Word版本格式可能不兼容。
5.2Word现毒的表现
★例1Nuclear宏病毒:
这是一个对操作系统文件和打印输出有破坏功能的宏病毒。
这个宏病毒中包含以下病毒宏:
AutoExec
AutoOpen
DropSuriv
FileExit
FilePrint
FilePrintDefault
FileSaveAs
InsertPayload
Payload
这些宏是只执行(Execute-only)宏。
Nuclear宏病毒造成的破坏现象为:
打开一个染毒文档并打印的时侯,它会在您打印的最后一段加上“STOPALLFRENCHNUCLEARTESTINGINTHEPACIFIC!”,这个现象是在每分钟的55秒—60秒之间操作打印时发生。
如果在每天17:00—18:00之间打开一个染毒文档,Nuclear病毒会将PH33R病毒传染到计算机上,这是个驻留型病毒。
在每年的四月五日,该病毒会将计算机上IO.SYS,MSDOS.SYS文件清零,并且删除C盘根目录上的COMMAND.COM文件。一旦病毒发作,MS-DOS就不可能被引导,计算机将陷入瘫痪。
★例2台湾一号病毒:
台湾一号病毒会在每月的13日影响您正常使用Word文档和编辑器。它包含以下病毒宏:
AutoClose
AutoNew
AutoOpen
这些宏是可被编辑宏。
在病毒宏中含有如下的语句:
IfDay(Now())=13Then...
这条语句与13日有关。
台湾一号病毒造成的危害是:在每月13日,若用户使用Word打开一个带毒的文档(模板)时,病毒会被激发,激发时的现象是:在屏幕正中央弹出一个对话框,该对话框提示用户做一个心算题,如做错,它将会无限制地打开文件,直至Word内存不够,Word出错为止;如心算题做对,会提示用户“什么是巨集病毒(宏病毒)?”,回答是“我就是巨集病毒”,再提示用户:“如何预防巨集病毒?”,回答是“不要看我”。
5.3Word宏病毒发现及清除:
根据宏病毒的传染机制,不难看出宏病毒传染中的特点,所以发现宏病毒可以通过以下步聚进行:
在自己使用的Word中打开工具中的宏菜单,点中通用(Normal)模板,若发现有“AutoOpen”等自动宏,“FileSave”等文件操作宏或一些怪名字的宏,而自己又没有加载特殊模板,这就有可能有病毒了。因为大多数用户的通用(Normal)模板中是没有宏的。
如发现打开一个文档,它未经任何改动,立即就有存盘操作,也有可能是Word带有病毒。
打开以DOC为后缀的文件在另存菜单中只能以模板方式
存盘而此时通用模板中含有宏,也有可能是Word有病毒。
手工清除宏病毒的方法:
打开宏菜单,在通用模板中删除您认为是病毒的宏。
打开带有病毒宏的文档(模板),然后打开宏菜单,在
通用模板和病毒文件名模板中删除您认为是病毒的宏。
保存清洁文档。
特别值得注意的是氏成本Word模板中的病毒在更高版本的Word中才能被发现并清除,英文版Word模板中的病毒还可仍在相应或更高的中文版Word中被发现并清除。
手工清除病毒总是比较烦琐而且不要靠,用杀毒工具自动清除宏病毒是理想的解决办法,方法有两种:
用WordBasic语言以Word模板方式编制杀毒工具,在Word环境中杀毒。
根据WordBFF格式,在Word环境外解剖病毒文档(模板),去掉病毒宏。
方法1因为在Word环境中杀毒,所以杀毒准确,兼容性好。而方法2由于各个版本的WordBFF格式都不完全兼容,每次Word升级它也必须跟着升级,兼容性不好。
目前有些DOS杀毒软件不是采用WordBFF格式去解剖病毒文档(模板),而是简单化的把病毒文档(模板)中的某些特征串填为了零,给用户一个假象杀掉了病毒,而实际上病毒宏无法被去除,杀毒后的文件长度与带病毒时的长度相等,这种做法有三个缺点:
容易将原文档破坏。
很容易漏杀病毒。
要不断地随着Word版本升级和病毒变化而改变程序。
因为每个版本的WordBFF格式不完全一样,所以病毒宏在不同版本的Word中被压缩的格式和存放的位置都不同,另外若文档正文中包含病毒串描述,就会被错杀。
5.4全自动清除宏病毒的工具Word—VRV
Word-VRV是用WordBasic语言以Word模板方式编制的杀毒工具,它在Word环境中杀毒。WORD-VRV由WORDVRV.DOT用于中文版Word中使用,EWORD-VRV.DOT用于英文版Word中使用,README.EXE三个文件组成。
WORD-VRV是个可自升级的Word杀毒器,有下列特点:
可在Word有毒环境下自动检测并清除Word模板中的病毒;
自动检测各有效驱动器及路径下的文档(模板);
有只检测功能;
发现病毒有提示,报警,产生列表;
可以备份带毒文档(模板);
提供使用者自己定义结构,清除新的宏病毒。
WORD-VRV允许用户自我扩允新的宏病毒特征的方法为:用文本编辑器,如:EDIT编辑文件,编辑一个名为WORDVRV.DAT文件(与WORDVRV.DOT在同一目录中)。该文件每行内容包含病毒名、病毒特征宏和病毒的所有宏。格式如下:
<病毒名>{特征宏名::宏中字串},病毒宏1,病毒宏2,...,病毒宏N,例如:
{AAAZA:Global:AAAZFS},AAAZAO,AAAZFS,FileSaveAs,PayLoad,
其中{}中病毒特征宏为在病毒所有宏中选取一个可以代表该病毒特征的宏的名称,“::”之后的特征字串为编辑该特征宏时,其中可以表示该特征宏中的特点的字符串,若该特征宏为只执行宏(EXECUTE—ONLY),则{}中不需要输入两个冒号及其以后的特征串,即其中内容仅仅为特征宏名。另外特征宏在病毒定义行可以有多个,但必须分别用{}组成。
利用WORDVRV的可扩充性,使用者可杀除所有新的宏病毒。