恶意软件检测常见方法

北京青春痘专科医院 http://m.39.net/pf/a_8740638.html

转自---中国保密协会科学技术分会

摘要

随着网络的快速发展,大规模恶意软件的自动化攻击已经成为网络攻击的主要形式。这不仅给普通用户带来了极大的困扰,同时也给企业与政府部门带来了不可小觑的损失。研究人员已经提出了一些恶意软件检测方法,包括静态分析和动态分析及混合分析法。

一、恶意软件引发的安全问题

恶意软件是一种破坏受害者的工作站、移动设备、服务器和网关的程序。常见的恶意软件程序有病毒、蠕虫、木马、间谍软件、勒索软件、恐吓软件、僵尸程序和rootkit。网络罪犯利用恶意软件攻击个人和组织,实现破坏操作系统、破坏电脑或网络、窃取机密数据、收集个人信息、劫持或加密敏感数据等目标。

恶意软件是目前互联网上的主要威胁之一,网络中的设备都可能会受到恶意软件的攻击。瑞星的安全报告中指出[1],在年“云安全”系统共截获1.03亿个病毒样本量,病毒感染次数4.38亿次,病毒总体数量比年同期上涨32.69%。年8月,国家互联网应急中心发布的网络安全信息与动态周报指出[2],境内感染网络病毒的主机数量达到了58.6万,被木马或僵尸程序控制的主机约52.7万个,感染飞客蠕虫的主机约5.9万,木马和僵尸程序较上周增长了3.4%,飞客蠕虫较上周增长了4.5%,企业、政府和学校都受到了复杂多样的威胁。随着恶意软件的数量和多样性的不断增加,传统的恶意软件检测方法已然失效。因此,研究更加快速、高效的恶意软件检测方法是十分有必要的。

二、常见检测方法及改进

传统的恶意软件分析方法主要分为静态分析法和动态分析法[3]。静态方法准确性高,动态方法灵活性高,这两种方法都存在一定的缺陷。研究人员通过机器学习技术,提出了新的混合分析法。

表格1常见恶意软件检测方法的总结对

1.静态分析法

同一恶意软件家族代码复用导致恶意软件作者或团队编码具有编码相似性[4],因此当同一家族恶意软件载入内存执行时其结构信息和数据也应该具有一定的相似性。鉴于上述相似性,静态分析法通过对恶意软件本身二进制文件、可执行文件或者通过反编译文件提取到的静态特征进行分析,对比恶意软件与正常软件的静态特征的异同来发现恶意软件。通过将EXE文件以PE文件格式解析,提取样本的文本、全局、头部、导入导出表、节特征,再通过对比分析即可精准地识别出恶意软件。

图1PE文件的结构

Schultz等[5]通过朴素贝叶斯分类算法,将数据挖掘的算法首次应用于恶意软件分析,检测结果比基于特征匹配的传统静态检测法更准确。Santos等[6]根据操作码的出现频率以及操作码之间的关联性来识别和分类恶意软件。Zhang等[7]通过将可执行文件反编译得到操作码序列转换成图像,输入卷积神经网络CNN来进行识别。这使得图像的概念被引入了恶意软件检测领域。ContiG等[8]首次提出将恶意软件的二进制文件转化为灰度图像。

静态方法可以准确地捕捉到恶意软件的静态特征,但是由于特征类型单一,混淆或加壳等技术可以让恶意软件逃过检测,使得检测效果下降。

1.动态分析法

动态分析方法主要是通过在虚拟环境中执行恶意软件样本,记录恶意软件的行为特征,如行为日志、系统调用名称、上下文参数、环境变量等[9]。恶意软件在运行时会做出各类威胁行为,包括修改文件系统(如写入设备驱动程序、更改系统配置文件)、修改注册表(如修改注册表键值、更改防火墙设置)、网络行为(如解析域名、发出HTTP请求)等。在独立、安全的沙(Sandbox)环境中运行PE文件,通过行为分析来判定其是否为恶意软件。动态检测通常与可视化技术相结合,便于分析动态行为轨迹。

郑锐等[10]使用双向LSTM模型和CuckooSandbox平台收集样本的API调用序列,对个恶意软件样本进行分类,取得了99.28%的准确率。Tandon和Chan[11]通过用规则算法学习系统调用中的规则信息,来检测新型的恶意软件行为。Rieck等[12]通过沙箱采集了恶意软件运行时的行为特征,并基于这些行为特征使用机器学习算法进行识别和分类。Ki等[13]通过构建API特征数据库,利用对比API序列特征的方法来判断是否属于恶意软件。

但动态分析需要恶意软件完整运行,再进行判断,所以恶意软件的检测时效性较差。更重要的是,攻击者能够让恶意软件避开检测软件的检测[14],

2.混合分析法——机器学习

随着恶意软件的数量剧增,类型也逐渐变得多样和复杂,传统的技术显得效率不足。因此研究者逐渐趋向于使用机器学习技术,来应对恶意软件难以预测的变种和日益庞大的数量。

基于机器学习的恶意软件检测方法关键在于特征和算法的选择。静态特征和动态特征都可用于机器学习,但无关特征和噪声特征会影响模型的准确性。利用数据挖掘选择数据、特征,再结合机器学习技术完成检测,是现有研究中常见的解决方案。一般分为四个步骤:数据准备、特征提取及特征选择、训练机器学习模型、获取检测结果。目前,大部分安全平台公开了大量恶意软件的数据集,其中包括可以在Windows平台,Linux平台以及移动端等各个环境下运行的恶意样本。而样本类型多种多样,例如木马,蠕虫,后门等,可以根据当前需求进行筛选。获取到数据集后,进行特征提取。特征提取分为静态特征(如PE头特征、二进制内容特征等)以及动态特征(如API调用特征、系统修改特征和网络行为特征等)。然后选择一种机器学习算法,使用提取的特征集合训练模型。最终使用模型进行恶意软件的检测与判定。将用于测试的恶意样本以相同的方式进行特征提取,把测试特征集合送入已经训练完成的模型中,模型会自动判定测试样本的分类,是否属于恶意样本,从而实现恶意软件的检测。

赵中军等[15]通过优化的K-means算法,快速有效地识别出恶意软件;张莹等[16]解决了传统K-means选择初始质心不稳定的问题,提出一种基于PSO-K-means的恶意代码检测方法。杨宏宇等[17]提出的改进随机森林算法在恶意软件检测实验中准确率达到98%。目前硬件计算能力的大幅提高,使得深度学习的普及成为可能,逐渐步入人们的视野。在恶意软件检测中,CNN、RNN以及两者的结合应用较多,PE文件的二进制字节内容可以直接作为深度神经网络的输入[18],也可以提取序列化的特征作为输入[19-22]。

参考文献

[1]吕云峰.年瑞星网络安全报告与趋势展望[J].信息安全研究,.

[2]国家互联网应急中心网络安全信息与动态周报[R/OL].(-02-29)[-03-10].


转载请注明:http://www.aierlanlan.com/grrz/2153.html

  • 上一篇文章:
  •   
  • 下一篇文章: