防病毒实验报告
姓名:王宝
学号:08103663
班级:信安10-1班
指导教师:朱长征
2013.7
实验一PE结构分析及DOS病毒感染与清除
一、实验目的
1.熟悉PE文件结构
2.掌握DOS系统下.EXE文件病毒感染与清除方法
二、实验要求
1.实验之前认真准备,编写好源程序。
2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3.不断积累程序的调试方法。
三、实验内容
1)手工或编程从user32.dll中获得MessageBoxA的函数地址;1、打开lordPE软件,查找user32.dll,找到如下图:
图 1
2、右击点载入到PE文件编辑器
3、点击目录,查看目录表信息
4、用软件给出的文件位置计算器就可以得到MessageBoxA的一些信息如下:
如此就可以得到MessageBoxA的VA。
又因为,文件中的地址与内存中表示不同,它是用偏移量(File offset)来表示的。
在SoftICE和W32Dasm下显示的地址值是内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。
而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。
所以偏移地址就是物理地址。
这样就得到了MessageBoxA的地址了。
2)查阅资料,结合第2章内容,根据PE结构编写一个小的工具软件,或者用PE Explorer、PEditor、Stud_PE等工具软件查看、分析PE 文件格式。
针对PE文件格式,请思考:Win32病毒感染PE文件,须对该文件作哪些修改;
PE的总体结构如下表所示:
DOS MZ header部分是DOS时代遗留的产物,是PE文件的一个遗传基因,一个Win32程序如果在DOS下也是可以执行,只是提示:“This
program cannot be run in DOS mode.”然后就结束执行,提示执行者,这个程序要在Win32系统下执行。
DOS stub 部分是DOS插桩代码,是DOS下的16位程序代码,只是为了显示上面的提示数据。
这段代码是编译器在程序编译过程中自动添加的。
PE header 是真正的Win32程序的格式头部,其中包括了PE格式的各种信息,指导系统如何装载和执行此程序代码。
Section table(节表)部分是PE代码和数据的结构数据,指示装载系统代码段在哪里,数据段在哪里等。
对于不同的PE文件,设计者可能要求该文件包括不同的数据的Section。
所以有一个Section Table 作为索引。
Section(节)多少可以根据实际情况而不同。
但至少要有一个Section。
如果一个程序连代码都没有,那么他也不能称为可执行代码。
在Section Table后,Section数目的多少是不定的。
由上述可见病毒要如何修改PE文件就需要修改节表,给PE文件增加一个新节,然后在新节中添加病毒所用的代码。
实验二Windows病毒分析与防治
一、实验目的
掌握Windows病毒感染与清除方法
二、实验要求
1.实验之前认真准备,编写好源程序。
2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3.不断积累程序的调试方法。
三、实验内容
1)编程实现Immunity病毒;
2)修复被Immunity感染的host_pe.exe
注意:此时该文件的文件大小是8496字节。
1.将host_pe.exe和Immunity.exe拷贝到同一目录下,并运行Immunity.exe。
Immunity感染
host_pe.exe。
为了便于比较,将其重命名为host_pe2.exe。
2.重复步骤3
3.分析文件感染前后的异同
感染后文件基本信息:
如图所示有五个明显的改变:
(1)文件大小变为12800字节。
注:验证了病毒写入节表的操作,写入病毒代码到新添加的节中。
(2)入口点变为00007000。
注:验证了病毒修改Address Of EntryPoint。
(3)镜像大小变为00008000。
注:验证了病毒更新Size Of Image。
(4)节数增加了一节。
注:验证了病毒添加了一个新节。
(5)可选头部大小变为0248。
比较感染前后节表变化:
感染前:
感染后:
显然感染后的文件多出了一节,病毒代码便写入此节,病毒修改入口点指向此段代码,待运行病毒代码之后再返回HOST继续执行。
7.手工清除Immunity病毒
(1)利用PEditor打开节表查看器,删除病毒代码节。
(2)手工修改被改变的各项数值为初始值,并应用更改,这样文件中插入的病毒代码段便无用了。
(3)彻底清除host_pe2.exe中的垃圾代码,利用重建器重建程序,如图:
四、实验体会
这次实验和实验一使我对PE文件的结构有了一定的了解,在实验的过程中,通过对病毒代码的调试,我掌握了典型PE病毒的基本结构,对关键模块的特点及功能都有了一定的掌握,从而认识到了此类病毒的感染机制和触发条件等,同时在对病毒进行手工清除和对染毒文件修复的过程中,我了解到了PE病毒一般的感染特征和防范方法,这对病毒的防治有着很深远的作用。
实验三蠕虫/木马的分析与防治
一、实验目的
掌握蠕虫/木马感染与清除方法
二、实验要求
1.实验之前认真准备,编写好源程序。
2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。
3.不断积累程序的调试方法。
三、实验内容
1)实现木马远程监视/控制;
2)修复被上述病毒感染的系统
我是利用网络人进行的远程控制。
其实网络人不是完全意义上的病毒,它只是一个远程控制软件。
因为它没有秘密侵入对方主机,而是在对方同意时,登陆相同的账号,才能使用。
由于能力还不够,所以我就按照病毒的思路对它进行操作了。
首先利用QQ工具将网络人被控端发给对方。
如果对方没有点击,则过程失败,需要继续寻找下个目标。
如果对方不小心或是好奇点击,则在被控端安装被控程序。
额,其实一般人不会那么容易中招。
为了节省时间,我在自己的虚拟机中安装了被控端,以方便远程监控、控制。
控制端界面:
被控端设置界面:
主控端控制对方屏幕:
与对方进行文字聊天:
对被控端进行系统控制:
卸载被控端方法:
1)主控端远程卸载,当然让病毒的制造者主动放弃控制自己的主机,
很显然这个概率是非常小的。
2)被控端利用系统资源管理器发现被控的运行状态,然后利用
windows搜索找到被控端安装位置,将其删除。
重新启动,查看木马文件是否还在,如果还在将其加入黑名单,从不启动,然后就等待杀毒软件更新将其杀掉。
四实验体会
经过这次实验,我对木马有了更深一步的理解。
也对木马十分的感兴趣。
希望在今后的防病毒学习中,我可以利用自己的能力去编写一些木马程序,实现木马程序的一些功能。