病毒在理论上是不可判定的

病毒是一段程序,不同种类的病毒,它们的代码千差万别,任何人都不可能预测明天将会出现什么新病毒。但有一点可以肯定,只要出现了一项新的计算机技术,充分利用这项新技术编制的新病毒就一定离我们不远了。而由于软件种类极其丰富,且某些正常程序也使用了类似病毒的操作甚至借鉴了某些病毒的技术。所以,虽然有些人利用病毒某些共有的操作(如驻内存,改中断)这种共性,制作了声称可查所有病毒的程序,但这种方法对病毒进行检测势必会造成较多的误报情况,不够可靠,目前都只能作为辅助的手段配合使用,无法独立推广。

实际上,计算机病毒学鼻祖早在80年代初期就已经提出了计算机病毒的模型,证明只要延用现行的计算机体系,计算机病毒就存在“不可判定性”。杀病毒必须先搜集到病毒样本,使其成为已知病毒,然后剖析病毒,再将病毒传染的过程准确地颠倒过来,使被感染的计算机恢复原状。因此可以看出,一方面计算机病毒是不可灭绝的,另一方面病毒也并不可怕,世界上没有杀不掉的病毒。

常用的反病毒软件技术

特征码技术:基于对已知病毒分析、查解的反病毒技术

目前的大多数杀病毒软件采用的方法主要是特征码查毒方案与人工解毒并行,亦即在查病毒时采用特征码查毒,在杀病毒时采用人工编制解毒代码。

特征码查毒方案实际上是人工查毒经验的简单表述,它再现了人工辨识病毒的一般方法,采用了“同一病毒或同类病毒的某一部分代码相同”的原理,也就是说,如果病毒及其变种、变形病毒具有同一性,则可以对这种同一性进行描述,并通过对程序体与描述结果(亦即“特征码”)进行比较来查找病毒。而并非所有病毒都可以描述其特征码,很多病毒都是难以描述甚至无法用特征码进行描述。使用特征码技术需要实现一些补充功能,例如近来的压缩包、压缩可执行文件自动查杀技术。

但是,特征码查毒方案也具有极大的局限性。特征码的描述取决于人的主观因素,从长达数千字节的病毒体中撷取十余字节的病毒特征码,需要对病毒进行跟踪、反汇编以及其它分析,如果病毒本身具有反跟踪技术和变形、解码技术,那么跟踪和反汇编以获取特征码的情况将变得极其复杂。此外,要撷取一个病毒的特征码,必然要获取该病毒的样本,再由于对特征码的描述各个不同,特征码方法在国际上很难得到广域性支持。特征码查病毒主要的技术缺陷表现在较大的误查和误报上,而杀病毒技术又导致了反病毒软件的技术迟滞。

虚拟机技术:启发式探测未知病毒的反病毒技术

虚拟机技术的主要作用是能够运行一定规则的描述语言。由于病毒的最终判定准则是其复制传染性,而这个标准是不易被使用和实现的,如果病毒已经传染了才判定是它是病毒,定会给病毒的清除带来麻烦。

那么检查病毒用什么方法呢?客观地说,在各类病毒检查方法中,特征值方法是适用范围最宽、速度最快、最简单、最有效的方法。但由于其本身的缺陷问题,它只适用于已知病毒,对于未知病毒,如果能够让病毒在控制下先运行一段时间,让其自己还原,那么,问题就会相对明了。可以说,虚拟机是这种情况下的最佳选择。

虚拟机在反病毒软件中应用范围广,并成为目前反病毒软件的一个趋势。一个比较完整的虚拟机,不仅能够识别新的未知病毒,而且能够清除未知病毒,我们会发现这个反病毒工具不再是一个程序,而成为可以和卡斯帕罗夫抗衡的ibm深蓝超级计算机。首先,虚拟机必须提供足够的虚拟,以完成或将近完成病毒的“虚拟传染”;其次,尽管根据病毒定义而确立的“传染”标准是明确的,但是,这个标准假如能够实施,它在判定病毒的标准上仍然会有问题;第三,假如上一步能够通过,那么,我们必须检测并确认所谓“感染”的文件确实感染的就是这个病毒或其变形。

目前虚拟机的处理对象主要是文件型病毒。对于引导型病毒、word/excel宏病毒、木马程序在理论上都是可以通过虚拟机来处理的,但目前的实现水平仍相距甚远。就像病毒编码变形使得传统特征值方法失效一样,针对虚拟机的新病毒可以轻易使得虚拟机失效。虽然虚拟机也会在实践中不断得到发展。但是,pc的计算能力有限,反病毒软件的制造成本也有限,而病毒的发展可以说是无限的。让虚拟技术获得更加实际的功效,甚至要以此为基础来清除未知病毒,其难度相当大。

受病毒在理论上就是不可判定的这一根本前提的制约,事实上,无论是启发式,亦或是虚拟机,都只能是一种工程学的努力,其成功的概率永远不可达到100%。这是惟一的却又是无可奈何的缺憾。

未来的反病毒技术:

虚拟现实

对于未来技术的展望可能只是一种近乎飘渺的幻想,但是就如同计算机病毒最初的描述出现在科幻小说里,虽然还有许许多多我们目前仍在实现却仍未实现的技术,甚至还有许多我们根本未考虑到的因素。只要技术足够成熟,网络世界中是完全有可能出现类似人工智能的反病毒技术。

未来反病毒的疑难之一就是:我们永远无法写出一个合理的程序来辨识和查杀病毒。病毒掌握了人类所掌握的一切,它同样能辨识和分析反毒程序,并对自身重新编程;而反毒程序要可能同样地对病毒进行探测,再进行自编程。病毒与反毒程序的角逐就变成了自编程能力的实现,而这样的结果只能导致网络空间紧张,甚至崩溃!

我们还可以考虑用另一种方式:人工进入计算网络世界的方法来查杀病毒。人有足够的智能和经验积累来完成对病毒的辨识和杀除,而这就只剩下建立人与计算机之间的“桥”的问题了。

目前的虚拟现实技术重点放在了对人与人的自然界交流方式———“感官”的计算机描述的实现上,它如同人们所有的知觉都最终传感给大脑,大脑对这种传感作出一种体验上的描述,从而形成知觉意识。如果计算机将二进制代码流表述成脑电波的流信息,并通过神经传感给大脑,则完全可以描述并引导、控制人的一切思维。简单地说,人的思维与计算机语言存在了这样一个通用的接口!

这种理论如果得以实现,则虚拟现实技术将进入新的发展领域。虽然从理论上讲是不可能在对病毒未知的情况下对其做出精确判断从而预防,但是在实际应用中,经过反病毒专家多年的统计、分析、研究积累的经验,完全有可能以概率方式对病毒危险进行一种分级制测定并对其使用反病毒程序,在相当程度上达到较精确地防御未知病毒的侵入。

第三代反病毒产品:

防杀兼备、万能恢复

从技术的数学模型上来说,过去、现在、将来的反病毒软件都不可能有任何理论上的超越,即无法跨越不可判定性的鸿沟,特征码也好,启发式虚拟机也好,或者兼而有之,相互配合,暂时不会有新的突破。那么,具体到反病毒技术的产品,也基本上离不开这些模式。当然,即使是从工程学的角度上来说,在相同的技术起点上如何构筑出实现方式和最终效果完全不同的实用产品,仍然是一个永无止境的追求。

从手工查杀病毒,到早期散兵游勇式的查杀病毒,到与internet的技术接轨,直至今天担负起防杀兼备、万能恢复的第三代反病毒软件,反病毒技术在与病毒的斗争中不断进步,不断诞生各种为计算机用户解忧去患的反病毒产品。从早期的防病毒卡、手动查杀的dos版软件(即第一代,代表产品有:kill、kv100、kv200、kv300、瑞星、早期vrv、早期avxx。),到在线监控实时查杀的病毒防火墙(即第二代,代表产品为vrv杀毒套装、killxx版、kv3000预览版),我们已经发现要免除病毒的灾难,仅有杀毒是不够的。

安全专家认为,真正的安全仅有杀毒是不够的,因为在电脑世界中,永远有捉摸不定的东西游离在身边。除去泛滥的病毒,系统的漏洞、硬件或软件的冲突、人为的误操作、利用bo特洛伊木马恶意进攻、电脑本身的不稳定性、黑客袭击等形形色色的安全威胁不胜枚举。所以,一个好的安全软件,仅仅能杀毒是不够的,必须把备份与灾难恢复相结合起来。

面对呼啸而来益发凶恶的未来病毒,仅有杀毒是不够的。用户对于病毒的恐惧,并不是来自它的能够自我复制,尽管这才是病毒之所以成为病毒的根本,担心害怕的是病毒侵入并且发作,结果造成的大大小小的无可挽回的损失。这种客观的迫切的需要,成为新形势对反病毒技术和产品提出的最高要求。于是,第三代反病毒软件必须要做到突破单一杀毒的局限性,针对用户经常面临急需数据抢修、系统恢复等难题,不仅可以杀灭入侵病毒、击溃来犯黑客、消灭有害数据,还有智能灾难恢复、全息数据救援、维护系统正常运行的全面保障信息安全的功能,其代表产品是北京北信源公司研发的一种全方位、多功能、高可靠的安全软件“杀毒专家”。

我们期望有一种针对恶性病毒发作时可能实施的破坏行为的截获、阻止装置,软件的亦或是硬件的,对所有带有危险级别的、可能影响系统运行和信息资料安全的操作加以禁止,就像过滤文件中的病毒特征码一样,对一个将要执行的操作进行安全性判断。就像今天在多任务环境下实时杀毒的防火墙重新焕发了青春一样,我们不难预料,这种在线式的以危险行为监控为特征的反病毒技术和产品也一定会出现,配合以前的第一代、第二代、第三代反病毒技术,实现更高意义上的更加可靠的信息安全。

回答者: xuanmao - 探花 十一级   9-24 23:46
在与病毒的对抗中,及早发现病毒很重要。早发现,早处置,可以减少损失。检测病毒方法有:特征代码法、校验和法、行为监测法、软件模拟法

这些方法依据的原理不同,实现时所需开销不同,检测范围不同,各有所长。

特征代码法

特征代码法被早期应用于SCAN、CPAV等著名病毒检测工具中。国外专家认为特征代码法是检测已知病毒的最简单、开销最小的方法。

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

采集已知病毒样本,病毒如果既感染COM文件,又感染EXE文件,对这种病毒要同时采集COM型病毒样本和EXE型病毒样本。

在病毒样本中,抽取特征代码。依据如下原则:

抽取的代码比较特殊,不大可能与普通正常程序代码吻合。抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面又不要有太大的空间与时间的开销。如果一种病毒的特征代码增长一字节,要检测3000种病毒,增加的空间就是3000字节。在保持唯一性的前提下,尽量使特征代码长度短些,以减少空间与时间开销。

在既感染COM文件又感染EXE文件的病毒样本中,要抽取两种样本共有的代码。将特征代码纳入病毒数据库。

打开被检测文件,在文件中搜索,检查文件中是否含有病毒数据库中的病毒特征代码。如果发现病毒特征代码,由于特征代码与病毒一一对应,便可以断定,被查文件中患有何种病毒。

采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去实用价值。病毒特征代码法对从未见过的新病毒,自然无法知道其特征代码,因而无法去检测这些新病毒。

特征代码法的优点是:检测准确快速、可识别病毒的名称、误报警率低、依据检测结果,可做解毒处理。其缺点是:不能检测未知病毒、搜集已知病毒的特征代码,费用开销大、在网络上效率低(在网络服务器上,因长时间检索会使整个网络性能变坏)。

其特点:

A.速度慢。随着病毒种类的增多,检索时间变长。如果检索5000种病毒,必须对5000个病毒特征代码逐一检查。如果病毒种数再增加,检病毒的时间开销就变得十分可观。此类工具检测的高速性,将变得日益困难。

B.误报警率低。

非C.不能检查多形性病毒。特征代码法是不可能检测多态性病毒的。国外专家认为多态性病毒是病毒特征代码法的索命者。

D.不能对付隐蔽性病毒。隐蔽性病毒如果先进驻内存,后运行病毒检测工具,隐蔽性病毒能先于检测工具,将被查文件中的病毒代码剥去,检测工具的确是在检查一个虚假的“好文件”,而不能报警,被隐蔽性病毒所蒙骗。

