CN103473504A - 一种基于类别分析的Android恶意代码检测方法 - Google Patents
一种基于类别分析的Android恶意代码检测方法 Download PDFInfo
- Publication number
- CN103473504A CN103473504A CN 201310443171 CN201310443171A CN103473504A CN 103473504 A CN103473504 A CN 103473504A CN 201310443171 CN201310443171 CN 201310443171 CN 201310443171 A CN201310443171 A CN 201310443171A CN 103473504 A CN103473504 A CN 103473504A
- Authority
- CN
- China
- Prior art keywords
- android
- authority
- classification
- program
- malicious code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提出一种Android恶意软件检测方法。采用基于权限信息的类别分类方法,从待检测的Android程序提取权限信息,输入到分类模型中进行分类,将分类结果与其声明的类别进行比较,根据判别规则判断该待检测Android程序的恶意威胁度。本发明适用于海量Android应用程序的自动化恶意代码检测,具有简单、高效、快速的特点。
Description
技术领域
本发明涉及移动互联网技术领域,主要涉及一种检测Android系统上的恶意代码的方法。
背景技术
近年来,基于Android系统的智能手机发展十分迅速,IDC的最新统计报告显示,2012年第4季度,Android系统的智能手机出货量达到了1.598亿部,市场占有率达到70.1%,截止2013年5月,全球Android设备激活量则已经突破9亿。基于Android系统的应用程序数量也在不断增加,这些应用程序涉及日常生活,办公娱乐,电子商务等众多领域,Google宣称,截止2013年5月,Android官方电子市场Google Play应用程序下载量达到480亿。同时,除了Google Play,还存在Amazon、AppBrain、安智等众多第三方电子市场。
Android系统的普及也伴随着其上恶意代码井喷式的发展速度。F-Secure移动威胁报告显示2013年第一季度发现新的恶意代码家族和变种数目为136个,比上一季度增加41.67%。Android恶意代码以恶意吸费、窃取用户隐私为主要目的,严重威胁了广大用户的切身利益。因此,Android程序的自动化分析无论是对恶意代码分析者,还是普通Android系统用户,都有重要意义
目前,Android程序的分析主要有静态和动态两种方法:
1.常用静态方法包括:根据权限信息进行聚类,发现已知恶意代码家族的恶意样本,如DroidMat;以AndroidManifest以及反编译后的代码中提取相关信息,使用数据流和控制流方法,如SCanDroid;构建特定的特征向量,采用静态特征匹配的方法,如RiskRanker;
2.常用的动态方法包括:使用Android程序运行时的特征行为检测恶意代码,如DroidRanger;收集用户使用数据,采用聚类算法检测恶意代码,如Crowdroid错误!未找到引用源。;使用动态污点跟踪方法监控隐私泄露行为,如TaintDroid。
上述恶意代码检测方法一方面过于复杂,另一方面在实际应用中存在问题,或者只能检测已知恶意代码家族的样本。如RiskRanker需要提取大量的特征信息构建特征向量,同时只能检测已知恶意代码家族的样本;TaintDroid可以动态检测Android程序的隐私泄露问题,但是需要修改Android源码,实现复杂度较高,对于频繁升级更新的Android系统,需要针对不同Android系统版本进行源码修改。
发明内容
针对现有技术的不足,本发明的目的在于提供一种Android恶意代码检测的新思路,解决海量Android应用程序的自动化恶意代码检测问题。
本发明的目的是通过以下技术方案来实现的:
一种基于类别分析的Android恶意代码检测方法,包括以下步骤:
第一步,采集预定量M个Android程序,将其划分为6个类别:通信、拍照、地图、网络、系统、普通;
第二步,从上述6个类别的每个类别中随机抽取N个样本,对其权限进行统计分析,提取出权限使用率最高的前L个权限作为类别分析的属性集;
第三步,根据第二步提取的L个权限,对第一步中M个Android应用程序进行权限过滤和类别标定,L个权限中使用到的权限标为1,未使用的权限标为0,同时标定类别信息;
第四步,基于经过第三步处理的所述M个Android应用程序,使用分类工具和分类算法进行分类训练,生成相应的分类模型,该分类模型为每种权限组合下对应的类别信息;
第五步,获取待测Android程序的类别信息;
第六步,提取该待测Android程序的AndroidManifest.xml文件,该文件包含该程序所有权限的使用情况,对AndroidManifest文件进行解码;
第七步,根据第六步解码的AndroidManifest文件,解析该待测Android程序使用的权限信息,并将权限信息转换成arff格式的数据;
第八步,根据第四步生成的分类模型,以第七步生成的arff数据为输入,对该待测Android程序进行分类,生成分类矩阵;
第九步,对于各个分类模型产生的分类矩阵,采用融合方法进行融合,得到最终的分类结果;
第十步,根据判别规则,以第九步的分类结果和第五步获得的类别信息为输入,判断待测Android程序的恶意威胁度。
本发明具有简单、高效、快速的特点,便于为Android第三方电子市场提供基本的自动审核功能,同时为个人用户提供基本的扫描和保护。
附图说明
图1是本发明提出的Android恶意代码检测方法中解析代码权限信息的流程示意图;
图2是根据分类结果和类别信息,判断待测Android程序是否存在恶意行为的流程示意图。
具体实施方式
以下结合附图对本发明的技术方案进行详细说明。
本发明的整体思路是采用基于权限信息的类别分类方法,对待检测的Android程序提取权限信息,输入到分类模型中进行分类,将分类结果与其声明的类别进行比较,根据判别规则判断是否存在恶意行为。
参考图1、2,在一个具体实施例中,本发明包括下述步骤:
第一步,采集预定量M个Android程序,将其划分为6个类别:通信、拍照、地图、网络、系统、普通。本领域技术人员应当明了,其中预定量M的取值应足够大以满足样本分析的需要。在特定实施例中,Android程序可以从Google Play上采集获得,M的取值为10,210。
第二步,从上述6个类别的每个类别中随机抽取N个样本,对其权限进行统计分析,提取出权限使用率最高的前L个权限作为类别分析的属性集。同理,其中N的取值也应满足样本分析的需要。在一个特定实施例中,N取值为1000,此时L为51,这些选取的权限如下:
1.INTERNET
2.READ_PHONE_STATE
3.WRITE_EXTERNAL_STORAGE
4.ACCESS_NETWORK_STATE
5.ACCESS_FINE_LOCATION
6.VIBRATE
7.ACCESS_COARSE_LOCATION
8.WAKE_LOCK
9.READ_CONTACTS
10.CAMERA
11.CALL_PHONE
12.WRITE_SETTINGS
13.RECEIVE_BOOT_COMPLETED
14.ACCESS_WIFI_STATE
15.SEND_SMS
16.RESTART_PACKAGES
17.READ_SMS
18.WRITE_CONTACTS
19.READ_LOGS
20.RECEIVE_SMS
21.GET_TASKS
22.WRITE_SMS
23.MODIFY_PHONE_STATE
24.MOUNT_UNMOUNT_FILESYSTEMS
25.GET_ACCOUNTS
26.CHANGE_WIFI_STATE
27.PROCESS_OUTGOING_CALLS
28.DISABLE_KEYGUARD
29.RECORD_AUDIO
30.CHANGE_NETWORK_STATE
31.MODIFY_AUDIO_SETTINGS
32.KILL_BACKGROUND_PROCESSES
33.FLASHLIGHT
34.BLUETOOTH
35.SET_WALLPAPER
36.ACCESS_MOCK_LOCATION
37.ACCESS_LOCATION_EXTRA_COMMANDS
38.CALL_PRIVILEGED
39.RECEIVE_MMS
40.WRITE_SYNC_SETTINGS
41.BLUETOOTH_ADMIN
42.READ_SYNC_SETTINGS
43.WRITE_APN_SETTINGS
44.INSTALL_PACKAGES
45.GET_PACKAGE_SIZE
46.WRITE_SECURE_SETTINGS
47.ACCESS_GPS
48.WRITE_EXTERNAL_STORAGES
49.SET_ORIENTATION
50.USE_CREDENTIALS
51.MANAGE_ACCOUNTS
第三步,根据第二步提取的L个权限,对第一步中M个Android应用程序进行权限过滤和类别标定,L个权限中使用到的权限标为1,未使用的权限标为0,同时标定类别信息;
第四步,基于经过第三步处理的所述M个Android应用程序,使用分类工具和分类算法进行分类训练,生成相应的分类模型,该分类模型为每种权限组合下对应的类别信息。在特定实施例中,分类工具例如为Weka,分类算法例如为NaiveBayes、BayesNet、ID3、DecisonTable以及J48算法。
第五步,获取待测Android程序的类别信息(即该Android程序声明的类别的原始类别信息)。对于从Android第三方市场获取的Android程序,每个程序都有定义的对应类别信息,故可以较容易的获取其类别;对于类别信息未知的Android应用程序,则需要人工判别,将应用程序安装到Android系统设备上,根据其功能做人工标定。
第六步,提取该待测Android程序的AndroidManifest.xml文件,该文件包含该程序所有权限的使用情况,对AndroidManifest文件进行解码;
第七步,根据第六步解码的AndroidManifest文件,解析该待测Android程序使用的权限信息,并将权限信息转换成arff格式的数据;
第八步,根据第四步生成的分类模型,以第七步生成的arff数据为输入,对该待测Android程序进行分类,生成分类矩阵;
第九步,对于各个分类模型产生的分类矩阵,采用融合方法进行融合,得到最终的分类结果。在特定实施例中,所述融合方法可以是Bagging、Boosting、投票法等。
第十步,根据判别规则,以第九步的分类结果和第五步获得的类别信息为输入,判断待测Android程序的恶意威胁度。在特定实施例中,通过事先对现有Android程序样本库中大量具有已知实际类别和恶意威胁程度的Android程序样本进行统计分析,得到一个经验性的判别规则。其中,根据这些Android程序所声明的原始类别信息、实际类别及其恶意威胁程度(分为“高”、“中”、“低”),得到如表1所示的对应关系。
表1恶意代码判别规则
由此,本发明可以判断待测Android程序是否存在恶意行为,从而便于为Android第三方电子市场提供基本的自动审核功能,同时为个人用户提供基本的扫描和保护。
以上利用具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (5)
1.一种基于类别分析的Android恶意代码检测方法,包括以下步骤:
第一步,采集预定量M个Android程序,将其划分为6个类别:通信、拍照、地图、网络、系统、普通;
第二步,从上述6个类别的每个类别中随机抽取N个样本,对其权限进行统计分析,提取出权限使用率最高的前L个权限作为类别分析的属性集;
第三步,根据第二步提取的L个权限,对第一步中M个Android应用程序进行权限过滤和类别标定,L个权限中使用到的权限标为1,未使用的权限标为0,同时标定类别信息;
第四步,基于经过第三步处理的所述M个Android应用程序,使用分类工具和分类算法进行分类训练,生成相应的分类模型,该分类模型为每种权限组合下对应的类别信息;
第五步,获取待测Android程序的类别信息;
第六步,提取该待测Android程序的AndroidManifest.xml文件,该文件包含该程序所有权限的使用情况,对AndroidManifest文件进行解码;
第七步,根据第六步解码的AndroidManifest文件,解析该待测Android程序使用的权限信息,并将权限信息转换成arff格式的数据;
第八步,根据第四步生成的分类模型,以第七步生成的arff数据为输入,对该待测Android程序进行分类,生成分类矩阵;
第九步,对于各个分类模型产生的分类矩阵,采用融合方法进行融合,得到最终的分类结果;
第十步,根据判别规则,以第九步的分类结果和第五步获得的类别信息为输入,判断待测Android程序的恶意威胁度。
2.根据权利要求1所述的基于类别分析的Android恶意代码检测步骤,第四步中,所述分类工具为Weka,所述分类算法包括NaiveBayes、BayesNet、ID3、DecisonTable以及J48算法。
3.根据权利要求1所述的基于类别分析的Android恶意代码检测步骤,第五步中,对于从Android第三方电子市场获取的Android程序,每个程序都有对应的类别信息,对于类别信息未知的Android应用程序,则将应用程序安装到Android系统设备上,根据其功能做人工标定。
4.根据权利要求1所述的基于类别分析的Android恶意代码检测方法,第九步中,所述融合方法为Bagging、Boosting、投票法等。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310443171.7A CN103473504B (zh) | 2013-09-25 | 2013-09-25 | 一种基于类别分析的Android恶意代码检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310443171.7A CN103473504B (zh) | 2013-09-25 | 2013-09-25 | 一种基于类别分析的Android恶意代码检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103473504A true CN103473504A (zh) | 2013-12-25 |
CN103473504B CN103473504B (zh) | 2016-05-25 |
Family
ID=49798350
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310443171.7A Active CN103473504B (zh) | 2013-09-25 | 2013-09-25 | 一种基于类别分析的Android恶意代码检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103473504B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104091118A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 权限安全风险确定方法及确定装置 |
CN104091071A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 应用程序的风险确定方法及确定装置 |
CN104091117A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 基于安全风险的聚类方法及聚类装置 |
CN104156467A (zh) * | 2014-08-22 | 2014-11-19 | 北京智谷睿拓技术服务有限公司 | Api推荐方法及api推荐装置 |
CN104462971A (zh) * | 2014-12-17 | 2015-03-25 | 北京奇虎科技有限公司 | 根据应用程序声明特征识别恶意应用程序的方法和装置 |
CN104766008A (zh) * | 2014-01-07 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 应用程序安装包的安全检测方法及服务器 |
CN104809395A (zh) * | 2015-04-23 | 2015-07-29 | 天津大学 | 一种轻量级安卓恶意软件快速判断方法 |
CN104834857A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学深圳研究生院 | 批量安卓恶意软件检测方法及装置 |
CN104123500B (zh) * | 2014-07-22 | 2017-07-28 | 北京知多星科技有限公司 | 一种基于深度学习的Android平台恶意应用检测方法及装置 |
CN104834857B (zh) * | 2015-03-27 | 2018-02-09 | 清华大学深圳研究生院 | 批量安卓恶意软件检测方法及装置 |
CN109670310A (zh) * | 2019-01-28 | 2019-04-23 | 杭州师范大学 | 一种基于半监督K-Means聚类算法的Android恶意软件检测方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136471B (zh) * | 2011-11-25 | 2015-12-16 | 中国科学院软件研究所 | 一种恶意Android应用程序检测方法和系统 |
CN103023871B (zh) * | 2012-11-16 | 2015-05-20 | 华中科技大学 | 一种基于云平台的Android权限提升攻击检测系统和方法 |
-
2013
- 2013-09-25 CN CN201310443171.7A patent/CN103473504B/zh active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104766008A (zh) * | 2014-01-07 | 2015-07-08 | 腾讯科技(深圳)有限公司 | 应用程序安装包的安全检测方法及服务器 |
CN104091118B (zh) * | 2014-07-09 | 2017-07-04 | 北京智谷睿拓技术服务有限公司 | 权限安全风险确定方法及确定装置 |
CN104091071A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 应用程序的风险确定方法及确定装置 |
CN104091117A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 基于安全风险的聚类方法及聚类装置 |
CN104091118A (zh) * | 2014-07-09 | 2014-10-08 | 北京智谷睿拓技术服务有限公司 | 权限安全风险确定方法及确定装置 |
CN104091117B (zh) * | 2014-07-09 | 2018-09-04 | 北京智谷睿拓技术服务有限公司 | 基于安全风险的聚类方法及聚类装置 |
CN104091071B (zh) * | 2014-07-09 | 2017-11-07 | 北京智谷睿拓技术服务有限公司 | 应用程序的风险确定方法及确定装置 |
CN104123500B (zh) * | 2014-07-22 | 2017-07-28 | 北京知多星科技有限公司 | 一种基于深度学习的Android平台恶意应用检测方法及装置 |
CN104156467A (zh) * | 2014-08-22 | 2014-11-19 | 北京智谷睿拓技术服务有限公司 | Api推荐方法及api推荐装置 |
CN104156467B (zh) * | 2014-08-22 | 2018-05-29 | 北京智谷睿拓技术服务有限公司 | Api推荐方法及api推荐装置 |
CN104462971A (zh) * | 2014-12-17 | 2015-03-25 | 北京奇虎科技有限公司 | 根据应用程序声明特征识别恶意应用程序的方法和装置 |
CN104834857A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学深圳研究生院 | 批量安卓恶意软件检测方法及装置 |
CN104834857B (zh) * | 2015-03-27 | 2018-02-09 | 清华大学深圳研究生院 | 批量安卓恶意软件检测方法及装置 |
CN104809395A (zh) * | 2015-04-23 | 2015-07-29 | 天津大学 | 一种轻量级安卓恶意软件快速判断方法 |
CN109670310A (zh) * | 2019-01-28 | 2019-04-23 | 杭州师范大学 | 一种基于半监督K-Means聚类算法的Android恶意软件检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103473504B (zh) | 2016-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103473504B (zh) | 一种基于类别分析的Android恶意代码检测方法 | |
Chan et al. | Static detection of Android malware by using permissions and API calls | |
Li et al. | An Android malware detection method based on AndroidManifest file | |
CN103440459B (zh) | 一种基于函数调用的Android恶意代码检测方法 | |
JP6228966B2 (ja) | マルウェアを検出するコンピューティングデバイス | |
CN103309808B (zh) | 基于标签的安卓用户隐私泄露黑盒检测方法及系统 | |
US10216954B2 (en) | Privacy detection of a mobile application program | |
US10986103B2 (en) | Signal tokens indicative of malware | |
CN103077344A (zh) | 终端和使用该终端提供应用的风险的方法 | |
CN106599688B (zh) | 一种基于应用类别的安卓恶意软件检测方法 | |
Jang et al. | Andro-profiler: anti-malware system based on behavior profiling of mobile malware | |
CN103839005A (zh) | 移动操作系统的恶意软件检测方法和恶意软件检测系统 | |
US20160094574A1 (en) | Determining malware based on signal tokens | |
CN105357204B (zh) | 生成终端识别信息的方法及装置 | |
CN104809397A (zh) | 一种基于动态监控的Android恶意软件的检测方法及系统 | |
CN108090360B (zh) | 一种基于行为特征的安卓恶意应用分类方法及系统 | |
Li et al. | Android malware detection based on static analysis of characteristic tree | |
CN108681671A (zh) | 一种Android移动攻击溯源方法 | |
CN108073813B (zh) | 一种Android应用程序溢权漏洞检测和恶意行为识别方法 | |
CN107273746A (zh) | 一种基于apk字符串特征的变种恶意软件检测方法 | |
CN104809395A (zh) | 一种轻量级安卓恶意软件快速判断方法 | |
CN105760761A (zh) | 软件行为分析方法和装置 | |
Sun et al. | Malware detection on Android smartphones using keywords vector and SVM | |
CN104182681A (zh) | 基于hook的iOS系统关键行为检测装置和方法 | |
Liccardi et al. | Improving mobile app selection through transparency and better permission analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |