简单病毒分析及手工查杀

【实验目的】

分析PE文件结构,理解关键字段意义,掌握RVA、VA、FOA地址间转换;分析文件型病毒的原理;了解文件型病毒的发现方法,能利用OD等工具分析PE病毒,并通过手工方式进行病毒查杀;分析病毒专杀工具的基本设计方法。

【系统环境及工具】

WinSR虚拟机、病毒样本、OllyDBG、PE Explorer、UltraEdit32

【实验步骤】

一.验证利用OllyDBG修改病毒感染程序

(1)进入实验目录C:\ExpNIS\AntiVir-Lab\VirusExp\Filevirus。
新建文件夹“text”,将文件夹“hei”下的hei0.exe(未感染病毒的可执行程序)复制到text目录中,将目录C:\ExpNIS\AntiVir-Lab\Virus\LaborDayVirus中的LaborDayVirus.exe也复制到text目录中。将系统时间调整为5月1日,双击text目录下LaborDayVirus.exe感染hei0.exe文件,观察hei0.exe感染病毒前后的大小变化。

感染前:

感染后:

在这里插入图片描述

能发现,感染后hei0.exe文件从3KB变成了9KB

(2)启动ollyDbg1.10,C:\ExpNIS\NetAD-Lab\Tools\RemoteCtrl\OllyDBG ,单击文件菜单中的“打开”项,选择要修复的hei0.exe。由于病毒修改了原程序的入口点,因此会有程序入口点超出代码范围的提示,如图2所示。

在这里插入图片描述

​ 图2 入口点警告提示
单击“确定”按钮继续,程序会停在病毒修改后的程序入口点(hei0.exe的入口点为0x00403200)上,在代码中找到最后一个jmp指令处(病毒感染完成后将跳转回原程序),按F2设置断点,按F9运行,程序会在刚设置的jmp断点上中断,查看EAX寄存器的值(EAX=0x401000注意上面提到的断点,下面还会用到),按F7单步执行到下一条指令地址,点选鼠标右键,选择菜单中的“用ollyDump脱壳调试进程”,
选中重建输入表方式1,方式2各脱壳一次,分别保存为1.exe、2.exe。测试两个程序是否还具有病毒的传染特性___
「注」 由于重建输入表的方式不同,可能造成某一种导出方式导出的文件无法正常运行,请选择可以执行的一种方式来清除病毒。

找到OEP
在这里插入图片描述

方式1:没有传染性
在这里插入图片描述

方式2:有传染性
在这里插入图片描述

二.病毒感染机制分析
(1)准备一个没有感染病毒的可执行程序和一个感染病毒的可执行程序,将其分别重命名为hei0.ex_,hei.ex_,并复制到一个新的目录下用于调试、对比。
(2)使用PE Explorer,C:\ExpNIS\AntiVir-Lab\Tools\PE_Explorer分别打开hei.ex和hei0.ex文件,对比两个文件入口点(OEP–Address of Entry Point)和Image Base并分别记录。

OEPImageBase
hei0.ex_0000 1000h0040 0000h
hei.ex_0000 3200h0040 0000h

点击“View”菜单中的“Section Headers”进入Section Headers页面,比对Section Header的数据信息并记录到下面表格。

Virtual SizeVirtual AddressSize of Raw DataPoint to Raw Data
hei0.ex_的.data0000 0027h0040 3000h0000 0200h0000 0800h
hei.ex_的.data0000 1A00h0040 3000h0000 1A00h0000 0800h

由于一般文件型病毒只有代码段,数据和代码都存在一起。所以可以断定hei.ex的.data段多出的数据即为病毒代码和数据。
(3)进入实验平台,单击工具栏中“UE”按钮,打开Ultra Editor,C:\ExpNIS\HostSec-Lab\UltraEdit选择“文件”菜单中的“比较文件”功能对hei0.ex和hei.ex进行二进制比对,可以发现在hei.ex文件的0xa00处开始的数据块为存储于.data节的病毒代码。
「注」 该段数据在.data节是因为hei0.ex和hei.ex的.data节都开始于各自文件偏移的Point to Raw Data处。这段数据是病毒代码是因为0xa00 - 0x800 + 0x403000 = 0x403200(感染病毒文件hei.ex OEP的虚地址(VA))。
在这里插入图片描述