校验和法

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

这种方法既能发现已知病毒,也能发现未知病毒,但是,它不能识别病毒类,不能报出病毒名称。由于病毒感染并非文件内容改变的唯一的非他性原因,文件内容的改变有可能是正常程序引起的,所以校验和法常常误报警。而且此种方法也会影响文件的运行速度。

病毒感染的确会引起文件内容变化,但是校验和法对文件内容的变化太敏感,又不能区分正常程序引起的变动,而频繁报警。用监视文件的校验和来检测病毒,不是最好的方法。

这种方法遇到下述情况:已有软件版更新、变更口令、修改运行参数、校验和法都会误报警。

校验和法对隐蔽性病毒无效。隐蔽性病毒进驻内存后,会自动剥去染毒程序中的病毒代码,使校验和法受骗,对一个有毒文件算出正常校验和。

运用校验和法查病毒采用三种方式:

①在检测病毒工具中纳入校验和法,对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,而后进行比较。

②在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原校验和值。实现应用程序的自检测。

③将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预先保存的校验和。

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

行为监测法

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

这些做为监测病毒的行为特征如下:

A.占有INT 13H

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

B.改DOS系统为数据区的内存总量

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

C.对COM、EXE文件做写入动作

病毒要感染,必须写COM、EXE文件。

D.病毒程序与宿主程序的切换

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

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

软件模拟法

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

计算机病毒的防治策略

计算机病毒的防治要从防毒、查毒、解毒三方面来进行;系统对于计算机病毒的实际防治能力和效果也要从防毒能力、查毒能力和解毒能力三方面来评判。

“防毒”是指根据系统特性,采取相应的系统安全措施预防病毒侵入计算机。“查毒”是指对于确定的环境,能够准确地报出病毒名称,该环境包括,内存、文件、引导区(含主导区)、网络等。“解毒”是指根据不同类型病毒对感染对象的修改,并按照病毒的感染特性所进行的恢复。该恢复过程不能破坏未被病毒修改的内容。感染对象包括:内存、引导区(含主引导区)、可执行文件、文档文件、网络等。

防毒能力是指预防病毒侵入计算机系统的能力。通过采取防毒措施,应可以准确地、实时地监测预警经由光盘、软盘、硬盘不同目录之间、局域网、因特网(包括FTP方式、E-MAIL、HTTP方式)或其它形式的文件下载等多种方式进行的传输;能够在病毒侵入系统是发出警报,记录携带病毒的文件,即时清除其中的病毒;对网络而言,能够向网络管理员发送关于病毒入侵的信息,记录病毒入侵的工作站,必要时还要能够注销工作站,隔离病毒源。

查毒能力是指发现和追踪病毒来源的能力。通过查毒应该能准确地发现计算机系统是否感染有病毒,并准确查找出病毒的来源,并能给出统计报告;查解病毒的能力应由查毒率和误报率来评判。

解毒能力是指从感染对象中清除病毒,恢复被病毒感染前的原始信息的能力;解毒能力应用解毒率来评判。

转载于:https://www.cnblogs.com/safezone/articles/1298689.html

