网络工程师高级职称论文范文
所属栏目:计算机网络论文
发布时间:2014-01-21 16:52:23 更新时间:2014-01-21 16:54:22
随着网络开放性的不断增强,网络应用系统涉及领域的扩展,计算机所面临的威胁也越来越广泛了,其中恶意代码对计算机安全的威胁是最为严重的。同时,网络的普及和发展也使得恶意代码的传播更为方便。
【摘要】随着网络及应用技术的不断发展,恶意代码的问题日益突出。目前大多数反病毒措施都是基于传统的基于特征码的扫描技术,使用“扫描引擎+病毒库”的结构方式虽然对已知病毒的检测相对准确,但对新出现的恶意代码无法准确、及时地做出检测。本文提出了一种基于亲缘性恶意代码分析方法,使用系统函数集合、行为特征、相似代码特征这三个方面来表征一类恶意代码的特征,以达到缩小特征库规模,快速检测未知恶意代码的目的,特别是变种恶意代码。实验结果表明本文所提出的方法可以取得良好的检测结果。
【关键词】亲缘性,恶意代码,恶意代码亲缘性特征,系统函数,行为,相似代码
1引言
根据赛门铁克《互联网安全威胁报告》第14-17期,如图1所示,可以窥见恶意代码迅速发展的情况。据分析,绝大多数新增恶意代码是由原有的恶意代码经过变形得到的,同时,恶意代码每年给全球造成的经济损失也在与日俱增。自恶意代码出现以来,社会各界一直在对恶意代码的分析与检测做着不懈努力,本文是对恶意代码分析的一种新尝试,并提出了一种基于亲缘性分析的恶意代码特征码提取方法,意在加强特征码的通用性,以便检测未知的恶意代码。所谓亲缘性,即为同一种族的恶意代码之间所存在的某种联系,类似于人际关系间的亲属关系。
本文使用系统函数集合、行为特征、相似代码特征这三个方面来来定量的表征这种亲缘性。为表述简洁,本文将基于亲缘性分析的恶意代码特征码简称为恶意代码亲缘性特征(MaliciouscodeAffinitySignature,MAS)。
2传统特征提取技术面临的问题
传统杀毒软件主要依赖于恶意代码特征码来进行识别,反病毒分析人员获取某一种恶意代码样本后,筛选出该恶意代码不同于其他恶意代码的一组特征二进制串,或者其散列值作为其特征码。若以此方式处理当今出现的变形恶意代码,则特征库要为每一种变种制作一份独立的特征数据,工作量非常大。
当前对抗传统特征提取的一般方法主要包括随机花指令和哑代码、等功能指令序列替换、代码段异或、加密等技术。更为复杂的对抗技术是采用多态和变形技术。实现恶意代码多态变形有许多方法,其中一种方法是通过在原始代码中采用随机顺序排列指令、随机调用压缩器或扩展器来变形代码、随机优化压缩代码等手段生成具有同样功能的多条随机操作码来扩展代码,在此基础上进一步采用增加随机花指令、增加随机垃圾数据、加壳等方法获得最终代码[6]。如上所述,恶意代码在生成过程中经过了一系列的复杂变换、变形,反病毒程序无法找到真正的检查过程和解码程序,从而使得整个安全检查机制十分难于分析。
3MAS
3.1MAS基本原理
MAS方法的基本思想是首先对恶意软件样本库中的恶意软件进行分类,然后对每一类恶意软件提取若干能表征此类恶意软件的特征,并对提取到的特征进行筛选,选择满足条件的特征码来构建特征库。为了找到适合表征每一类恶意代码的特征码,在分析了多类恶意代码后,得到了几点启示。(1)恶意代码为了要实现特定功能,必要使用系统的API函数(包括内核级和用户级的),而同一类的恶意代码往往使用了相同或者相似的系统API函数,以达到相同的破坏功能。所以可以考虑采用系统API集合(选用那些可能造成危险的函数)来表征一类恶意代码。
(2)恶意代码的目的在于造成一定的破坏,则其一定存在某些恶意的行为,而同一类恶意代码往往都实现相同的破坏功能,所以可以对每一类恶意代码进行分析,得到每一类行为的恶意行为特征。
(3)同一类的恶意软件必定有相类似的代码段或者特殊指令的调用,所以可以考虑为每一类恶意代码提取相似的代码段。
综合考虑了以上三点之后,本文提出了MAS特征,即对于每一类恶意代码将系统函数集合、恶意行为、相似代码段,这三方面结合成一个通用的恶意代码特征(以下把这三项称为MAS特征的子特征)。
但是对于不同类别的恶意代码,它们在上述三个方面可能相差甚远,所以对于不同类别的恶意代码,它们的三个子特征所占的比重应有所差别。为了之后检测工作的准确度,应该根据三个子特征的轻重程度和表征的特殊度给出不同的权值。例如某些类的系统函数比较少,则可以适当减轻这一子特征的权值,而有些恶意代码含有某些特别大的破坏行为的,例如修改或删除系统文件,则应提高其行为子特征的权值。如此,根据各方面的分析,可以得出一个这三个方面的比率,这个比率也要作为MAS特征的一个必要项。所以一个完整的MAS特征包括四个方面,即危险函数、恶意行为、相似代码、前三者的比率。
3.2算法步骤
依据MAS的基本原理,归纳算法的基本步骤。
3.2.1恶意代码样本分类
为了能按照恶意代码类别对每一类恶意代码提取出通用的特征码,首先需要对恶意代码样本进行分类,这一步是MAS方法的基础。
本文所采用的恶意代码样本分类原理是将具有相似特征(主要是指令执行序列、特定指令、内存使用、端口使用等方面的相似性)的恶意代码归为疑似同一类恶意代码。为了提高恶意代码分类效率和准确性,本文采用自动化和人工相结合的分类方法。纯手工的方法需要大量的专业人员,费时费力,而纯自动化的方法不可避免的会产生一些失误之处。所以采用两者结合的方法能取得比较好的结果。此处采取的是先使用自动分类系统进行自动分类,再人工确认的步骤。
本文借助了开源虚拟机进行自动分类系统的开发。首先对开源的虚拟机进行必要的裁剪,去掉不必要的功能,以提高虚拟机的运行效率,然后在虚拟机中安装相应的操作系统,将内核模式的监控程序加载到操作系统内核,以便监控恶意代码加载和运行过程的特征,最后把恶意代码在虚拟机中运行起来,通过分析其在指令执行序列、特定指令、内存使用、端口使用、网络通信等方面的相似性,来实现恶意代码分类。采用这种方法实现对恶意代码自动分类的技术优势是分类速度快,同时通过监控虚拟机可以获得程序执行时底层的信息,准确性相对较高。在自动化分类结束后,再由工程人员对自动分类系统的结论进行核实,以实现恶意代码的准确分类。
3.2.2系统函数集合收集
经过步骤1,我们得到了已经分类的恶意代码样本。根据MAS的基本原理,在这一步对每一类恶意代码分别进行系统API函数的收集,得到的集合称为系统函数集合。
对于同属于一类的所有恶意代码,配合使用逆向技术和虚拟机技术,静态分析其源代码的输入表,获得系统函数集合。此处需注意一点,目前很多恶意代码都使用了加壳技术,如果不进行脱壳操作,静态分析结果会出现严重偏差。经过加壳的恶意代码样本,其输入表会被壳修改,所以首先要对其进行脱壳(可以使用脱壳工具或手段进行脱壳,也可以结合动态脱壳进行分析)。脱壳成功后再来分析“纯净”的代码,以得到正确的系统函数集合。对于这里得到的系统函数集合,将在步骤5做进一步的处理。
3.2.3恶意行为特征收集
将经过步骤1分类的恶意代码样本,按照类别,送入虚拟机运行,监视其行为,获取每一类恶意代码的恶意行为集合。所谓恶意行为,即可能对计算机造成严重破坏的行为,例如:删除、修改系统文件,创建、修改注册表等。如表1所示,为常见的恶意代码行为列表。由于在上述第2步中已经进行了API函数集合的收集,所以此处,忽略原生API这一项。所谓原生API,即系统最底层的API,而非上层扩展后的API。
在本步骤,我们利用虚拟机环境和主机间的管道通信,达到虚拟机将分析得到的恶意代码行为自动发送到主机的目的,从而实现恶意行为的收集。对于这里得到的恶意行为集合,将在步骤5做进一步的处理。
3.2.4相似代码段特征抽取。
根据MAS原理,对步骤1分好类的恶意代码进行相似代码特征的抽取,最后得到每一类的相似代码片段特征(若干条关键代码片段)。所谓相似代码,即相类似的代码段或者特殊指令。
本文对每一类恶意代码采用代码静态启发式分析技术进行代码级的分析,模拟代码执行逻辑,得到每一类恶意代码的相似、相近代码,提取若干条特征码[10]。由于是对每一类恶意软件相类似的代码段进行特征提取,这样的特征具有通用性,在一定程度上避免了为每一个恶意软件都必须提取一个或多个特征,导致特征库过于庞大的问题。
对于这里得到的相似代码特征,将在步骤5做进一步的处理。
3.2.5恶意代码的特征整合。
经过上述2、3、4步骤之后,就分别获得了每一类恶意代码的系统函数集合、恶意行为集合、相似代码特征集合,但是这些初始的数据还是比较繁琐,不够统一,还不能作为MAS特征的子特征。为了能更好的用于以后的检测工作,依据MAS原理,对这些信息进行必要的处理。
首先要对系统函数的集合做筛选和评级。由于所有的程序都会或多或少的调用系统函数,也并不是所有的系统函数都是只有恶意代码才调用的,所以要对已经获得的系统函数集合要做一个筛选,找出可能具有危险性的系统函数子集合。并且,不同的系统函数有不同的功能,对计算机的安全威胁是不同的,即其有不同的危险级别。其次是对恶意行为特征的处理,恶意行为所造成的的危害大小也是有所不同的,即恶意行为也有不同的危险级别。本文对危险级别做出一个大致的划分:极危险、很危险、一般危险、轻度危险。再次是对相似代码特征的处理,对于每一类恶意代码,本文定量的提取多个特征,之后对多个特征做一个排序处理,根据其通用程度排出先后顺序。最后是对上述的三个子特征的量化整合处理。为了简化描述,此处参照了文献[11]的表述方法,使用01编码来表示危险系统函数子特征和恶意行为子特征。对于危险系统函数子特征,本文使用2个字节的编码来表示,其中第一个字节表示危险等级和dll名字,第二个表示API函数名。第一个字节,将最高的2位表示危险等级,如表2所示,后6位表示dll名称,例如用000001表示kernal32.dll,000010表示uesr32.dll等。第二个字节以相同的方式来表示不同函数。如此就可以用2个字节的01编码来唯一的表示一个API函数。对于恶意行为子特征,本文使用1个字节的编码来表示,其中最高的2位用来表示危险等级,如表2所示。之后的2位表示行为对象,如表所示。最后4位表征行为,例如以0001表示创建,0010表示删除等。对于相似代码子特征,本文使用各个相似代码段的md5哈希值来存储,并且越在前面的表示其通用性越强。
之后对于三个子特征,给它们分配不同的比例,整合成一个完整的MAS特征,即每一个MAS特征包含四个方面:危险函数、恶意行为、相似代码、前三者的比率。本文为了计算方便,将三者的比率统一设置为1:1:1.
将步骤1得到的已经分类的恶意代码样本,分别经过步骤2、3、4、5的处理后,便得到了一个可以用于之后检测工作的MAS特征库。
3.3MAS小结
以上对MAS的所有阐述,可以用如图2所示的流程图来做一个总结,该图清晰的表现了MAS方法的各个主要步骤。
MAS方法的优势在于,对于同一类的恶意代码,提取出一个通用的MAS特征,以显著缩小特征库的规模,明显减少匹配特征库的时间花费。
4实验设计与结果分析
将上述得到的MAS特征库用于恶意代码检测引擎,就可以实现对恶意代码的检测了。为了测试使用了MAS特征库的检测引擎的检测效果,本文设计了实验一和实验二这二个实验来测试检测引擎,又设计了实验三将本文的实验结果与其他文献作对比。
实验一:验证检测率
实验内容:随机抽取恶意代码,共计1378个,观察使用了本文提出的MAS特征库后的检测情况。
实验结果:如图3所示为检测的统计结果。
实验二:验证误报率
实验内容:随机抽取100个正常程序,观察使用了本文提出的MAS特征库后的检测情况。
实验结果:如图4所示为检测的统计结果。
实验结果分析:从图3所示表格可以计算出,检测引擎共检测出恶意代码的数量为1340个,检测率达到了97.24%,漏报38个,漏报率为2.76%;从图4所示的表格可以计算出,检测引擎误报个数是6个,误报率为6%。可以看出使用了MAS特征库的检测引擎获得了良好的检测效率。对检测引擎的检测率、漏报率、误报率做出统计,如图5所示。
实验三:比对分析
为了对检测率、漏报率、误报率有更直观的认识,以下将本文的结果与其他2篇文献作比对分析。
文献12采用的是恶意代码行为的检测方法,该文献使用了2731恶意代码来做检测率测试,其检测率为65.2%,又使用了1043个正常代码做误报率测试,误报率为2.4%。与本文的实验一、实验二使用的是完全相同的策略,可以直接比较。可以发现,本文检测率远高于参考文献,但误报率稍高。
文献13采用的是API序列+集成学习的方法来检测恶意代码,该文献使用从网络收集的116个PE类型的恶意代码,从纯净的XP系统搜集到的284个正常文件,共400文件组成实验样本,按3:1的比例分为训练集和测试集。其检测率为92.6364%,误报率为3%。与本文不能直接对比,但是参照来说,本文有较高的检测率,但误报率稍高。
分析本文误报率稍高的原因,由于我们在提出MAS特征库时,为了计算简单,将3个子特征的比率设置为了1:1:1,若要达到更好的检测效果,并降低误报率,应当更精确的计算三个子特征的比率。
5结束语
本文提出了一种基于亲缘性分析的恶意代码检测方法,将危险函数集合、恶意行为、相似代码这三个子特征整合成每类恶意代码的一个通用MAS特征,避免了特征库过于庞大的问题,并能在之后的检测工作中提高匹配效率。最后本文将MAS特征库用于检测引擎,设计实验对其做了验证,实验结果表明使用了MAS特征后,可以获得良好的检测效率。本文提出的MAS方法已经成功的运用于863项目,实现了一个基于网络的入侵检测系统。
参考文献
[1]郭帆,何亮亮.浅谈恶意代码检测系统的设计与实现[N].东北财经大学学报,2010年3月(第2期,总第68期):78-82.
[2]王硕,周激流,彭博.基于API序列分析和支持向量机的未知病毒检测[J].计算机应用,2007年8月(第27卷第8期):1942-1943.
[3]朱立军.基于动态行为的未知恶意代码识别方法[N].沈阳化工大学学报,2012年3月(第26卷第1期):77-80.
[4]BastropJ,ForestS,NewmanMEJ,etal.Technologicalnetworksandthespreadofcomputerviruses[J].Science,2004(304):527-529.
[5]WalensteinA,MathurR.Normalizingmetamorphicmalwareusingtermrewriting[C].MProcofthe6thIEEEWorkshoponSourceCodeAnalysisandManipulation.Philadelphia:IEEEPress,2006:1-10.
[6]庞立会.恶意代码变形引擎研究[J].计算机科学,2006,33(8增刊):68-70.
[7]陈志云,薛质.基于Win32API调用监控的恶意代码检测技术研究[J].信息安全与通信保密,2009:73-75.
[8]陈建,范明钰.基于恶意软件分类的特征码提取方法[J].计算机应用,2011年6月(第31卷增刊1):83-84.
[9]李华,刘智,覃征,张小松.基于行为分析和特征码的恶意代码检测技术[J].计算机应用研究,2011,28(3):1127-1129.
[10]左黎明,刘二根,徐保根,汤鹏志.恶意代码族群特征提取与分析技术[N].华中科技大学学报(自然科学版),2010年4月(第38卷,第4期):46-49.
月期刊平台服务过的文章录用时间为1-3个月,依据20年经验,经月期刊专家预审通过后的文章,投稿通过率100%以上!