反病毒软件技术简析与探索(2009年5月18日)

<下文是本人大三时期的一篇课外小论文,是基于大量的对杀毒软件杀毒能力的实验结果而写,请勿转载,谢谢.>

 

摘  要

为什么即使有杀毒软件的保护,还是有那么多的计算机系统遭到病毒的侵袭呢?答案就是杀毒软件只能对已探测到的病毒或恶意程序进行预防,对新的恶意程序就无法判别了。在这种情况下,有些杀毒软件为了提高自己的探测未知病毒能力,加入了一些智能判别未知病毒手段,但是这样做的结果往往大大提高了误杀率。可见,对未来的切实有效的杀毒软件的研究是有必要的。

 

关键词

反病毒软件;杀毒软件;未知病毒;误杀;


Abstract

Why even have anti-virus protection software, or there are so many computer systems by viruses do? The answer is to have antivirus software can only detect viruses or malicious programs of prevention, of new malicious programs will not be able to determine the. In such cases, some antivirus software in order to improve their ability to detect unknown viruses by adding a number of smart identification means unknown virus, but to do so results are often greatly enhanced the rate of manslaughter. It can be seen that for the future of effective anti-virus software is necessary.

 

Key words

Anti-Virus Software; Kill Virus Software; Unknown Virus; Manslaughter;


目    录

1.       课题背景... 1

1.1     计算机病毒的基本介绍... 1

1.2     反病毒软件的基本介绍... 1

1.3     杀毒软件的危机... 1

2.       经典反病毒技术分析... 2

2.1     直接特征码查杀技术... 2

2.2     脱壳技术... 3

2.3     虚拟机技术... 3

3.       新型反病毒技术探索... 4

3.1     活动特征码技术... 4

3.2     导入表特征技术... 4

3.3     危险动态链接库判别... 5

3.4     云杀毒、硬件防毒等新兴技术... 5

4.       总结... 6

参考文献... 7

 


 

反病毒软件技术简析与探索

Anti-Virus Software Technology Introduce and Explore

 

1.  课题背景

1.1  计算机病毒的基本介绍

从广义上定义,凡能够引起计算机故障,破坏计算机数据的程序统称为计算机病毒。依据做过不尽相同的定义,但一直没有公认的明确定义。直至1994年2月18日,我国正式颁布实施了《中华人民共和国计算机信息系统安全保护条例》,计算机病毒(Computer Virus)在《条例》第二十八条中被明确定义,"计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。

随着计算机和因特网的日益普及,计算机病毒和崩溃,重要数据遭到破坏和丢失,会造成社会财富的巨大浪费,甚至会造成全人类性的灾难。

1.2  反病毒软件的基本介绍

反病毒软件,国内也称杀毒软件,简称杀软(“杀毒软件”是由国产的老一辈反病毒软件厂商,如江民、瑞星、南北信源等,起的名字,后来由于和世界反病毒业接轨统称为“反病毒软件(Anti-virus Software)”或“安全防护软件(Safe-defend Software)”,近年来陆续出现了集成防火墙的“互联网安全套装”、“全功能安全套装”等名词,都属一类),是用于消除电脑病毒、特洛伊木马和恶意软件的一类软件。反病毒软件通常集成监控识别、病毒扫描和清除和自动升级等功能,有的反病毒软件还带有数据恢复等功能。 后两者同时具有黑客入侵,网络流量控制等功能。

本论文将主要从判断文件是否是计算机病毒的角度进行研究和探索。

1.3  杀毒软件的危机

随着计算机技术的发展,计算机病毒与反病毒软件都在迅速发展,甚至演变成了两者之间直接的厮杀,看谁最终把对方打败。

计算机病毒要在计算机上存活,就必须做到不被杀毒软件检测或者是直接让杀毒软件不能工作,因此越来越多的计算机病毒都具备了关闭杀毒软件的功能,当然还有很多经黑客特意修改的计算机病毒副本或者病毒变种,都将构成对杀毒软件与计算机系统安全的威胁与挑战。

别再天真的以为装了杀毒软件的电脑就是彻底安全的了,杀毒软件并不万能,而且总是处于先有新病毒再能查杀病毒的尴尬境地。前段时间看了某国产杀毒软件的广告词,声称对未知病毒的查杀能力在百分之九十九以上,而在我稍加测试后发现根本就不能查杀很多病毒的新变种,即使在最新病毒库的情况下。

现有杀毒软件技术明显面临巨大的危机,在这场技术与技术的巅峰对决下,到底是谁占据上风呢?

因本人水平有限,并且杀毒软件的技术细节基本上不对外公开,故本文基本上是从实验探究的方式来浅层次的剖析杀毒软件的相关技术。

2.  经典反病毒技术分析

2.1  直接特征码查杀技术

特征码查杀技术是杀毒软件最经典也是现在还一直在使用的技术,其基本原理是,在反病毒软件的病毒定义数据库中包含大量已知病毒的抽样特征信息,如发现新病毒A后,从A的2进制或者16进制编码中,抽取一段一定长度的编码内容,并记录这些内容的偏移地址。当下次查杀病毒时,将被查文件的不同偏移地址处和不同已定义病毒库进行逐一比对,若完全一致,则确定为病毒A。然而,定义的特征码如果太长,对查杀速度肯定造成极大影响,所以很多杀毒软件的单个特征码长度才1到2个字节。在这种情况下,很容易出现两个文件,在相同偏移处,发生1到2个字节相同的情况概率还是比较大的,也不排除有些极端分子特意构造出与已知的普及率比较大的程序文件相同的偏移,当杀毒软件定义特征码时不小心就选取了会导致误杀正常文件甚至系统文件的情况发生时,后果往往是比较严重的。有报道显示,某杀毒软件误将Windows操作系统的重要系统文件定义为病毒并清除之,重启后发现无法正常进入用户桌面环境了。这种问题是应该积极避免的。

当然,现代的杀毒软件肯定不会这么单一的定义特征码,为了速度不可能定义太长的特征码,而且面对病毒的变种,基本上无防范能力。故它们将同一个病毒样本,选取多处特征入库,进行比对时,不一定要全部满足所有的特征,即可根据与特征相同的概率判定为指定病毒或者疑似病毒体。

特征码技术一直是杀毒软件技术的核心,基本上所有的杀毒软件技术基本上都无法逃离这个模式。包括本文后面将讨论的很多技术,基本上都是围绕特征码技术展开的。

2.2  脱壳技术

脱壳是相对于加壳的一种解决办法,有很多计算机病毒,为了免于被杀毒软件查杀,将病毒体加了一层保护外衣,这个外衣可以控制病毒体信息还原成原本信息并执行,这就是加壳的通俗解释。当然,也有些很出名的UPX等压缩壳,有点类似与WinRAR的自解压可执行文件,压缩壳后的程序文件体积更小巧,更易被发布。然而,从我们之前的直接特征码查询角度来看,这种保护外衣有千万种每种外衣又有多种保护方式,难道杀毒软件就必须对任意一个加壳病毒进行重新定义特征码吗?答案是否定的,杀毒软件一般都具有强大的脱壳引擎,能够将大部分的加壳保护病毒体还原成原始的信息再进行直接特征码查杀。

2.3  虚拟机技术

要谈虚拟机技术,先了解下什么是加密变形病毒吧。一个病毒体,经过加上一个普通壳后(加密过程),为了防止被杀毒软件脱壳,对壳的部分参数进行修改(变形过程)后,杀毒软件一般都不能成功脱壳了。前段时间相当流行的北斗加壳软件的加密变形补丁,在病毒上广为盛行,某些杀毒软件引擎不够强大,为图简单,直接将所有北斗加壳软件生成的无论是正规还是非正规文件全部定义为疑似病毒体,这显然是对用户的极度不负责任行为,造成了广泛的误杀状况。

那么,虚拟机技术能否改变杀毒软件的这种被动局面呢?先来了解下虚拟机技术吧,所谓虚拟机并不是个虚拟的机器,说得更合适一些应该是个虚拟CPU(用软件实现的CPU),只不过病毒界都这么叫而已。它的作用主要是模拟INTEL X86 CPU的工作过程来解释执行可执行代码,与真正的CPU一样能够取指,译码并执行相应机器指令规定的操作。用软件模拟CPU,将欲查杀程序样本,直接在虚拟CPU上执行,期间,样本并不知是处于模拟CPU中,故在内存中还原出了自己的原貌,因为加密变形并未改变程序的真正可执行的代码。这样,再对这些未变形加密的部分进行直接特征码查杀即可。

虚拟机技术是一个双刃剑,它教会杀毒软件去查杀病毒,也教会了病毒用更先进的方式来保护自己,如著名的虚拟机保护程序THEMIDA,它可以为任意可执行程序加上虚拟机保护,被保护的程序执行中的大部分信息,都处于THEMIDA的虚拟机保护中,甚至做到了哪部分指令需要执行时才用虚拟机去解开这部分指令。这对杀毒软件是一个新的挑战。杀毒软件的解决方式一般都是想办法脱掉THEMIDA的壳或者直接定义THEMIDA壳信息的任意软件为疑似病毒体。当然,在我的测试中发现,大部分杀毒软件对使用THEMIDA加密的样本病毒根本不予理会,这给用户计算机的安全带来了极大威胁。

有些特制的病毒,为了防止自己被杀毒软件虚拟机还原,在病毒体中特意加入了一些虚拟CPU无法识别的新技术指令,如MMX多媒体指令等。毕竟是虚拟的CPU,不可能设计的跟现实中的CPU一样完整,当这种虚拟的CPU碰到无法识别的指令时,一般都无法继续运行下去了。对于这种反虚拟机病毒,只有不断加大虚拟CPU的指令集完整性并附加很多如即使不能识别的指令,就将这个指令的长度内内容跳过继续执行,因为这些特殊指令一般对程序的结果不产生多大的影响。

3.  新型反病毒技术探索

3.1  活动特征码技术

何谓活动特征码技术?由于上文已经提及,杀毒软件的内部技术细节基本上都是保密的,我只是从我的实验结果,发现了很多虽然是用特征码,但是会让病毒变种很难生存的一种办法。某杀毒软件,针对某一个病毒,分别设立文件特征与内存特征,当一个病毒变种只是让其文件特征不被查询,当它载入内存后,依然被内存特征查杀,这些新型的技术主要是针对防止人为的对病毒体的免杀改造,但是这个方法也仅仅是加大了难度,当你有精力慢慢的对内存特征去定位的时候也会发现,其实这种技术还是比较容易被破解的。

       再有,某杀毒软件,对同一病毒体样本,定义了较多特征码,但是,这些特征码有些是关键因素,有些是非关键因素,体现为,改变关键因素特征后,不查杀,改变非关键因素特征后,提示另一非关键因素为特征,直到把全部非关键因素排除后,才不查杀。这种智能型的病毒特征定义,用较简单的技术,实现了较好的查杀病毒变种的效果。但是怎么去定义这些特征码,成了一个让杀毒软件厂商头痛的问题。

3.2  导入表特征技术

       导入表技术目前还是比较受杀毒软件厂商青睐的,我实验中发现,大部分较受用户欢迎的杀毒软件基本上都用到了导入表特征技术。这个技术的大致思想如下,病毒体中某一指令需要调用动态链接库,它会先去程序的导入表中查询该动态链接库的实际位置,再跳转到真正要执行的代码。而关键就在于,我们把导入表的某特定偏移设定为特征码,一个病毒的变种,除非重新对他的源代码进行修改,否则无法修改成千上万的动态链接库调用。当然,由于导入表较紧凑,误杀概率大,故实际应用中应再辅助以一个直接特征码,即可精确判定指定病毒。

       若直接对该类型的杀毒软件特征库进行定位,会发现最终都定位到导入表上了,若不是手工加工的变种,应该查杀率在百分之百。手工怎么操作呢?就是改变导入表,将导入表的制定动态链接库指针函数右移一个指令长度。其实杀毒软件可以再这里做文章,因为导入表的紧凑,应该是可以把这种修改方式也列入查杀行列的,但是也许是担心误杀吧,测试中没发现可以对这种方式进行防御的杀毒软件。

3.3  危险动态链接库判别

       Windows操作系统给编程人员提供了丰富的API函数以实现一些基本功能,如著名木马:灰鸽子,它肯定要完成以下功能:屏幕监控,摄像头监控,语音监控,文件管理,服务管理,网络连接等功能。要使用这些功能肯定要调用相关的动态链接库,而我们的杀毒软件,可以直接在查杀的时候,如发现使用的动态链接库组合包括视频监控、服务管理和网络连接,就应该判定该可执行文件为安全威胁。当然,精确的判定还是需要再额外定义一组直接的特征。若该特征消失,则应该提醒用户,该可执行程序可能造成威胁。这是我测试中唯一无法攻破的一个难题。可见,该技术是有一定的前景的。不过,这个技术似乎更应该是在主动防御产品中使用,作为判定病毒行为特征的一部分。所以,当今几乎所有的杀毒软件都已经不再是纯粹的杀毒软件了,都配合了很多主动防御和可执行文件行为特征技术,这是不可避免的发展趋势。

3.4  云杀毒、硬件防毒等新兴技术

传统的反病毒软件基本上都是在客户端安装上完整的病毒库与杀毒引擎,能不能判别等都在客户端独立完成,通过在线升级病毒库的方式来增加对新的病毒的防御能力。云杀毒主要是针对已经比较流行的病毒,对计算机中比如使用危险动态链接库判别技术、文件签名技术等判断出的比较危险的可执行文件通过网络发送给服务器端或者说是一个服务器群,进行远程判别,然后反馈结果给客户端。这样就非常容易抑制病毒的大规模传播,依赖服务器端计算机群的强大计算能力与超级病毒特征库或者新型的查毒技术,可以只反馈某文件的MD5为病毒,以后只要碰到文件的MD5散列结果相同即可直接判定为病毒。

硬件反病毒目前主要应用在CPU上,几年前,偶然发现Windows XP SP2操作系统增加了数据执行保护(DEP)功能,它禁止在标记为数据存储的内存区域中执行代码。此功能也称作“不执行”和“执行保护”。当尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。实际使用中的感受就是某些小部分软件不能使用了,还远远没有达到查杀病毒的能力,只是对病毒的威力做了限制吧。

Windows Vista上采用的UAC用户帐户安全控制机制,真的给计算机用户带来了更大的安全保护,但同样的,它对于计算机的普通用户,根本不知道在什么时候该允许执行,什么时候禁止,大部分用户都觉得这个设计太烦。大部分的主动防御软件的通病,什么都询问用户,可是真的是所有用户都明白每一个提示的意义吗?答案是否定的,所以其效果还是微乎其微的。

所谓道高一尺,魔高一丈,杀毒软件在发展,病毒技术也在发展,并且在未来很长的一段时间内都会有这么一种平衡吧,所以没有什么技术是绝对完美而又适合所有用户的。

4.  总结

本文通过对杀毒软件的经典与新型技术进行了一些浅层次的分析,这些分析,都是本人通过实验的方式做出来的结果显示的。实验的方式基本上都是特征码定位,包括那些新型的技术,都是会在特征码定位上栽跟头的,必须采用别的方式才能破解杀毒软件的这些技术。当然,由于只是浅层次杀毒软件突破实验,不可能对杀毒软件的深层次问题进行太多的探究。

我做这些测试并不是在这个学期做的,所以很多东西无法回忆出细节了,本来是想,如果有时间的话再重新测试一遍,再把详细的测试过程与结果都进行讨论,但是这是需要以月为时间单位的时间作为代价的,而这个学期的课程真的是比较多,从开学后没几个星期到现在一直都感觉非常的忙,所以主要是靠回忆当时的测试结果与自己对那么多杀毒软件结果的理解写了这篇文章。文章中很多观点是个人观点,如果有错误,还请指出,谢谢。测试是在去年做的,不知道今年是否又有新的技术了呢。

我也是从天真无邪过来的,以前一直以为,只要装了杀毒软件,电脑就绝对安全了,后来才知道,原来杀毒软件的漏洞还不是一丁点的多啊。所以,在兴趣的驱使下,我做了文章中所提及的测试,只是为了研究杀毒软件的工作过程与漏洞。这就算是一份实验报告吧,也是我亲自写的第一篇课外的技术论文,还是感觉蛮兴奋的。

 

 

 

 

 

 

 

 

 

参考文献

[1] http://tieba.baidu.com/f?kz=16874415(反病毒引擎设计).

[2] http://tieba.baidu.com/f?kz=475043998(关于NOD32的免杀原理,首发于《黑客防线》07年第4期).

[3] http://baike.baidu.com/view/33433.htm(杀毒软件,百度百科)

[4] http://baike.baidu.com/view/1725454.htm(云安全,百度百科)

[5] http://baike.baidu.com/view/72223.html (硬件防毒技术,百度百科)

 

转载于:https://www.cnblogs.com/burstray/p/3145242.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值