杀毒软件是用于侦测、移除电脑病毒、电脑蠕虫、和特洛伊木马的程序。杀毒软件通常含有即时程序监控识别、恶意程序扫描和清除以及自动更新病毒数据库等功能,有的杀毒软件附加损害恢复等功能,是电脑防御系统(包含杀毒软件,防火墙,特洛伊木马程序和其他恶意软件的防护及删除程序,入侵防御系统等)的重要组成部分。

反病毒软件分析心得(卡巴斯基等反病毒软件背后的反病毒技术和原理)(1)

杀毒软件的任务是实时监控和扫描磁盘。部分杀毒软件通过在系统添加驱动程序的方式,进驻系统,并且随操作系统启动。大部分的杀毒软件还具有防火墙功能。杀毒软件的实时监控方式因软件而异。有的杀毒软件,是通过在内存里划分一部分空间,将电脑里流过内存的数据与反病毒软件自身所带的病毒库(包含病毒定义)的特征码相比较,以判断是否为病毒。另一些杀毒软件则在所划分到的内存空间里面,虚拟执行系统或用户提交的程序,根据其行为或结果作出判断。

对于一款杀毒软件来说,一次成功的病毒查杀过程,通常都要经历病毒识别、病毒报警、病毒清除、文件或系统复原这几个过程。各个过程中又运用了很多复杂的技术,但其中最关键的应该是杀毒引擎技术,从广义上来讲,是指通过文件、网页监视等实时监控行为,运用文件识别技术来完成病毒扫描、识别、报警以及清除,甚至防御的一整套的机制,因此引擎技术也决定了杀毒软件的优劣,而引擎所包含的众多技术中,病毒识别技术又是重中之重。

反病毒软件分析心得(卡巴斯基等反病毒软件背后的反病毒技术和原理)(2)

病毒、木马加壳已经是非常普遍的现象了,目前主要有两种脱壳技术:算法脱壳和动态脱壳,目前主流的杀毒软件都引入了虚拟机技术,虽然这会占用一定的系统资源,但使带壳的病毒文件,运行于虚拟机之上,不仅可以更好的识别各种壳,还可以有效防止病毒真正的感染文件。

  1. 算法脱壳:此法是根据加壳程序的解密算法对病毒进行脱壳,虽然有速度快、消耗资源少的优点,但也有无法脱变形壳的缺点。不过,很多杀毒软件还是能够向用户发出警报,以弥补无法脱壳的缺憾。

  2. 动态脱壳:众所周知,只有让加过壳的程序运行起来,才能将其还原成本来的面目,此时为了避免程序运行后真正感染系统文件,因此引入了虚拟机技术,为带壳的病毒程序虚拟一个计算机环境,使它运行于虚拟环境。此法虽优势明显,但也会消耗很多的系统资源,因此拥有一套自己的、成熟的虚拟机技术,将大大提高检测的速度。

反病毒软件分析心得(卡巴斯基等反病毒软件背后的反病毒技术和原理)(3)

如何识别病毒,对于任何杀毒软件来说,都是非常重要,同时也是非常核心的工作。识别病毒的能力,往往决定了这款杀毒软件的病毒查杀能力,若连病毒都无法识别,当然也就不能对病毒作出妥当的处理。检测病毒方法通常有:特征代码法、校验和法、行为监测法、软件模拟法几种,各安全厂商会衡量不同方法之间的查杀效果、运行开销等因素,再结合自身的技术特点,选择相应的病毒识别方法。

特征代码法:特征代码法被早期应用于SCAN、CPAV等著名病毒检测工具中。国外专家认为特征代码法是检测已知病毒的最简单、开销最小的方法。特征代码法的机制是将扫描信息与病毒数据库(即所谓的“病毒特征库”)进行对照,如果信息与其中的任何一个病毒特征匹配,杀毒软件就会判断此文件被病毒感染。杀毒软件在进行查杀的时候,会挑选文件内部的一段或者几段代码来作为他识别病毒的方式,这种代码就叫做病毒的特征码;在病毒样本中,抽取特征代码;抽取的代码比较特殊,不大可能与普通正常程序代码吻合;抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面保证病毒扫描时候不要有太大的空间与时间的开销。

特征代码法有两种类别,文件特征码和内存特征码。

  1. 文件特征码:对付病毒在文件中的存在方式:单一文件特征码、复合文件特征码(通过多处特征进行判断)。

  2. 内存特征码:对付病毒在内存中的存在方式:单一内存特征码、复合内存特征码。

特征代码法的实现步骤如下:

采集已知病毒样本,病毒如果既感染COM文件,又感染EXE文件,对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。在病毒样本中,抽取特征代码。依据如下原则:抽取的代码比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。如果一种病毒的特征代码增长一字节,要检测3000种病毒,增加的空间就是3000字节。在保持唯一性的前提下,尽量使特征代码长度短些,以减少空间与时间开销。在既感染COM文件又感染EXE文件的病毒样本中,要抽取两种样本共有的代码。将特征代码纳入病毒数据库。打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征代码,由于特征代码与病毒一一对应,便可以断定,被查文件中患有何种病毒。采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去实用价值。病毒特征代码法对从未见过的新病毒,自然无法知道其特征代码,因而无法去检测这些新病毒。

特征代码法的优缺点:优点:速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与;缺点:采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新病毒库的版本,否则检测工具便会老化,逐渐失去实用价值;病毒特征代码法对从未见过的新病毒,无法知道其特征代码,因而无法去检测新病毒;病毒特征码如果没有经过充分的检验,可能会出现误报,数据误删,系统破坏,给用户带来麻烦。

校验和法:将正常文件的内容,计算其校验和,将该校验和写入文件中或写入别的文件中保存。在文件使用过程中,定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染,这种方法叫校验和法,它既可发现已知病毒又可发现未知病毒。在SCAN和CPAV工具的后期版本中除了病毒特征代码法之外,还纳入校验和法,以提高其检测能力。但由于其较高的误报率,已经逐渐不被采用。

校验和法的实现步骤如下:

在检测病毒工具中纳入校验和法,对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,而后进行比较。在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原校验和值。实现应用程序的自检测。将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预先保存的校验和。

校验和法的优缺点:优点:方法简单能发现未知病毒、被查文件的细微变化也能发现;缺点:发布通行记录正常态的校验和、会误报警、不能识别病毒名称、不能对付隐蔽型病毒。

行为监测法:利用病毒的特有行为特征性来监测病毒的方法,称为行为监测法。通过对病毒多年的观察、研究,有一些行为是病毒的共同行为,而且比较特殊。在正常程序中,这些行为比较罕见。当程序运行时,监视其行为,如果发现了病毒行为,立即报警。

行为监测法监测病毒的行为特征如下:

  1. 占有INT 13H。 所有的引导型病毒,都攻击Boot扇区或主引导扇区。系统启动时,当Boot扇区或主引导扇区获得执行权时,系统刚刚开工。一般引导型病毒都会占用INT 13H功能,因为其他系统功能未设置好,无法利用。引导型病毒占据INT 13H功能,在其中放置病毒所需的代码。

  2. 改DOS系统为数据区的内存总量。病毒常驻内存后,为了防止DOS系统将其覆盖,必须修改系统内存总量。

  3. 对COM、EXE文件做写入动作。病毒要感染,必须写COM、EXE文件。

  4. 病毒程序与宿主程序的切换。感染病毒程序运行中,先运行病毒,而后执行宿主程序。在两者切换时,有许多特征行为。

行为监测法的优缺点:优点:可发现未知病毒、可相当准确地预报未知的多数病毒;缺点:可能误报警、不能识别病毒名称、实现时有一定难度。

软件模拟法:这种方法通过模拟病毒运行的方式来检测病毒特征,由于特征码法无法检测多态性病毒,虽然行为监测法可以发现病毒,但是无法确定病毒名称,也无法对其进行相应的杀除,因此产生了软件模拟法。

多态性病毒每次感染都变化其病毒密码,对付这种病毒,特征代码法失效。因为多态性病毒代码实施密码化,而且每次所用密钥不同,把染毒的病毒代码相互比较,也无法找出相同的可能做为特征的稳定代码。虽然行为检测法可以检测多态性病毒,但是在检测出病毒后,因为不知病毒的种类,难于做消毒处理。

软件模拟法的优缺点:优点:可识别未知病毒,病毒定位准确,误报率低;缺点:检测速度受到一定影响,消耗系统资源较高。

正确地识别出了病毒后,接着就需要对其进行清除了。此时,又分为两种情况。对于那些尚未感染文件或展开破坏行为的病毒,在这种情况下杀毒引擎只需要简单删除文件就可以了。然而用户遇到最多的,还是已经被病毒感染的情况,此时,杀毒引擎将根据病毒特征库中记录的病毒行为来判断当前系统环境遭受破坏的情况并进行恢复。对于受病毒感染的文件,杀毒引擎必须根据一定的算法在文件体内找出病毒代码寄生的部分并给予清除,这个过程必须非常谨慎,否则直接的后果就是导致原文件被破坏,这样的杀毒就毫无意义了。而对于非文件型的木马和恶意程序,由于它们会通过各种方式篡改系统注册表或系统文件,从而达到加载自身(也就是平常所说的自启动)的目的,杀毒引擎在清除了这些病毒后,需要准确、有效的恢复受破坏的系统环境,这也是对杀毒引擎的最大挑战。而对于那些不能识别名称的病毒,虽然无法对其进行精确的清除,但很多杀毒软件也可以将其放入“病毒隔离区”,通过禁止其运行的方法来抑制病毒的扩散和传播。

