有毒问我 - 2005-9-9 19:06:00
我们曾谈到过交叉感染病毒的现象,这种情况下,病毒表现更趋复杂,感染后果具有不可测性。虽然原有的 "特征码
查毒"已经无能为力,但是,通过病毒分析虚拟机,我们还是可以很轻松在这种病毒感染现象下查杀病毒。
另一方面呢?如果病毒产生变种了呢?
所谓病毒变种,就是指一种病毒经过人为的改写或程序自动的异变,产生的具有新特性的病毒。这种病毒实际上是一
种新的病毒。这种"变种"有两种异变方向:非关键区异变和关键区异变。
关键区异变将导致一种新病毒的产生。它是病毒感染机理、发作条件、表现方式等方面有了实质性的变化的一种变异
现象。而相应的,非关键区异变时,病毒并没有发生实质性变化,例如仅在病毒体中加入了一些"空指令 (NOP)"等。非关
键区异变并不产生病毒,但它致使病毒的识别更趋复杂。
在特征码查毒中,出于查毒速度的考虑,软件并不对文件的全部进行扫描,而仅是扫描首部或尾部的一部分字节 (例
如PCKV就是扫描文件尾部的64K字节)。这种由软件选择的扫描部分即是所谓"病毒敏感区"。在"特征码查毒"中,哪怕仅是
"病毒敏感区"的一个字节发生了异变,都可能导致软件误查、误杀或者漏查!
例如TaiPan 438这个病毒。我们进入程序首部的病毒体中,将首先看到如下代码:
CALL xxxx
xxxx: POP SI
SUB SI,+03
MOV AX,7BCE
INT 21
这即是病毒的"敏感区",也就是说,病毒的"特征码"即是从这一部分字节中取出。如果我们作如下改动,程序将未发
生任何实质性变化:
CALL xxxx
xxxx: MOV AX,7BCE { 将该指令移到POP指令之前}
POP SI
SUB SI,+03
INT 21
这是在病毒敏感区进行的一个"非关键区异变",仅移动了一些对程序运行不造成影响的指令。然而,这使得所有基于
"特征码"的反病毒软件将再无法查出该病毒!
如果我们用"打补丁"的方法来修改这个病毒,例如将上面代码修改为:
CALL xxxx
xxxx: JMP yyyy
NOP
NOP
NOP
zzzz: INT21
……
yyyy: POP SI
SUB SI,+03
MOV AX,7BCE
JMP zzzz
由于病毒体的长度已经发生了变化,这种状况下的改写被称为"关键区改写"。但是,这也使得所有基于"特征码"的反
病毒软件失会了应有的功效。
再来看另外一个方面,如果我们在"病毒敏感区"之外改写病毒,又会怎么样呢?事实上,由于"特征码"的原理是在于
"特征"的一一对比,如果我们在"敏感区"之外,对"非特征数据"进行修改,不难想象,以前的杀毒软件亦将报告有毒,但
这将导致破坏您的文件甚至于整个的操作系统(引导型病毒)!
在虚拟机中,彻底摒弃了"病毒敏感区"和"特征码",系统是根据病毒体的执行结果来判定病毒的。因而不管病毒执行
中发生了什么样的变化 (例如变形、解码、重定向跳转、非正常调用等),只要最终的行为和表现呈现出病毒迹象, 则该
病毒仍无所藏身。因而虚拟机方案对各种变形变种病毒有极好的查杀效果
© 2000 - 2025 Rising Corp. Ltd.