数据挖掘和恶意软件检测.docx

上传人:b****7 文档编号:11141018 上传时间:2023-02-25 格式:DOCX 页数:12 大小:467.29KB
下载 相关 举报
数据挖掘和恶意软件检测.docx_第1页
第1页 / 共12页
数据挖掘和恶意软件检测.docx_第2页
第2页 / 共12页
数据挖掘和恶意软件检测.docx_第3页
第3页 / 共12页
数据挖掘和恶意软件检测.docx_第4页
第4页 / 共12页
数据挖掘和恶意软件检测.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据挖掘和恶意软件检测.docx

《数据挖掘和恶意软件检测.docx》由会员分享,可在线阅读,更多相关《数据挖掘和恶意软件检测.docx(12页珍藏版)》请在冰豆网上搜索。

数据挖掘和恶意软件检测.docx

数据挖掘和恶意软件检测

数据挖掘和恶意软件检测

黄宗文,16721539

2016-11-20

摘 要:

  由于计算机网络的发展以及恶意程序编码水平的提高,传统的恶意程序检测技术的不足已经越来越明显,很难满足人们对信息安全的需求。

基于行为的恶意程序检测技术是利用恶意程序的特有行为特征来检测程序恶意性的方法,它能很好地检测未知恶意程序。

这种恶意程序检测技术可以很好地适应恶意程序逐渐呈现的新特点,无疑具有巨大的优越性和广阔的发展空间,应该在今后相当长时间内代表着恶意程序检测技术的发展趋势。

本文介绍了基于静态分析的恶意软件检测,和基于动态行为分析的恶意软件检测,并各自介绍了它们的优劣。

关键字:

数据挖掘;恶意软件检测;特征提取;静态分析;动态行为分析;分类

Dataminingandmalwaredetection

Abstract:

Withthedevelopmentofcomputernetworkandimprovementofmalwareprogramming,traditionalmalwaredetectionmethodsseemobviouslyinadequate,failingtosatisfytheneedofpeopleforinformationsecurity.Themalwaredetectionbasedonbehaviorisamethodwhichachievesdetectionthroughmakinguseofthepeculiarbehaviorfeaturesofmalware.Itdoeswellindetectingtheunknownmalware.Thismalwaredetectiontechniquecouldbeadjustedtotheemergingnewfeaturesofmalware,whichhasgreatsuperiorityandbroadspacefordevelopmentundoubtedly.Consequently,itcouldbethedevelopmenttendencyofmalwaredetectioninalongtime.Thisarticledescribesmalwaredetectionbasedofstaticanalysis,andmalwaredetectionbasedondynamicbehavioranalysis,anddescribestheirprosandcons.

Keywords:

Datamining;Malwaredetection;Featureextraction;Staticanalysis;Dynamicbehavioranalysis;Classification

随着社会信息化程度的不断提高,工业、国防、教育、金融等社会各行各业的信息越来越依赖于计算机和互联网。

然而频繁发生的网络安全事件给人们敲了安全警钟。

计算机与网络安全问题正成为人类信息化所面临的巨大挑战,直接威胁着个人、企业和国家的利益。

而目前计算机与网络安全的主要威胁隐患之一就是恶意程序。

近年来,随着编程技术的普及,恶意程序制作的门槛逐步降低,恶意程序的制作呈现机械化、模块化和专业化特征。

在恶意程序灰色产业链带来的巨大利益的驱使下,恶意程序产业正朝着规模化发展。

恶意程序的爆炸式增长,在使企业及用户遭受到巨大的经济损失的同时,也给恶意程序分析人员带来了巨大的工作压力。

传统的恶意程序分析技术已经远远不能满足新的安全需求。

一方面,基于特征码的恶意程序分析技术,需要对每一个恶意程序的特征码进行提取,对于目前每天有成千上万的恶意程序产生的情况,提取特征码的工作量是巨大的且效率不高。

另一方面,用户端需要定期的升级最新的病毒库,随着新恶意程序的爆炸式增长,病毒特征库的容量也要大幅增长,长此以往会拖累检测分析系统的速度。