杀毒软件的原理(转)相关推荐

  1. 杀毒软件的查杀病毒的原理以及木马、病毒的免杀伎俩(论杀或者不杀 )

    杀毒软件的查杀病毒的原理以及木马.病毒的免杀伎俩(论杀或者不杀 ) 无意中在网上看到的,描述通俗易懂,基本全是基础知识,权当了解吧. ================================= ...

  2. 安全产品的核心逻辑-杀毒软件

    概述 在<软件定义安全>中介绍了所有的安全产品本质上就是对安全业务的软件开发,在<安全产品的核心逻辑-防火墙>中介绍了防火墙的核心点和核心逻辑.在<安全产品的核心逻辑-I ...

  3. Android病毒查杀原理

    1.常规本地查杀 特征码: 在手机系统中,每个应用都有它特有的特征信息,他是该应用所特有的,每个应用都是不同的,这就是手机的特征码. 应用的特征码包括:包名和应用签名 Android中,同一个包名的程 ...

  4. 可疑文件_鉴定文件是不是病毒木马的可靠方法 | 免费快速精准

    我们经常将计算机病毒和木马放在一起说,这两者是我们无论使用电脑还是手机都最不想碰到的东西. 它们其实是有区别的,病毒得名于它会像自然界的病毒一样破坏系统的功能,而木马的称呼则来源于公元前十二世纪希腊和 ...

  5. 【IT情感】关于专业、理想和工作的认知

    关于专业.理想和工作的认知 2012年年终总结 小的时候,天真无邪,无所谓理想,无所谓抱负,无所谓奋斗. 渐渐的长大了,懂事了,世界观.价值观.人生观开始变了,开始有了理想的雏形,那时候的理想简单又迷 ...

  6. Android-手机杀毒

    手机杀毒原理 特征码匹配 在手机系统中,每个应用都有它特有的特征信息,它是该应用所特有的,每个应用都是不同的,这就是手机的特征码. 手机应用的特征码包括:包名和应用签名. Android中,同一个包名 ...

  7. 道德网安-菜鸟免杀教程

    道德网安-菜鸟免杀教程 下载地址 https://pan.baidu.com/s/1VWO2RzElXOaQUmfaHM6P8w 创业资料/视频资料/安全相关 扫码下面二维码关注公众号回复 10017 ...

  8. 【操作系统-Windows】浅析360带来的蓝屏问题

    蓝屏对一些企业来说会带来财力上的损耗,如果不能直接找到导致蓝屏的问题,损失会不断增大,所以在安全与用户体验上,我司就决定对360做一个断舍离. 我相信大家都看过360与其他企业对垒的新闻,我不否认36 ...

  9. Python免杀火绒、360和Defender

    目录 简介 环境 原理 加载ShellCode 定位特征码 Base64编码绕过 简介 之前学习免杀都是使用Metasploit自带的编码进行,从未成功过.也使用过GitHub上别人提供的免杀方法,最 ...

最新文章

  1. java的hashmap排序_Java面试题:如何对HashMap按键值排序
  2. 20162316刘诚昊 第九周学习总结
  3. 【前端统计图】echarts改变颜色属性的demo
  4. 7-27 家谱处理 (30 分)(详解+map做法)map真香啊
  5. MySQL 获取系统时间/系统日期/日期时间的函数
  6. 神舟笔记本bios_海尔雷神(蓝天)神舟战神游戏本风扇狂转掉电大写灯狂闪维修实例...
  7. 卸载oracle11g步骤_oracle11g完全卸载步骤来了,你真的不来看看吗
  8. 自定义类型详解:结构体(内存对齐、位段) + 枚举 + 联合
  9. 用__postback传递JavaScript变量到c#(pass a js variable to C# by a __postback )
  10. android绘制过程3d图形,Android开发 OpenGL ES绘制3D 图形实例详解
  11. JMeter接口测试入门
  12. 一、传统应用带来的问题
  13. sqlyog和mysql一样么_navicat和sqlyog的区别
  14. hairline!ios实现边框0.5px
  15. 提问 html文件谁来解析执行,2019年上初中信息技术教师资格考试面试真题
  16. UE4_Stereo Panoramic Movie Capture_合并左右眼为一张图片
  17. android OTA更新
  18. 《二叉平衡树(一)》
  19. 想做一个像深度Ghost一样的系统(Ghost系统制作)
  20. 无法将网络更改为桥接状态:没有未桥接的主机网络适配器

热门文章

  1. php 正则匹配空格用什么,关于php:在正则表达式中匹配空格
  2. PCA人脸识别GUI(ORL+Yale人脸库)
  3. 日常记录1_电池_接收机_BEC_飞控
  4. Linux玩国服FF14(最终幻想14)
  5. 源码分享-基于android移动端的校内二手交易平台
  6. gephi的安装和使用
  7. Matlab 入门教程
  8. 【Let It Be Color!——3D重建之纹理重建】02-基于映射的纹理重建算法(上)
  9. 阿里达摩院做 AI 这两年
  10. redis和mysql默认端口_各种数据库默认端口总结