计算机病毒与入侵检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大连理工大学
本科实验报告
课程名称:计算机病毒与入侵检测
学院(系)软件学院
专业:网络安全
2011年 5 月10 日
本练习由单人为一组进行。
首先使用“快照X”恢复Windows系统环境。
一.验证利用OllyDBG修改病毒感染程序
(1)进入实验平台,单击工具栏“实验目录”按钮,进入文件型病毒实验目录。新建文件夹“text”,将文件夹“hei”下的hei0.exe(未感染病毒的可执行程序)复制到text目录中。点击工具栏“LaborDayVirus”按钮,将目录中的LaborDayVirus.exe也复制到text目录中。将系统时间调整为5月1日,双击text目录下LaborDayVirus.exe感染hei0.exe文件,观察hei0.exe感染病毒前后的大小变化。
(2)单击工具栏“OllyDBG”按钮启动ollyDbg1.10,单击文件菜单中的“打开”项,选择要修复的hei0.exe。由于病毒修改了原程序的入口点,因此会有程序入口点超出代码范围的提示,如图10-2-1所示。
图10-2-1 入口点警告提示
单击“确定”按钮继续,程序会停在病毒修改后的程序入口点(hei0.exe的入口点为
0x00403200)上,在代码中找到最后一个jmp指令处(病毒感染完成后将跳转回原程序),按
F2设置断点,按F9运行,程序会在刚设置的jmp断点上中断,查看EAX寄存器的值(EAX=0x401000注意上面提到的断点,下面还会用到),按F7单步执行到下一条指令地址,点选鼠标右键或选择“插件”菜单项,选择菜单中的用ollyDump脱壳调试进程,选中重建输入表方式1,方式2各脱壳一次,分别保存为1.exe、2.exe。测试两个程序是否还具有病毒的传染特性
____________________?
「注」由于重建输入表的方式不同,可能造成某一种导出方式导出的文件无法正常运行,在实验中可以两种方式都导出执行文件,选择可以执行的一种方式来清除病毒。
二.病毒感染机制分析
(1)准备一个没有感染病毒的可执行程序和一个感染病毒的可执行程序,将其分别重命名为hei0.ex_,hei.ex_,并复制到一个新的目录下用于调试、对比。
(2)进入实验平台,点击工具栏中的“PE”按钮,使用PE Explorer分别打开hei.ex_和hei0.ex_文件,对比两个文件入口点(OEP--Address of Entry Point)和Image Base并分别记录。
点击“View”菜单中的“Section Headers”进入Section Headers页面,比对Section Header的数据信息并记录到下面表格。
由于一般文件型病毒只有代码段,数据和代码都存在一起。所以可以断定hei.ex_
的.data段多出的数据即为病毒代码和数据。
(3)进入实验平台,单击工具栏中“UE”按钮,打开Ultra Editor,选择“文件”菜单中的“比较文件”功能对hei0.ex_和hei.ex_进行二进制比对,可以发现在hei.ex_文件的
0xa00处开始的数据块为存储于.data节的病毒代码。
「注」该段数据在.data节是因为 hei0.ex_和hei.ex_的.data节都开始于各自文件偏移的Point to Raw Data处。这段数据是病毒代码是因为0xa00 - 0x800 + 0x43000 = 0x43200(感染病毒文件hei.ex_ OEP的虚地址(VA))。
(4)使用Ultra Editor打开hei.ex_定位光标到hei.ex_的.data块的Point to Raw Data 位置,并以16进制形式查找hei0.ex_的入口点(注意字节顺序),将查找到的数据的文件偏移记录__________。计算该偏移的保护模式内存虚拟地址:____________________。
(5)定位上面例子中hei.exe的jmp断点,在jmp指令上面会发现如下的汇编代码。
0x40481c在病毒代码之后为被加载到内存的病毒数据的存储区,0x1000为
hei0.exe OEP的RVA 0x1000在反汇编代码中的表示是0010。
(6)进入实验平台,单击工具栏中的“实验目录”按钮,利用上面的方法分别对实验目录下的1、2、3子目录下的文件进行调试,注意比对感染病毒文件和原文件特征,将各个病毒文件的最后一个跳转指令的目的地址记录到如下表。
(7)通过以上的分析,就可以初步断定,该病毒的感染方式是:_____________________。三.设计专杀工具
参考例程vk.exe源码(位于目录C:\JLCSS\TOOLS\VirusExperiment\Filevirus\下),编写病毒专杀程序,清除laborDayVirus.exe病毒。
通过任务二,了解到LaborDayVirus.exe病毒的感染机制,这里通过所学的知识对病毒进行清除。
(1)查找病毒寄存特征。
入口点在代码节(.text)之外,病毒代码存储于最后一节、且在病毒代码段后的一个双字为原程序代码入口RVA(在.text节范围内)。
文件病毒代码以0xE58BE0FF结尾。
(以上特征是对简化后的病毒特征的总结、实际中的病毒要复杂的多);
(2)查找原程序入口点。
(3)修改程序入口点为原程序入口点。
(4)修改病毒感染的最后一个节表的SizeOfRawData,使之大小变为去掉病毒代码时的大小。
(5)修改PE文件选项头中的SizeOfImage为去掉病毒代码后的大小。
(6)清除病毒代码数据。
(7)保存清除病毒代码后的文件。
思考问题:
1.PE文件中RVA到VA的转换方法?
2.PE文件中RVA到文件偏移的转换方法?
3.文件偏移到RVA的转换方法?
4.PE文件中的标志字段又那些?
5.PE文件中的几个核心结构?
6.PE文件中的几个核心结构的功能?了解个结构成员的功能?
7.文件型病毒的主要特点?
8.简述病毒查杀的基本原理?
答:
1.虚拟地址(V A)= 相对虚拟地址(RV A)+基地址(ImageBase)
2.当前的文件偏移= 属于当前节内的RV A-当前节VirtualAddress + 当前节的
PointerToRawData
3.属于当前节内的RV A =当前的文件偏移+当前节VirtualAddress - 当前节的
PointerToRawData
4. .text:是在编译或汇编结束时产生的一种块,它的内容全是指令代码;
.rdata:是运行期只读数据;
.data:是初始化的数据块;
.idata:包含其他外来DLL的函数及数据信息,即输入表;
.rsrc:包含模块的全部资源,如图标、菜单、位图等。
5.1) IMAGE_DOS_HEADER结构
2) IMAGE_FILE_HEADER结构
3) IMAGE_OPTIONAL_HEADER 结构
4) IMAGE_SECTION_HEADER 结构
5) IMAGE_NT_HEADERS结构
6. 1) IMAGE_DOS_HEADER结构:定义DOS .EXE 文件头
IMAGE_DOS_HEADE成员:
e_magic:DOS下必须为MZ。
e_lfanew:指定PE文件头相对文件起始地址偏移
2) IMAGE_FILE_HEADER结构:定义PE文件信息
IMAGE_FILE_HEADER成员:
Machine:定义当前文件可运行的机型。
NumberOfSections:定义当前文件有几个节。
3) IMAGE_OPTIONAL_HEADER 结构:定义PE文件选项部分信息