因此如何对新的恶意程序样本快速地进行检测和分类,已成为越来越多的专业计算机安全厂商所关注的焦点。

1恶意软件和检测的现状

近年来,随着编程技术的普及,恶意程序制作的门槛逐步降低,恶意程序的制作呈现机械化、模块化和专业化特征。

在恶意程序灰色产业链带来的巨大利益的驱使下,恶意程序产业正朝着规模化发展。

从2008年开始恶意程序大规模爆发,每年新增木马病毒等恶意程序数量级从数十万级跃升至千万级。

图12003年至2010年间恶意软件的数量增加

Fig1Increasedvolumeofmalwarefrom2003to2010

自从恶意程序出现以来,恶意程序的检测技术一直是计算机安全领域关注的焦点。

根据恶意程序分析工具技术模块不同,恶意程序检测方法通常分为静态和动态方法。

在静态方法领域,2001年,在文件二进制特征检测的基础上首次提出了基于数据挖掘的恶意程序检测方法[];之后,借鉴入侵检测、恶意程序检测与分类系统设计与实现中的常用方法,越来越多的研究集中在利用数据挖掘方法对恶意程序二进制文件信息进行学习建模,然后将学习到的模型用于未知恶意程序的检测。

MihaiChristodorescu在恶意程序静态分析[]方法上提出了使用有限状态机对恶意程序进行描述,并提取了一系列用于恶意程序匹配的状态转换图,取得了良好的效果。

但是随着恶意程序制作人员的技术水平不断提高,恶意程序的加密、加壳、压缩等多态及变形技术的使用使得基于静态分析的方法变得越来越困难。

随后Moser指出了基于恶意程序静态分析技术的缺陷,提出了一种基于行为特征的分析检测方法。

因为恶意程序为了实现其恶意功能,在程序执行过程中总是会存在一系列异常的恶意行为。

2004年,J.Xu等人在一次国际会议上的会议论文[]中提出应用程序的API调用序列大致反映了程序行为。

因为应用程序通过API调用获取系统服务和访问系统资源,所以分析API调用可以间接地反映程序的行为。

J.Xu等人基于此做了大量行为分析实验后提出了一种新的恶意程序检测方法:

通过对比已知恶意程序和未知可疑程序的API调用序列,并对两类API调用序列做相似化度量分析,从而确定未知可疑程序的恶意程度。

之后,R.Koike等人利用上述方法开发了一套可以自动检测未知恶意程序行为的系统[]。

由德国的曼海姆大学分布式系统实验室开发的CWSandbox是恶意程序行为检测技术发展过程中一个具有里程碑意义的产品,它不仅具有行为捕获能力,而且可以生成检测报告。

CWSandbox引入了虚拟机技术,让可疑程序在虚拟环境中运行,从而避免了可疑程序可能造成的潜在危害。

并且它采用了APIhook技术提取程序运行过程中API调用序列。

CWSandBox论文有一个重要贡献,它清楚的用实验比较了用户态和内核态APIhook的优缺点。

内核SSDThook具有很高的检测率,不易被反检测技术侦测到;用户态hook实现简单,具有较强的通用性和稳定性。

CWSandBox采用了用户态inlinehook的方式的来采集程序行为特征。

CWSandBox实验得知绝大多数恶意程序为了实现大量传播都是直接调用的标准WindowsAPI,因此采用用后台inlinehook的方式不会影响系统检测率。

Anubis是一款基于开源模拟器QEMU的优秀的恶意程序行为监控系统,TTAnalyze是其前身。

该系统采用了与CWSandbox截然不同的技术原理,在QEMU的虚拟机监控层拦截API调用。

该系统有全自动化,无需修改被监控程序源代码,使用全系统模拟器难以被恶意程序分检测等优点。

但是Anubis和CWSandBox仅仅是根据系统采集到的API数据生成程序行为报告提供给分析人员参考,并没有对采集到的行为进行深度挖掘。

2009年胡永涛等人发表的《Win32环境下恶意代码行为分析实验及思考》[]文章中,全面总结了Windows平台上35种恶意行为,采用Ring3级debug的方式来hook系统API,使用支持向量机(SVM)算法做智能分析,实验检测率可达95%以上。

单纯依靠主动防御的商业安全软件的只能达到56.18%,可见采用智能算法对程序行为进行分析可以有效的提高检测率。

2恶意软件

恶意软件是指在目标计算机上运行的,执行一系列攻击者蓄意安排的攻击操作,可以破坏程序和数据完整性、可用性和计算系统机密性的程序代码和指令集合,传统恶意软件包括木马、病毒、蠕虫和后门程序等。

2.1病毒

计算机病毒的理论早在1949年被提出。

最早的科学定义出现在FrederickCohen的博士论文“计算机病毒实验”中,他将计算机病毒定义为一种形式化的数学模型。

简单的说,计算机病毒就是一种可以通过修改别的程序,将自身复制进其中,使其感染,以达到传染目的的计算机程序[]。

计算机病毒传染的特性和生物病毒类似,因此,它被命名为“computervirus”。

计算机病毒的最重要特性就是传播性[],它可以通过被感染文件的复制或者执行,达到不同计算机之间的传播。

另外病毒还可以通过其他类型的恶意软件,如网络蠕虫,进行不同计算机,甚至不同网络之间的传播。

虽然病毒的主要特征是传播性,但是它们通常都包含很多恶意代码,这些恶意代码可以在计算机上执行命令,删除或破坏文件,终止进程或者进行别的破坏活动。

2.2木马

特洛伊木马的名字起源于古希腊传说中的特洛伊战争。

它是这样的一种恶意软件:

除了良性程序所具有的基本功能外,还有一些不易被发觉的破坏作用。

通常它都伪装成一般的无害的程序,并欺骗用户去执行它,从而进行一些隐蔽的破坏行为,比如可以在被感染的机器上打开网络端口,使木马的创建者远程执行命令。

和病毒,蠕虫不同的是,木马不会进行自我复制传播。

它不需要修改或感染其他程序软件,而是安装一个独立的可执行程序[]。

最近一些报告都显示,木马已经成为最为常见的,影响最为广泛的恶意软件之一。

2.3蠕虫

蠕虫是一种能够自我复制传播,并能够通过网络连接将其自身拷贝感染到其他计算机上的程序。

蠕虫进入计算机后,一旦被激活,就会像计算机病毒那样开始工作,并寻找更多的计算机来进行感染,并且利用其它被感染的计算机,不断进行扩散。

除了传播之外,它还会进行一些破坏活动,对计算机植入木马程序或者执行一些分裂性或者破坏性的活动。

蠕虫可以进行网络传播,借助的工具包括电子邮件,远程执行,远程登录等等。

另外,它与计算机病毒有一些相似之处,都分为潜伏,传播,触发,执行几个阶段。

而与其不同的就是它具备通过网络传播的能力。

2.4后门

后门是这样一种恶意软件,它允许攻击者绕过正常的系统安全防护机制,通过非授权或者不经过系统登录,就能够获取对系统的远程连接或者控制权限。

攻击者在系统上安装后门程序,主要是为了控制系统,为进一步的攻击提供更加便捷的连接操作。

2.5Rootkit

Rootkit是这样一种恶意软件,它被安装在系统中,并且可以使攻击者以管理员或root权限访问系统[]。

由于管理员权限可以使用操作系统中的任何功能和服务,因此它可以使攻击者完全控制整个系统。

并且rootkit对主机的访问或修改操作都以极为隐蔽的方式进行。

Rootkit能够通过修改操作系统来隐藏自己,也可以隐藏自己对操作系统进行的修改,或是擦除自己访问系统留下的痕迹。

用户无法发现rootkit的存在,也不知道系统被访问或修改过了。

根据重启操作系统后是否还能继续工作进行分类,rootkit分为持续的rootkit和基于内存的rootkit。

前者在系统每一次启动都会被激活;后者没有持续性,系统重启后就会失效。

根据执行模式,rootkit又可被分为用户模式rootkit和内核模式rootkit。

用户模式的rootkit只能截获应用程序API,而内核模式的rootkit可以截获内核模式API,能更好的隐藏自己。

