CN104021346A - 基于程序流程图的Android恶意软件检测方法 - Google Patents
基于程序流程图的Android恶意软件检测方法 Download PDFInfo
- Publication number
- CN104021346A CN104021346A CN201410250514.2A CN201410250514A CN104021346A CN 104021346 A CN104021346 A CN 104021346A CN 201410250514 A CN201410250514 A CN 201410250514A CN 104021346 A CN104021346 A CN 104021346A
- Authority
- CN
- China
- Prior art keywords
- flow diagram
- program flow
- program
- android
- malicious act
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/561—Virus type analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于程序流程图的Android恶意软件检测方法。对于一个待检测的APK应用程序,首先根据反编译后生成的smali文件,分析程序的基本块并得到其流程图,将API全路径哈希编码值与其连接关系组成的图指纹作为恶意行为特征,然后利用子图同构理论进行恶意软件的行为匹配。相对于传统的利用文件签名方案进行恶意软件检测的系统,本方法可以有效识别出恶意软件的变种,并能有效抵抗恶意代码篡改等签名方案无法检测的病毒类型。
Description
技术领域
本发明涉及一种基于程序流程图的Android恶意软件检测方法,属于移动平台恶意软件检测等技术领域。
背景技术
随着移动互联网的快速发展,智能移动终端已经成为人们生活和工作中必不可少的工具。目前,Android已经成为移动终端的主流操作系统。移动互联网规模的发展与Android市场份额的增长相互促进,共同改变着人们的移动生活。但是伴随着移动互联网和Android的高速发展,各种各样的恶意软件也层出不穷,这严重损害了移动终端用户的切身利益以及Android应用市场的良性发展。因此,对于Android平台恶意软件的研究与检测具有重要的理论价值和现实意义。在恶意软件静态检测领域,传统的利用文件签名方案实现恶意软件检测的技术,可以有效地检测出已知的恶意样本。但是这种方案很难防范恶意软件的变种以及具有同种恶意行为的不同样本程序。例如,对恶意程序修改部分代码之后,基于文件签名的方案就很难生效。针对这种情况,一种新的基于程序流程图的恶意软件检测方法可以很好地解决这个问题。
发明内容
发明目的:针对目前Android市场的恶意软件和现有的基于文件签名的方案存在的不足,本发明提出了一种基于程序流程图的Android恶意软件检测方法。本发明首先需要从恶意样本中提炼出代表其恶意行为的特征图,然后对于待检测的样本程序,需要生成Android应用程序中每个类的流程图,并通过子图同构的理论来实现恶意软件的检测。
技术方案:一种基于程序流程图的Android恶意软件检测方法,包括如下步骤:
1)建立恶意行为特征库;
2)检测APK应用程序,包括:
a,对于待检测的APK应用程序提取其dex代码文件并对其反编译生成smali文件;
b,利用深度优先遍历算法遍历每个smali文件,对于每一个smali文件根据词法特征得到代码的基本块,并生成每个smali文件的程序流程图;
c,在步骤b中生成的流程图中,删除不含invoke指令的结点,并连接剩余的结点,得到新的只包含API调用关系的程序流程图;
d,对于步骤c中生成的新的只包含API调用关系的程序流程图,利用子图同构理论与步骤1)中建立的恶意行为特征库中的每条恶意行为记录进行匹配,若匹配成功,则检测为恶意样本。
所述步骤1)中恶意行为特征库包含每种恶意行为的一条记录,每条记录由Android(Java)的API函数的全路径哈希编码以及其连接关系组成;
所述步骤c还包括,在步骤b得到的程序流程图中标记不同的不包含invoke指令的结点组成的环,最后删除不同的不包含invoke指令的结点组成的环,并重新连接程序流程图。
有益效果:基于程序流程图的Android恶意软件检测方法建立了一种新的病毒特征库中恶意行为记录的定义方式。随着恶意软件变种的流行,以及一些新的恶意软件的出现,采用签名方案需要生成每个样本的恶意代码签名,并将其存入特征库中,这必然会导致特征库的急剧增大。对于恶意软件的变种以及有相同恶意行为的样本,本发明只需要定义一条记录描述这种恶意行为即可。因此,相对于传统的签名方案,本发明提出的行为特征库可以大大减小特征库的大小。相对于传统的利用文件签名方案进行恶意软件检测的系统,本发明可以有效识别出恶意软件的变种,并能有效抵抗恶意代码篡改等签名方案无法检测的病毒类型。
附图说明
图1为本发明的流程图;
图2为本发明中控制流程图的生成规则;
图3为本发明删除流程图中不同的不包含invoke结点的环;
图4为本发明提取的zsone的恶意行为特征;
图5为本发明提取的恶意子图的邻接矩阵表示。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
一种基于程序流程图的Android恶意软件检测方法,其具体实施流程图如图1所示。下面结合zsone恶意软件介绍本发明的实施步骤:
1)恶意行为特征库的建立
步骤1、提取该APK(SHA1:9458cfb51c90130938abcef7173c3f6d44a02720)应用程序的dex代码文件;
步骤2、对于步骤1提取的dex文件利用反编译工具dex2jar生成dex的jar文件,并用jd-gui打开。人工分析其恶意行为并确定恶意代码所在的类文件为com\mj\utils\MJReceiver.class;
步骤3、利用baksmali反编译dex生成smali格式的文件。对于反编译出的smali格式的恶意类MJReceiver.smali,根据其词法特征得到代码的基本块,并生成MJReceiver.smali的流程图,其中每个基本块是流程图中的一个结点;
步骤4、在步骤3中生成的流程图中,根据以下三条规则删除流程图中不含invoke指令的结点,并连接剩余结点得到新的流程图,具体过程如图2所示;
(1)若某基本块包含invoke指令,且invoke的API全路径是Android(Java)里的路径,则此基本块中只保留该invoke的API全路径;
(2)若某基本块中invoke的API全路径不是Android(Java)里的路径,则检查此类的的父类,得到Android(Java)里的全路径。最后连接剩余的结点,得到新的流程图。
(3)若某基本块中不包含invoke指令,则删除此基本块,此过程中需要标记并删除不同的不包含invoke的结点组成的环,如图3所示;
步骤5、对于步骤4生成的流程图中,提取产生恶意行为的关键Android(Java)的API组成的子图,并对这些API进行全路径哈希编码。其中API的编码算法采用FNV-1哈希算法。例如Android里取消广播消息abortBroadcast的全路径为android/content/BroadcastReceiver;->abortBroadcast(),采用FNV-1编码,则其编码值为8B19210F。对于zsone恶意软件,本发明提取的恶意软子图如图4所示,其中的API全路径进行编码如表1所示。
表1
API全路径 | FNV-1 |
android/telephony/gsm/SmsMessage;->createFromPdu() | CBC6E174 |
android/telephony/gsm/SmsMessage;->getDisplayOriginatingAddress() | 94642FEE |
java/lang/String;->equals() | D1562846 |
android/content/BroadcastReceiver;->abortBroadcast() | 8B19210F |
步骤6、对于步骤5得到的每个API的编码值,其连接关系采用有向图的邻接矩阵表示,进一步,我们可以将矩阵的每一行连接起来构成一个字符串,称为图指纹,如图5所示。将API全路径哈希编码值与其连接关系组成的图指纹作为一条恶意行为特征存入恶意行为特征库中。
例如得到的zsone恶意行为特征为:
CBC6E17494642FEED15628468B19210F:0100001011011100
2)应用程序的检测过程
步骤7、采用步骤1提取dex文件,采用步骤2反编译dex文件得到所有的smali类文件;
步骤8、利用深度优先遍历算法遍历每个smali文件,并采用步骤3、4的过程生成每个smali文件的流程图;
步骤9、对于步骤8中生成的流程图,利用子图同构理论与建立的行为特征库中的每条记录进行匹配,若匹配成功,则检测出恶意样本。
Claims (3)
1.一种基于程序流程图的Android恶意软件检测方法,其特征在于,包括如下步骤:
1)建立恶意行为特征库;
2)检测APK应用程序,包括:
a,对于待检测的APK应用程序提取其dex代码文件并对其反编译生成smali文件;
b,利用深度优先遍历算法遍历每个smali文件,对于每一个smali文件根据词法特征得到代码的基本块,并生成每个smali文件的程序流程图;
c,在步骤b中生成的流程图中,删除不含invoke指令的结点,并连接剩余的结点,得到新的只包含API调用关系的程序流程图;
d,对于步骤c中生成的新的只包含API调用关系的程序流程图,利用子图同构理论与步骤1)中建立的恶意行为特征库中的每条恶意行为记录进行匹配,若匹配成功,则检测为恶意样本。
2.如权利要求1所述的基于程序流程图的Android恶意软件检测方法,其特征在于:所述步骤1)中恶意行为特征库包含每种恶意行为的一条记录,每条记录由Android(Java)的API函数的全路径哈希编码以及其连接关系组成。
3.如权利要求1所述的基于程序流程图的Android恶意软件检测方法,其特征在于:所述步骤c还包括,在步骤b得到的程序流程图中标记不同的不包含invoke指令的结点组成的环,最后删除不同的不包含invoke指令的结点组成的环,并重新连接程序流程图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410250514.2A CN104021346B (zh) | 2014-06-06 | 2014-06-06 | 基于程序流程图的Android恶意软件检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410250514.2A CN104021346B (zh) | 2014-06-06 | 2014-06-06 | 基于程序流程图的Android恶意软件检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104021346A true CN104021346A (zh) | 2014-09-03 |
CN104021346B CN104021346B (zh) | 2017-02-22 |
Family
ID=51438093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410250514.2A Expired - Fee Related CN104021346B (zh) | 2014-06-06 | 2014-06-06 | 基于程序流程图的Android恶意软件检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104021346B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205395A (zh) * | 2015-08-31 | 2015-12-30 | 广州市优普计算机有限公司 | 恶意软件自动化检测方法 |
CN105488412A (zh) * | 2015-06-19 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 基于android终端日志的恶意代码检测方法及系统 |
CN105631342A (zh) * | 2015-12-22 | 2016-06-01 | 北京无线电计量测试研究所 | 一种针对地下管线移动地理信息安全的渗透测试方法 |
CN105989294A (zh) * | 2015-02-17 | 2016-10-05 | 华为技术有限公司 | 安卓安装包检测方法及装置 |
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN106548076A (zh) * | 2015-09-23 | 2017-03-29 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
CN106709350A (zh) * | 2016-12-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置 |
CN106845224A (zh) * | 2016-12-16 | 2017-06-13 | 华东师范大学 | 一种恶意程序识别系统 |
CN106874180A (zh) * | 2015-12-11 | 2017-06-20 | 财团法人资讯工业策进会 | 检测系统及其方法 |
CN106897616A (zh) * | 2015-12-17 | 2017-06-27 | 腾讯科技(深圳)有限公司 | 一种程序文件的处理方法及装置 |
CN107122659A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种快速定位Android应用软件中恶意代码或漏洞的方法 |
WO2017161571A1 (en) * | 2016-03-25 | 2017-09-28 | Nokia Technologies Oy | A hybrid approach of malware detection |
CN107808094A (zh) * | 2016-09-08 | 2018-03-16 | 卡巴斯基实验室股份制公司 | 检测文件中的恶意代码的系统和方法 |
CN108763059A (zh) * | 2018-04-24 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种异常检测方法、装置及设备 |
CN109543408A (zh) * | 2018-10-29 | 2019-03-29 | 卓望数码技术(深圳)有限公司 | 一种恶意软件识别方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
US20120174227A1 (en) * | 2010-12-30 | 2012-07-05 | Kaspersky Lab Zao | System and Method for Detecting Unknown Malware |
CN103559125A (zh) * | 2013-10-25 | 2014-02-05 | 北京广利核系统工程有限公司 | 一种利用图同构验证编译器的方法 |
-
2014
- 2014-06-06 CN CN201410250514.2A patent/CN104021346B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140611A (zh) * | 2007-09-18 | 2008-03-12 | 北京大学 | 一种恶意代码自动识别方法 |
US20120174227A1 (en) * | 2010-12-30 | 2012-07-05 | Kaspersky Lab Zao | System and Method for Detecting Unknown Malware |
CN103559125A (zh) * | 2013-10-25 | 2014-02-05 | 北京广利核系统工程有限公司 | 一种利用图同构验证编译器的方法 |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989294A (zh) * | 2015-02-17 | 2016-10-05 | 华为技术有限公司 | 安卓安装包检测方法及装置 |
CN105989294B (zh) * | 2015-02-17 | 2019-02-26 | 华为技术有限公司 | 安卓安装包检测方法及装置 |
WO2016201853A1 (zh) * | 2015-06-15 | 2016-12-22 | 中兴通讯股份有限公司 | 加解密功能的实现方法、装置及服务器 |
CN105488412A (zh) * | 2015-06-19 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 基于android终端日志的恶意代码检测方法及系统 |
CN105205395A (zh) * | 2015-08-31 | 2015-12-30 | 广州市优普计算机有限公司 | 恶意软件自动化检测方法 |
CN106548076A (zh) * | 2015-09-23 | 2017-03-29 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
WO2017049800A1 (zh) * | 2015-09-23 | 2017-03-30 | 百度在线网络技术(北京)有限公司 | 检测应用漏洞代码的方法和装置 |
CN106874180A (zh) * | 2015-12-11 | 2017-06-20 | 财团法人资讯工业策进会 | 检测系统及其方法 |
CN106874180B (zh) * | 2015-12-11 | 2020-09-11 | 财团法人资讯工业策进会 | 检测系统及其方法 |
CN106897616A (zh) * | 2015-12-17 | 2017-06-27 | 腾讯科技(深圳)有限公司 | 一种程序文件的处理方法及装置 |
CN105631342A (zh) * | 2015-12-22 | 2016-06-01 | 北京无线电计量测试研究所 | 一种针对地下管线移动地理信息安全的渗透测试方法 |
WO2017161571A1 (en) * | 2016-03-25 | 2017-09-28 | Nokia Technologies Oy | A hybrid approach of malware detection |
CN107808094A (zh) * | 2016-09-08 | 2018-03-16 | 卡巴斯基实验室股份制公司 | 检测文件中的恶意代码的系统和方法 |
CN107808094B (zh) * | 2016-09-08 | 2021-06-04 | 卡巴斯基实验室股份制公司 | 检测文件中的恶意代码的系统和方法 |
CN106845224A (zh) * | 2016-12-16 | 2017-06-13 | 华东师范大学 | 一种恶意程序识别系统 |
WO2018121464A1 (zh) * | 2016-12-30 | 2018-07-05 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置、存储介质 |
CN106709350A (zh) * | 2016-12-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种病毒检测方法及装置 |
CN107122659A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种快速定位Android应用软件中恶意代码或漏洞的方法 |
CN108763059A (zh) * | 2018-04-24 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种异常检测方法、装置及设备 |
CN109543408A (zh) * | 2018-10-29 | 2019-03-29 | 卓望数码技术(深圳)有限公司 | 一种恶意软件识别方法和系统 |
CN109543408B (zh) * | 2018-10-29 | 2021-10-12 | 卓望数码技术(深圳)有限公司 | 一种恶意软件识别方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104021346B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104021346A (zh) | 基于程序流程图的Android恶意软件检测方法 | |
Li et al. | Libd: Scalable and precise third-party library detection in android markets | |
Wang et al. | Rmvdroid: towards a reliable android malware dataset with app metadata | |
Zheng et al. | Droid analytics: a signature based analytic system to collect, extract, analyze and associate android malware | |
Crussell et al. | Scalable semantics-based detection of similar android applications | |
KR101162051B1 (ko) | 문자열 비교 기법을 이용한 악성코드 탐지 및 분류 시스템 및 그 방법 | |
Crussell et al. | Andarwin: Scalable detection of semantically similar android applications | |
CN103902910B (zh) | 检测智能终端中恶意代码的方法及装置 | |
Crussell et al. | Andarwin: Scalable detection of android application clones based on semantics | |
CN105184160B (zh) | 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN104091121B (zh) | 对Android重打包恶意软件的恶意代码的检测、切除和恢复的方法 | |
CN101685483B (zh) | 一种病毒特征码提取的方法和装置 | |
CN107239678B (zh) | 一种基于Java文件目录结构的Android应用重打包检测方法 | |
CN102750482A (zh) | 一种安卓市场中重包装应用的检测方法 | |
CN104166680B (zh) | 一种基于开源库与文本挖掘的并行漏洞挖掘方法 | |
CN105205356A (zh) | 一种app应用重打包检测方法 | |
CN106682506B (zh) | 一种病毒程序检测方法和终端 | |
CN105046152A (zh) | 基于函数调用图指纹的恶意软件检测方法 | |
CN107122659A (zh) | 一种快速定位Android应用软件中恶意代码或漏洞的方法 | |
CN104751053A (zh) | 移动智能终端软件的静态行为分析方法 | |
CN104036187A (zh) | 计算机病毒类型确定方法及其系统 | |
CN105446741A (zh) | 一种基于api比对的移动应用程序辨识方法 | |
Faruki et al. | Droidolytics: robust feature signature for repackaged android apps on official and third party android markets | |
CN108171057B (zh) | 基于特征匹配的Android平台恶意软件检测方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170222 Termination date: 20210606 |