基于特征码的病毒扫描器的恶意程序发现_第1页
基于特征码的病毒扫描器的恶意程序发现_第2页
基于特征码的病毒扫描器的恶意程序发现_第3页
基于特征码的病毒扫描器的恶意程序发现_第4页
基于特征码的病毒扫描器的恶意程序发现_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于特征码的病毒扫描器的恶意程序发现

0检测病毒方法计算机病毒是指计算机的功能或程序代码的生成,它破坏了计算机的功能,破坏了数据,影响计算机的使用,并可以复制一组计算机指令和代码。目前,由于计算机网络及现代通信技术的发展,病毒的含义有所扩展,一般将病毒、网络蠕虫、黑客有害程序等执行危及系统安全、破坏系统或未经用户许可获取其敏感信息等功能的程序都称为“病毒”。这种广义上的“病毒”通常也叫“恶意程序”。文中病毒皆指广义上的病毒,和恶意程序所指相同。检测病毒方法有特征代码法、校验和法、行为监测法、软件模拟法等。这些方法依据的原理不同,实现时所需开销不同,检测范围不同,各有所长。工业界最经常使用的是基于特征代码,也即基于签字的检测方法。传统的商用病毒扫描器都是基于特征代码来进行检测的。对于每个恶意程序,扫描器都包含一个相应的特征字节序列并以此来识别。这些特征代码由专家手工找出或通过自动方法生成。这些病毒扫描器可以有效地发现已知的恶意程序,但却不能可靠地发现未知的恶意程序。因为一个未知的恶意程序,由于事先不存在其识别模式,即相应特征代码而极有可能无法发现。将机器学习技术应用于恶意程序检测,可以准确有效地发现未知恶意程序。因为机器学习方法可以从已存在的数据中发现有关的模式,并可以利用这些模式进行相似性搜索,发现含有类似模式的恶意程序。1基本方法和技术1.1恶意程序检测机器学习主要用于智能数据分析,并已成为智能数据分析技术的源泉之一。其经典定义为计算机利用经验改善系统自身的性能。可以理解为它从数据中归纳或发现规律,以改进“某种”性能。经过近20年的飞速发展,机器学习已经具备了一定的解决实际问题的能力,正逐渐开始成为一种在众多的学科领域都有应用的基础性、透明化的支持技术和服务技术。例如,机器学习技术,尤其是其中的贝叶斯学习技术正在支撑着各类搜索引擎。机器学习有两种最主要的方式:预测和描述。其中预测机器学习对应于分类问题;而描述机器学习则对应于聚类问题。将机器学习应用于恶意程序检测,即是以程序为学习对象,并判断待检测程序是恶意程序还是普通程序。这是一个典型的分类问题。基于机器学习的恶意程序检测的系统结构如图1所示。各模块功能如下:(1)训练样本:存放用于学习的程序集;(2)特征抽取器Ⅰ:对样本程序进行特征抽取,并将特征传送给学习算法执行器;(3)特征抽取器Ⅱ:对待检测程序进行特征抽取,并将特征传送给规则评估器;(4)学习算法执行器:在从训练样本中抽取出的特征上执行学习算法,生成最新检测模型;并将检测模型传送给分类器;(5)分类器:存放检测模型,用接收到的新规则进行规则更新;并将待检测程序中抽取出的特征与模型相比较,根据这些信息判断此程序是否恶意,得到最后结果。1.2使用程序调用的动态连接库在基于机器学习的恶意程序检测系统中,特征抽取和分类器的构造等都是关键技术。要表示程序首先要提取程序特征。程序的特征应该具有以下特点:特征能充分表示程序;程序在特征空间中的分布具有较为明显的统计规律;程序映射到特征空间的计算复杂度不太大。要表示好程序,就要寻找最有代表性的程序特征。这里静态提取了3类不同的特征,这些特征代表了各程序所包含的不同信息,可以被用于产生相应的检测模型。(1)LibBFD使用GUN’sBinUtils工具包从Windows程序中提取有效信息。这些信息都是从程序的头部信息中获得的。另外,这些信息也是在未运行程序的情况下,通过检查代码的静态属性,利用LibBFD获得的。为了理解资源是如何影响程序代码行为的,这里使用了3种特征:(1)进制程序代码所调用的所有动态连接库列表该方法将程序调用的所有动态连接库列表作为特征向量。特征向量由30个布尔值组成,分别代表程序是否调用了某个动态连接库,如:advapi32∧avicap32∧…∧winmm∧wsock32。此特征向量是DLL名称的联合,是由至少两个未被使用的资源组成,它们分别是:ADVAPI32.DLL(高级WINDOWSAPI)和WSOCK32.DLL(WINDOWSSOCKETAPI)。它同样调用两个资源:AVICAP32.DLL(AVI捕获API)和WINNM.DLL(WINDOWS多媒体API)。(2)相应调用这些动态连接库中所有函数的列表第二种方法与第一种方法相比,增加了函数调用信息,其特征向量包含了2229个布尔值,如:Advapi32.AdjustTokenPrivileges()∧avicap32.GetFileSecurityA()∧…∧wsock32.recv()∧wsock.send()。此特征向量是DLL的以及在每个DLL内调用的函数的联合,至少由4个资源组成:两个从ADVAPI32.DLL调用的函数AdjustTokenPrivileges()和vicap32.GetFileSecurityA();两个从WSOCK32.DLL调用的函数recv()和send()。(3)每个动态连接库中所调用不同函数的数量。第三种方法所获得的特征向量包含30个整型值,可以粗略地给出某一个动态连接库被调用程度的次数,如:advapi32=2∧avicap32=10∧…∧winmm=8∧wsock32=2。此特征向量是DLL的以及在每个DLL内调用的函数被调用次数的联合,描述了调用ADVAP132.DLL中的8个函数,调用了WSOCK32。DLL中的2个函数。(2)字符串在普通程序中存在着能把它们与恶意程序区分开的字符串,而在恶意程序中也包含着类似的字符串,这些字符串把它们与普通程序区分开。代码中存在的每一个字符串都被作为一个特征。GNU字符串程序可以从任何文件中提取连续可打印字符。(3)字节顺序Hexdump是一种可以将二进制文件转化为十六进制文件的工具。利用Hexdump获得一个程序的十六进制文件后,就可以产生若干行字节顺序形式的特征,每一行代表一个机器指令短序列。2概率统计结果的规则化目前用于恶意程序识别工作的机器学习算法有两类:基于规则的方法和基于概率的方法。前者常常得出人们可以理解的显式规则;后者往往通过某种计算表达式推出结果。本质上,概率统计方法可以看成规则方法的一种推广,只不过概率统计方法中得到的规则是一种不被人轻易理解的“隐式规则”。不管是基于规则的方法还是基于概率统计的方法,在使用时都经历从训练到过滤的过程。通过已有的训练集合,包括正例和反例,训练出相应的恶意程序规则,包括显式规则或隐式规则,然后将规则应用到新的程序判定中去。2.1规则修剪过程基于规则的学习算法中主要包括两个步骤:生成规则和修剪规则。在规则生成过程中,每次根据某个度量值以贪婪方式向规则中增加子项,一直到某些条件成立,从而形成一条规则;在规则修剪过程中,删除那些可能与训练样本太过接近的规则子项或规则本身,因为训练样本中包含噪音,如果与其太过接近,则也越接近噪音。当通过对训练集的学习,规则生成且通过测试集优化后,就可以开始判断新程序的类别了:在规则组中按照待分类程序的内容来查找相应的规则,根据找到的规则决定其类别。基于规则的算法有决策树、FIND-S、IREP、RIPPER等。其中RIPPER方法以LibBFD信息为学习特征,在一组训练实例上学习后产生恶意代码的分类模型,即一组规则集。2.2基于新程序的类别判断算法使用概率结构来表示特征项,是由Belkin和Croft于1992年提出的。其中,最常见的算法是朴素贝叶斯算法以及它的一些改进算法。朴素贝叶斯算法被广泛用于模式识别与机器学习的应用中。在这类算法中,根据新程序的特征项在训练样本中的一些概率统计值来估计其所属类别。假设某个程序带有特征F,定义C为类别集上的一个随机变量:普通程序和恶意程序。判断某个程序的归类即是当某个程序包含某个特征集F时,计算它属于某个类的概率。应用贝叶斯规则把概率表示为:为了使用简单贝叶斯规则,假设特征的出现是相互独立的。如果一个程序的特征集包含特征F其中,p(F3基于ripper和贝叶斯方法的检测方法将RIPPER方法和朴素贝叶斯方法用于程序分类,这两种方法各有其优缺点,现分析如下:(1)RIPPER是一种基于规则的方法,学习后给出一组规则集,分类过程简单且迅速。它具有可读性强以及易于优化的优点,可以在获取规则后很容易地进行手工修改,从而可以加入某些专家的意见以便提高分类器的性能。但是如果从规则集中找不到合适的规则,则没有很好的解决办法。(2)朴素贝叶斯方法是最有效的分类方法之一,但是它的特征独立性条件在现实世界中常常不能满足。为此人们提出了许多贝叶斯改进算法,这些方法大部分是通过放宽独立性假设来获得更好的性能,如贝叶斯树分类器以及懒惰贝叶斯树分类器等。从以上的讨论可以看出,RIPPER方法和朴素贝叶斯方法分类方法有不同的优缺点,下面我们考虑结合上述两种方法来构造新的程序分类模型:(1)贝叶斯变体公式假设F'和F''是特征集的两个不相交的子集,依据贝叶斯变体公式有:代入上述变体公式将对于整个特征集的独立性假设缩小到对于特征集子集F'中特征的独立性假设,同时附加了条件限制F'',如此公式4所需的独立性假设要弱于公式2需要的独立性假设。(2)规则匹配度定义假设规则集R={R(3)基于RIPPER和贝叶斯方法的程序检测方法基于RIPPER和贝叶斯方法的程序分类方法步骤如下:步骤1在训练样本集上执行RIPPER学习算法,得到规则集R;步骤2在规则集R中查找满足待分类程序的规则,若找到则通过该规则对程序分类,否则进行步骤3;步骤3在规则集R中查找与待分类程序匹配度最高的规则R步骤4找出待分类程序在规则集中出现的特征集F'';步骤5将F''所覆盖的训练样本作为贝叶斯方法训练样本,待分类程序未在规则R(4)方法分析在上述方法中,首先根据RIPPER方法学习后得到的一组规则集对程序进行分类,如果从规则集中找不到合适的规则,则再使用贝叶斯方法。由于利用规则放宽了贝叶斯方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论