Jcomics 发表于 2006-6-10 00:04:00

卡巴斯基(AVP)内存驻留型病毒检测方法

卡巴斯基反病毒软件(Kaspersky&nbsp;Antivirus),以前叫AntiViral&nbsp;Toolkit&nbsp;Pro(AVP),出于习惯和简单,这里一律称为AVP或KAV。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;学习AVP的检测办法的意义一方面在于AVP的检测方法是经过理论验证和实践考验的科学合理的方法,另外DOS年代过来的朋友对于反病毒有过这样的经验:“机子感染病毒了?好,请用干净无毒的系统盘启动,然后全盘查杀。”,我记得CIH横行那会,一个朋友让我帮他清除病毒,说病毒是国内某知名AV报的,启动该AV杀了一遍还有,而且该AV自己的监控报自己也感染了CIH,我听了后告诉他用干净的启动盘启动系统全盘查杀。虽然这是一个办法,但事实上反病毒软件为什么不直接做到可以内存检测并清除病毒呢。而这是完全可以做到的,对于内存检测/清除驻留型病毒的方法,就我所知最早AVP开始使用。 <br/><br/><br/>一、检测方法: <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;在AVP病毒库中,有几种特征记录,其中一种是内存特征,这是AVP用来检测查杀内存驻留型病毒的特征集,AVP对内存驻留的感染式病毒采用了一些单独的检测方法。 <br/>&nbsp;&nbsp;&nbsp;&nbsp;AVP通过在病毒库中记录的扫描方法和地址偏移来扫描内存中驻留的感染式病毒,从地址偏移开始进行逐字节匹配,当匹配到匹配字节的时候,即:Segm:Offset&nbsp;+&nbsp;byte&nbsp;offset&nbsp;=&nbsp;record:Byte,然后AVP开始计算由库记录指定长度的特征码,如果恰好匹配库中的记录的话,将显示对应的病毒消息,同时根据库的修复记录所指定的修复长度、和修复字节中的内容,进行内存修复,确保修复后,使得原病毒失去活性。 <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;此记录结构包含的字段主要有: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;病毒名 <br/>&nbsp;&nbsp;&nbsp;&nbsp;搜索方法:绝对地址扫描、专用模块... <br/>&nbsp;&nbsp;&nbsp;&nbsp;地址偏移:&nbsp;段+偏移 <br/>&nbsp;&nbsp;&nbsp;&nbsp;匹配字节 <br/>&nbsp;&nbsp;&nbsp;&nbsp;特征长度 <br/>&nbsp;&nbsp;&nbsp;&nbsp;特征 <br/>&nbsp;&nbsp;&nbsp;&nbsp;专用处理过程:Obj_Link <br/>&nbsp;&nbsp;&nbsp;&nbsp;处理偏移地址 <br/>&nbsp;&nbsp;&nbsp;&nbsp;处理字节长度:一般小于10 <br/>&nbsp;&nbsp;&nbsp;&nbsp;修复字节 <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>二、搜索方法: <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;有上面可以看出,AVP能否保证快速处理,一个关键因素是AVP的搜索方法,事实上,AVP内置了众多的搜索办法,这些办法适用于MSDOS、WIN9X、WINNT/2000/XP等系统。AVP对一个病毒的处理可以采用多种内存搜索办法,所不同的是哪种方法高效一些而已。 <br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;1、绝对地址: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVP采用绝对地址的扫描办法来扫描一些病毒,扫描器从库记录中读出相应的地址记录,到内存中进行匹配,匹配上后,进行修复处理过程。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;2、段扫描: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVP从一个内存段,单字节循环递增,从开始扫描到段结束。 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;3、全部扫描: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AVP从内存地址0x00000000h开始,循环递增,进行全内存匹配的扫描方法。 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;4、专用模块: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是针对一些特定的“狡猾”病毒的方法。当AVP自己定义的正常扫描和检测办法无法正确识别的时候,采用一个专用的处理模块来检测清除该病毒,该模块编写完成后,编译为obj格式的文件,存储在AVP的库记录中。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;5、中断跟踪: <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这主要是AVP&nbsp;For&nbsp;DOS的扫描方法,通过对系统的中断INT21、INT13的来定位驻留内存的病毒代码,通过对这些指令附近的代码修改,使得病毒失去活性。 <br/><br/><br/>三、实例: <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;简单举例,比如这个病毒(网上找的一个感染COM文件的代码片段): <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;ah,3dh&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;jz&nbsp;&nbsp;&nbsp;short&nbsp;@@Infect_File&nbsp;&nbsp;&nbsp;;截获3d号Dos功能 <br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>@@JmpOldInt21: <br/>&nbsp;&nbsp;&nbsp;&nbsp;cli <br/>&nbsp;&nbsp;&nbsp;&nbsp;JmpFar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah&nbsp;&nbsp;&nbsp; <br/><br/>@@Infect_File: <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;.... <br/>&nbsp;&nbsp;&n
页: [1]
查看完整版本: 卡巴斯基(AVP)内存驻留型病毒检测方法