CN114676428A - 基于动态特征的应用程序恶意行为检测方法及设备 - Google Patents
基于动态特征的应用程序恶意行为检测方法及设备 Download PDFInfo
- Publication number
- CN114676428A CN114676428A CN202011549241.3A CN202011549241A CN114676428A CN 114676428 A CN114676428 A CN 114676428A CN 202011549241 A CN202011549241 A CN 202011549241A CN 114676428 A CN114676428 A CN 114676428A
- Authority
- CN
- China
- Prior art keywords
- behavior
- malicious
- sequence
- feature vector
- application program
- 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.)
- Pending
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Abstract
本发明实施例提供一种基于动态特征的应用程序恶意行为检测方法及设备。所述方法包括获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。解决了传统恶意检测方法无法判定应用程序动态行为恶意性与否的问题,实现了应用程序在运行过程中的实时监控,准确性和实时性高。
Description
技术领域
本发明实施例涉及移动网络安全技术领域,尤其涉及一种基于动态特征的应用程序恶意行为检测方法及设备。
背景技术
随着Android系统在移动终端占据的份额越来越多,Android系统中的恶意应用问题也日益严重。如今智能手机已经成为人们日常生活里必不可少的一部分。由于Android系统拥有开源、便捷和低成本等特性,使其在移动终端中占据着大部分份额,但这样也给那些基于Android系统的手机终端带来了日益严重的安全问题,有统计数据表示,基于Android平台的恶意应用程序占据了智能手机恶意应用程序的97%。Android系统中恶意应用不仅在数量上迅速增长,家族变种速度更是逐年递增,根据Spreitzenbarth报告显示,目前的Android恶意应用程序家族达到了119种,种类繁多的Android恶意应用程序会通过窃取用户个人隐私、违规获得系统关键权限等方式不仅给用户隐私和财产安全带来巨大威胁,而且还会给国家的安全带来重大隐患。
目前Android平台的恶意应用程序的检测有两种方式:一是传统方式主要采取特征匹配的方式对恶意应用程序进行检测,此方法对规则特征库有着很强的依赖并且存在严重的滞后性;二是基于恶意应用程序的静态特征,以深度学习为手段对恶意软件进行检测,此方法虽然对可以及时的检测出恶意应用程序,但很难应对具有伪装或具有壳加固的应用程序。
发明内容
针对现有技术存在的问题,本发明实施例提供一种基于动态特征的应用程序恶意行为检测方法,通过对应用程序的动态行为数据进行训练,识别应用程序恶意行为,解决了现有技术问题。
第一方面,本发明实施例提供一种基于动态特征的应用程序恶意行为检测方法,包括:
获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
进一步,所述获取目标应用程序运行时的行为序列,具体包括:
记录指定API被调用的数据信息,所述数据信息至少包括API标识、线程标识和时间戳,所述指定API是涉及用户安全和\或用户体验相关的API;
基于所述线程标识获取目标应用程序相关的数据信息,并按照时间戳先后顺序对所涉及的API标识进行编排,从而获得所述目标应用程序运行时的行为序列。
进一步,所述基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量,具体包括:
基于第一指定步长和第一指定窗口长度截取所述行为序列,获得具有第一指定窗口长度的待测行为序列;
基于全部指定API,将所述待测行为序列中的API标识转换为对应的独热编码,并将所述待测行为序列中所有API标识的独热编码头尾拼接成行为序列向量;
对所述行为序列向量进行向量稠密化处理,获得预设维度的行为特征向量。
进一步,所述自编码模型包括输入层、编码层和输出层,其中输入层和输出层的节点数相同,其训练方法包括:
将非恶意应用程序的行为特征向量输入至自编码模型进行训练;使所述自编码模型的输入和输出之间的差距最小,提取并保存所述非恶意应用程序的行为特征向量的模式特征;
相应的,所述将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意,具体包括:
将所述行为特征向量输入至所述自编码模型,若输入与输出之间的差距值大于预设阈值,则确定所述行为特征向量对应的行为为恶意。
进一步,所述将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意,进一步还包括:
将所述行为特征向量与恶意行为序列知识库中的恶意行为进行匹配,确定所述行为特征向量对应的具体恶意行为;
其中所述恶意行为序列知识库保存有恶意行为公因子序列与恶意行为之间的映射关系,所述恶意行为公因子序列是根据恶意应用程序的行为特征向量提取的。
进一步,所述恶意行为序列知识库通过如下方法得到:
基于恶意应用程序的行为特征向量,获取每个行为特征向量输入自编码模型后的输入与输出之间的差距值,按照所述差距值从大到小的顺序,选取前N1个行为特征向量,其中N1为正整数;
基于所述前N1个行为特征向量,提取恶意行为公因子序列;
基于所述恶意行为公因子序列,结合恶意行为信息,获取恶意行为公因子序列与恶意行为之间的映射关系,形成恶意行为序列知识库。
进一步,所述基于所述前N1个行为特征向量,提取恶意行为公因子序列,具体包括:
基于所述前N1个行为特征向量,按照第二指定步长和第二指定窗口长度统计每个行为特征向量中所有子序列的出现频次;
按照所述出现频次从高至低的顺序获取前N2个子序列,作为恶意行为公因子序列,N2为正整数。
第二方面,本发明实施例提供一种基于动态特征的应用程序恶意行为检测装置,包括行为序列获取模块、特征向量获取模块和恶意判定模块;
所述行为序列获取模块,用于获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
所述特征向量获取模块,用于基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
所述恶意判定模块,用于对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
第三方面,本发明实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行本发明实施例第一方面所述基于动态特征的应用程序恶意行为检测方法及其任一可选实施例所述的方法。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令执行本发明实施例第一方面所述基于动态特征的应用程序恶意行为检测方法及其任一可选实施例的方法。
本发明实施例提供的基于动态特征的应用程序恶意行为检测方法,获取目标应用程序运行时的动态行为序列,将行为序列处理成预设维度的行为特征向量,通过预先训练好的自编码模型进行恶意性检测,解决了传统恶意检测方法无法判定应用程序动态行为恶意性与否的问题,实现了应用程序在运行过程中的实时监控,提高了应用程序恶意性判断的准确性和实时性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种基于动态特征的应用程序恶意行为检测方法流程示意图;
图2为本发明实施例自编码模型结构示意图;
图3为本发明实施例一种基于动态特征的应用程序恶意行为检测装置示意图;
图4为本发明实施例电子设备的框架示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明实施例中所述第一、第二等,仅仅用于名称上的区分,并不具有实际含义,也不表示先后顺序。
图1为本发明实施例一种基于动态特征的应用程序恶意行为检测方法流程示意图。如图1所示的基于动态特征的应用程序恶意行为检测方法,包括:
100,获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
本发明实施例获取目标应用程序运行时的动态行为序列,用于对应用程序的行为进行实时动态的恶意性检测。具体的,应用程序的行为通过应用程序所调用的API接口来体现,由于本发明实施例的目标是恶意性检测,因此本发明实施例获取的应用程序行为是应用程序调用指定API的行为,所述指定API是涉及用户安全和\或用户体验相关的API,是与恶意性检测相关的多种不同的API;按照时间戳先后顺序对应用程序调用的指定API的信息进行编排,即可获得动态行为序列。
101,基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
应用程序在运行时连续不断的产生行为序列,本发明实施例为了降低模型复杂度提高计算效率,对动态行为序列进行截取,每次截取固定长度,如第一指定窗口长度,每次按照固定步长依次截取,如第一指定步长;第一指定步长和第一指定窗口长度的具体取值与模型的输入要求有关,或者与检测精度要求有关,本发明实施例对此不作限制。本发明实施例对截取的固定长度的行为序列进行预处理,处理后的行为特征向量是预设维度,便于后续模型的输入。
102,对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
本发明实施例首先通过非恶意应用程序的行为特征向量训练自编码模型,训练好的自编码模型保存了非恶意应用程序的行为特征向量的模式特征。当恶意应用程序的行为特征向量输入自编码模型时,若恶意应用程序的行为特征向量对应的模式特征与自编码模型保存的非恶意应用程序的行为特征向量的模式特征差距较小时,即输入与输出之间的差距较小,则判定恶意应用程序的所生成的该行为特征向量对应的行为为非恶意;若输入与输出之间的差距较大,则判定恶意应用程序的所生成的该行为特征向量对应的行为为恶意。
本发明实施例对自编码模型进行训练的行为特征序列,是通过非恶意应用程序运行时的行为序列得到的,此处非恶意应用程序和恶意应用程序是通过大量的样本收集和恶意性判断提前得到。例如,对于Android平台,可以事先收集大量的完整的Android平台应用程序,通过人工分析应用程序恶意木马等特征进而提取判断应用程序恶意性的规则,之后基于规则对搜集的Android平台应用程序进行恶意性判断,即可区分恶意或非恶意应用程序。
本发明实施例提供的基于动态特征的应用程序恶意行为检测方法,获取目标应用程序运行时的动态行为序列,将行为序列处理成预设维度的行为特征向量,通过预先训练好的自编码模型进行恶意性检测,解决了传统恶意检测方法无法判定应用程序动态行为恶意性与否的问题,实现了应用程序在运行过程中的实时监控,提高了应用程序恶意性判断的准确性和实时性。
基于上述实施例,步骤100,所述获取目标应用程序运行时的行为序列,具体包括:
100.1,记录指定API被调用的数据信息,所述数据信息至少包括API标识、线程标识和时间戳,所述指定API是涉及用户安全和\或用户体验相关的API;
100.2,基于所述线程标识获取目标应用程序相关的数据信息,并按照时间戳先后顺序对所涉及的API标识进行编排,从而获得所述目标应用程序运行时的行为序列。
本发明实施例对指定API进行桩点标记,若该API被调用,则通过桩点可以记录该API被调用的数据信息。具体的,对于不同的操作系统,涉及用户安全和\或用户体验相关的API不尽相同,可以分别根据当前应用的目标操作系统,确定当前指定API,对当前指定API进行桩点标记,所述桩点标记可以是用于日志记录的代码。需要说明的是,本发明实施例描述中的API标识、API ID、API桩点所指实质含义相同。
以Android 10.0系统为例,基于Android 10.0系统中客户端中所有的类名和方法名,结合安全专家的知识,对特定的、涉及远程控制、隐私泄露、资费消耗等用户安全及用户体验问题的相关高危API进行桩点标记,例如71个高危API,即指定API有71个,将71个高危API进行0-70顺序编码作为桩点ID,每个桩点ID对应一个高危API,以便后续对API桩点进行独热编码。部分高危API请参考表1。
表1
当应用程序调用指定API时,桩点自动记录相关的数据信息,包括API标识、线程标识和时间戳。
在一个可选的实施例中,所有指定API被调用的数据信息,可以按时间戳先后顺序写入日志文件中,该日志文件包含所有应用程序调用所有指定API的数据信息。一个API可能会被多个不同的应用程序调用,通过线程标识可以从日志文件中提取目标应用程序调用所有指定API的数据信息,对提取的数据信息按照时间戳先后顺序进行编排,即可获得目标应用程序的动态行为序列,部分信息如表2所示。
表2
time | 线程ID | API ID |
05:11:36.013 | 10824 | 1 |
05:11:36.018 | 10824 | 1 |
05:11:36.020 | 10824 | 15 |
05:11:36.039 | 10824 | 48 |
05:11:36.147 | 10824 | 35 |
在一个可选的实施例中,也可以通过模拟点击的方式实现对目标应用程序的动态行为收集。仍然以Android 10.0系统为例,首先,将目标应用程序安装到具有Android 10.0系统的手机上,并关闭手机锁屏、熄屏等影响自动化点击应用程序的功能,保持手机处于亮屏待机状态。
其次,将成功安装在手机上的目标应用程序通过人工或自动的方式将其运行起来。在启动目标应用程序时,保证手机当前除系统应用外只有目标应用程序是启动状态,这样可以保证API桩点记录的数据信息都是与目标应用程序相关的;将移动网络或wifi配置完成,使应用程序在正常的环境下运行。利用monkey对目标应用程序进行模拟用户使用点击。monkey是一个用于稳定性与压力测试的Android系统自带一个命令行工具,用Java语言写成,可以在模拟器或者真实设备中运行,monkey可以向系统发送伪随机的用户事件流(如按键、手势、触摸屏等输入),从而模拟用户点击应用程序。本发明实施例中monkey具体的设定参数如表3。
表3
通过monkey模拟用户点击目标应用程序而自动化产生伪随机的用户事件流,API桩点记录目标应用程序调用API的线程ID和时间戳,从而得到一系列数据信息,顺序写入日志文件,从而获得目标应用程序的动态行为序列,示例如表2。
基于上述任一实施例,步骤101,所述基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量,具体包括:
101.1,基于第一指定步长和第一指定窗口长度截取所述行为序列,获得具有第一指定窗口长度的待测行为序列;
101.2,基于全部指定API,将所述待测行为序列中的API标识转换为对应的独热编码,并将所述待测行为序列中所有API标识的独热编码头尾拼接成行为序列向量;
101.3,对所述行为序列向量进行向量稠密化处理,获得预设维度的行为特征向量。
对于获取的动态行为序列,优选的,为了避免因系统、网络或其他外部因素造成的API被连续调用的情况,本发明实施例在数据预处理时,去除任意两个连续相同API中的其中一个。
由于应用程序在运行时连续不断的产生行为序列,本发明实施例通过滑动窗口对行为序列进行截取以便于后续处理,例如设定第一指定步长为1,第一指定窗口长度为16。在一个可选的实施例中,为了融合API桩点上下文的信息,设定第一指定窗口长度为16,即每16个API桩点组成一个待测行为序列,并且此窗口以步长为1为单位向后滑动,来截取行为序列。例如第1个待测行为序列为第1个API桩点至第16个API桩点,第2个待测行为序列为第2个API桩点至第17个API桩点;每一个待测行为序列为一个处理单元。
在具体处理时,本发明实施例将每个API桩点转化为对应的独热编码,将独热编码后的16个API桩点按头尾拼接的方式组成行为序列向量。例如,对于Android 10.0系统的71个指定API,每个API桩点的独热编码都是71位,其中表1中API ID为2的LocationManager高危API,其独热编码结果为:
“0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0”,由70个0和1个1组成长度为71的桩点向量。
本发明实施例一个待测行为序列,即16个API桩点向量头尾拼接后形成长度为1136的行为序列向量。由于每个桩点向量都是71位的独热编码,因此拼接成的行为序列向量是稀疏的,本发明实施例在进行自编码模型处理之前,对行为序列向量进行稠密化处理,为每个桩点向量生成一个降维的稠密向量,16个API桩点的稠密向量组成行为特征向量。
在一个可选的实施例中,可以将API桩点看作是自然语言中的单词,不同API桩点所形成的动态行为序列看作句子,将1136位的行为序列向量通过无监督算法Word2Vec训练生成稠密的特定维度的向量,用来对API桩点进行表示。Word2Vec算法是从大量文本语料中以无监督的方式学习语义知识的一种模型,它被大量地用在自然语言处理(NLP)中。Word2Vec其实就是通过学习文本来用词向量的方式表征词的语义信息,即通过一个嵌入空间使得语义上相似的单词在该空间内距离很近,将单词从原先所属的空间映射到新的多维空间中,也就是把原先词所在空间嵌入到一个新的空间中去。具体的,利用Word2Vec算法为每一个API桩点生成一个2维、4维、6维、8维、16维或32维的特征向量用来表征此API桩点。例如利用Word2Vec算法为每一个API桩点生成8维特征向量,表4列出了降维后的部分向量,请参考。
表4
本发明实施例通过对目标应用程序的动态行为序列收集,对第一指定窗口长度的行为序列向量,进行稠密化处理形成稠密向量,将稠密向量头尾拼接成行为特征向量,该行为特征向量作为自编码模型的输入。
图2为本发明实施例自编码模型结构示意图,所述自编码模型包括输入层、编码层、解码层和输出层,其中输入层和输出层的节点数相同,其训练方法包括:
将非恶意应用程序的行为特征向量输入至自编码模型进行训练;使所述自编码模型的输入和输出之间的差距最小,提取并保存所述非恶意应用程序的行为特征向量的模式特征。
具体的,在自编码模型训练阶段,输入数据是非恶意应用程序的行为特征向量,非恶意应用程序的行为特征向量的提取方法与恶意应用程序的行为特征向量完全相同,即首先获取非恶意应用程序的动态行为序列,以Android 10.0系统为例,仍然是通过71个高危API桩点记录行为序列;按照第一指定步长和第一指定窗口长度截取非恶意应用程序的动态行为序列,然后按照相同的方法进行稠密化处理,在模型训练阶段和检测阶段降维的维度相同,此处不再赘述。
通过非恶意应用程序的行为特征向量对自编码模型进行训练,其优化方向是减小输入和输出之间的差距,所以,该模型可以提取非恶意应用程序的行为特征向量的模式特征。
具体表现为当输入非恶意应用程序的行为特征向量时,由于模型将其特征保存了下来,其输入与输出之前的差距会很小;当输入恶意应用程序的行为特征向量时,其中某些行为特征向量与非恶意应用程序的行为特征向量相似时,其输入与输出之前的差距也会很小;当输入恶意应用程序的行为特征向量时,其中某些行为特征向量与非恶意的应用程序的行为特征向量不相似时,其输入与输出之前的差距会很大。
在本发明实施例模型检测阶段,当恶意应用程序的行为特征向量输入自编码模型时,若输入与输出之间的差距值大于预设阈值,则判断所述恶意应用程序的行为特征向量对应的行为为恶意;若输入与输出之间的差距值不大于预设阈值,则判断所述恶意应用程序的行为特征向量对应的行为为非恶意。具体的预设阈值的选择根据系统需求而定,本发明实施例对此不作限定。
本发明实施例通过自编码模型训练,提取了非恶意应用程序的行为特征向量的模式特征;在此基础上,通过自编码模型判断恶意应用程序的行为特征向量是否为恶意,从而本发明实施例能够区别恶意应用程序的恶意行为和非恶意行为,可以实现应用程序在运行过程中的实时监控,提高了应用程序恶意性判断的准确性和实时性。
本发明实施例中,自编码模型的输入与输出之间差距越大,则该行为特征向量对应的行为具有恶意性的概率越高,反之则越小。基于此,本发明实施例可以按照输入与输出之间差距进行排序,选取差距大的行为特征向量作为恶意行为公共子序列,结合大量实践经验得到的恶意行为信息,从而形成恶意行为序列知识库。
基于上述任一实施例,所述恶意行为序列知识库通过如下方法得到:
(1)基于恶意应用程序的行为特征向量,获取每个行为特征向量输入自编码模型后的输入与输出之间的差距值,按照所述差距值从大到小的顺序,选取前N1个行为特征向量,其中N1为正整数;
(2)基于所述前N1个行为特征向量,提取恶意行为公因子序列;具体的,按照第二指定步长和第二指定窗口长度统计每个行为特征向量中所有子序列的出现频次;按照所述出现频次从高至低的顺序获取前N2个子序列,作为恶意行为公因子序列,N2为正整数。
(3)基于所述恶意行为公因子序列,结合恶意行为信息,获取恶意行为公因子序列与恶意行为之间的映射关系,形成恶意行为序列知识库。
基于前述实施例所判定的具有恶意性的动态行为序列,即恶意应用程序的判定为恶意性的行为特征向量,获取其中输入和输出差距最大的N1个行为特征向量。本发明实施例利用N-Gram模型提取其频率较高的公共子序列,通过专家进行验证,最终形成恶意性的动态行为公共子序列,用于形成安全知识库。
N-Gram是一种基于统计语言模型的算法,它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表。在一个可选的实施例中,考虑到效率以及专家知识,N设定为8,其含义为以步长为1,窗口大小为2-8的滑动窗口,即第二指定步长为1,第二指定窗口长度依次为2、3、4、5、6、7和8,统计长度为2-8子序列出现的频次。
具体的,例如如下两个序列:
“7,45,7,45,7,45,7,45,7,60,45,7,45,7,45,7”;
“7,45,7,45,7,45,7,45,7,44,45,7,45,7,45,7”;
所产生的公共子序列有82种,部分公共子序列的频次如表5所示。
表5
利用上述方法,统计得出所有公共子序列的频次,取频次最高的N2个公共子序列,作为恶意行为公因子序列。
通过大量实践及统计研究,将其映射为已知的恶意检出类型,形成恶意行为序列知识库。以表1所示的Android 10.0系统为例的部分具体映射方案的示例如表6、表7。
表6
行为类别名称 | API ID |
静默删短信 | 12 |
读取短信(监听短信、查询短信) | 8,36 |
读取通讯录 | 4 |
读取浏览器书签 | 5 |
读取地理位置 | 1,32 |
读取设备唯一标识 | 42 |
删除通讯录 | 9 |
更新短信 | 34 |
杀死后台 | 0 |
强制启用/禁用组件 | 13 |
监听剪切板 | 41,21 |
表7
构建好恶意行为序列知识库后,本发明实施例步骤103所述将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意,进一步还包括:
将所述行为特征向量与恶意行为序列知识库中的恶意行为进行匹配,确定所述行为特征向量对应的具体恶意行为。
本发明实施例在通过自编码模型判断恶意应用程序的行为特征向量的恶意性的基础上,进一步通过构建好的恶意行为序列知识库匹配行为特征向量对应的具体恶意行为,使得恶意性判断更加具体化,更精准。
综上所述,本发明实施例基于动态特征的应用程序恶意行为检测方法,首先对针对目标系统层特定的、高风险的类名或方法名进行桩点标记,并对API桩点进行ID编号;其次,通过API桩点收集应用程序的动态行为序列并保存为日志文件;再一步对日志文件中有目标应用程序相关的数据信息进行特定的数据处理,以自编码模型分别进行训练和检测,可初步判定应用程序的某些行为是否具有恶意性;再一步,以目标系统应用程序的分析为基础,利用自编码器算法对动态行为序列的恶意性进行排序;再一步,利用N-Gram提炼出恶意行为公共子序列,结合移动应用安全知识,形成恶意行为序列知识库;最后,利用恶意行为序列知识库进行应用程序的行为序列的具体恶意行为的判定。
本发明实施例基于动态特征的应用程序恶意行为检测方法,解决了传统恶意检测方法无法判定应用程序动态行为恶意性与否的问题,实现了应用程序在运行过程中的实时监控,提高了应用程序恶意性判断的准确性和实时性,为应用程序的恶意检测提供了新的方向,具有良好的有益效果。
图3为本发明实施例一种基于动态特征的应用程序恶意行为检测装置示意图,所述基于动态特征的应用程序恶意行为检测装置,包括行为序列获取模块300、特征向量获取模块301和恶意判定模块302;
所述行为序列获取模块300,用于获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
所述特征向量获取模块301,用于基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
所述恶意判定模块302,用于对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
本发明实施例基于动态特征的应用程序恶意行为检测装置用于执行图1所示的基于动态特征的应用程序恶意行为检测方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明实施例电子设备框架示意图。请参考图4,本发明实施例提供一种电子设备,包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和总线440,其中,处理器410,通信接口420,存储器430通过总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下方法,包括:获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于动态特征的应用程序恶意行为检测方法,其特征在于,包括:
获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
2.根据权利要求1所述的方法,其特征在于,所述获取目标应用程序运行时的行为序列,具体包括:
记录指定API被调用的数据信息,所述数据信息至少包括API标识、线程标识和时间戳,所述指定API是涉及用户安全和\或用户体验相关的API;
基于所述线程标识获取目标应用程序相关的数据信息,并按照时间戳先后顺序对所涉及的API标识进行编排,从而获得所述目标应用程序运行时的行为序列。
3.根据权利要求1或2所述的方法,其特征在于,所述基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量,具体包括:
基于第一指定步长和第一指定窗口长度截取所述行为序列,获得具有第一指定窗口长度的待测行为序列;
基于全部指定API,将所述待测行为序列中的API标识转换为对应的独热编码,并将所述待测行为序列中所有API标识的独热编码头尾拼接成行为序列向量;
对所述行为序列向量进行向量稠密化处理,获得预设维度的行为特征向量。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述自编码模型包括输入层、编码层和输出层,其中输入层和输出层的节点数相同,其训练方法包括:
将非恶意应用程序的行为特征向量输入至自编码模型进行训练;使所述自编码模型的输入和输出之间的差距最小,提取并保存所述非恶意应用程序的行为特征向量的模式特征;
相应的,所述将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意,具体包括:
将所述行为特征向量输入至所述自编码模型,若输入与输出之间的差距值大于预设阈值,则确定所述行为特征向量对应的行为为恶意。
5.根据权利要求1或4所述的方法,其特征在于,所述将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意,进一步还包括:
将所述行为特征向量与恶意行为序列知识库中的恶意行为进行匹配,确定所述行为特征向量对应的具体恶意行为;
其中所述恶意行为序列知识库保存有恶意行为公因子序列与恶意行为之间的映射关系,所述恶意行为公因子序列是根据恶意应用程序的行为特征向量提取的。
6.根据权利要求5所述的方法,其特征在于,所述恶意行为序列知识库通过如下方法得到:
基于恶意应用程序的行为特征向量,获取每个行为特征向量输入自编码模型后的输入与输出之间的差距值,按照所述差距值从大到小的顺序,选取前N1个行为特征向量,其中N1为正整数;
基于所述前N1个行为特征向量,提取恶意行为公因子序列;
基于所述恶意行为公因子序列,结合恶意行为信息,获取恶意行为公因子序列与恶意行为之间的映射关系,形成恶意行为序列知识库。
7.根据权利要求6所述的方法,其特征在于,所述基于所述前N1个行为特征向量,提取恶意行为公因子序列,具体包括:
基于所述前N1个行为特征向量,按照第二指定步长和第二指定窗口长度统计每个行为特征向量中所有子序列的出现频次;
按照所述出现频次从高至低的顺序获取前N2个子序列,作为恶意行为公因子序列,N2为正整数。
8.一种基于动态特征的应用程序恶意行为检测装置,其特征在于,包括行为序列获取模块、特征向量获取模块和恶意判定模块;
所述行为序列获取模块,用于获取目标应用程序运行时的行为序列,所述行为序列是所述目标应用程序调用指定应用编程接口API的数据信息、按时间顺序组成的数据序列;
所述特征向量获取模块,用于基于第一指定步长和第一指定窗口长度截取所述行为序列,并将截取的行为序列处理成预设维度的行为特征向量;
所述恶意判定模块,用于对于任一行为特征向量,将所述行为特征向量输入至训练好的自编码模型,判断所述行为特征向量对应的行为是否为恶意;其中所述自编码模型通过非恶意应用程序的行为特征向量训练得到的。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011549241.3A CN114676428A (zh) | 2020-12-24 | 2020-12-24 | 基于动态特征的应用程序恶意行为检测方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011549241.3A CN114676428A (zh) | 2020-12-24 | 2020-12-24 | 基于动态特征的应用程序恶意行为检测方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114676428A true CN114676428A (zh) | 2022-06-28 |
Family
ID=82070281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011549241.3A Pending CN114676428A (zh) | 2020-12-24 | 2020-12-24 | 基于动态特征的应用程序恶意行为检测方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114676428A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117540385A (zh) * | 2024-01-09 | 2024-02-09 | 北京数基信息有限公司 | 脚本文件的监测方法、系统及存储介质 |
-
2020
- 2020-12-24 CN CN202011549241.3A patent/CN114676428A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117540385A (zh) * | 2024-01-09 | 2024-02-09 | 北京数基信息有限公司 | 脚本文件的监测方法、系统及存储介质 |
CN117540385B (zh) * | 2024-01-09 | 2024-03-29 | 北京数基信息有限公司 | 脚本文件的监测方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN109753801B (zh) | 基于系统调用的智能终端恶意软件动态检测方法 | |
CN109271788B (zh) | 一种基于深度学习的Android恶意软件检测方法 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN109905385B (zh) | 一种webshell检测方法、装置及系统 | |
CN110795732A (zh) | 基于SVM的Android移动网络终端恶意代码的动静结合检测方法 | |
CN110909348B (zh) | 一种内部威胁检测方法及装置 | |
CN107341399A (zh) | 评估代码文件安全性的方法及装置 | |
CN109255241A (zh) | 基于机器学习的Android权限提升漏洞检测方法及系统 | |
CN112532624B (zh) | 一种黑链检测方法、装置、电子设备及可读存储介质 | |
WO2022116419A1 (zh) | 域名侵权的自动化判定方法、装置、电子设备和存储介质 | |
CN109614795A (zh) | 一种事件感知的安卓恶意软件检测方法 | |
CN108229170B (zh) | 利用大数据和神经网络的软件分析方法和装置 | |
CN107239694A (zh) | 一种基于用户评论的Android应用权限推理方法及装置 | |
CN106874760A (zh) | 一种基于层次式SimHash的Android恶意代码分类方法 | |
CN113381963A (zh) | 一种域名检测方法、装置和存储介质 | |
CN114329455B (zh) | 基于异构图嵌入的用户异常行为检测方法及装置 | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN116975206B (zh) | 一种基于aigc大模型的垂直领域训练方法、装置及电子设备 | |
CN114676428A (zh) | 基于动态特征的应用程序恶意行为检测方法及设备 | |
CN114662099A (zh) | 基于ai模型的应用程序恶意行为检测方法及设备 | |
CN109995605B (zh) | 一种流量识别方法、装置以及计算机可读存储介质 | |
CN111125704A (zh) | 一种网页挂马识别方法及系统 | |
CN112163217B (zh) | 恶意软件变种识别方法、装置、设备及计算机存储介质 | |
CN112052453A (zh) | 基于Relief算法的webshell检测方法及装置 |
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 |