查看原文
其他

恶意软件检测常见方法

王蕾祺 吕遒健 中国保密协会科学技术分会 2022-10-02

摘  要

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

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

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

恶意软件是目前互联网上的主要威胁之一,网络中的设备都可能会受到恶意软件的攻击。瑞星的安全报告中指出[1],在2019年“云安全”系统共截获1.03亿个病毒样本量,病毒感染次数4.38亿次,病毒总体数量比2018年同期上涨32.69%。2020年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来进行识别。这使得图像的概念被引入了恶意软件检测领域。Conti G等[8]首次提出将恶意软件的二进制文件转化为灰度图像。

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

1.  动态分析法

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

郑锐等[10]使用双向LSTM模型和Cuckoo Sandbox平台收集样本的API调用序列,对6681个恶意软件样本进行分类,取得了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] 吕云峰.2019年瑞星网络安全报告与趋势展望[J].信息安全研究,2020.

[2] 国家互联网应急中心网络安全信息与动态周报[R/OL].(2020-02-29)[2020-03-10].https://www.cert.org.cn/publish/main/upload/File/202008.pdf.

[3] BoYU,FangY,YangQ,etal.Asurveyofmalwarebehaviordescriptionandanalysis[J].FrontiersofInformationTechnology&ElectronicEngineering,2018,19(5):583-603.

[4]  宋文纳,彭国军,傅建明,等.恶意代码演化与溯源技术研究[J].软件学报,2019,30(8):2229-2267.

[5]  SchultzMG,EskinE,ZadokF,etal.DataMiningMethodsforDetectionofNewMaliciousExecutables[C]//IEEESymposiumonSecurity&Privacy.IEEE,2002.

[6] SantosI,BrezoF,Ugarte-PedreroX,etal.Opcodesequencesasrepresentationofexecutablesfordata-mining-basedunknownmalwaredetection[J].Informationences,2013,231:64-82.

[7] Zhang,J,Qin,Z.,Yin,H,Ou,L.,&Hu,Y..(2017).IRMD:MalwareVariantDetectionUsingOpcodeImageRecognition.IEEEInternationalConferenceonParallel&DistributedSystems.IEEE.

[8] ContiG,BratusS,ShubinaA,etal.Automatedmappingoflargebinaryobjectsusingprimitivefragmenttypeclassification[J].digitalinvestigation,2010,7:S3-S12

[9]   周杨,芦天亮,杜彦辉,郭蕊,暴雨轩,李默.基于线程融合特征的Windows恶意代码检测与分析[J/OL].计算机工程与应用:1-11[2020-10-21].http://kns.cnki.net/kcms/detail/11.2127.TP.20200421.1438.006.html.

[10] 郑锐,汪秋云,傅建明,姜政伟,苏日古嘎,&汪姝玮.(2020).一种基于深度学习的恶意软件家族分类模型.信息安全学报,005(001),1-9.ZHENGR,WANGQY,FUJM,elal.ANovelMalwareClassificationModelBasedonDeepLearning[J].JournalofCyberSecurity,2020,5(1):1-9.

[11] TandonG,ChanP.Learningrulesfromsystemcallargumentsandsequencesforanomalydetection//ProceedingsoftheInternationalWorkshoponDataMiningforComputerSecurity.Melbourne,2003:20

[12] Rieck,K.,Trinius,P.,Willems,C.,&Holz,T..(2011).Automaticanalysisofmalwarebehaviorusingmachinelearning.Journalofcomputersecurity,19(4),p.639-668.

[13] Ki,Y.,Kim,E.,&Kim,H.K..(2015).Anovelapproachtodetectmalwarebasedonapicallsequenceanalysis.InternationalJournalofDistributedSensorNetworks,2015,1-9.

[14] 张蕾,崔勇,刘静,等.机器学习在网络空间安全研究中的应用[J].计算,2018(9):1943-1975.ZhangL,CuiY,LiuJ,etal.ApplicationofMachineLearninginCyberspaceSecurityResearch[J].ChineseJournalofComputers,2018,41(9):1943-1975.

[15] 赵中军,曾涌泉,王运兵 . 基于优化 K-Means 的 Android系 统 恶 意 软 件 检 测 的 研 究 与 设 计 [J]. 通 信 技 术 ,2018 , 51(12) :212-218.

[16] 张莹.基于网络行为特征聚类分析的恶意代码检测技术研究[D].哈尔滨:哈尔滨工程大学,2018.

[17] 杨宏宇,徐晋.基于改进随机森林算法的Android恶意软件检测[J].通信学报,2017,38(4):8-16

[18] 王蕊,冯登国,杨轶,等.基于语义的恶意代码行为特征提取及检测方法[J].软件学报,2012,23(2):378-393.

[19] 李鹏,王汝传,武宁.基于空间关系特征的未知恶意代码自动检测技术研究[J].计算机研究与发展,2012,49(5):949-957.

[20] WATSONMR,SHIRAZINUH,MARNERIDESAK,etal. Malware detection in cloud computing infrasructures [J].IEEE Transactions on Dependable and Secure Computing,2016,13(2):192-205.

[21] 毛蔚轩,蔡忠闽,童力.一种基于主动学习的恶意代码检测方法[J].软件学报,2017,28(2):384-397.

[22] RAFFE,BARKERJ,SYLVESTERJ,etal. Malware detection by eating a whole exe[J].arXiv:1710.09435,2017.


中国保密协会

科学技术分会

长按扫码关注我们

作者:王蕾祺  吕遒健

责编:蔡北平

往期精彩文章TOP5回顾

美国攻击窃密能力背后的顶层架构

美国网络安全体系架构简介

起底突破物理隔离的USB设备攻击窃密技术

通过电力线“搞定”物理隔离计算机

请注意:扬声器、耳机也能窃密了!——Mosquito攻击技术

近期精彩文章回顾

信息产业自主生态建设综述

基于对抗性网络的无线感知行为识别的方法简介
电子政务国产化应用赋能信息技术创新生态
安全编排、自动化与事件响应技术简介
面向国产生态的网络安全事件运维技术研究

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存