2.6僵尸网络

Bots的名字起源于robot。

一旦bots感染了某一台计算机,这台计算机就被称为网络僵尸。

Bots在被感染计算机上将进行潜伏,而不做任何动作,直到它收到Bots操纵者发出的某种命令。

Bots操纵者是同个僵尸网络中,所有僵尸都连接到一个远程的web服务器,如FTP服务器或IRC服务器,它可以对这些网络僵尸发出远程指令。

还有一些僵尸网络采用P-2-P的方式工作。

僵尸网络往往被用于发起大规模的DDoS攻击,散发垃圾邮件,或者直接盗取被感染机器的敏感信息。

商用或军用的僵尸网络会产生更大的威胁,因此出现了黑客出租bots的盈利方式。

当前僵尸网络已经成为网络安全领域最具挑战性的问题之一。

由于它数量巨大而且分布广泛而无序,给监控和防护带来了很大难度。

2.7间谍软件、广告软件

Spyware[]和Adware是这样一种恶意软件,它强行在计算机上安装,而这种安装往往不是计算机使用者所同意的。

他们可以在计算机上强制显示广告,劫持浏览器session,或把计算机使用者所浏览的页面强制重定位到其他网站,这些重定向的网站也许含有网页木马,它会强制下载并安装这些木马。

它们还可以监控用户行为,盗取用户信息,然后再把这些信息发送给恶意软件的制作者等等。

3恶意软件检测

恶意软件的检测是恶意软件研究领域的重点问题,在恶意检测之前进行的行为分析只是一个过程和手段,其目的是为了使恶意软件判定的效果更好。

在行为分析中,我们已经从恶意软件中提取中信息,并对它建模。

在判定过程中,通常的做法是进行特征模型的匹配。

比如,对已有的恶意软件集合建立特征库。

在对未知软件进行行为分析后,将分析到的特征模型和特征库中的特征模型一一匹配,如果匹配成功,则判定此软件为恶意软件。

图2恶意软件检测流程

Fig2Malwaredetectionprocess

3.1基于静态特征的检测

传统杀毒软件进行病毒检测的过程。

首先在行为分析时分析程序的二进制序列或者内存镜像,并从中提取特征码,它往往是一段特定的恶意二进制序列,这个恶意序列很少在非恶意程序中出现。

通常,这个特定的序列是由反病毒专家人工提取的。

也使用一些在静态分析时自动提取特征码的方法进行提取。

在进行恶意判定时,我们用这个特定的二进制序列和已有的二进制序列特征库进行串匹配或者正则表达式匹配,如果匹配成功,则判定此程序为恶意程序,否则判定为非恶意程序。

图3传统恶意软件检测流程

Fig3Traditionalmalwaredetectionprocess

样本分为恶意软件样本和正常文件样本,如果应用在反病毒产品中,应获取足够多的具有代表性的训练样本,考虑到只是验证方法的可行性,我们从经过杀毒软件检测无病毒的XP系统windows目录和ProgramFiles目下获取了正常PE文件,从VXHeavensVirus网站下载了恶意软件。

静态的信息是指从程序的源代码,程序的二进制执行文件,或者是程序的反汇编码中获取程序信息。

静态信息获取的缺点在于静态信息通常是冗余的。

恶意软件制作者为了增加恶意软件检测的难度,会在程序源代码中加入很多垃圾信息,使其中的有效信息提取变得更加困难,所以我们在特征提取的时候,我们使用决策树算法,把特征选择算法本身作为组成部分嵌入到学习算法中。

去掉冗余的特征,留下比较有代表性的PEheader20个特征和DLL30个特征。

表1PE标题的排名最靠前的20个特征的列表

Tab1Listofthetopranked20featuresofthePEheader

表2通过调用频率列出排名最靠前的30个DLL名称

Tab2Listofthetopranked30DLLnamesbycallingfrequency

我们使用的数据集是从VXHeavensVirus获得的236756恶意软件和10592个windows良性可执行软件组成共247348个软件的数据集。

采用SVM,J48,NB分类器,10倍交叉验证所得的结果。

表3各单项及组合特征的系统性能列表

Tab3Listofthesystemperformancebyindividualandcombinedfeatures

DR(DetectionRate)=

FPR(FalsePositiveRate)=

OA(OverallAccuracy)=

TP真正类,FP假正类,TN真负类,FN假负类。

表格中显示的结果,决策树分类器效果最佳。

3.2基于动态行为特征的检测

作者在行为分析[]时采用的是动态的信息捕获,在运行程序时捕获程序调用的WindowsAPI函数序列,并定义了一个35维的行为特征向量模型。

从程序调用的API序列中提取出35维的向量值。

因此一个恶意程序被抽象为35维的特征向量。

在进行恶意判定时,作者首先通过大量的恶意样本,学习出了恶意软件标准向量值,然后使用贝叶斯方法进行恶意判定。

图4基于行为分析的恶意软件检测流程

Fig4Malwaredetectionprocessbasedonbehavioranalysis

图5基于软件虚拟化的行为分析系统架构

Fig5BehavioralAnalysisSystemArchitectureBasedonSoftwareVirtualization

动态的程序信息获取[]是指在程序运行时,捕获程序的运行状态所获得的程序信息。

这些运行状态包括程序的CPU执行指令序列,系统调用(systemcall),应用程序接口(API),或是抽象度更高的系统服务等。

和静态分析一样,动态的信息获取也有其优缺点。

首先,动态信息获取比静态信息获取冗余度更低,所有的信息都是我们实时捕获的,因此它所执行的指令都是有效的。

哪怕是一个无限循环,我们也认为是该程序的行为。

而且,我们可以实时捕获程序的系统调用,API等信息,它们比静态的汇编码具有更高的系统抽象度。

另外,由于程序运行时必须自行解壳解密,因此动态信息获取不受加壳加密的影响,而且一些指令级的变形技术对系统抽象度更高的系统调用或是API是无效的,所以它受变形技术的影响较小。

但是,动态信息是不完整的,程序实时的信息受到系统版本,时间,系统状态等诸多因素的影响,因此我们捕获的动态信息很可能只是程序源代码所要表现的行为的一部分,甚至是不正确的。

比如,我们利用沙盒跟踪某恶意软件,希望能够知道该恶意软件在运行中做了什么。

如果恶意软件具有反调试或反跟踪功能,一旦发觉到自己被运行在沙盒中,便表现出非恶意的行为,这样动态分析的目的就无法达到了。

很多反跟踪,反调试手段都可以使恶意软件检测自身是否处在被调试状态或者运行在沙盒环境里。

我们介绍一些动态跟踪方法,并会讨论针对这种方法的反跟踪反调试技术。

图6检测恶意可执行文件

Fig6Detectingmaliciousexecutables

表4提取的特征的平均值。

每行中的粗体值突出显示有趣的离群值。

Tab4Meanvaluesoftheextractedfeatures.Theboldvaluesineveryrowhighlightinterestingoutliers.

表5用于检测恶意可执行文件的AUC。

每列中的粗体条目表示最佳结果。

Tab5AUCsfordetectingthemaliciousexecutables.Theboldentriesineachcolumnrepresentthebestresults.

3.3数据挖掘和恶意软件检测

恶意软件检测,主要是为了区分良性软件和恶意软件。

所以是一个二分类问题,几乎所有有关分类的数据挖掘技术都可以使用。

但在发现病毒特性的时候,又用到了聚类算法。

常用分类算法:

贝叶斯分类器,决策树,支持向量机,神经网络,k-近邻常用聚类算法:

k-均值,k-中心点等等。

4结束语

本文介绍了数据挖掘技术在恶意软件中的应用的,重点介绍了两个实例,一个是基于静态特征的检测,一个是基于动态行为特征的检测。

动态检测,对于新型恶意软件的检测好于静态检测,但是静态检测对于已知恶意软件检测效率较高。

恶意软件也在不断发展,针对静态检测的加密,多态,变形,冗余,针对动态检测的反跟踪,反调试。

可见恶意软件检测任重道远,我们应该结合静态,动态分析的优点,找到更好的检测方法。

参考文献:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1