恶意软件检测技术综述

2018体系结构安全大作业

申明:转载请注明出处

恶意软件检测技术综述

摘要

本文介绍了恶意软件、恶意软件探测技术和探测器的定义,以及研究它们的现实意义。概述了恶意软件探测技术的具体分类和各个类别的研究现状。结合研究现状,总结了软件探测器性能损耗高,覆盖范围有限的特点,提出了可以结合计算机组成结构原理,开发底层硬件分类器的思想,并且结合国内外硬件探测器研究,列举了几个常用的检测指标,总结了他们的贡献和不足。最后,提出了发展软硬结合的多级探测技术的展望。

第一章 绪论

恶意软件是任何旨在损害计算机,服务器或计算机网络的软件。恶意软件在植入或以某种方式引入目标计算机后会造成损害,并可采取可执行代码,脚本,活动内容和其他软件的形式。该代码除计算机病毒,蠕虫,特洛伊木马,勒索软件,间谍软件,广告软件,恐慌软件外,还包括其他形式的恶意代码。

一般来说,恶意软件的植入是分时间段的,放在软件的生命周期中来看,有预发布阶段和发布后阶段。内部威胁或者内部人员通常是唯一能够在将软件发布给最终用户之前将恶意软件插入软件的黑客类型。其他黑客人员或者组织在发布后阶段插入恶意软件。

恶意软件在未明确提示用户或未经用户许可的情况下,在计算机上安装运行,一般具有下述行为的一种或多种:强制安装、浏览器劫持、窃取、修改用户数据、恶意收集用户信息、恶意卸载、恶意捆绑及其他侵犯用户知情权、选择权的恶意行为等。这些行为将严重侵犯用户合法权益,甚至将为用户及他人带来巨大的经济或其他形式的利益损失。所以,研究恶意软件检测技术,不仅仅是学术界的一个研究方向,也是维护网络世界安全的重要责任。

第二章  理论准备

扫描二维码关注公众号,回复: 1163505 查看本文章

2.1 恶意软件检测技术与恶意软件检测器

恶意软件检测器是恶意软件检测技术的实现和检验方式。

一般来说,恶意软件检测技术分为两类:基于异常的检测和基于签名的检测。基于异常的检测主要是基于对正确程序行为的积累和了解,如果程序的行为不符合正常程序行为的轨迹,那么就判断它为恶意软件。在基于异常的检测中,有一个子类叫做基于规范的恶意软件检测,是对程序运行建立一系列的标准和准则,认为只有符合这些标准或者准则的程序才是正常的程序,如果不符合这些标准,则认为是恶意代码或者恶意软件。基于签名的检测主要是基于对恶意行为的积累和检测,系统会建立一个恶意行为存储库,如果软件的行为与已经存储的恶意行为匹配,那么就认为他是恶意软件。

每一种恶意软件检测方法都可以根据具体的检测方式再细分为静态、动态和混合态三类。例如,静态的基于签名的方法只会利用结构信息(比如字节序列)来确定恶意,而动态方法则会利用程序运行时的信息(例如:在运行时间堆栈中监察系统堆栈行为是否正常),一般来说,静态方法试图在执行被检查程序之前检测恶意软件,相反动态方法试图检测程序执行期间或者程序执行后的恶意行为。两种方法的混合是混合检测技术。具体分类如下图所示:

2.2 恶意软件检测研究现状

2.2.1基于异常的检测研究现状

基于异常的检测通常发生在两个阶段,分别是学习阶段和检测阶段。在训练阶段,探测器学习正常的行为,在检测阶段,探测器利用学习到的知识对恶意代码进行检测。

动态检测

目前世界上基于异常的动态检测方法主要有以下研究成果:wangstolfo提出的PAYL工具,它是一种为系统上的每个服务(端口)计算预期有效负载的工具,在学习阶段,PAYL学习正常程序行为为每一个端口建立一个质心模型,然后在检测阶段,将检测程序的有效载荷与质心模型进行比较,检测两者之间的马氏距离,如果检测程序与质心模型距离太远,则认为有效负载是恶意的;

LeeStolfo提出了将数据挖掘与动态检测相结合的方法,使用数据挖掘技术,通过学习正常程序建立规则集合,应用规则集合检测程序;Sekar等人创建了基于有限状态自动机(FSA)的异常检测方法,FSA中的每个节点表示PUI中的状态(程序计数器),该算法利用该算法来更快地学习正常数据并执行更准确的检测;

佐藤等人提出了基于系统调用频率的检测方法,监控系统调用的频率是否符合正常程序特征;TaylorAlves-Foss提出了一种低成本的检测异常流量的名为异常交通事件的网络分析(NATE),该技术专注于利用网络协议漏洞的攻击。

静态检测

在基于静态异常的检测中,使用受检查程序的文件结构特征来检测恶意代码。基于静态异常检测的一个关键优势,是它的使用可以使在执行之前检测恶意软件成为可能,而不必在主机系统上执行恶意软件执行程序。

现在主流的静态异常检测技术是Li等人提出的文件打印分析技术(Fileprint),该技术在训练阶段推导出一个模型或者一组模型,根据他们的结构(字节)组成来表征系统上各种文件类型的特征,这个技术的前提是良性文件的组成中拥有特定的可预测的常规字节。然后在检测阶段看软件是否具有相同的结构特征。

2.2.2基于签名的检测研究现状

动态签名检测

基于动态签名的检测特点是仅使用在执行PUI期间收集的信息来确定恶意软件,换句话说,就是在程序的执行过程中或者执行后才能判断出它是不是恶意软件,基于动态签名的检测可以揭示恶意程序真实的恶意目的。

Ilgun等人提出了基于规则的IDS检测方法,把攻击过程建模为状态转移图,然后检测过程中将程序行为与状态转移图进行对比。AIice等人提出了一种基于已知恶意行为的基于签名的蠕虫检测方法,这种方法是通过监视数据流来识别签名。

静态签名检测

静态的基于签名的恶意软件检测的特点是检查程序的代码序列,以揭示程序的恶意意图。基于签名的方法使用系统积累的知识,也就是系统积累的恶意软件指令序列来做软件检测,这些代码序列也成为签名。基于静态签名的方法的优点是,可以在不需要运行可执行文件的情况下较为准确地分析PUI和恶意代码行为。

Jha等人提出了可执行文件静态分析器,Sulaiman等人提出通过比较PUI的汇编代码和已知的恶意签名來识别恶意软件,其中PUI使用生成ASM代码的PE

Explorer进行反汇编。在christodorescu等人的工作中,提出了使用语义感知来识别恶意软件的技术,恶意软件签名由模板表示,每个模板是指令、变量和符号常量的三元组,恶意软件检测过程需要三步,

首先将PUI转换为独立于平台的中间表示(IR),接下来针对PUI的中间表示计算控制流图,并将它与模板的控制流图进行比较,最后通过使用def-use进行比较,如果相同则程序是恶意的。另外,kumarSpafford还提出了一种基于正则表达式的匹配检测病毒的通用扫描器,利用模式匹配算法搜索匹配文件输入流,看是否有与恶意模型匹配成功的恶意软件。

第三章 从计算机系统结构看恶意软件检测

本章将从计算机系统结构角度简述恶意软件检测技术。前几章所讲的内容,都是介绍什么是恶意软件,什么是恶意软件检测技术和恶意软件探测器,以及恶意软件检测技术的分类,本章将着重讲述恶意软件检测技术在计算机底层硬件上的实现。恶意软件可以分为基于异常的和基于签名的两大类,但是分类的标准是检测的方法和原理,分类的过程中并没有对技术的具体实现进行规定,实际上,技术的实现是可以基于计算机结构的任何一个层次的。结合以后的研究方向,本报告本章会重点探讨在处理器底层硬件上实现恶意软件检测。

恶意软件的日益复杂化使其检测变得更加困难,恶意软件检测所面临的一个大的挑战就是,恶意软件探测器所需的软硬件资源成本使其不能始终监控每个应用程序,这个问题在利用高级信息的软件检测上尤为突出。也就是说,恶意软件探测器在工作的过程中,会消耗计算机的软件、硬件和网络等等资源,伴随着恶意软件日益复杂隐蔽的攻击,需要的资源也会越来越多,但是计算机本身的资源是有限的,所以这即会对计算机性能造成损失,也会影响恶意检测的效果。典型的在线恶意软件检测技术包括VM内省,动态二进制检测,信息流追踪和软件异常检测等,这些解决方案覆盖范围都有限制并且引入了大量的开销。应用层探测器软件的特点,在一定程度上将恶意软件检测限制为基于静态签名的扫描工具,这些扫描工具使用模式匹配来查找已知恶意软件的签名,然而使用程序混淆或者简单的代码转换可以轻松避开检测,这些工具的已知的局限性,给攻击者绕过他们提供了机会。

所以,开发底层的恶意软件探测器,使用更简单的分类器实现硬件,可以更高效并且以更低的性能损耗成本实现恶意软件检测。

在本报告中,我们使用底层来表示关于执行程序的计算机架构信息 。底层信息是指计算机架构事件,如高速缓存未命中率,分支预测结果,动态指令混合以及数据引用模式。

使用底层信息进行恶意软件检测的研究在国内外都有开展,Bilar等研究了恶意软件中操作码的使用频率,发现了恶意程序与常规程序操作码的使用频率差异很大。Santos等人和Yan等人采用了基于操作码序列签名的检测方法,分类器通过对操作码序列的检测来进行分类。Demme等人收集了执行中的程序和恶意软件的性能计数器统计数据,通过分析可知离线机器学习工具可以有效分离恶意软件。Tang等证明,基于底层信息的无监督学习也可以成功地对恶意软件进行离线分类,无监督学习更适用于检测新型恶意软件和攻击的演变,但是需要更复杂的硬件实现。

总体来说,基于底层信息的恶意软件检测效率更高,但是目前仍旧只能局限于离线的程序检测。在另一方面,引入机器学习等前沿技术辅助底层恶意软件检测,虽然能够显著提升检测准确性,降低漏判率和误判率,但是复杂的机器学习算法会在一定程度上增加硬件实现的复杂性。

第四章 总结

恶意软件检测技术无论是基于异常的还是签名的,检测方法是动态的还是静态的,都存在其局限性,不仅仅是表现的检测准确性上,还是表现在对计算机性能的损耗上。为了降低计算成本,减少性能损耗,国内外专家提出了基于硬件的恶意软件检测机制,并计划将机器学习技术结合到分类器的设计中,这必然会增加硬件实现的复杂性。在未来,或许我们可以尝试实现一种多级的恶意软件检测机制,在底层硬件实现简单分类器的集成,再结合上层的算法和检测机制,在实现复杂度和计算性能之间,在软件和硬件之间寻找一个更好的平衡点。

参考文献

[1] Tang A, Sethumadhavan S, Stolfo S J. Unsupervised Anomaly-Based Malware Detection Using Hardware Features[C]// International Workshop on Recent Advances in Intrusion Detection. Springer International Publishing, 2014:109-129.

[2] Idika N, Mathur A P. A survey of malware detection techniques[J]. Purdue University, 2007.

[3] Kolbitsch, Clemens, Comparetti, et al. Effective and efficient malware detection at the end host[J]. 2009.

[4] Ozsoy M, Khasawneh K N, Donovick C, et al. Hardware-Based Malware Detection Using Low-Level Architectural Features[J]. IEEE Transactions on Computers, 2016, 65(11):3332-3344.

[5] Khasawneh K N, Ozsoy M, Donovick C, et al. Ensemble Learning for Low-Level Hardware-Supported Malware Detection[C]// International Symposium on Research in Attacks, Intrusions, and Defenses. Springer-Verlag New York, Inc. 2015:3-25.

[6] Bilar D. Opcodes as predictor for malware[J]. International Journal of Electronic Security & Digital Forensics, 2008, 1(2):156-168.

[7] Bletsch T, Jiang X, Freeh V W, et al. Jump-oriented programming:a new class of code-reuse attack[C]// ACM Symposium on Information, Computer and Communications Security. ACM, 2011:30-40.

[8] Christodorescu M, Jha S, Seshia S A, et al. Semantics-aware malware detection[C]// Security and Privacy, 2005 IEEE Symposium on. IEEE, 2005:32-46.

[9] Demme J, Maycock M, Schmitz J, et al. On the feasibility of online malware detection with performance counters[C]// International Symposium on Computer Architecture. ACM, 2013:559-570.

[10] Elwell J, Riley R, Abughazaleh N, et al. A Non-Inclusive Memory Permissions architecture for protection against cross-layer attacks[C]// IEEE, International Symposium on High PERFORMANCE Computer Architecture. IEEE, 2014:201-212.


猜你喜欢

转载自blog.csdn.net/vivid_moon/article/details/80498563