病毒隐藏技术已经从最初的简单加载单一启动项,演化到今天的多重启动项、进程互相保护、线程监视、远程注射、可执行文件关联、服务项目加载、驱动形式加载等方式,甚至采用多项结合的方法,使得查杀工作变得十分困难,甚至只要遗漏了一个文件未能清除,病毒便能卷土重来,因此,如何有效准确的判断和修复受损环境,也是衡量杀毒引擎技术是否成熟的关键。

目前,虚拟机、实时监控、主动防御、启发等技术均已经渐渐成为主流。

虚拟机技术。采用人工智能(AI)算法,具备“自学习、自进化”能力,无需频繁升级特征库,就能免疫大部分的加壳和变种病毒,不但查杀能力领先,而且从根本上攻克了前两代杀毒引擎“不升级病毒库就杀不了新病毒”的技术难题,在海量病毒样本数据中归纳出一套智能算法,自己来发现和学习病毒变化规律。它无需频繁更新特征库、无需分析病毒静态特征、无需分析病毒行为。

实时监控(RTA)一般是指利用软件对系统运行的过程进行同步的监控,比如:杀毒软件对计算机内存监控并调用系统文件的一种操作模式。由于病毒的存在,程序将在对象访问之前对它进行扫描,如果发现病毒,应用程序会将染毒对象移除或阻止访问。

主动防御技术是通过动态仿真反病毒专家系统对各种程序动作的自动监视,自动分析程序动作之间的逻辑关系,综合应用病毒识别规则知识,实现自动判定病毒,达到主动防御的目的。传统的信息安全,受限于技术发展,采用被动防御方式。随着大数据分析技术、云计算技术、SDN技术、安全情报收集的发展,信息系统安全检测技术对安全态势的分析越来越准确,对安全事件预警越来越及时精准,安全防御逐渐由被动防御向主动防御转变。

反病毒软件分析心得(卡巴斯基等反病毒软件背后的反病毒技术和原理)(4)

启发技术。常规所使用的杀毒方法是出现新病毒后由杀毒软件公司的反病毒专家从病毒样本中提取病毒特征,通过定期升级的形式下发到各用户电脑里达到查杀效果,但是这种方法费时费力。于是有了启发技术,在原有的特征值识别技术基础上,根据反病毒样本分析专家总结的分析可疑程序样本经验(移植入反病毒程序),在没有符合特征值比对时,根据反编译后程序代码所调用的win32API函数情况(特征组合、出现频率等)判断程序的具体目的是否为病毒、恶意软件,符合判断条件即报警提示用户发现可疑程序,达到防御未知病毒、恶意软件的目的。解决了单一通过特征值比对存在的缺陷。

除此之外,还有两种处于试验阶段的新技术,分别是智能码标识技术和行为拦截技术。

智能码标识技术:这种技术如同给各种程序分配一个可以对其进行唯一识别的ID,这样对付那些非法的木马、后门等程序就变得简单了很多,即使是文件或程序遭到病毒感染,杀毒软件也可以根据那一串智能识别码对其进行拦截和阻击。目前,此项技术还处于理论阶段,还没有哪个安全公司的产品中已经包含了此技术的模块。

行为拦截技术:从概念上来说,这优点类似主动防御的概念。这里的行为拦截指的是即时的监控执行应用程序行为,并且拦截显示恶意的程序活动。如果有必要,甚至可以对系统的API进行阻挡,但同时也表现出来一定的负面影响,如果错误的拦截了合法程序的正常执行行为,将导致系统运行的异常,轻则系统的某些功能无法使用,重则引起系统的瘫痪,对于那些对于操作系统知之甚少的用户来说,这一点尤为突出。虽然目前很多软件(如:NOD32、AVAST等)都已经开始尝试使用这种技术,但很有很多内容需要研究。

现在,紧随云计算、云存储之后,云安全也出现了。“云安全(Cloud Security)”计划是网络时代信息安全的最新体现,它融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,推送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。

反病毒软件分析心得(卡巴斯基等反病毒软件背后的反病毒技术和原理)(5)

未来杀毒软件将无法有效地处理日益增多的恶意程序。来自互联网的主要威胁正在由电脑病毒转向恶意程序及木马,在这样的情况下,采用的特征库判别法显然已经过时。云安全技术应用后,识别和查杀病毒不再仅仅依靠本地硬盘中的病毒库,而是依靠庞大的网络服务,实时进行采集、分析以及处理。整个互联网就是一个巨大的“杀毒软件”,参与者越多,每个参与者就越安全,整个互联网就会更安全。

,