(4)使用Ultra Editor打开hei.ex定位光标到hei.ex的.data块的Point to Raw Data位置,并以16进制形式查找hei0.ex的入口点(注意字节顺序),将查找到的数据的文件偏移记录FOA 00002010h 。计算该偏移的保护模式内存虚拟地址VA:00404810h__________。
(5)定位上面例子中hei.ex的jmp断点,在jmp指令上面会发现如下的汇编代码:

004047F3   6A 00      PUSH 0
004047F5   FF95 34FEFFFF  CALL DWORD PTR SS:[EBP-1CC]
004047FB   8985 58FDFFFF  MOV DWORD PTR SS:[EBP-2A8],EAX
00404801   8B4D FC     MOV ECX,DWORD PTR SS:[EBP-4]
00404804   8B11       MOV EDX,DWORD PTR DS:[ECX]
00404806   0395 58FDFFFF  ADD EDX,DWORD PTR SS:[EBP-2A8]   ; hei.00400000
0040480C   8995 D4FDFFFF  MOV DWORD PTR SS:[EBP-22C],EDX
00404812   8B85 D4FDFFFF  MOV EAX,DWORD PTR SS:[EBP-22C]
00404818   FFE0       JMP EAX		;最后跳转到EAX执行源程序
0040481A   8BE5       MOV ESP,EBP	;灰色区域的代码可以用做查找原入口点的标记
                     ;因为其操作与立即数无关,不会因宿主程序改动
                     ;而变化,其后的病毒数据存储原始入口点
0040481C   0010       ADD BYTE PTR DS:[EAX],DL
0040481E   0000       ADD BYTE PTR DS:[EAX],AL
00404820   0000       ADD BYTE PTR DS:[EAX],AL
00404822   0000       ADD BYTE PTR DS:[EAX],AL

0x40481c在病毒代码之后为被加载到内存的病毒数据的存储区,0x1000为hei0.exe OEP的RVA,0x1000在反汇编代码中的表示是0010。
(6)文件分析利用上面的方法分别对文件分析目录下C:\ExpNIS\AntiVir-Lab\VirusExp\Filevirus\的已感染和未感染文件进行调试,注意比对感染病毒文件和原文件特征,将各个病毒文件的最后一个跳转指令的目的地址记录到如下表。

文件原文件的入口地址感染病毒文件的入口地址感染病毒文件的最后一个跳转目的地址
mspaint.exe0003 4CF50005 38000103 4CF5
notepad.exe0000 73A50001 30000100 73A5
wordpad.exe0000 119B0000 3A000100 119B

(7)通过以上的分析,就可以初步断定,该病毒的感染方式是: 计算宿主文件OEP跳转执行宿主程序,最后跳转到EAX执行源程序

三.手工查杀
(1)查找病毒寄存特征。
入口点在代码节(.text)之外,病毒代码存储于最后一节、且在病毒代码段后的一个双字为原程序代码入口RVA(在.text节范围内)。
文件病毒代码以0xE58BE0FF结尾。
(以上特征是对简化后的病毒特征的总结、实际中的病毒要复杂的多);
(2)查找原程序入口点。
在这里插入图片描述

(3)修改程序入口点为原程序入口点。

在这里插入图片描述

(4)修改病毒感染的最后一个节表的SizeOfRawData,使之大小变为去掉病毒代码时的大小。

在这里插入图片描述

(5)修改PE文件选项头中的SizeOfImage为去掉病毒代码后的大小。

在这里插入图片描述

(6)清除病毒代码数据。

在这里插入图片描述

(7)保存清除病毒代码后的文件。

在这里插入图片描述

【实验小结】

这次实验我知道了如何寻找OEP,脱壳,理解了关键字段意义,掌握了RVA、VA、FOA地址间转换;分析文件型病毒的原理;了解文件型病毒的发现方法,能利用OD等工具分析PE病毒,并通过手工方式进行病毒查杀;分析病毒专杀工具的基本设计方法。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值