首页 > 编程知识 正文

物理探究实验的六个步骤(生物探究实验的六个步骤)

时间:2023-05-03 14:00:13 阅读:66739 作者:2642

【实验名称】PE病毒分析

【实验目的】

1 .属性PE文件结构

2 .熟悉PE编辑显示工具,熟悉PE文件格式

3 .掌握文件型病毒发现方法和PE病毒感染原理【实验原理】

1.PE文件的一般字段说明:

a )文件偏移地址(FileOffset ):PE文件存储在磁盘上时,各数据相对于文件起始地址的偏移。 也就是说,UltraEdit打开文件时显示的地址。

. text段中第一个数据的文件偏移地址为0x400

b )虚拟地址(虚拟地址,VA ) :将PE文件加载到内存中后每个数据的地址。

. text段中第一个数据的VA为0x0040 1000

c )基地址(ImageBase ) :加载内存的起始地址。 PE文件由可选的标头定义。

可执行文件的ImageBase:0x0040 0000

d )相对虚拟地址(Relative Virtual Address,RVA ) :虚拟地址与基地址的偏移。

. text段中第一个数据的RVA为0x0000 1000

e )文件偏移地址和虚拟地址的转换。 以图2-1-3为例,计算. rdata段文件偏移地址FileOffset分别对应于0x630的虚拟地址。

相对于. rdata段的文件偏移值为30

. rdata段内存中的第一个地址为0x00402000,因此与FileOffset相对应的虚拟地址为0x00402030

2.PE文件数据结构的几个字段

a )入口点地址(oep ) :程序执行的第一行代码的内存地址。 PE文件由可选的标头定义。

一般文件的OEP是. text段的地址:0x00401000

b ) ImageBase )程序加载到内存中的起始地址。 PE文件由可选的标头定义。

c ) SizeofImage )程序加载内存占用的内存大小。 PE文件由可选的标头定义。

d ) Section Header某些字段:data段为例

i.Virtual Size:data段在内存中的大小

ii.Virtual Address:data段的虚拟地址,内存中的地址

iii.Size of Raw data:data段在文件中的大小

iv.Point to Raw data:data段文件中的偏移地址

【实验内容】

(1)完成实验步骤。

[1].Filemon等软件监视laborDayVirus病毒的行为,观察文件、注册表和进程的变化

1 ) FileMon和RegMon接口设置:

a )“字体”(Option-Font ) (选项-字体) )。

b )禁止自动滚动

c )监视前清除画面记录

2 ) FileMon和RegMon过滤器设置

a )单击" Filter "按钮,可以设置和显示过滤规则

b )新的过滤规则:

I .在“排除:”选项之后添加不需要监视的进程: vmtoolsd.exe; ctfmon.exe; TPAutoconnect.exe; Lsass.exe; FileMon.exe; Regmon.exe; tcpview.exe; procexp.exe; 系统等。

ii .设置日志监视方式:选择“日志写入”“日志成功”

[2] .【实验步骤】

一.病毒感染程序

)1)创建新文件夹" text ",并将无毒文件" hei0.txt "复制到" text "文件夹。 解压缩病毒文件" LaborDayVirus.rar "后,将" LaborDayVirus.exe "复制到" text "文件夹中。

)2)将系统时间调整为5月1日,双击" text "文件夹中的" LaborDayVirus.exe "获取染毒文件hei0.exe。

)3)记录hei0.exe感染前后的文件大小、程序进入点(OEP )、) )可以使用PEiD或PE explorer )。

感染病毒前:

大小: 2.50KB EOP:00001000

感染病毒后:

大小: 8.50KB EOP:00003200二、为染毒工艺脱壳

问题1 :感染病毒的文件hei0.exe是否添加了外壳?

*程序shell判定条件1 )程序入口点不在第一部分(.text section )是程序是否添加shell的条件之一。

2 )查看PEiD、EP section,如果有非标准section名称,也是添加shell的判断条件之一。

3 )由上图所示,第一个WBC包section的确定条件之一是存储器大小V.size为空而文件大小R.size为空。

)1)在OD下打开hei0.exe,显示以下窗口

想想看:为什么会出现这个窗口?

提示:请在PE explorer中查看此文件,并观察sizeofcode字段、sizeofImage字段和输入点地址(oep )字段中的值

>

(2)找到OEP(0x00403200),留意OEP后面所有的跳转方向向上的jmp。

在0x00404818,按F2设置断点,随后按F9运行,程序在会断点0x00404818上中断,观察跳转对象EAX的值为( 00401000)。

问题2:为什么要跳转到EAX的值,EAX的含义?

EAX的含义是.text段的入口地址,即源程序的OEP。执行完病毒代码后,跳转到源程序的OEP,为了执行源程序。

(3)执行实验步骤一(2)
注:如何在被感染的程序中找到原程序的OEP。
OD打开染毒的hei0.exe,跳转方向向上的跨节长跳(.data section到.text section),可以考虑为——由病毒代码返回到原始程序的OEP。

三、病毒感染机制分析
(1)准备一个无毒的可执行程序“hei0.exe”和染毒的可执行程序“hei.exe”,复制到新的文件夹“text1”中。使用PE Explorer分别打开“hei0.exe”和“hei.exe”,对比两个文件的入口点和ImageBase,并记录如下。

OEPImageBasehei0.exe0040100000400000hhei.exe0040320000400000h


(2)点击“View”菜单中的“Section Headers”,对比“hei0.exe”和“hei.exe”的section Header的数据,并记录如下:

.data的段头数据结构Visual sizeVisual addressSize of raw datapoint of raw datahei0.exe的.data00000027h00403000h00000200h00000800hhei.exe的.data00001A00h00403000h00001A00h00000800h

问题3:感染文件在磁盘存放时,病毒代码的相对地址,导入内存中,病毒代码的虚拟地址?
(1)UE文件的比较功能打开UltraEditor,选择“文件”菜单中的“比较文件”功能对“hei0.exe”和“hei.exe”进行二进制比对,可以发现“hei.exe”的0Xa00处开始的数据块为存储于与.data节的病毒代码。

注:该段数据在.data节是因为“hei0.exe”和“hei.exe”的.data节都开始于各自文件便宜的Point to Raw Data 处。这段数据是病毒代码是因为0xa00-0x800+0x403000=0x403200(感染病毒文件hei.exe OEP的虚地址(VA))。
(2)使用UltraEditor打开“hei.exe”定位光标到“hei.exe”的.data块的Point to Raw Data 处,并以16进制形式查找“hei0.exe”的入口点(注意字节顺序),将查找到的数据的文件偏移记录是 00002010h ,该偏移的保护模式内存虚拟地址是 00404810h 。

(3)定位“hei.exe”的jmp断点,在jmp指令上面会发现如下的汇编代码:

0x40481c在病毒代码之后,为被加载到内存的病毒数据的存储区,0x1000为“hei0.exe”OEP的RVA,0x1000在反汇编代码中的表示是0010.
(4)新建“text2”文件夹,将“LaborDayVirus.exe”病毒和“notepad.exe”“mspaint.exe”文件放在“text2”文件夹中。运行“LaborDayVirus.exe”感染“notepad.exe”“mspaint.exe”,将各个病毒文件最后一个跳转指令的目的地址记录到下表:

文件源文件入口地址感染病毒文件的入口地址感染病毒文件的最后一个跳转目的地址Mspaint.exe01034CF50105380001034CF5Notepad.exe010073A501013000010073A5

(5)通过以上的分析,就可以初步断定,该病毒的感染方式为:ii
提示:病毒的感染方式有三种,分别为
i.添加一个新的段。
ii.将病毒代码附加在最后一个段上。
iii.将病毒代码写入到PE文件的各个段的未用空间。

(2)回答如下问题
a)感染病毒的文件hei0.exe是否加壳?

因为程序入口点不在第一节(.text section),所以文件加壳。

b)LaborDayVirus.exe运行后,内存地址0X00404818的代码为什么要跳转到EAX的值,EAX的含义?

EAX的含义是.text段的入口地址,即源程序的OEP。rxdzc执行完病毒代码后, 跳转至源程序的OEP,执行原来的正常代码。

c)感染文件在磁盘存放时,病毒代码的相对地址,导入内存中,病毒代码的虚拟地址?

在磁盘中,病毒代码的相对地址为0xa00,导入内存后,病毒代码的虚拟地址为0x403200。

d)LaborDayVirus.exe病毒的感染方式为

将病毒代码附加在最后一个段上。

(3)手工恢复染毒文件hei.exe:
a)以二进制形式打开hei.exe,需要修改PE文件“hei.exe”的哪些字段?

PE文件的头部中的入口地址,代码大小 .data 段

b)如何对这些字段进行修改?

1、修改代码入口地址
位于PE文件可选头部IMAGE_OPTIONAL_HEADER结构的AddressOfEntryPoint字段:将00003200改为00001000

2、 修改程序载入内存占用内存大小,位于PE文件可选头部 IMAGE_OPTIONAL_HEADER结构的SizeOfImage
字段:将00004A00改为00004000

3、 修改.data段的物理长度,位于各段头部IMAGE_ SECTION _HEADER结构,
.data的ASCII码是:2E64617461
将PhysicalAddress,即.text段的物理长度从00001A00改为00000027h
将VirtualAddress,即.data段映射到内存中的RVA 00001A00改为0x00000200

4、删除病毒代码:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。