病毒的自我保护技术

时间:2022-05-21 08:43:14

病毒的自我保护技术

摘要:病毒得自我保护技术包括被动保护技术和主动保护技术两大类。被动保护技术主要采取隐匿、多态、变异和惰化抗病毒软件几种技术来避免被发现和被清除。主动保护技术包括干扰这些安全软件运行,修改主机hosts文件来阻止反病毒程序升级等方式。

关键词:病毒;自我保护;杀毒

中图分类号:TP393文献标识码:A文章编号:1009-3044(2010)21-5739-02

针对杀毒软件各种查杀手段,病毒也发展出各种方法应对杀毒软件。病毒得自我保护技术包括被动保护技术和主动保护技术两大类。

1 被动保护技术

被动保护技术主要采取隐匿、多态、变异和惰化抗病毒软件几种技术来避免被发现和被清除。[1]

1.1隐匿

隐匿指的是病毒在被感染系统中隐藏自己存在的过程。伴侣病毒经常使用的原始的隐匿方法是简单设置病毒文件肋“隐藏”属性,尽可能让受害者在文件目录列表中找不到它。流伴侣病毒有一个更强大的隐匿组件,当它们附着在宿主上时,并不产生新的文件,而且大多数的工具软件都会报告被感染文件的长度没有发生变化。在一个使用NTFS文件系统的Windows计算机中,这些病毒藏身于可变动数据流中,而这些数据流与系统中一些正常文件相关联。

另一种隐匿方法是病毒截获反病毒程序的读文件企图,并提供文件的未感染版本让反病毒程序扫描。当扫描程序读取已经被感染的文件时,被感染的文件显示的却是一个来被感染的假象。在另一种隐匿的情况下,一个病毒可能会故慢它感染和破坏文件的速度,致使用户很长时间后才意识到发生了什么。[2]

1.2 多态和变异

多态是恶意代码在并不实际改变自己基本功能的前提下修改自己的外观,以此来防止被发现的过程。多态这个术语可以形象地说是代码在同样的功能下可能采取多种形式。使用这项技术,病毒代码在每次运行时都会动态地改变自己。在完全不同的代码基础上仍然具有同样的功能,基于病毒代码以前形式的任何特征码将无法检测到变形后的新病毒版本。在基于脚本的病毒中实现这种技术的最简单方法之一可能是让病毒在感染一个新主机之前修改其内部变量和子程序的名称,这些名称通常是随机选取的,目的是为了使创建病毒样本特征码的工作更加复杂。

一种实现多态技术韵做法是调整包含在病毒体内的指令的顺序。病毒也可能通过插入不做任何事情的指令来修改自己的特征码,例如为一个值减去l再加上l。这些在功能上的无用指令可以使代码保持原来的功能,但是可以逃避基于特征码的检测。[3]

一种多态技术是一个病毒对自己的大部分代码进行加密,留下的明码只是在运行时对自己的加密代码自动解密的必要指令。病毒通常会使用随机产生的不同密钥为自己加密,并把这个密钥嵌入到自己代码的某个位置。然后改变解密算法的样子,以此来干扰基于特征码的病毒扫描程序。1992年左右的MtE变形引擎是第1个通过变异解密算法使任意恶意代码具有多态功能的工具。

变异用了这样的过程,即在病毒传播的过程中通过稍微改变其功能来进一步变异病毒样本。一般情况下,为了保证病毒躲避检测并且不减弱自身的破坏能力。其实现方法非常巧妙,变异病毒经常通过改变变异倒程和加密例程的位置来改变自己的文件结构。另外,变异实例能够动态地对自身进行分解,例如Smile改变自己的代码,然后重新组装成可执行的形式。

1.3 堕化

恶意代码试图保护自己的方法之一是使目标机器上的反病毒机制失效,最突出的惰化对象是被感染系统上运行的反病毒软件的进程。使用这种技术最成功的病毒能够在不知不觉中进入系统,然后赶在被检测到或者在用户更新病毒特征码数据库之前快速地让反病毒软件失效。

ProcKill特洛伊就是这样的病毒样本的一个例子,它拥有一个超过200个进程名称列表,这些进程通常属于反病毒软件和个人防火墙。一旦被载入系统。ProcKill就搜索正在运行进程的列表,并中止那些在此列表中的进程[2-4]。在没有反病毒软件和个人防火墙进程运行的情况下,病毒就可以随意地感染和改变系统。

