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

移动端恶意软件检测概述

时间:2023-03-17 22:59:14 科技观察

一、发展背景及意义Android系统是Google于2007年发布的基于Linux内核的操作系统,作为全球最流行的移动操作系统,Android拥有超过25亿用户活跃用户来自190多个国家,占据了85%以上的市场份额[1]。由于其高度的开源和自由,许多开发者都投身于应用软件的开发。截至2020年,GooglePlay商店中有290万个应用程序,下载量高达1080亿次[1]。但与此同时,大量恶意软件利用第三方应用市场的审查漏洞,给智能手机用户带来了隐私泄露、资费消耗等巨大危害。近年来,恶意软件检测成为研究热点,各大安全厂商也纷纷开发了自己的安全检测软件,如AVGAntivirus、NortonMobileSecurity等,但随着Android版本的更新,攻击手段也越来越多。恶意软件数量不断升级,现有安全检测软件的效果有待进一步提升。2、Android系统安全机制Android系统是基于Linux内核实现的。同时,在Linux原有的安全机制的基础上,结合移动端的特点,设计了应用签名机制、权限机制、进程沙箱隔离机制等安全机制,确保应用的安全。在发布、安装和运行过程中[2]。1、应用签名机制应用签名机制是指在应用发布时,开发者使用私钥对其进行签名。应用程序安装时,Android系统使用公钥对应用程序进行验证和溯源,以便与开发者进行沟通。建立信任关系。通过数字签名,系统一方面可以实现程序的版??本控制,另一方面可以验证应用程序安装包的完整性。同时,可以有效检测重打包攻击、应用篡改等恶意行为,从而过滤恶意应用。然而,攻击者有时会伪造第三方应用程序签名来逃避系统检测。签名机制按照签名对象分为两类:对程序安装包解压后的非目录和非过滤文件的签名校验,以及对压缩安装包整体的签名校验。2.权限机制权限机制是指应用程序在安装和运行过程中向系统申请所需服务的权限,并根据获得的权限运行相应的服务。定义信息包括包名、标签、描述和保护级别等[3]。3.进程沙箱隔离机制图1进程沙箱隔离机制是指应用程序始终运行在系统为其创建的独立Dalvik虚拟机中,拥有独立的运行空间和系统资源空间,从而保证了应用程序之间的独立性,限制不受信任的程序的权限。具体来说,每个应用程序在安装时都会被系统赋予一个唯一的UID。在程序运行过程中,系统会隔离不同UID的应用和资源,使它们互不干扰,从而使各个应用的资源得到安全。三、常见的恶意软件攻击方式1、重打包攻击重打包攻击是指攻击者对原应用程序进行反编译,在应用程序中植入恶意代码,然后通过伪造应用程序签名的方式通过系统检测,将应用程序重新打包为第三方发布-派对应用。2、提权攻击提权攻击是指攻击者利用Android系统漏洞或第三方代理软件,提升普通应用的系统服务权限,从而获取所需的权限。一旦恶意应用程序拥有更高的系统权限,就会对系统造成巨大的安全威胁。3.其他攻击方式随着Android系统的更新和发展,市场上出现了很多其他的恶意软件攻击方式。例如,使用剪贴板功能简单,无需申请额外权限,恶意篡改剪贴板内容,危害系统安全;植入抓取码,窃取用户隐私信息,进行电子诈骗;利用调试接口传播恶意软件等。恶意软件检测的基本方法恶意软件检测问题本质上是一个分类问题。对于给定的应用程序,判断它是恶意软件还是正常软件。根据解决分类问题的一般方法,恶意软件检测的一般流程如图2所示。图2首先获取谷歌应用市场和第三方应用市场中的正常软件包和恶意软件包,形成数据集;然后从中提取特征信息并进行特征预处理;最后,根据特征值信息,基于规则或分类算法完成分类任务。Android应用程序安装包是一个后缀为.apk的压缩文件。解压后可以得到如下文件:表1常见的恶意软件检测方法,主要基于AndroidManifest.xml文件和classes.dex文件进行特征提取。AndroidManifest.xml文件是Android应用程序的全局配置文件,提供了程序运行前系统所需的各种必要信息,包括应用程序包名、版本号、权限信息、硬件信息等。dex文件是应用程序的二进制可执行文件。java代码首先编译成.class文件,将得到的class文件翻译成Dalvik字节码,最后合并成一个或多个可执行的dex文件[4]。在恶意软件检测方法中,一些研究人员会先对其进行反编译,然后提取特征,而一些研究人员会直接使用原始字节码序列或对其进行截取和处理。五、Android恶意软件检测方法1.根据特征提取方法的不同,可分为静态检测、动态检测和混合检测[5]。(1)静态检测法静态检测法是指在应用程序未运行时,根据应用程序的特性进行系统检测和分析[6-7]。常用的功能包括应用程序权限、Java代码、网络地址、硬件组件等。静态检测方法的优点是检测速度快,缺点是不能有效识别使用静态检测对策(如代码混淆)的恶意应用。常见的静态检测方法有基于应用安装包文件特征的检测、基于应用代码分析的检测、基于应用布局特征的检测等。基于应用安装包文件特征检测方法,重点关注表1所示的签名文件、清单文件、资源文件和代码文件,从中提取特征表示,通过相似性比较或模型训练完成恶意应用检测。例如,周等人。[8]提出了DroidMoss模型提取应用程序的代码特征,并采用模糊哈希的方法生成应用程序特有的指纹信息,然后通过相似度比较来判断是否为恶意应用程序。但是,该方法无法有效应对代码混淆等对抗性攻击。Nicheporuk等。[9]使用卷积神经网络训练模型完成基于API方法调用和权限信息的分类。基于应用代码分析的检测方法更关注代码文件,将应用代码抽象成控制流图、API函数图或程序依赖图,然后进行相似度比较。例如,Crussell等人。[10]提出了DNADroid模型来完成基于应用依赖图的相似度计算,有效应对重打包攻击。为了提高重新打包应用程序的检测效率,有效抵御代码混淆攻击,王润等人。[11]提出可以在两个粒度上进行检测,可以提取代码的深层语义信息。该模型首先进行粗粒度检测,将应用依赖图抽象为程序语义特征,计算程序语义特征之间的相似度,实现快速检测;对于细粒度的检测,将程序依赖图作为特征来实现更准确的恶意应用检测。基于应用布局特征的检测方法关注应用程序的UI界面,并从中提取特征信息作为分类依据。例如,张等人。[12]提出可以根据应用界面生成界面图,然后计算图之间的相似度。该方法检测速度快,但检测精度有限,可以结合代码特征,兼顾检测速度和精度。(2)动态检测法动态检测法是在沙盒环境中运行程序,跟踪程序的API调用顺序、系统调用、网络流量和CPU数据,以监控程序运行过程中的数据流[5]、获取程序运行时间。过程的动态特征。动态检测方法的关键在于如何检测程序的所有功能,如何保证测试用例的真实性和全面性。在实际应用中,该方法通常需要占用一定的系统资源,检测速度较慢,但??在检测未知恶意软件方面通常具有较好的性能。常见的动态检测方法分为两类:基于应用行为分析的检测和基于污点跟踪的检测。对于应用行为的分析对象,可以选择应用程序对系统服务的调用信息,也可以选择非系统调用信息,如实时交互信息或应用运行信息。谭等人。[13]设计了CopperDroid模型,结合系统调用和Binder通信行为数据,重构恶意应用的高层语义信息,最终输出恶意行为,包括系统相关行为和Android相关行为。该方法可以有效抵御代码混淆攻击,且不需要修改系统源代码,易于部署。贾纳扎等人。[14]提出了PuppetDroid模型,该模型基于用户与应用程序的实时交互获取特征信息,检测恶意应用程序。与普通的自动化UI方式相比,实现了更高的代码覆盖率。基于应用行为数据获取的特征表示忽略了数据之间的关联信息,无法描述程序的全过程行为。为了解决这个问题,Enck等人。[15]提出了一种基于污点跟踪的恶意软件检测方法——TaintDroid。该方法标记污染源的敏感信息,动态跟踪数据流向和系统调用,实现变量级、信息级、方法级和文件级的污点跟踪。(3)混合检测方法,无论是静态检测方法还是动态检测方法,都具有一定的局限性。静态检测无法在运行时捕获有关应用程序行为的信息,而动态检测无法实现完整的代码覆盖。因此,一些研究人员提出了一种混合检测方法,即静态和动态分析相结合的方法,可以使Android恶意软件检测更加准确和高效。Onwuzurike等。[16]在静态检测和动态检测中采用相同的建模方法,均基于API调用序列构建马尔可夫链,最后比较了两种方法的检测性能。结果表明,混合检测方法具有更好的性能。参考文献[1]AndroidStatistics(2022)https://www.businessofapps.com/data/android-statistics/[2]GoogleInc.Androidsecurity[EB/OL]。(2013-06-26)[2019-10-07].https://source.android.com/tech/security/。[3]王思远,张杨森,曾建荣,等.Android恶意软件检测方法综述[J].计算机应用与软件,2021,38:9.[4]李家林,王亚哲,罗陆根,等.Android恶意软件检测Android恶意软件检测的系统概述[J]。信息安全学报,2021,6(4):28-43.[5]MeijinL,ZhiyangF,JunfengW,等。Android恶意软件检测的系统概述[J]。应用人工智能,2022,36(1):2007327.[6]孙伟,孙亚杰,夏梦游.一种静态Android重打包恶意应用检测方法[J].信息安全研究,2017,3(8):692-700.[7]姜旭,张长生,戴大猛,等.Android平台恶意应用程序静态检测方法[J].计算机系统应用,2016,25(4):1-7.[8]周伟,周毅,江晓,等.在第三方android市场中检测重新打包的智能手机应用程序[C]//第二届ACM数据和应用程序安全与隐私会议论文集。2012:317-326。[9]NicheporukA、SavenkoO、NicheporukA等。一种基于CNN的Android恶意软件检测方法混合数据模型[C]//ICTERI研讨会。2020:198-213.[10]CrussellJ、GiblerC、ChenH.克隆人的攻击:检测安卓市场上的克隆应用程序[C]//欧洲计算机安全研究研讨会。斯普林格,柏林,海德堡,2012:37-54.[11]王润,唐本孝,王丽娜。DroidFAR:一种基于程序语义的Android重打包应用抗锯齿检测方法[J].武汉大学学报:科学版,2018,64(5):407-414.[12]ZhangF,HuangH,ZhuS,等人。ViewDroid:Towardsobfuscation-resilientmobileapplicationrepackagingdetection[C]//2014年ACM无线和移动网络安全与隐私会议论文集。2014:25-36.[13]TamK、FattoriA、KhanS等人。Copperdroid:android恶意软件行为的自动重构[C]//NDSSSymposium2015.2015:1-15.[14]GianazzaA、MaggiF、FattoriA等人。Puppetdroid:一个以用户为中心的ui练习器,用于类似android应用程序的自动动态分析[J].arXiv预印本arXiv:1402.4826,2014.[15]EnckW,GilbertP,HanS,etal.ntdroid:一种用于智能手机实时隐私监控的信息流跟踪系统[J].ACM计算机系统学报(TOCS),2014,32(2):1-29.[16]OnwuzurikeL、AlmeidaM、MaricontiE等。Afamilyofdroids-Androidmalwaredetectionviabehavioralmodeling:Staticvsdynamicanalysis[C]//2018第16届隐私、安全与信任(PST)年会。IEEE,2018:1-10。