CN109241739B - 基于api的安卓恶意程序检测方法、装置及存储介质 - Google Patents
基于api的安卓恶意程序检测方法、装置及存储介质 Download PDFInfo
- Publication number
- CN109241739B CN109241739B CN201810835429.0A CN201810835429A CN109241739B CN 109241739 B CN109241739 B CN 109241739B CN 201810835429 A CN201810835429 A CN 201810835429A CN 109241739 B CN109241739 B CN 109241739B
- Authority
- CN
- China
- Prior art keywords
- api
- feature vector
- sensitive
- matching
- apis
- 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.)
- Active
Links
Images
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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种基于API的安卓恶意程序检测方法,包括:对APK文件进行反编译得到smali文件,采用Pscout工具获取敏感API集合,将smali文件中的API与敏感API集合中的API进行匹配,由匹配成功的API组成匹配敏感API集合;采用LibD工具剔除所述匹配敏感API集合中由第三方库调用的API,得到净化后的匹配敏感API集合;根据净化后的匹配敏感API集合,构造第一特征向量,采用TF‑IDF算法重构所述第一特征向量,得到第二特征向量;将第二特征向量作为训练集,训练深度学习模型得到有效分类模型,采用有效分类模型对安卓程序进行检测,获取安卓恶意程序。本发明实施例还提供了一种主动交互装置及非暂态可读存储介质,用来实现所述方法。本发明能够对安卓恶意程序进行精确检测。
Description
技术领域
本发明实施例涉及网络安全技术领域,尤其涉及一种基于API的安卓恶意程序检测方法、装置及存储介质。
背景技术
安卓恶意应用攻击技术已经日趋成熟,新兴的恶意软件层出不穷,具有涉及领域广、影响范围大、难以检测、泄露国家秘密以及造成用户经济损失等诸多特点。已有许多国内外学者对安卓系统的检测做了诸多研究。
目前主流的安卓恶意软件检测方式是:首先,提取安卓应用程序的静态特征或动态特征,结合静态特征或动态特征生成应用程序的特征向量;若应用程序被检测到上述特征就会在应用程序的特征向量中被标记为1,否则为0。然后,使用某种机器学习算法对收集到的训练集进行训练,生成检测模型;最后,利用生成的检测模型对待测安卓应用程序进行检测。然而,特征向量的值采用二进制(0,1)只能表示检测到了某种敏感行为,然而具有某种敏感行为不能说明在该应用中就代表恶意,安卓应用程序的恶意程度与该程序本身所期望的功能相关。因此,找到能够精确检测安卓系统中的恶意应用程序的方法就成为业界亟待解决的技术问题。
发明内容
针对现有技术存在的上述问题,本发明实施例提供了一种基于API的安卓恶意程序检测方法、装置及存储介质。
一方面,本发明实施例提供了一种基于API的安卓恶意程序检测方法,包括:对APK文件进行反编译得到smali文件,采用Pscout工具获取敏感API集合,将所述smali文件中的API与所述敏感API集合中的API进行匹配,由匹配成功的API组成匹配敏感API集合;采用LibD工具剔除所述匹配敏感API集合中由第三方库调用的API,得到净化后的匹配敏感API集合;根据所述净化后的匹配敏感API集合,构造第一特征向量,采用TF-IDF算法重构所述第一特征向量,得到第二特征向量;将所述第二特征向量作为训练集,训练深度学习模型得到有效分类模型,采用所述有效分类模型对安卓程序进行检测,获取安卓恶意程序;其中,所述第二特征向量中特征值为1或0,且每个特征值代表所述净化后的匹配敏感API集合中的一个API。
另一方面,本发明实施例提供了一种主动交互装置及一种非暂态可读存储介质。所述一种主动交互装置包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行所述一种基于API的安卓恶意程序检测方法。所述一种非暂态可读存储介质存储程序指令,用于执行所述一种基于API的安卓恶意程序检测方法。
本发明实施例提供了一种基于API的安卓恶意程序检测方法、装置及存储介质,通过将匹配敏感API集合中由第三方库调用的API剔除,并对第一特征向量进行重构,能够对安卓恶意应用程序进行精确检测,提升了检测准确率,降低了检测误报率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例中基于API的安卓恶意程序检测方法的整体流程图;
图2是本发明实施例中基于API调用结构树构造特征向量示意图;
图3是本发明实施例的硬件装置工作示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种基于API的安卓恶意程序检测方法、装置及存储介质。现有的安卓系统中,APK文件通过类的方式会形成一系列函数,这些函数会调用一些应用程序,而调用这些应用程序都是通过API进行的。在通过API调用这些应用程序的过成中,一定概率上会调用到具有恶意攻击性的应用程序,这些恶意应用程序会对系统造成危害,成为系统正常运行及信息安全的重大隐患。本发明针对这些场景,提出了行之有效的解决办法,并列举了不同的实施例予以详细说明。请参见图1,图1是本发明第一实施例中基于API的安卓恶意程序检测方法的整体流程图,包括:
S101:对APK文件进行反编译得到smali文件,采用Pscout工具获取敏感API集合(在另一实施例中,所述敏感API集合包含1280个敏感API),将所述smali文件中的API与所述敏感API集合中的API进行匹配,由匹配成功的API组成匹配敏感API集合。
在另一实施例中,将所述smali文件中的API与所述敏感API集合中的API进行匹配,包括:采用baksmali文本编辑器阅读所述smali文件,读取所述smali文件中包含的API,将读取的smali文件中的API与所述敏感API集合中的API进行匹配。
S102:采用LibD工具剔除所述匹配敏感API集合中由第三方库调用的API,得到净化后的匹配敏感API集合(在另一实施例中,S102具体包括:将所述LibD工具识别出的第三方库的名称添加到名称列表中,根据函数需要调用的API列表,将所述名称列表中由第三方库调用的API删除)。
其中,净化后的匹配敏感API集合是指:在匹配敏感API集合中包含由第三方库调用的API,这些API会导致敏感信息误报,所以将这些API从匹配敏感API集合去除,得到的新的集合就定义为净化后的匹配敏感API集合。
S103:根据所述净化后的匹配敏感API集合,构造第一特征向量,采用TF-IDF算法重构所述第一特征向量,得到第二特征向量。
在另一实施例中,所述根据所述净化后的匹配敏感API集合,构造第一特征向量,包括:若应用程序被检测到,则所述净化后的匹配敏感API集合中对应的API,在所述第一特征向量中标记为1,否则标记为0。
在另一实施例中,所述采用TF-IDF算法重构所述第一特征向量,得到第二特征向量,包括:确定所述第一特征向量的类别,保持原特征值0不变,计算所述第一特征向量中原特征值1代表的API的敏感系数,根据所述敏感系数重新定义所述原特征值1为1或0,以重新定义后的特征值及所述原特征值0组成所述第二特征向量。所述根据所述敏感系数重新定义所述原特征值1为1或0,包括:
若所述敏感系数大于预设阈值,则原特征值1仍为1;若所述敏感系数小于预设阈值,则原特征值1为0。其中,预设阈值可以为0.6。
其中,每个API的敏感系数定义为:
式中,DFs为该API在类别c中出现的文档频率,Nc为类c中总的样本数。如果DF(s,c)大于预设阈值(如0.6),则该API在第二特征向量中的特征值仍置为1,如果DF(s,c)小于预设阈值(如0.6),则该API在第二特征向量中的特征值重置为0。
S104:将所述第二特征向量作为训练集,训练深度学习模型得到有效分类模型,采用所述有效分类模型对安卓程序进行检测,获取安卓恶意程序。其中,所述第二特征向量中特征值为1或0,且每个特征值代表所述净化后的匹配敏感API集合中的一个API。深度学习模型为现有技术中任意一种可以用来分类的学习模型(例如,深度神经网络、循环神经网络、卷积神经网络或深度信念网络等)。
在上述实施例中均提到了针对API构造特征向量,通过特征向量对恶意程序进行识别的方法。下面就对通过API如何构造特征向量进行详细阐述,方便读者更加透彻地理解本发明的原理。请参见图2,图2是本发明实施例中基于API调用结构树构造特征向量示意图,包括:
第一特征向量202、第二特征向量201及第三方库调用的API203。
由图2中可见,每个APK文件包含若干个类(如Class1,Class2,…,Class n),每个类下又包含若干个函数(如Function1,…,Function n)。以Class1下的Function1为例,其调用了n个API(API1,…,API n-1,API n),这n个API的特征值(0或1)组成第一特征向量202,其特征值分别为(1,…,0,1)。当采用TF-IDF算法(其他等同算法亦可)重构所述第一特征向量202后,例如,API1的值由原始的1变为0,则第一特征向量202就被重构为第二特征向量201,第二特征向量201的特征值分别为(0,…,0,1)。为了方便更清楚理解第一特征向量202及第二特征向量201,现将两者的形式展示如下:
第一特征向量202的形式为:
V1={0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,……,0,1,1,0,1,1,0,0,0,0,0,1}。
第二特征向量201的形式为:
V2={0,0,0,0,0,1,1,1,0,1,0,0,0,0,1,……,0,1,1,0,1,0,0,0,0,0,0,0}
其中,各个0或1即为特征值,均分别代表一个API(例如,净化后的匹配敏感API集合中的一个API)。
众所周知,上述各实施例中的方法的实现有赖于硬件对其的执行,相应的硬件装置对实现本发明的方法起到至关重要的作用。为此,本发明下面就对执行前述各实施例的方法的相关硬件设备做详细介绍。请参见图3,图3是本发明实施例的硬件装置工作示意图,所述硬件装置包括:一种基于API的安卓恶意程序检测装置301、处理器302及存储介质303。
基于API的安卓恶意程序检测装置301:所述一种基于API的安卓恶意程序检测装置301实现所述一种基于API的安卓恶意程序检测方法。
处理器302:所述处理器302加载并执行所述存储介质303中的指令及数据用于实现所述的一种基于API的安卓恶意程序检测方法。
存储介质303:所述存储介质303存储指令及数据;所述存储介质303用于实现所述的一种基于API的安卓恶意程序检测方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于API的安卓恶意程序检测方法,其特征在于,包括:
对APK文件进行反编译得到smali文件,采用Pscout工具获取敏感API集合,将所述smali文件中的API与所述敏感API集合中的API进行匹配,由匹配成功的API组成匹配敏感API集合;
采用LibD工具剔除所述匹配敏感API集合中由第三方库调用的API,得到净化后的匹配敏感API集合;
根据所述净化后的匹配敏感API集合,构造第一特征向量,采用TF-IDF算法重构所述第一特征向量,得到第二特征向量;
将所述第二特征向量作为训练集,训练深度学习模型得到有效分类模型,采用所述有效分类模型对安卓程序进行检测,获取安卓恶意程序;
其中,所述第二特征向量中特征值为1或0,且每个特征值代表所述净化后的匹配敏感API集合中的一个API。
2.根据权利要求1所述的基于API的安卓恶意程序检测方法,其特征在于,所述敏感API集合包含1280个敏感API。
3.根据权利要求1所述的基于API的安卓恶意程序检测方法,其特征在于,所述采用LibD工具剔除所述匹配敏感API集合中由第三方库调用的API,得到净化后的匹配敏感API集合,包括:
将所述LibD工具识别出的第三方库的名称添加到名称列表中,根据函数需要调用的API列表,将所述名称列表中由第三方库调用的API删除;所述函数为所述APK文件形成的函数。
4.根据权利要求1所述的基于API的安卓恶意程序检测方法,其特征在于,所述根据所述净化后的匹配敏感API集合,构造第一特征向量,包括:
若应用程序被检测到,则所述净化后的匹配敏感API集合中对应的API,在所述第一特征向量中标记为1,否则标记为0。
6.根据权利要求5所述的基于API的安卓恶意程序检测方法,其特征在于,所述根据所述敏感系数重新定义所述原特征值1为1或0,包括:
若所述敏感系数大于预设阈值,则原特征值1仍为1;
若所述敏感系数小于预设阈值,则原特征值1为0。
7.根据权利要求1所述的基于API的安卓恶意程序检测方法,其特征在于,所述将所述smali文件中的API与所述敏感API集合中的API进行匹配,包括:
采用baksmali文本编辑器阅读所述smali文件,读取所述smali文件中包含的API,将读取的smali文件中的API与所述敏感API集合中的API进行匹配。
8.一种主动交互装置,其特征在于,包括:
至少一个处理器;
所述处理器调用程序指令能够执行如权利要求1至7任一权利要求所述的方法。
9.一种非暂态可读存储介质,其特征在于,所述非暂态可读存储介质存储程序指令,所述程序指令用于执行如权利要求1至7任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810796873 | 2018-07-19 | ||
CN2018107968736 | 2018-07-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241739A CN109241739A (zh) | 2019-01-18 |
CN109241739B true CN109241739B (zh) | 2021-01-05 |
Family
ID=65072538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810835429.0A Active CN109241739B (zh) | 2018-07-19 | 2018-07-26 | 基于api的安卓恶意程序检测方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241739B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112446026A (zh) * | 2019-09-03 | 2021-03-05 | 中移(苏州)软件技术有限公司 | 一种恶意软件的检测方法、装置及存储介质 |
CN111124486A (zh) * | 2019-12-05 | 2020-05-08 | 任子行网络技术股份有限公司 | 发现安卓应用引用第三方工具的方法、系统及存储介质 |
KR102427767B1 (ko) * | 2021-11-25 | 2022-08-02 | 숭실대학교 산학협력단 | 구현 특징에 기반한 모바일 악성 애플리케이션 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203122A (zh) * | 2016-07-25 | 2016-12-07 | 西安交通大学 | 基于敏感子图的安卓恶意重打包软件检测方法 |
CN106919841A (zh) * | 2017-03-10 | 2017-07-04 | 西京学院 | 一种高效的基于旋转森林的Android恶意软件检测模型DroidDet |
CN107967208A (zh) * | 2016-10-20 | 2018-04-27 | 南京大学 | 一种基于深度神经网络的Python资源敏感缺陷代码检测方法 |
-
2018
- 2018-07-26 CN CN201810835429.0A patent/CN109241739B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203122A (zh) * | 2016-07-25 | 2016-12-07 | 西安交通大学 | 基于敏感子图的安卓恶意重打包软件检测方法 |
CN107967208A (zh) * | 2016-10-20 | 2018-04-27 | 南京大学 | 一种基于深度神经网络的Python资源敏感缺陷代码检测方法 |
CN106919841A (zh) * | 2017-03-10 | 2017-07-04 | 西京学院 | 一种高效的基于旋转森林的Android恶意软件检测模型DroidDet |
Also Published As
Publication number | Publication date |
---|---|
CN109241739A (zh) | 2019-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566358B (zh) | 一种风险预警提示方法、装置、介质及设备 | |
US10417072B2 (en) | Scalable predictive early warning system for data backup event log | |
CN108734012B (zh) | 恶意软件识别方法、装置及电子设备 | |
CN109241739B (zh) | 基于api的安卓恶意程序检测方法、装置及存储介质 | |
CN111832019A (zh) | 基于生成对抗网络的恶意代码检测方法 | |
CN111460446B (zh) | 基于模型的恶意文件检测方法及装置 | |
CN103473346A (zh) | 一种基于应用程序编程接口的安卓重打包应用检测方法 | |
CN111931048B (zh) | 基于人工智能的黑产账号检测方法及相关装置 | |
CN109858248A (zh) | 恶意Word文档检测方法和装置 | |
KR102302484B1 (ko) | 특성 선택에 기반한 모바일 악성 코드 분류 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
Sanz et al. | Instance-based anomaly method for Android malware detection | |
CN112988509A (zh) | 一种告警消息过滤方法、装置、电子设备及存储介质 | |
CN113992340A (zh) | 用户异常行为识别方法、装置、设备、存储介质和程序 | |
CN110674498B (zh) | 一种基于多维度文件活动的内部威胁检测方法及系统 | |
CN114491523A (zh) | 恶意软件检测方法、装置、电子设备、介质及产品 | |
CN115146275A (zh) | 容器安全防护方法、装置、电子设备和存储介质 | |
CN113139185A (zh) | 基于异质信息网络的恶意代码检测方法及系统 | |
CN110532773A (zh) | 恶意访问行为识别方法、数据处理方法、装置和设备 | |
CN108875374B (zh) | 基于文档节点类型的恶意pdf检测方法及装置 | |
CN108197475B (zh) | 一种恶意so模块检测方法及相关装置 | |
CN113114489B (zh) | 一种网络安全态势评估方法、装置、设备及存储介质 | |
US20230088415A1 (en) | Techniques for enriching device profiles and mitigating cybersecurity threats using enriched device profiles | |
CN114706766A (zh) | 安全函数的误报消除方法及装置、电子设备、存储介质 | |
Prabhavathy et al. | Permission and API Calls Based Hybrid Machine Learning Approach for Detecting Malicious Software in Android System. | |
CN113971285A (zh) | 一种终端恶意进程识别方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |