友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
小说一起看 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

知者无畏--一个真实的簿世界-第18章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



淖叭牒瓴《静⑶抑葱小�
然后病毒就开始进行实际的感染,有的病毒已经包括了对“FileSave”、“FileOpen”的处理,如果没有则病毒会创建一个新的处理函数替代原来的。这样,一旦用户保存文件,病毒就会被附加在新保存的文件中,一旦用户打开文件,病毒同样会立刻附加在新打开的文件中。还有一种感染速度更快的方法,病毒搜索所有最近打开的文档(宏语言具有这个功能),然后将它们全部感染。

EXCEL宏病毒除了很少的几点不同以外,和WORD宏病毒非常相似。首先是EXCEL的全局模板文件不是“NORMAL。DOT”,而是放在EXCEL安装目录下的“STARTUP”子目录中的所有EXCEL文件。EXCEL的版本变化非常快,4。0版本和EXCEL95使用的宏完全不一样,但是微软有一个良好的习惯,就是除了很少的例外以外,后来的版本对前一个版本的的支持都比较好,这样做带来的副作用就是,在4。0版本下编写的宏病毒在EXCEL95下仍然能够正常的工作。
ACCESS作为微软办公软件的一员,同样具有强大的宏语言,也就同样有可能被病毒感染。而且ACCESS中间存在自动脚本和自动宏的概念,由于ACCESS数据库处理的需要,软件本身就大量使用了脚本语言的功能,如果清除被病毒感染的文件很可能把正常的脚本也清除,这样会造成数据库文件的损坏。
其他的一些字处理软件,包括AmiPro、IBM的WordPro等,只要具有了足够强大的宏语言就可能包括病毒,由于使用这些字处理软件的人比较少,所以没有严重的病毒感染事件,但是AmiPro和WordPro环境下的病毒都已经被发现过。
有一些简单的办法可以判断一个文件是否被宏病毒感染。首先打开你的WORD,选择菜单:工具(Tools)-》宏(Macro)—》宏列表(Macros),如果发现里面有很多以“Auto”开始的宏,那么你很可能被宏病毒感染了。自从微软的Office97以后,在打开一个Office文档的时候,如果文档中包括了宏,则WORD会弹出下面的警告框:弹出这个警告框并不一定就意味着病毒,因为微软的很多Office自动化功能就是通过宏来实现的。但是在国内使用这些功能的用户很少,所以一些杀毒软件把正常的包含宏的文档中的宏统统去掉(甚至包括Office安装程序中的一些模板文档),用户反而觉得这种软件好,因为从此不会再有任何警告框出现了。唉,这就是中国用户的典型心理,和前面说的误报率一样,让人哭笑不得。

第四节 躲避杀毒软件的检测——病毒的多态(变形)技术
我们把使用通常的特征码扫描法无法检测(或者极其难以检测)的病毒称为多态病毒。多态病毒避免被检测的方法主要有两种:使用不固定的密钥或者随机数加密病毒代码,或者在病毒运行的过程中改变病毒代码,除了这两种主要的方式外,还有的病毒,例如“炸弹人”(Bomber)通过一些奇怪的指令序列等方法可以实现多态性。
运行时改变的代码在早期是一种很常见的技术,最早的BASIC时代,一些BASIC语言的狂热爱好者举行了一种奇特的竞赛,看谁可以在一行BASIC代码里面完成尽可能多的功能(BASIC语言可以在一行包括很多语句),为了实现复杂的功能,人们在这一行BASIC代码中就会包括改变代码本身的代码,这样造成程序的复杂性是难以想象的,所以在实际的软件开发中,这种运行时候改变自己的技术已经不再被采用了,但是多态病毒程序出于隐藏自身的目的,还经常采用这种技术。
多态病毒和前面所述的引导型、文件型和宏病毒并不是同一层次的概念,实际上,多态病毒中既有引导型病毒,也有文件型病毒和宏病毒。

使用加密解密技术的多态性

下面是一段最简单的多态病毒代码,这段代码的作用是将预先加密的病毒代码解密,然后跳转到执行感染和破坏功能的病毒代码中。

















这段解密的代码和加密后的病毒都是在感染的时候动态生成的,我们可以看到,使用的寄存器、密钥、加密代码的长度等等,甚至解密使用的指令都是随机的,所以指望能够从这些代码中找到固定的病毒特征码是徒劳的,也就是由于这种多态(变形)病毒的出现,使利用简单特征码进行病毒检测的技术走到了尽头。
实际的多态病毒比我们上面提供的例子要复杂得多,在病毒生成的解密代码中,使用的指令千奇百怪,甚至包括了很多完全没有实际作用,只是迷惑分析者的指令序列。上面的例子中,解密的流程是固定的,只是解密使用的数据和寄存器变化,而很多多态病毒连指令序列都是随机的,使用的指令也基本上涵盖了整个英特尔80x86的指令集。
还有一些更加恐怖的多态病毒,他们使用的指令甚至是一些英特尔都没有公布的指令,比如说CS:NOP什么的,也就是给空指令NOP加上CS前缀,这些指令你在任何英特尔的参考书上都找不到,但是它确确实实可以执行,在多态病毒中使用这种指令给病毒分析者带来了巨大的难度。

多态性的级别

根据病毒使用多态技术的复杂程度,我们可以将多态病毒划分成下面几个级别:

1。 半多态:病毒拥有一组解密算法,感染的时候从中间随机的选择一种算法进行加密和感染。
2。 具有不动点的多态:病毒有一条或者几条语句是不变的(我们把这些不变的语句叫做不动点),其他病毒指令都是可变的。
3。 带有填充物的多态:解密代码中包含一些没有实际用途的代码来干扰分析者的视线。
4。 算法固定的多态:解密代码所使用的算法是固定的,但是实现这个算法的指令和指令的次序是可变的。
5。 算法可变的多态:使用了上述所有的技术,同时解密的算法也是可以部分或者全部改变的。
6。 完全多态:算法多态,同时病毒体可以随机的分布在感染文件的各个位置,但是在运行的时候能够进行拼装,并且可以正常工作。

对于前面3种多态病毒,使用病毒特征码或者改进后的病毒特征码是可以发现病毒的(所谓的改进后的特征码,就是包括一些非比较字节的特征串),对于第4种多态病毒,由于代码的变化是有限的,所以通过增加多种情况的改进后的特征码,应该也可以处理。至于第5和第6种多态病毒,依靠传统的特征码技术是完全无能为力的。
对付多态病毒的最好办法是某种形式的虚拟执行技术,也就是仿真出一个80x86的CPU,让解密代码自己解密完成之后,再使用通常的特征码识别法进行病毒检测。但是针对这种仿真技术也出现了一些具有反仿真技术的病毒,比如说根据执行所需要的时间判断是否处于虚拟机的监视下,在监视下和非监视下表现出完全不同的行为。因此,衡量多态病毒的难度、复杂性和检测的困难程度可以从下面几个方面进行:
采用算法的复杂性,是否采用了非公开、非标准的80x86指令,是否使用了大量的寻址方法和多种类型的指令实现解密算法。
是否使用了反仿真(虚拟执行)技术。
是否采用了可变的加密/解密算法。
解密代码是否具有充分的随机性。
在这里我不可能再进一步详细的描述多态病毒的技术和发展了,因为目前有一些多态病毒所使用的技术已经给反病毒软件带来了极大的困难。如果本书的读者能够改进这些新的多态病毒,对普通用户来说可能又是一场灾难的来临。

使用改变可执行代码技术的多态病毒

由于在运行过程中改变机器语言的指令是非常困难的,所以这种技术主要使用在宏病毒中,其技术和原来曾经出现过的BASIC程序在运行过程中动态修改自己非常类似(也许不是因为巧合,我们可以注意到所有的宏语言基本上都是以BASIC语言为基础的)。在运行过程中,病毒可以随机的改变变量名,指令的顺序等,但是不影响病毒所实现的算法。
很少一些复杂的引导型病毒也采用了这种技术,在引导区或者分区表中,包含了一小段代码来加载实际的病毒代码,这段代码在运行的过程中是可以改变的。
由于动态修改机器语言代码的复杂性,完成在文件型病毒中使用动态代码修改技术有相当的难度,但是目前仍然至少有两种病毒使用了这种技术:“厚度”(Ply)在病毒体中随机的移动指令,然后利用跳转(JMP)或者调用(CALL)指令使病毒代码仍然能够实现原来的功能。另外一种“T
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!