CN109684840B - 基于敏感调用路径的Android恶意软件检测方法 - Google Patents

基于敏感调用路径的Android恶意软件检测方法 Download PDF

Info

Publication number
CN109684840B
CN109684840B CN201811561719.7A CN201811561719A CN109684840B CN 109684840 B CN109684840 B CN 109684840B CN 201811561719 A CN201811561719 A CN 201811561719A CN 109684840 B CN109684840 B CN 109684840B
Authority
CN
China
Prior art keywords
sensitive
android
class
software
malicious
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
Application number
CN201811561719.7A
Other languages
English (en)
Other versions
CN109684840A (zh
Inventor
陈均
孙聪
杨超
王超
许昕鹏
马豫宛
冯鹏斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201811561719.7A priority Critical patent/CN109684840B/zh
Publication of CN109684840A publication Critical patent/CN109684840A/zh
Application granted granted Critical
Publication of CN109684840B publication Critical patent/CN109684840B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于敏感调用路径的Android恶意软件检测方法,主要解决现有方案对恶意软件检测精确性较低的问题。其方案是:通过自然语言处理技术构建敏感目标接口API列表;用经过逆向分析的Android应用软件生成敏感调用路径集合;将敏感调用路径作为特征,通过分析大量良性软件和恶意软件数据集,建立Android敏感调用路径特征库;将样本的敏感调用路径集合处理成特征向量,利用特征向量采用有监督的机器学习算法训练分类器模型;用训练好的分类器模型检测出未知安全性的Android应用软件是否为恶意软件。本发明精度高,易扩展,智能化显著,可用于移动终端的自动化检测和Android应用市场的审查和分析。

Description

基于敏感调用路径的Android恶意软件检测方法
技术领域
本发明属于信息安全技术领域,特别涉及一种Android恶意软件检测方法,可用于移动终端的自动化检测和Android应用市场的审查和分析。
背景技术
Android系统是目前移动终端上搭载的最为流行,使用最为广泛的移动操作系统。随着Android应用深刻融合人类生活,恶意软件也在兴起。根据McAfee Labs2018年3月份最新发布的威胁报告,截止2017年年底移动恶意软件的总数量已经将近2500万个,全球移动恶意软件的感染率超过了11%。用户一旦安装和感染了恶意程序,所有的隐私数据将面临着被窃取和操纵的风险,危害十分巨大。
Android平台拥有海量的应用程序,要对每一个应用程序进行人工分析,判断是否为恶意软件,代价十分巨大导致难以实现,人工分析也存在大量的不确定性。使用机器学习的方法自动检测Android应用的恶意行为,不仅快速而且高效。随着恶意软件的不断发现,训练模型也可以进一步优化,判断应用程序恶意性也将更为准确。但是,使用机器学习的关键是如何提取合适的特征,以及训练出合适的分类模型。特征的准确程度直接影响分类模型的精确性。现有方案通常将敏感API的使用集合或者权限使用集合作为恶意软件特征,存在粗粒度和精确性较低的问题。
专利申请号为201510282507.5的“基于权限的Android恶意软件混合检测方法”,该方法是根据应用程序申请的权限去判定应用程序是善意应用,恶意应用,还是可疑应用。由于良性应用和恶意应用申请敏感的权限的界限不明确,会导致误报和漏检的问题。
专利申请号为201710139758.7的“一种高效的基于旋转森林的Android恶意软件检测模型DroidDet”,该模型提取的Android恶意软件特征为涉及隐私的权限集合和API集合,以及相应的系统事件。但这些特征如果被Android应用程序合理使用也会触发该方法中的过滤机制,特征的粒度不够细,准确性较低。
发明内容:
本发明的目的在于针对上述现有技术的不足,提出一种基于敏感调用路径的Android恶意软件检测方法,以使特征粒度更细致,提高Android恶意软件检测分析结果的准确率,降低误报和漏检的可能性。
本发明的技术思路是:从大量Android应用软件中提取敏感调用路径,将敏感的调用路径作为新的恶意特征集合,采用合适的机器学习算法,训练准确的二元分类器,以达到准确分类良性软件和恶意软件的目标。
根据上述思路,本发明的技术发案包括如下:
1.基于敏感调用路径的Android恶意软件检测方法,其特征在于,包括如下:
(1)从国内外主流应用市场和相关样本库下载收集恶意和良性的Android应用软件样本,其中恶意样本和良性样本各占一半,每种样本数量均不小于B个,B为大于等于1的正整数;
(2)构建敏感目标接口API列表:
收集公开发表的Android安全研究论文和分析报告,建立自然语言表示的Android恶意行为知识库;
在Android恶意行为知识库中,提取Android恶意行为描述的关键词;
在Android官方的开发文档中收集包含关键词的所有接口API,作为敏感目标接口API列表;
(3)使用静态分析工具对每个Android应用软件样本进行逆向分析,提取出清单文件和Java字节码文件;
(4)根据应用软件的清单文件和Java字节码文件生成Android应用软件的程序调用图;
(5)将敏感目标接口API列表输入到程序调用图中,经过迭代查找,将程序调用图的起点作为敏感调用路径的起点,将敏感目标接口API作为终点,生成包含多条敏感调用路径的集合;
(6)合并每个样本软件的敏感调用路径集合,去除重复的敏感调用路径之后,建立Android系统敏感调用路径特征库,使用每个样本的敏感调用路径集合中的路径对特征库进行匹配:若路径出现在特征库中,则经特征库对应的路径记为1;反之,记为0,以生成0和1序列,作为每个样本的特征向量;
(7)将恶意样本软件的特征向量标注为恶意,将良性的样本软件的特征向量标注为良性,用这些带标注的特征向量构成数据集;
(8)在数据集上,使用有监督的机器学习算法,训练分类器模型,并从数据集中随机选择部分数据对该分类器模型进行交叉验证,计算分类器模型的混淆矩阵M,准确率A,精确率P,召回率R,精确率和召回率的调和平均数F1这些指标;
(9)根据分类器模型评价指标,调整机器学习算法的参数,训练E次,E为大于等于1的正整数;选择E次训练中评价指标最优的分类器模型,作为训练好的分类器模型;
(10)对未知安全性的Android应用程序经过(4)-(6)处理后,输入到(9)训练好的分类器模型中,检测出该应用是否为恶意软件。
本发明与现有技术相比,具有如下优点:
1)精度高:Android应用软件是事件处理程序驱动的,本发明根据不同事件处理程序生成的程序调用图,能够表征应用软件的执行逻辑和功能单元,并通过从程序调用图中生成敏感调用路径,再现了恶意行为的执行路径及可能的触发方式,可以准确地识别Android软件的恶意行为。
2)易扩展:本发明通过丰富和完善敏感目标接口API列表,对程序调用图进行深度挖掘,从而识别出Android恶意软件更多的恶意特征,可以实现对未知Android应用软件的检测。
3)智能化:本发明克服了现有工具提取的恶意软件特征不够准确的局限性,将敏感调用路径作为新的特征,对大量的Android恶意软件样本采用合适机器学习算法,训练出准确的二元分类器模型,提高了Android恶意软件的智能化检测程度。
附图说明
图1是本发明的实现总流程图;
图2是本发明中对Android应用软件进行逆向分析的子流程图;
图3是本发明中生成Android应用软件程序调用图的子流程图;
图4是本发明中生成敏感调用路径集合的子流程图;
图5是本发明中训练Android恶意软件检测分类器的子流程图。
具体实施方式
以下结合附图对本发明作进一步详细描述。
参照图1,本发明的实现步骤如下:
步骤1,收集恶意和良性的Android应用软件样本。
从国内外主流应用市场和公开的数据集下载收集已知恶意和良性的Android应用软件样本,其中恶意样本和良性样本各占一半,每种样本数量均不小于B个,B为大于等于1的正整数;
本实施例是从Google Play,Drebin数据集,VirusShare样本库下载和收集Android恶意软件16300个,Android良性软件16300个。
步骤2,构建敏感目标接口API列表。
敏感目标接口API列表,是指一系列在Android系统中具有恶意行为倾向的敏感目标接口API集合,包括位置信息,短消息,联系人数据,网络请求,系统调用和反射机制的接口API,构建如下:
2.1)收集公开发表的Android安全研究论文和分析报告,建立自然语言表示的Android恶意行为知识库Base,该知识库Base是由Android恶意行为描述语句组成的集合{D1,D2,…,Dn},其中,D1,D2,…,Dn表示收集到的第n条描述语句;
2.2)提取知识库Base中描述Android恶意行为的关键词:
现有的关键词提取技术包括:基于词频-逆文档频率算法的关键词抽取,基于文本排序算法的关键词抽取、基于Word2Vec词聚类算法的关键词抽取,以及多种算法相融合的关键词抽取。本实施例采用但不限于词频-逆文档频率算法,计算描述语句Dn中每个目标单词的词频-逆文档频率P,其实现如下:
2.2a)计算描述语句Dn中目标单词的词频TF:
Figure GDA0003033344380000041
其中,X表示该单词在Dn中出现的总次数,L表示描述语句Dn的总词数;
2.2b)计算描述语句Dn中目标单词的逆文档频率IDF,:
Figure GDA0003033344380000042
其中,N表示知识库Base中描述语句D的总个数;M表示目标单词的描述语句数量;
2.2c)计算Dn中的目标单词的词频-逆文档频率P:
P=TF·IDF;
2.2d)对所有目标单词的词频-逆文档频率P按照从大到小排序,最大的前K个词汇,即为知识库中描述Android恶意行为的关键词,K为大于等于1的正整数。
2.3)在Android官方的开发文档中收集包含关键词的所有接口API,构建敏感目标接口API列表;
本实施例构建的敏感目标接口API列表共有631个敏感接口API。
步骤3,对Android应用软件进行逆向分析。
使用逆向工具从Android程序包中提取和反编译出清单文件和Java字节码文件,现有的Android逆向工具包括但不限于ANDROGUARD,APKTOOL,DARE,ENJARIFY,DEDEXER。,本实施例使用APKTOOL和DARE工具。
参照图2,本步骤的具体实现如下:
3.1)使用逆向工具APKTOOL对应用软件进行解压,生成两个文件:第一个文件是AndroidManifest.xml,它是Android应用软件配置的清单文件;第二个文件是classes.dex,它是Java源代码编译后产生的运行在Dalvik虚拟机上的字节码文件;
3.2)使用反编译工具DARE将classes.dex文件反编译为Java字节码文件。
步骤4,根据步骤3得到的清单文件和Java字节码文件,生成Android应用软件的程序调用图。
参照图3,本步骤的具体实现如下:
4.1)解析目标代码,将步骤3中得到的所有字节码文件打成jar文件,作为分析的目标代码,使用程序分析工具Shrike toolkit将jar文件解析为JVM格式的代码,将解析得到的每个class对象表示为<类,方法集合>的格式;
4.2)对于每个class对象,将<类,方法集合>表示为一组<源实例值,目标实例有序集>,其中源实例值是指由类和方法集合中的每个方法逐一组成的调用实例,每个调用实例记作“类名/方法名”的格式。目标实例有序集由一系列的调用实例组成,对于源实例值对应的方法体字节码进行顺序查找,当发现调用了其他某个调用实例对应的方法时,将该调用实例加入目标实例有序集。最终,<源实例值,目标实例有序集>表示源实例值对应的方法依次调用了目标实例有序集中的各实例值对应的方法。若目标实例有序集为空,表示该源实例值对应的方法没有调用其他方法;
4.3)解析class文件类的层级结构,Java虚拟机中,所有的类加载器形成以祖先类加载器为根、以应用程序类加载器为叶的树结构,祖先类加载器用于加载Java标准库代码,应用程序类加载器用于加载应用程序代码,对于所有class对象,将每个class对象依次自根向叶委托给类加载器树上的不同类加载器,直到找到能加载该class对象的加载器,作为该class对象的层级,从而获得class对象的层级关系;
4.4)从步骤3中提取的清单文件中获得组件的类型和名称,遍历获得的Java字节码,提取该组件的事件处理方法,该事件处理方法包括组件的生命周期方法、事件监听器的接口方法,其具体实现如下:
4.4a)从清单文件中获得组件类型和名称,其中组件包括Activity,Service,ContentProvider,BroadcastReceiver,以及通过Intent Filter隐式匹配启动的其他组件,隐式匹配是指在不确切的知道要打开哪个组件的情况下,Android系统通过action、data、category匹配到的组件;
4.4b)根据4.4a)获得的组件类型和名称,遍历Java字节码,从中查找类型和名称相匹配的组件,并提取该组件事件处理方法,该事件处理方法,是指组件的生命周期方法和事件监听器的接口方法,其中事件监听器通过OnTouchListener等接口负责监听组件发生的事件,响应该事件入口方法即为事件监听器的接口方法;
4.5)将事件处理方法中组件的生命周期方法标记为起始入口方法;
4.6)将标记的起始入口方法作为实例值的起点,根据<源实例值,目标实例有序集>二元组集合所表示的实例值之间的调用关系和class文件类层级关系,反复查找,记录所有的调用关系,将实例值代表的实例方法作为节点,<源实例值,目标实例有序集>二元组所描述的源实例与目标实例的关系作为边,生成部分程序调用图;
4.7)由于Android程序的回调机制,为了迭代生成完整的调用图,需从4.5)标记起始入口方法之后,遍历Java字节码,搜索回调监听器的实例,将被重写的事件监听器的接口方法标记为另一部分入口方法,从该入口方法开始重复4.6),完善部分程序调用图;
4.8)对生成的程序调用图加边:从4.1)中记录的类中查找Intents,Threads,Executors,IPCs,RPCs,AsyncTask类,并对这些类的入口方法进行标记,重复4.6),即将上述类的程序调用图添加至部分程序调用图中,完成了加边的过程,生成了准确的程序调用图。
步骤5,根据步骤2构建的敏感目标接口API列表和步骤4生成的程序调用图,生成敏感调用路径集合。
参照图4,本步骤的具体实现如下:
5.1)将敏感目标接口API列表输入到生成的程序调用图中,生成从程序调用图的入口方法到敏感目标接口API的敏感调用路径,即敏感调用路径的起点是程序调用图的入口方法,终点是敏感目标接口API;
5.2)去除每个样本软件重复的敏感调用路径,生成包含多条敏感调用路径的集合Y,Y={敏感调用路径1,敏感调用路径2,敏感调用路径3,…}。
步骤6,训练Android恶意软件检测分类器。
参照图5,本步骤的具体实现如下:
6.1)对步骤1收集的所有Android应用软件样本,执行步骤3-步骤5的处理,每个样本均生成敏感调用路径集合;
6.2)合并每个样本软件的敏感调用路径集合,去除重复的敏感调用路径之后,建立Android系统敏感调用路径特征库,使用每个敏感调用路径集合中的路径对特征库进行匹配:若路径出现在特征库中,则经特征库对应的路径记为1;反之,记为0,以生成0和1序列,作为每个样本的特征向量;
6.3)将恶意样本软件的特征向量标注为恶意,将良性的样本软件的特征向量标注为良性,用这些带标注的特征向量构成数据集;
6.4)在数据集上,使用有监督的机器学习算法,训练分类器模型,并从数据集中随机选择部分数据对该分类器模型进行交叉验证,计算分类器模型的指标参数:
6.4a)将分类器对原本样本软件的预测结果进行分类标记:
将分类器把原本的恶意软件预测为恶意的样本记为真正例TP;
将分类器把原本的良性软件预测为恶意的样本记为假正例FP;
将分类器把原本的恶意软件预测为良性的样本记为假负例FN;
将分类器把原先的良性软件预测为良性的样本记为真负例TN;
6.4b)根据(6.4a)的分类标记,计算如下各指标参数:
混淆矩阵:
Figure GDA0003033344380000071
准确率:
Figure GDA0003033344380000072
精确率:
Figure GDA0003033344380000073
召回率:
Figure GDA0003033344380000074
精确率和召回率的调和平均数:
Figure GDA0003033344380000075
6.5)根据6.4b)的指标参数,调整机器学习算法的参数,训练分类器模型;
本步骤可用于训练Android恶意软件检测分类器的机器学习算法包括但不限于K-近邻算法,支持向量机算法,朴素贝叶斯算法,Logistic回归算法,以及Adaboost,Gbdt,XGBoost,随机森林算法等集成算法。
本实施例使用随机森林算法,其具体实现是:根据6.4b)的模型评价指标,调整随机森林算法的参数,参数包括划分的最大特征数,决策树最大深度,内部节点再划分所需最小样本数,叶子节点最少样本数,叶子节点最小的样本权重,最大叶子节点数,节点划分最小不纯度。继续训练E次,E为大于等于1的正整数,选择E次训练中评价指标最优的分类器模型。本实施例最终选择的训练好的分类器,在测试数据集上的准确率达到98.9%。
步骤7,利用分类器模型检测Android应用软件是否为恶意软件。
对未知安全性的Android应用软件经过步骤3处理,得到清单文件和Java字节码文件;
将清单文件和字节码文件经过步骤4处理,生成应用软件的程序调用图;
将程序调用图和步骤2构建的敏感目标接口API列表经过步骤5处理,生成该应用软件的敏感调用路径集合;
将敏感调用路径集合经过6.2)的处理,生成该应用软件的特征向量;
将特征向量输入到经过6.5)训练的分类器模型中,即可检测出该应用是否为Android恶意软件。
以上描述仅是本发明的一个具体实例,并未构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明的内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修改和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。

Claims (9)

1.基于敏感调用路径的Android恶意软件检测方法,其特征在于,包括如下:
(1)从国内外主流应用市场和相关样本库下载收集恶意和良性的Android应用软件样本,其中恶意样本和良性样本各占一半,每种样本数量均不小于B个,B为大于等于1的正整数;
(2)构建敏感目标接口API列表:
收集公开发表的Android安全研究论文和分析报告,建立自然语言表示的Android恶意行为知识库;
在Android恶意行为知识库中,提取Android恶意行为描述的关键词;
在Android官方的开发文档中收集包含关键词的所有接口API,作为敏感目标接口API列表;
(3)使用静态分析工具对每个Android应用软件样本进行逆向分析,提取出清单文件和Java字节码文件;
(4)根据应用软件的清单文件和Java字节码文件生成Android应用软件的程序调用图;
(5)将敏感目标接口API列表输入到程序调用图中,经过迭代查找,将程序调用图的起点作为敏感调用路径的起点,将敏感目标接口API作为终点,生成包含多条敏感调用路径的集合;
(6)合并每个样本软件的敏感调用路径集合,去除重复的敏感调用路径之后,建立Android系统敏感调用路径特征库,使用每个样本的敏感调用路径集合中的路径对特征库进行匹配:若路径出现在特征库中,则经特征库对应的路径记为1;反之,记为0,以生成0和1序列,作为每个样本的特征向量;
(7)将恶意样本软件的特征向量标注为恶意,将良性的样本软件的特征向量标注为良性,用这些带标注的特征向量构成数据集;
(8)在数据集上,使用有监督的机器学习算法,训练分类器模型,并从数据集中随机选择部分数据对该分类器模型进行交叉验证,计算分类器模型的混淆矩阵M,准确率A,精确率P,召回率R,精确率和召回率的调和平均数F1这些指标;
(9)根据分类器模型评价指标,调整机器学习算法的参数,训练E次,E为大于等于1的正整数;选择E次训练中评价指标最优的分类器模型,作为训练好的分类器模型;
(10)对未知安全性的Android应用程序经过(4)-(6)处理后,输入到(9)训练好的分类器模型中,检测出该应用是否为恶意软件。
2.根据权利要求1所述的方法,其中(2)所述的敏感目标接口API列表,是指一系列在Android系统中具有恶意行为倾向的敏感目标接口API集合,包括位置信息,短消息,联系人数据,网络请求,系统调用和反射机制的接口API。
3.根据权利要求1所述的方法,其中(2)中使用词频-逆文档频率算法,提取Android恶意行为描述的关键词,其实现如下:
(2a)计算Android恶意行为知识库中每条描述语句中的每个目标单词的词频TF:
Figure FDA0003055394250000021
其中,X表示目标单词在描述语句中出现的总次数,L表示该描述语句的总词数;
(2b)计算每个目标单词的逆文档频率IDF:
Figure FDA0003055394250000022
其中,N表示知识库中描述语句的总个数;M表示目标单词的描述语句数量;
(2c)计算每条描述语句的每个词汇的词频-逆文档频率P,每个词汇的P值用于评估该单词对于整个知识库的重要程度;
P=TF·IDF
(2d)对所有词汇的词频-逆文档频率P按照从大到小排序,最大的前K个词汇,即为知识库中描述Android恶意行为的关键词,K为大于等于1的正整数。
4.根据权利要求1所述的方法,其中(3)中对Android应用软件进行逆向分析,其实现如下:
(3a)使用逆向工具APKTOOL解压Android应用软件包,提取清单文件和包含程序核心逻辑的Dalvik字节码文件;
(3b)使用反编译工具DARE将Dalvik字节码文件转换为Java字节码文件。
5.根据权利要求1所述的方法,其中(4)中生成Android应用软件的程序调用图,其实现如下:
(4a)解析目标代码,将(3)中得到的所有字节码文件打成jar文件,作为分析的目标代码,使用程序分析工具Shrike toolkit将jar文件解析为JVM格式的代码,将解析得到的每个class对象表示为<类,方法集合>的格式;
(4b)对于每个class对象,将<类,方法集合>表示为一组<源实例值,目标实例有序集>,其中源实例值是指由类和方法集合确定的调用实例,目标实例有序集表示由源实例值确定的调用实例集合;
(4c)解析class文件类的层级结构,Java虚拟机中,所有的类加载器形成以祖先类加载器为根、以应用程序类加载器为叶的树结构,祖先类加载器用于加载Java标准库代码,应用程序类加载器用于加载应用程序代码,对于所有class对象,将每个class对象依次自根向叶委托给类加载器树上的不同类加载器,直到找到能加载该class对象的加载器,作为该class对象的层级,从而获得class对象的层级关系;
(4d)从(3)中提取的清单文件中获得组件的类型和名称,遍历(3)获得的Java字节码,提取该组件的事件处理方法,该事件处理方法包括组件的生命周期方法、事件监听器的接口方法;
(4e)将事件处理方法中组件的生命周期方法标记为起始入口方法;
(4f)将标记的起始入口方法作为实例值的起点,根据<源实例值,目标实例有序集>二元组集合所表示的实例值之间的调用关系和class文件类层级关系,反复查找,记录所有的调用关系,将实例值代表的实例方法作为节点,<源实例值,目标实例有序集>二元组所描述的源实例与目标实例的关系作为边,生成部分程序调用图;
(4g)遍历Java字节码,从中搜索事件监听器的接口方法,将其标记为另一部分入口方法,重复(4f),完善部分程序调用图;
(4h)从(4a)中记录的类中查找Intents,Threads,Executors,IPCs,RPCs,AsyncTask类,从这些类中获取到的第一个方法标记为入口方法,重复(4f),即将上述类的程序调用图添加至部分程序调用图中,完成加边的过程,生成了准确的程序调用图。
6.根据权利要求1所述的方法,其中(5)中生成包含多条敏感调用路径的集合,其实现如下:
(5a)将(2)中构建的敏感目标接口API列表输入到(4)中生成的程序调用图中,生成从程序调用图的入口方法到敏感目标接口API的敏感调用路径,敏感调用路径的起点是程序调用图的入口方法,终点是敏感目标接口API;
(5b)去除每个样本软件重复的敏感调用路径,生成包含多条敏感调用路径的集合。
7.根据权利要求1所述的方法,其中(8)中的混淆矩阵M,准确率A,精确率P,召回率R,精确率和召回率的调和平均数F1这些评价指标,其计算如下:
(8a)将分类器把原本的恶意软件预测为恶意的样本记为真正例TP;将分类器把原本的良性软件预测为恶性的样本记为假正例FP;将分类器把原本的恶意软件预测为良性的样本记为假负例FN;将分类器把原先的良性软件预测为良性的样本记为真负例TN;
(8b)根据(8a)设置的参数,计算如下各指标参数:
Figure FDA0003055394250000041
Figure FDA0003055394250000042
Figure FDA0003055394250000043
Figure FDA0003055394250000044
Figure FDA0003055394250000045
8.根据权利要求5所述的方法,其中(4b)由类和方法集合确定调用实例,是指由类和方法集合中的每个方法逐一组成的调用实例,每个调用实例记作“类名/方法名”的格式。
9.根据权利要求5所述的方法,其中(4b)由源实例值确定调用实例集合,是指对于源实例值对应的方法体字节码进行顺序查找,当发现调用了其他调用实例对应的方法时,将该调用实例加入目标实例有序集。
CN201811561719.7A 2018-12-20 2018-12-20 基于敏感调用路径的Android恶意软件检测方法 Active CN109684840B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811561719.7A CN109684840B (zh) 2018-12-20 2018-12-20 基于敏感调用路径的Android恶意软件检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811561719.7A CN109684840B (zh) 2018-12-20 2018-12-20 基于敏感调用路径的Android恶意软件检测方法

