当前位置: 首页 > 科技观察

移动端恶意软件检测

时间:2023-03-20 10:06:06 科技观察

一、Android恶意软件检测方法根据检测算法的类型,Android恶意软件检测方法可以分为传统方法和基于人工智能算法的方法:1.传统Android恶意软件检测方法传统Android恶意软件检测通常基于模式匹配或指纹匹配。需要采集恶意应用并提取相关特征,构建恶意应用特征库,再将待测应用与特征库进行匹配,完成正常/异常应用。分类。关键在于如何根据目标特征进行特征选择和相似度计算。亚金等。[1]提出了基于许可的行为足迹和启发式过滤来检测恶意软件和恶意软件家族;彭等。[2]引入了基于一些粗粒度特征的风险,例如AndroidManifest.xml中应用的权限信息评分和风险排序的概念,利用多种概率生成模型完成恶意软件检测;陈等。[3]提出了Pegasus模型,结合权限、API上下文和顺序、应用程序与Android系统的交互信息,构建权限事件图自动检测已知的恶意行为。这些方法都不关注Android恶意软件的内部程序逻辑。因此,Aafer等人。[4]提出了DroidAPIMiner模型,采用静态分析的方法,基于字节码中的API层信息,自动从恶意程序库中挖掘出恶意程序的内部逻辑信息,并将其抽象为恶意模式,以及最后使用模式匹配的方法来识别恶意软件。恩典等。[5]提出了RiskRanker模型,将潜在风险分为三个等级——高风险、中风险和低风险。高危应用利用Android平台漏洞,通过指纹识别识别;中危应用不利用系统漏洞,但会造成用户财务损失或敏感信息泄露,使用控制流图识别应用未提醒的敏感操作,并识别;低风险应用程序与中等风险应用程序类似,但收集的信息通常是设备特定的或一般的、普遍可用的个人信息。该模型以更细粒度的方式识别恶意软件,同时对发现0-day恶意软件有一定效果。Android恶意软件爆发初期广泛采用传统检测方法,但存在一定的局限性:需要建立和维护恶意应用特征库,随着新的恶意应用的出现不断更新,最终签名数据库的大小将逐渐增加;由于规则和模式库通常由专家手动选择和制定,特征比较浅,无法有效应对0-day恶意软件,甚至无法抵御代码等反攻击手段。2.基于人工智能算法的恶意软件检测方法随着人工智能技术的快速发展,深度学习算法被广泛应用于各个领域,并具有优异的性能。越来越多的研究人员开始探索基于人工智能算法的恶意软件。检测方法。与传统算法相比,人工智能方法通常可以自动获取更复杂的特征,更好地表征恶意软件,取得更好的检测效果。同时,人工智能算法可以挖掘更深层次的隐藏特征,更好地获取恶意软件家族的共同特征,从而在0-day恶意软件检测中有更好的表现。根据选择的特征类型,可以分为{0,1}型特征、序列型特征和端到端模式[6]。(1){0,1}类型的每个特征都用一个标志位表示,不是1也不是0,1表示该特征存在,0表示不存在。主要通过Android应用程序的配置文件AndroidManifest.xml和可执行文件classes.dex获取特性。从xml文件中可以提取应用程序的权限信息和硬件信息,从反编译的dex文件中可以得到API特征和URL。等待。但是,{0,1}类型的特征方法有一定的局限性:一方面,由于特征类型较多,{0,1}表示的样本矩阵存在稀疏问题;另一方面,这种特征表示方法忽略了不同特征之间存在的相关性影响最终模型的检测性能。(2)序列型特征序列型特征关注应用程序中的API序列或字节码序列信息,从反编译的dex文件中获取API调用序列,构建控制流图;或者直接提取字节码序列,将其映射为一个特征向量作为神经网络模型的输入。对于序列特征,可以利用自然语言处理领域的思想来获取语义信息。例如,Xu等人。[7]提出了DeepRefiner模型,在第二轮处理中先对字节码序列进行简化,然后基于Word2Vec的思想进行Skip-gram建模,将简化后的字节码转化为向量表示。得到向量表示的序列,对应带有语义信息的特征向量,最后利用LSTM模型完成训练和分类。马里孔蒂等。[8]提出了基于API调用序列的MaMaDroid模型,以API调用序列的转换概率为特征,构建马尔可夫链,训练机器学习模型完成检测。API调用序列特征在0-day软件检测中起着重要作用。因为在一个恶意软件家族中,即使代码实现不同,但其内部行为逻辑是相同的,而API调用序列能够表达这种共同的重要行为特征,因此在检测变种恶意软件方面具有更好的性能。(3)端到端模式端到端模式不需要复杂的特征预处理,直接使用原始apk二进制代码,或者简单地截取/映射字节码。在端到端模式下,恶意软件检测通常可以使用CNN等图像处理领域的经典算法来完成。文献[9][10]利用CNN模型提取局部区域的字节码间特征和二进制码间特征,最终取得了较好的检测精度。二、Android恶意软件检测对抗攻击1.“道高一尺,法高一尺”。随着恶意软件检测技术的快速发展,攻击者开始研究如何绕过检测模型。根据使用的攻击技术类型,可分为混淆操作、梯度下降、基于生成对抗网络的训练和反逆向技术。2.混淆操作通过将良性软件中经常存在的大量特征信息添加到恶意软件中,或者与良性软件特征高度相似的特征来欺骗检测模型。陈等。[11]指出了一系列中毒操作,如在AndroidManifest.xml文件中加入大量与软件运行过程无关但多出现在良性软件中的权限信息,或者在AndroidManifest.xml文件中嵌入一些良性代码段代码等。然而,随着人工智能算法的应用,这种简单的混淆操作逐渐难以绕过复杂模型的检测。杨等。[12]提出了特征模糊攻击和进化攻击方法,其中特征模糊攻击是将恶意软件中的某些特征转化为良性软件和恶意软件共有的模糊特征,从而绕过检测模型。文章选择了四种重要的特征(资源、触发时间、触发位置和依赖关系)和上下文特征,找出良性软件和恶意软件的共同部分,然后根据良性技术计算不同特征的权重软件。对样本时,根据输入软件的每个特征,在模糊特征集中找到最接近的模糊特征,将此特征修改为对应的模糊特征或修改其对应的上下文特征,从而达到混淆检测模型的目的[6].3.梯度下降在对抗攻击领域,基于梯度修改恶意软件特征来生成对抗样本是一个普遍的想法,主要针对白盒攻击方法。格罗斯等人。[13]参考基于图像域雅可比显着图的攻击方法,计算雅可比矩阵,根据检测模型对样本的梯度得到最佳扰动方向,从而加入最显着的特征到检测结果。迭代到欺骗模型。该方法主要针对{0,1}型特征。为避免修改或删除特征后影响软件的正常运行,只对恶意应用软件添加特征。陈等。[14]改进了这种方法,提出了AndroidHIV模型。除了关注{0,1}特征外,该模型还关注API调用等序列特征。4.基于生成对抗网络的训练基于GAN模型的对抗攻击方法被广泛应用于各个领域,并具有良好的性能。胡等。[15]提出了MalGAN模型,其结构框架如图所示,使用替代鉴别器对应原始黑盒检测模型,通过最小化损失函数尽可能接近原始黑盒检测模型;使用生成的机器生成恶意软件样本并降低模型检测到恶意软件的概率。该模型生成的对抗样本性能非常好,甚至可以让一些检测模型的检测率达到0%。图15.反逆向技术由于大多数恶意软件检测技术需要对dex可执行文件进行反编译,然后从中获取特征信息,因此一些Android恶意软件可以使用代码打包等反逆向技术来规避恶意软件检测模型。三、问题与展望1、Android恶意软件检测存在的问题(1)特征选择无论是传统的恶意软件检测方法还是基于人工智能算法的恶意软件检测方法,我们都需要关注如何选择特征,选择哪些特征A可以达到更好的检测效果。对于传统方法来说,关键在于特征选择,是选择静态特征、动态特征,还是两者结合,如何平衡特征计算复杂度和检测精度,如何有效应对代码混淆和攻击等攻击技术。无用的代码注入。这一切都值得深思。对于人工智能算法,虽然神经网络或机器学习方法可以自动获取高复杂度的深度特征,但仍需选择合适的特征提取对象,如选择API调用序列或字节码序列等。会影响模型检测结果。(2)0-day恶意软件检测0-day恶意软件检测是Android恶意软件检测领域的主要问题之一。传统算法基于恶意应用签名库,模式匹配或指纹匹配的方法显然无法有效应对0-day恶意软件。通常需要借助人工智能算法获取更深层次的复杂特征,例如从API调用序列中获取的语义信息等,深入理解恶意软件家族的内部逻辑,这对0-day检测具有重要作用恶意软件。(3)对抗性攻击对抗性攻击对恶意软件检测模型构成巨大威胁,直接影响模型的可用性。因此,当前Android恶意软件检测必须考虑如何防御攻击。在设计模型时,应提高模型的鲁棒性,根据用户对模型的访问场景(不限访问和限访问)进行针对性防御。2.Android恶意软件检测的发展趋势(1)动态特征与静态特征相结合。静态特征和动态特征都有一定的局限性。静态特征无法获取软件在运行过程中的行为信息,而动态特征则不能。完全覆盖完整的程序代码是不可能的。只有将动态特征和静态特征相结合,才能同时获得更全面、更完整的特征信息,使Android恶意软件检测更加高效准确。(2)模型堆叠单个恶意软件检测模型可能在某个方面有所欠缺,然后堆叠另一个在该方面表现良好的模型。堆叠模型集成了多种分类器。这些分类器并行计算各自预测的概率。这些概率作为特征输入,通过堆叠分类器融合各个模型的结果,可以有效提高检测模型的准确性和鲁棒性。粘性。图2(3)针对不同应用场景的恶意软件检测Android恶意软件检测模型在实际应用中,需要针对不同的应用场景设计不同级别的检测方案。例如,对于智能设备,由于其资源和计算能力有限,普通的高成本高计算方法并不适用,需要设计轻量级的安卓恶意软件检测方案;但对于安全厂商来说,系统安全性和检测准确率是更值得关注的指标,因此通常采用多层检测方案,以在特征和模型复杂的情况下获得更好的检测性能。参考文献[1]YajinZ.滚出我的市场:检测官方和替代Android市场中的恶意应用程序[C]//网络和分布式系统安全研讨会(NDSS)。[2]PengH,GatesC,SarmaB,等。Usingprobabilisticgenerativemodelsforrankingrisksofandroidapps[C]//2012ACM计算机和通信安全会议论文集。2012:241-252.[3]ChenKZ,JohnsonNM,D'SilvaV,etal.具有权限事件图的android应用程序中的上下文策略实施[C]//NDSS。2013,234.[4]AaferY,DuW,YinH.Droidapiminer:挖掘api级特征以在android中进行稳健的恶意软件检测[C]//通信系统安全和隐私国际会议。Springer,Cham,2013:86-103.[5]GraceM,ZhouY,ZhangQ,etal.Riskranker:scalableandaccuratezero-dayandroidmalwaredetection[C]//第十届移动系统、应用程序和服务国际会议论文集。2012:281-294.[6]李佳琳,王亚哲,罗鲁根,等.Android恶意软件检测的对抗攻击技术综述[J].信息安全学报,2021,6(4):28-43.[7]徐坤,李毅,邓如红,等.Deeprefiner:Multi-layerandroidmalwaredetectionsystemapplieddeepneuralnetworks[C]//2018IEEE欧洲安全与隐私研讨会(EuroS&P).IEEE,2018:473-487.[8]MaricontiE,OnwuzurikeL,AndriotisP,etal.Mamadroid:通过构建行为模型的马尔可夫链检测安卓恶意软件[J].arXiv预印本arXiv:1612.04433,2016.[9]McLaughlinN,MartinezdelRinconJ,KangBJ,etal.Deepandroidmalwaredetection[C]//第七届ACM数据与应用安全与隐私会议论文集。2017:301-308.[10]HasegawaC,IyatomiH.OnedimensionalconvolutionalneuralnetworksforAndroidmalwaredetection[C]//2018IEEE14thInternationalColloquiumonSignalProcessing&ItsApplications(CSPA).IEEE,2018:99-102.[11]ChenS,XueM,FanL,etal.恶意软件检测中的自动中毒攻击和防御onsystems:一种对抗性机器学习方法[J].computers&security,2018,73:326-344.[12]杨伟,孔东,谢涛,等。对抗设置中的恶意软件检测:利用android应用程序中的功能演变和混淆[C]//第33届年度计算机安全应用程序会议论文集。2017:288-302.[13]GrosseK、PapernotN、ManoharanP等。针对用于恶意软件分类的深度神经网络的对抗性扰动[J]。arXiv预印本arXiv:1606.04435,2016.[14]ChenX,LiC,WangD,etal.AndroidHIV:重新打包恶意软件以逃避机器学习检测的研究[J]。IEEETransactionsonInformationForensicsandSecurity,2019,15:987-1001.[15]HuW,TanY.基于GAN生成黑盒攻击的对抗性恶意软件示例[J].arXiv预印本arXiv:1702.05983,2017。