在2000年出现的MTX蠕虫,病毒对这一技术进行了有趣的扩充,MTX在感染了系统之后,它会监视受害者对Intemet的访问,然后阻塞对可能是反病毒服务提供商的网站的访问,类似这样的方法会阻止用户轻松地安装反病毒软件或者更新病毒特征码数据库,如果你不能使用升级病毒特征码数据库功,就不会检测出被感染的病毒。[4]

还有一些病毒试图绕过的Microsoft Office强制的安全限制,Microsoft Office允许避开对VB Project对象的访问,这些对象包含了经常被宏病毒用来感染新文档的命令。这个限制通过注册表设最控制,而病毒可以操纵注册表。如果用户允许被感染文档的宏执行,病毒就会改变这个注册表设置,删除对VBProject对象的访问限制。Listi(也被称为“Kallisti”)病毒使用了这项技术,它所用的代码片段如图1所示。

Listi的这一段代码从检查注册表的AccesVBoM键值开始,如果AccessVBOM设置为l,那么未限制对VBProiect对象的访问,病毒可以继续感染:如果限制了VBProject对象的访问(即键值大于或者小于1),Lisd会将注册码设置为l,然后通过调用WordBasic.FileExit命令退出Microsoft Word。因为AccessVBoM键值被修改了,因此需要重新启动Word才能生效。下次用户打开被感染的文档,对VBProject对象的访问就再也不会受到限制,病毒可以继续传播。

2 主动保护技术

以上述三种病毒的自我保护方式都是被动的,而如今恶意程序正以更积极主动的态势保护自己,其自保护机制包括:

1) 在系统中有目的的搜寻反病毒程序,防火墙或其他安全软件,然后干扰这些安全软件运行。举个例子,有恶意程序会寻找某个特定的反病毒软件的进程,并试图影响反病毒程序的功能。

2) 阻断文件并且以独占方式打开文件来对付反病毒程序对文件的扫描。

3) 修改主机hosts文件来阻止反病毒程序升级。

4) 检测安全软件弹出的询问消息(比如,防火墙弹出窗口询问“是否允许这个连接?”),并模拟鼠标点击“允许”按钮。

3 趋势和预测

根据前面的介绍,通过分析当今恶意程序自保护技术的趋势和当前能达到的有效程度,我们可以预期到以下几点:

1) Rootkit正在往利用设备函数和虚拟化的方向发展。然而,这种方法还没有达到其顶点,而且在未来几年内很可能不会成为主要的威胁,也不会被广泛使用。

2) 阻断磁盘文件的技术:已知有两个的概念性的程序实现了这种技术,我们预期这一领域在不远的将来会有发展。

3) 混淆技术的使用已经没有意义,不过它们现在仍然存在。

4) 检测安全软件并干扰其功能的技术已经非常普遍,并被广泛使用。

5) 加壳工具的使用非常广泛,仍在稳步增长。

6) 为了抵御反病毒程序向行为分析的大量转变,探测调试器、模拟器和虚拟机的技术以及其他环境诊断技术可能会发展起来。

不难发现,恶意程序自保护技术的进化趋势随着恶意程序本身和抵御恶意软件技术的发展变化而变化。当大多数恶意程序感染文件并且反病毒程序使用基于病毒库的检测时,多数恶意程序自保护的措施就是多态和代码保护。而如今,恶意程序多数是独立的,反病毒程序也逐渐的主动化。基于这些因素,我们可以预测以下这些恶意程序自保护机制会比其他机制大幅增长。

1) Rootkit。它们在系统中的不可见性给了它们一个明显的优势――即使它们不阻止被检测。我们预测很可能出现无体的恶意程序新机制,之后一段时间,虚拟化技术会完成。

2) 混淆和加密。这些方法仍将被广泛使用,用以干扰代码分析。

3) 用于对付基于行为分析的安全软件的技术。我们预期会出现一些新的技术,因为现有的一些(有目标的攻击反病毒程序)并不怎么有效。我们很可能会看到检测虚拟环境或者某种行为加密类的技术。

参考文献:

[1] 杨永红,魏春雨.计算机病毒的特点及防治措施[J].高科技与产业化,2003,(4).

[2] 澈丽蒙.浅谈计算机病毒及其防范[J].内蒙古图书馆工作,2007,(2).

[3] 涂金德.计算机病毒的查治及预防[J].计算机时代, 2003,(8).

[4] 张欣.常见计算机病毒的名称分类[J].科技信息,2006,(3).

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:计算机组成原理与系统结构实践教学改革研究 下一篇:浅析汇编语言中数大小的比较