Publications (2)

Publication Number Publication Date
CN109684840A CN109684840A (zh) 2019-04-26
CN109684840B true CN109684840B (zh) 2021-06-25

Family

ID=66186437

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811561719.7A Active CN109684840B (zh) 2018-12-20 2018-12-20 基于敏感调用路径的Android恶意软件检测方法

Country Status (1)

Country Link
CN (1) CN109684840B (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110362995B (zh) * 2019-05-31 2022-12-02 电子科技大学成都学院 一种基于逆向与机器学习的恶意软件检测及分析系统
CN110334511A (zh) * 2019-06-21 2019-10-15 南京航空航天大学 一种基于虚拟化的安卓恶意程序检测方法
CN110781081B (zh) * 2019-10-12 2024-04-09 南京信息职业技术学院 一种移动应用回调强制触发方法、系统及存储介质
CN110990834B (zh) * 2019-11-19 2022-12-27 重庆邮电大学 一种android恶意软件的静态检测方法、系统及介质
CN111865909B (zh) * 2020-06-08 2021-05-28 西安电子科技大学 Sgx侧信道攻击防御方法、系统、介质、程序及应用
CN111797400B (zh) * 2020-07-08 2023-09-01 国家计算机网络与信息安全管理中心 一种车联网恶意应用动态检测方法及装置
CN112100621B (zh) * 2020-09-11 2022-05-20 哈尔滨工程大学 一种基于敏感权限和api的安卓恶意应用检测方法
CN112104674B (zh) * 2020-11-17 2021-05-11 鹏城实验室 攻击检测召回率自动测试方法、装置和存储介质
CN112861130B (zh) * 2021-01-28 2022-09-06 济南大学 从n到n+1的多类转换恶意软件检测方法
CN112883376A (zh) * 2021-02-22 2021-06-01 深信服科技股份有限公司 一种文件处理方法、装置、设备及计算机可读存储介质
CN113094709B (zh) * 2021-04-15 2024-04-05 中国工商银行股份有限公司 风险应用的检测方法、装置和服务器
CN113901463B (zh) * 2021-09-03 2023-06-30 燕山大学 面向概念漂移的可解释Android恶意软件检测方法
CN114491529B (zh) * 2021-12-20 2024-05-17 西安电子科技大学 基于多模态神经网络的安卓恶意应用程序识别方法
CN114491530B (zh) * 2021-12-20 2024-05-17 西安电子科技大学 基于抽象流图和图神经网络的安卓应用程序分类方法
CN114329468B (zh) * 2021-12-24 2024-03-29 浙江工业大学 一种基于映射关系的对抗性Android恶意软件检测方法
CN114780952A (zh) * 2022-03-09 2022-07-22 浙江吉利控股集团有限公司 敏感应用调用场景的检测方法、系统及存储介质
CN114861221B (zh) * 2022-04-28 2024-03-19 南京大学 一种基于程序上下文的移动应用敏感行为描述生成方法
CN114817925B (zh) * 2022-05-19 2023-04-07 电子科技大学 基于多模态图特征的安卓恶意软件检测方法及系统
CN117421730A (zh) * 2023-09-11 2024-01-19 暨南大学 一种基于集成学习的代码片段敏感信息检测方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
KR101732972B1 (ko) * 2015-11-30 2017-05-08 인하대학교 산학협력단 씨앤씨 제우스의 윈도우 api후킹 및 패킷 길이에 기반한 탐지 방법
CN107122660A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种Android应用软件用户隐私信息泄露检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9473520B2 (en) * 2013-12-17 2016-10-18 Verisign, Inc. Systems and methods for incubating malware in a virtual organization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104834858A (zh) * 2015-04-24 2015-08-12 南京邮电大学 一种android应用中恶意代码的静态检测方法
KR101732972B1 (ko) * 2015-11-30 2017-05-08 인하대학교 산학협력단 씨앤씨 제우스의 윈도우 api후킹 및 패킷 길이에 기반한 탐지 방법
CN107122660A (zh) * 2017-03-29 2017-09-01 中国科学院信息工程研究所 一种Android应用软件用户隐私信息泄露检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安卓恶意代码检测技术的研究与实现;李振国;《中国优秀硕士学位论文全文数据库信息科技辑》;20180715(第7期);正文第7-47页 *

Also Published As

Publication number Publication date
CN109684840A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109684840B (zh) 基于敏感调用路径的Android恶意软件检测方法
Ye et al. An intelligent PE-malware detection system based on association mining
Ye et al. IMDS: Intelligent malware detection system
Alrabaee et al. Fossil: a resilient and efficient system for identifying foss functions in malware binaries
Ye et al. CIMDS: adapting postprocessing techniques of associative classification for malware detection
Tian et al. An automated classification system based on the strings of trojan and virus families
CN109784056B (zh) 一种基于深度学习的恶意软件检测方法
Breitinger et al. Approximate matching: definition and terminology
Zhiwu et al. Android malware family classification and characterization using CFG and DFG
Herron et al. Machine learning-based android malware detection using manifest permissions
Akram et al. Droidcc: A scalable clone detection approach for android applications to detect similarity at source code level
Mosli et al. A behavior-based approach for malware detection
CN109271788B (zh) 一种基于深度学习的Android恶意软件检测方法
RU2427890C2 (ru) Система и способ сравнения файлов на основе шаблонов функциональности
CN106250769A (zh) 一种多级过滤的源代码数据检测方法及装置
Palahan et al. Extraction of statistically significant malware behaviors
Wisse et al. Scripting dna: Identifying the javascript programmer
Gonzalez et al. Authorship attribution of android apps
Mira et al. Novel malware detection methods by using LCS and LCSS
Breitinger et al. Evaluating detection error trade-offs for bytewise approximate matching algorithms
CN112560031A (zh) 一种勒索病毒检测方法及系统
Lu et al. A two-layered malware detection model based on permission for android
Akram et al. DroidMD: an efficient and scalable android malware detection approach at source code level
CN111737694B (zh) 一种基于行为树的恶意软件同源性分析方法
CN113468524A (zh) 基于rasp的机器学习模型安全检测方法

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