您好, 访客   登录/注册

基于机器学习技术的Android恶意软件检测

来源:用户上传      作者:王庆飞 王长波 鲍娟

  摘   要:在智能移动终端中,Android系统以其平台的开放性,丰富多彩的软件内容与服务形式广受用户青睐。与此同时,以获取不正当盈利为目的Android恶意软件也层出不穷,使得Android平台存在严重的安全性问题,因此需要有效的安全检测机制对恶意软件进行检测。该文基于Android操作系统,结合机器学习分类技术,分别从静态分析和动态分析两方面对Android恶意软件进行检测。
  关键词:Android恶意软件  机器学习  静态检测  动态检测
  中图分类号:TP309;TP316                文献标识码:A                   文章编号:1672-3791(2020)09(c)-0008-03
  Abstract: Among various mobile terminals, Android system is widely favored by users because of its open platform, rich software content and services. At the same time, Android malware is also emerging for the purpose of obtaining improper profits, which brings serious security problems to the Android platform. Therefore, effective security mechanism needs to be proposed to detect malicious software. This paper is based on Android system and machine learning technology. It detects Android malware from two aspects of static analysis and dynamic analysis.
  Key Words: Android malware; Machine learning; Static analysis; Dynamic analysis
  近年来,随着移动互联网的发展,移动终端已经成为人们获取信息的主要设备,其中搭载Android系统的智能手机是目前发展最快,市场占有率极高的移动设备。然而,伴随着Android市场的蓬勃发展,其带来的安全问题也日益严重,越来越多的恶意软件及其变体开始出现,各种各样的恶意攻击层出不穷。据国家互联网应急中心(CNCERT)每月发布的互联网安全威胁报告显示,每月有近亿的用户感染移动互联网恶意应用程序,其中Android因其系统的开放性和应用程序的不严格审查机制,已成为恶意软件的重灾区。在360互联网安全中心发布的《2019年Android恶意软件专题报告》中显示,2019年Android平台新增恶意软件主要是资费消耗类,占比高达46.8%,其次为隐私窃取、远程控制、流氓行为和恶意扣费。Android系统之所以成为恶意软件的重点感染对象,一方面由于用户对手机的依赖及薄弱的安全意识导致智能手机中存在很多具有潜在市场价值的信息;另一方面由于Android系统的开放性,软件开发者可以任意上传开发的软件到Google Play商店或者第三方市场,而这些应用的提交并不需要进行非常严格的审查,导致Android平台上有非常多的恶意软件。该文从Android系统安全机制出发,基于机器学习分类技术,分别从静态分析和动态分析两方面对Android恶意软件检测进行研究。
  1  Android安全机制
  在Android系统方面,与Android安全相关的机制主要有系统安全机制、签名机制以及权限管理。
  在应用市场方面,Google Play通过引入最新的机器学习模块和技术,对应用商店中的恶意软件进行检测,能够有效发现假冒的软件以及恶意软件,显著提升了Google Play应用软件的安全性。在国内,据艾媒咨询发布的移动应用商店市场监测报告显示,2018—2019年度最具竞争力的应用商店分别是360手机助手、应用宝及百度手机助手,此外,受“以应用商店抢占移动市场”的影响,手机厂商等各种第三方应用商店丛生,由于第三方应用商店对上传的应用审核机制不够健全,安全检测手段不严格,导致恶意软件肆意扩散,各种安全威胁层出不穷。因此,对恶意软件进行有效的检测是Android应用市场亟待解决的问题。
  2  机器学习分类检测技术
  2.1 机器学习分类器
  机器学习是一门涉及概率论、统计学等学科的多领域交叉学科。机器学习模型主要是设计一些可以让计算机自动“学习”的算法,它从数据特征中自动分析获得规律,并利用规律对未知数据进行预测。按照学习方式的不同可以将机器学习分为有监督学习(输入数据包含类别信息)、无监督学习(输入数据不包含类别信息)、半监督学习(输入数据部分包含类别信息)。常见的机器学习分类器包括最近邻距离(k-Nearest Neignbor)、朴素贝叶斯(Naive Bayes)、逻辑回归(Logistic Regression)、支持向量机(Support Vector Machine)、决策树(Dicision Tree)、隨机森林(Random Forest)、Adaboost等。常用的分类器评价指标有正确率、精确率、召回率、ROC曲线、AUC面积、F1-score等。   利用机器学习技术对恶意软件进行检测,其本质就是利用机器学习分类算法分类正常软件和恶意软件。其检测步骤主要包括:(1)收集足够多的正常样本和恶意样本,对样本软件进行解析,提取样本特征;(2)通过特征选择的方式对样本特征进行精简;(3)将样本集划分为训练集和测试集,利用多种分类器算法进行性能比较,选择最优的分类器;(4)使用最优分类器对未知样本进行检测,判断是否为恶意软件。其中根据特征提取和运行方式的不同可以将检测技术分为静态分析和动态分析。
  2.2 静态分析
  静态分析是在不运行程序的情况下,通过逆向工程技术将应用程序反编译获得代码文件,从中提取特征,此特征即为静态特征,然后据此来分析应用程序是否为恶意。
  Android软件APK文件通过解压后可以得到一系列资源文件和代码文件,通过反编译工具解码AndroidManifest.xml文件,可得到应用包的基本信息,如包名、版本号、申请的Permission等信息,反编译Class.dex文件可生成一系列包含源代码的.smali文件,里面包含应用包的源代码,如Android SDK API、第三方API以及API调用关系等,由于正常软件和恶意软件对Permission和API的应用偏好不同,恶意软件中往往包含一些Permission和API是正常软件中没有或非常少见的,因此,能够通过提取这些Permission或API,根据它们的出现情况判断应用是否为恶意。Peirayian N等人[1]以Permission为判断特征,分析申请的权限组合,将权限与API融合起来构建特征向量;Shabtai A等人[2]从APK中提取XML、DEX信息,使用机器学习算法区分应用的类别,判断是否为恶意软件;Zhou Y等人[3]基于权限的行为路径,对应用进行安全检测。
  2.3 动态分析
  动态分析方法一般是在虚拟环境中模拟用户运行程序,采用监听或拦截的方式,根据程序实际运行情况,分析判断是否为恶意软件。
  动态提取的特征是在应用安装、运行时通过注入、HOOK等技术,提取应用程序的行为信息、操作系统的状态信息等作为特征,如Shabtai A等人[4]采用系统状态监控技术,收集Android平台运行时的各种行为特征,包括内存、触摸屏、网络、电源、硬件等资源信息;郑勇鑫等人[5]利用注入技术和监听技术,获取应用行为信息和系统状态信息,包括应用进程状态、文件访问数据、IPC数据以及Android终端的设备信息、地理位置、网络状态、SD卡个人信息。因此,动态特征主要分为两大类:(1)软件行为状态特征,如进程状态、广播收发、页面切换、组件交互、数据交换等;(2)系统资源状态特征,如内存占用、文件访问、网络连接、电源消耗、传感器使用等。
  采用动态分析的机器学习检测技术流程上类似于静态分析技术,同样包括特征提取、特征选择、分类器训练及评估,以及新样本的预测。两者对比各有优缺点,其中静态检测不需要运行软件,风险低,分析方式简单易操作,且效率高,但缺点是无法有效分析使用混淆、加壳方式加固的应用软件。而动态分析则能对混淆、加壳乃至各种新型恶意软件进行检测,但其缺点是可能无法触发应用的所有行为,无法覆盖所有行为执行路径,而且采集特征数据时间较长,效率低,且耗费系统资源较多。因此,实际中可采用两者结合的方式对恶意软件进行检测。
  3  结语
  通过将机器学习技术应用到Android恶意软件的检测中,可以有效地对恶意软件进行检测,将静态分析和动态分析相结合,能同时提高检测效率和准确率。但是由于Android恶意软件新类型、新变种不断出现,Android系统版本不斷更新,相应的检测技术也应该不断更新和改进。未来,可在以下几个方面展开进一步的研究:静态分析中如何对经过混淆、加壳的应用软件进行检测;动态分析如何控制应用覆盖所有执行路径,如何进一步提高实时性和检测效率;同时,机器学习中的深度学习算法在处理高维数据和大规模数据集时有很大优势,可进一步将深度学习算法应用于Android恶意软件的检测。
  参考文献
  [1] Peiravian N, Zhu X. Machine Learning for Android Malware Detection Using Permission and API Calls[C]//Proceedings of the 2013 IEEE 25th International Conference on Tools with Artificial Intelligence.2013:300-305.
  [2] Shabtai A, Fledel Y, Elovici Y. Automated Static Code Analysis for Classifying Android Applications Using Machine Learning[C]//2010 International Conference on Computational Intelligence and Security.2010:329-333.
  [3] Zhou Y,Wang Z,Zhou W,et al. Hey, you, get off of my market:Detecting malicious apps in official and alternative Android markets[C]//Network and distributed system security symposium,California:NDSS Press,2012:1-13.
  [4] Shabtai A,Kanonov U,Elovici Y,et al. Andromaly:a behavioral malware detection framework for android devices[J]. Journal of Intelligent Information Systems,2012,38(1):161-190.
  [5] 郑勇鑫.Android动态监控系统设计与实现[D].东南大学,2014.
  [6] 刘晓明.基于KNN算法的Android应用异常检测技术研究[D].北京交通大学,2016.
  [7] 张雨薇,黄迎春.基于机器学习的恶意软件分类识别研究[J].科技资讯,2018,16(30):15-17.
  [8] 吴创南.浅谈Android智能手机系统的安全隐患及防范措施[J].科技资讯,2015(16):33-34.
  [9] 刘玮,李蜀瑜.Android移动应用检测研究[J].计算机应用与软件,2019(6):322-326.
  [10] 李海宾.基于机器学习的Android恶意软件静态检测技术研究[D].天津大学,2017.
  [11] 王雪敬.基于机器学习的Android恶意软件检测技术研究[D].广东工业大学,2019.
转载注明来源:https://www.xzbu.com/8/view-15360781.htm