您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 恶意软件检测技术概览培训
恶意软件检测技术概览培训在本节培训中我们将讨论识别恶意代码的各种方法,它们彼此间在功能上以及时间上的联系,以及它们的技术特点。这些技术和基本原理实际上并不仅仅可以应用于反病毒领域,还可以用在计算机安全系统里更为广泛的环境下。与此同时还有很多技术虽然重要,但其只用在反病毒方面所以暂时不做讨论(如脱壳和流特征检测)。*引言*恶意程序防御系统模型o技术组件o分析组件+1.文件扫描+1.简单比较+2.模拟+2.复杂比较+3.虚拟化:沙箱+3.专家系统+4.系统事件监控+5.搜索系统异常*技术的实际名称—什么是什么*恶意代码检测方法的优缺点*如何选择非特征的防御系统?*关于金山毒霸及周边产品最初的检测恶意程序的技术是基于特征码的。特征码是一段能唯一确定恶意程序的一段代码。随着病毒的演化,病毒检测技术也日益复杂。一些先进理念的技术,如“各种启发式分析和行为分析,都可以统称为非特征检测技术。关于特征扫描技术已经没什么可说的了,这种技术很直观,也很原始。所以本节主要聚焦与非特征检测技术。目前,用户对非特征检测技术都还比较陌生。在“启发式”、“主动检测”、“行为检测”、“HIPS”这些名称背后的到底是些什么呢?这些技术彼此间有什么关系呢?它们又有什么有缺点呢?本节将根据行业的客观现状给出解答。引言恶意程序防御系统模型在任何防御系统中都有两个组件:技术组件和分析组件。在模块层面或算法层面上,这两个组件的区分倒不一定明显,而在功能层面上,它们是有显著区别的。技术组件是用某些算法为分析组件提供分析数据的程序的集合。例如,文件字节代码,文件中的文本字符串,程序独有的行为或这样的行为的序列。分析组件是做出判决的系统。它是一个算法,分析给它的数据并给出某些判定结果。根据这些结果和安全策略,反病毒软件(或其它安全软件)会采取相应的行动:通知用户,询问处理方式,将文件隔离,阻断未认证的程序行为等等。举个例子,我们来看一下经典的基于特征码检测的防御恶意程序的方法。对该方法而言,技术组件就是获取文件系统、文件数量及内容等信息的系统,而分析组件就仅仅是一个比较字节序列的操作。分析组件的输入就是文件代码,而输出就是判定文件是否有害的结果。在这种模型框架下,任何防御系统都可以表示为技术组件与分析组件的联合体。用这种模型来分析对应技术,我们很容易看出它们的关系以及优缺点。特别地,借助于这个模型我们可以很容易地解决技术定义中的歧义。例如后面会证明“启发式”作为一种判定的方法,只是应该归在分析组件中,而不是一种独立的技术。而HIPS(HostIntrusionPreventionSystem)只是一种技术组件,是一种搜集数据的方法。由此可见这些术语首先形式上彼此不矛盾,其次并不能完整地刻画它们所描述的技术。恶意代码检测技术原理实质:技术组件为信息收集手段,分析组件为信息处理手段。技术组件构成恶意程序检测系统的技术组件收集用于分析的数据。恶意程序,首先是具有一定内容的文件,其次是在操作系统中进行的一组行为,第三,是操作系统中作用效果的集合。因此对恶意程序的识别可以从不同的层面上进行:通过字节序列,通过行为,通过对操作系统的影响等等。一般来讲,要使恶意程序现形可以通过以下方法:1.将文件作为字节序列处理。2.模拟程序代码。3.在沙箱中运行程序(sandbox)(以及其它类似的虚拟技术)。4.监视系统事件。5.搜索系统异常。上面的方法是按处理代码时抽象级别由低到高排列的。这里抽象级别的意思就是我们用什么样的角度来看可执行程序:作为原始的数字对象、作为行为、施动者或是作为对操作系统产生的效果的集合。反病毒技术大概就是按照这个向量来发展的:处理文件本身、根据文件处理事件、根据事件处理文件、处理环境本身。要强调的是,上面列出的独立技术有几种,恶意程序数据收集技术的连续发展过程就有几个阶段。从一种技术发展过渡到另一种技术基本上都是渐进的。例如,对模拟来说,如果技术的实现只将文件作为字节序列,那么它就接近于简单的文件处理;如果完整地虚拟了系统函数,那它又接近于虚拟技术。我们来详细地看一下这些方法。1.文件扫描最早出现的反病毒软件都是将文件视为字节序列的,然而我们却很难称之为分析技术。它仅仅是将字节序列和已知的特征做比较。在检测恶意程序过程中数据被传递到判定组件,而这数据是从文件中抽取出的一个具有某种形式的有序字节序列。这种方法的特点在于反病毒软件只处理程序的字节码,而不关心它的行为。尽管方法比较老旧,但并没有过时。直到现在还用在所有现在的反病毒软件中,只是它已经不再是唯一的,甚至不再是主要的方法了,只是众多技术中的一种而已。2.模拟模拟技术从程度上来说处于把程序视为字节序列的技术和把程序视为行为序列的技术之间。虚拟机将程序字节代码划分为指令,并在虚拟的计算机环境中执行每一条指令。这样就可以监视程序的行为,不会像在真实环境中执行恶意程序那样会威胁操作系统和用户数据。在抽象层级中模拟器位于中层。所以虚拟机的特点大致可以归结为:虚拟机仍然和文件打交道,但是所分析的实际上已经是事件了。虚拟机已经用在了许多反病毒软件中,主要是用作底层的文件引擎或高层引擎(沙箱、系统监视)的一种辅助。3.虚拟化:沙箱虚拟化技术使用了沙箱,是模拟技术的一种逻辑延伸。使用沙箱技术时,恶意程序已经是在真实的环境中运行了,只不过是被严格控制起来了。沙箱这个名称就已经很好地反映了虚拟化的本质。通常意义上的沙箱就是封闭的环境,小孩子们可以在里面安全地玩耍。如果做个类比,把操作系统比作现实世界的话,那么扮演爱玩的孩子角色的就是恶意程序了,而这时封闭的环境就成了一组在操作系统中活动的准则。这些准则可以阻止恶意程序修改注册表,利用部分模拟技术提供有限的文件系统操作支持。例如,在沙箱中启动的程序会得到系统注册表的一个副本,这样这个程序对注册表做的修改不会影响到操作系统的正常工作。这样,我们可以虚拟出任何一个程序与环境的接触点:文件系统,注册表。模拟技术与虚拟化技术之间的界线可能并不宽,但却很明显。前一种技术为程序的执行提供了环境(这样工作的进程就包含了被执行的程序并完全控制了程序的运行)。对后一种技术来说,作为运行环境的已经是真实的操作系统了,而这种技术就是用来控制程序与操作系统间的交互,这就是它和前一种技术的差别所在。反病毒软件不会主动使用“沙箱”以及虚拟机这类的方法,主要是因为这些实现方法的程序需要占用大量的资源。带有沙箱的反病毒程序在程序启动和开始执行之间会有一个延时,即在恶意程序启动和反病毒软件检测到恶意程序并给出信息之间的延时),所以可以通过这一点判断反病毒程序是否有沙箱。目前硬件虚拟化方面的研究正在积极进行之中,这种情形不久就会改善。4.系统事件监控系统事件监控是一种更为抽象的为暴露恶意程序而搜集信息的方法。如果说虚拟机或沙箱是观察每一个独立的程序的话,监控器则是通过监视操作系统和运行的程序中产生的所有事件来观察所有程序。从技术上说,这种信息搜集的方法是通过对系统函数进行hook来实现的。挂钩了某些系统函数调用后,挂钩函数就得到了某个确定程序在系统中进行某个确定行为的信息。作为功能的延伸,监控器会收集这些行为的统计信息并将它传给分析组件处理。这种技术目前发展最为迅速。在某些反病毒软件中,它已经成为了一种组件或成为了一个独立的工具,专门用来监控系统。由于任何防御都可以被绕过,所以这种检测恶意程序的方法并非是最有前途的。在真实环境中运行程序所带来的威胁会大大降低其防御的效果。5.系统异常检测这是搜集可能被感染的系统中信息的最为抽象的方法。它作是为前面技术的一种自然延伸和抽象的极限而提出来的。这种方法建立在以下前提之上:*操作系统和运行于其上的程序是一个完整的系统;*操作系统有内在的“系统状态”;*如果在操作系统中执行了恶意代码,则系统的状态就是“非健康的”,这种状态和系统中没有恶意代码时的“健康状态”是不同的。为了有效地用分析异常的方法来检测恶意代码,分析系统必须足够强大,如利用专家系统或神经网络。这就引出了许多问题:如何定义“健康状态”,它和“非健康状态”的区别在哪里,有哪些离散的参数可供跟踪以及如何进行分析。由于这种复杂性,目前这种方法用得还很少。它的源头可以从某些anti-rootkit工具中找到。这些工具要么将系统状态和标准系统状态做对比(已过时的PatchFinder、KasperskyInspector),要么比较单独的参数(GMER,RootkitUnhooker,金山急救箱)。有趣的比喻前面“沙箱”部分做的孩子的比喻,还可以这样延伸:虚拟机就像个保姆,时刻照看着孩子,不让他有不良的行为;系统事件监控则像个私塾老师,监督着一群孩子;而系统异常检测技术则给予了孩子们充分的自由,只是会在操行日志里给它们打分。这样打比方的话,那文件的字节分析就只是对孩子的设计,更确切的说就是在准父母的性格里找不安分的成分。而且,就像孩子一样,技术也是在成长和发展的。分析组件病毒判定算法的复杂度可以是完全任意的。反病毒软件的分析系统大致可以分成三种,而在这三者中间可能还有许多中间变体。1.简单比较通过将单一对象与已有样本做比较而得出结论。比较的结果是非黑即白的。一个例子就是用严格确定的字符序列去识别恶意程序。更高层次点的例子就是通过行为比较而发现可疑程序行为(比如向注册表关键部位或自启动文件夹中写入)。2.复合比较将一个或几个对象与相应样本做比较而得出结果。比较的模式可以是可伸缩的,而比较的结果是一个概率。例如,使用几条字节特征中的一条来识别恶意代码,而这几条字节特征都是非严格的(每一个单独字节序列都是不确定的)。另一个更高层次点的例子就是通过几个恶意程序用到的并且用一定的参数非顺序调用的API函数来识别恶意代码。3.专家系统通过对数据进行复杂的分析而得出结果。这可能会是个自身带有人工智能成分的系统。比如说:不使用严格给定的一组参数,而是从整体上多方面评估所有参数,考虑它们的潜在恶意性的权重并计算出总体结果。一般开发新技术的厂商都会给他们的新技术起一个全新的、独特的名字。例如Kaspersky的“主动防御”,Panda的TruPrevent,F-Secure的DeepGuard。这种做法是很正确的,因为这样可以避免用户受狭义术语的影响而对新技术有先入为主的错觉。然而在用通俗语言描述新技术时,像使用“启发式”、“虚拟机”、“沙箱”、“行为阻断”这样含义广泛的术语就不可避免了。到这里,术语意义上的分歧开始出现了。这些术语都是没有严格定义的。对于一条术语而言每个人理解都有可能不同。而且一般媒体编辑为这些术语赋予上所谓清晰易懂的意义,通常和反病毒专家们所理解的含义不同。这就解释了一个现象,即在反病毒软件厂商的网站上充斥着大量技术术语,但却找不到有关这种技术本质的信息。技术的实际名称:即什么是什么例如,某些反病毒厂商称自己的产品装备了HIPS、“主动技术”或“非特征码技术”。如果用户将HIPS理解为有一个程序监控系统事件并分析是否存在恶意代码,那他就有可能被骗。实际上,靠这些术语,反病毒厂商可以掩盖所有他们想掩盖的信息——比如,装备有“启发式”系统的“虚拟机”引擎。还有一种情形经常会遇到,就是将某种技术描述为“启发式”的,但却没有任何更为详尽的信息。需要强调的是,我们不是说反病毒厂商有意要欺骗用户——很有可能写那些描述的人自己都不明白那些术语的意思。我们只是说,那些对技术的描述都是给用户看的,而用户可能并不了解这些技术到底是什么东西,再有就是提醒用户在靠这些描述选购反病毒软件的时候应谨慎。关于反病毒领域中的流行名词“特征码检测”的歧义最小:无论怎么说,从技术角度讲它都是和文件字节代码打交道的,而从分析角度讲它用的就是最初级的数据处理方法,一般就是简单比较。这种技术最为古老,但却最为可靠,所以尽管它有个最大的缺点,需要更新病毒库,但是直到今天各个反病毒软件仍都在使用。前面列表中的“虚拟机”、“沙箱”也没什么其它的解释方法。用于它们的分析组件的算法复杂度也可以是任意的,从简单比较到专家系统。而“启发式”这个词就有点朦胧了。词典上的定义是
本文标题:恶意软件检测技术概览培训
链接地址:https://www.777doc.com/doc-977100 .html