CN114662108A - 软件检测方法和装置、电子设备 - Google Patents
软件检测方法和装置、电子设备 Download PDFInfo
- Publication number
- CN114662108A CN114662108A CN202210335989.6A CN202210335989A CN114662108A CN 114662108 A CN114662108 A CN 114662108A CN 202210335989 A CN202210335989 A CN 202210335989A CN 114662108 A CN114662108 A CN 114662108A
- Authority
- CN
- China
- Prior art keywords
- software
- function
- current
- feature vector
- target
- 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/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种软件检测方法和装置、电子设备。其中,该方法包括:获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合;根据当前权限集合与参考权限集合,确定目标软件的权限特征向量;根据当前操作码序列集合与参考操作码序列集合,确定目标软件的操作码序列特征向量;根据当前函数对集合与参考函数对集合,确定目标软件的函数调用特征向量;根据权限特征向量、操作码序列特征向量以及函数调用特征向量,确定目标软件的类型是否为恶意软件类型。本申请解决了相关技术中的软件检测的准确性较低的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种软件检测方法和装置、电子设备。
背景技术
由于Android(安卓)系统的开源性,导致Android恶意软件数量越来越多。这些恶意软件严重侵害了广大用户的合法权益,同时也给移动智能终端产业的进一步发展带来无法预知的障碍。
对于当前Android系统中面临的各类恶意软件,现有两种方法进行检测:动态检测和静态检测,其中,动态检测主要是对应用软件在运行时的各类信息进行收集与分析,但该技术能绕过Android应用软件的保护技术(比如:代码混淆和加固)、实验成本耗费巨大,而且无法全面覆盖代码。静态检测主要是通过静态分析Android应用软件,提取各种静态特征,再通过各种分类算法来训练和测试分类模型,从而达到区分恶意软件能力;这类主流的静态方法实验成本较小,且能比较全面获取静态特征,比如:权限、签名、图片资源等,但都是使用单一特征确定软件是否为恶意软件,检测的准确性较低。
也就是说,现有检测方式检测软件是否为恶意软件的检测准确性较低。
发明内容
本申请实施例提供了一种软件检测方法和装置、电子设备,以至少解决相关技术中的软件检测的准确性较低的技术问题。
根据本申请实施例的一个方面,提供了一种软件检测方法,包括:获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
可选地,所述根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,包括:获取所述当前权限集合和所述参考权限集合的交集,得到权限交集集合;根据所述权限交集集合,生成所述权限特征向量,其中,所述权限特征向量中的特征的数量为所述参考权限集合中的权限的数量,所述权限特征向量中的每个特征与所述参考权限集合中的一个权限对应,所述权限特征向量中的每个特征的取值表示对应的权限是否为所述权限交集集合中的权限。
可选地,所述根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,包括:获取所述当前操作码序列集合和所述参考操作码序列集合的交集,得到操作码序列交集集合;根据所述操作码序列交集集合,生成所述操作码序列特征向量,其中,所述操作码序列特征向量中的特征的数量为所述参考操作码序列集合中的操作码序列的数量,所述操作码序列特征向量中的每个特征与所述参考操作码序列集合中的一个操作码序列对应,所述操作码序列特征向量中的每个特征的取值表示对应的操作码序列是否为所述操作码序列交集集合中的操作码序列。
可选地,所述根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,包括:获取所述当前函数对集合和所述参考函数对集合的交集,得到函数对交集集合;根据所述函数对交集集合,生成所述函数调用特征向量,其中,所述函数调用特征向量中的特征的数量为所述参考函数对集合中的函数对的数量,所述函数调用特征向量中的每个特征与所述参考函数对集合中的一个函数对对应,所述函数调用特征向量中的每个特征的取值表示对应的函数对是否为所述函数对交集集合中的函数对。
可选地,在根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量之前,所述方法还包括:获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,其中,所述每个权限对应的所述第一关联度参数的取值用于表示所述每个权限与所述恶意软件类型的第一关联度,所述第一关联度与所述第一关联度参数的取值正相关;按照所述第一关联度参数的取值从高到低的顺序,将所述目标权限集合中所述第一关联度参数的取值排名前N位对应的权限确定为所述参考权限集合中的权限,其中,N为大于或等于1的正整数,N小于所述目标权限集合中的权限的数量。
可选地,所述获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,包括:对所述目标权限集合中的每个权限执行以下操作,其中,执行以下操作时,所述每个权限为当前权限:在预设的第一样本软件集合中确定具有所述当前权限、且类型为所述恶意软件类型的软件的第一数量,确定具有所述当前权限、且类型为正常软件类型的软件的第二数量,确定不具有所述当前权限、且类型为所述恶意软件类型的软件的第三数量,以及确定不具有所述当前权限、且类型为所述正常软件类型的软件的第四数量;根据所述第一数量、所述第二数量、所述第三数量以及所述第四数量,确定所述当前权限对应的所述第一关联度参数的取值。
可选地,在根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量之前,所述方法还包括:获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,所述每个操作码序列对应的所述第二关联度参数的取值用于表示所述每个操作码序列与所述恶意软件类型的第二关联度,所述第二关联度与所述第二关联度参数的取值正相关;按照所述第二关联度参数的取值从高到低的顺序,将所述目标操作码序列集合中所述第二关联度参数的取值排名前M位对应的操作码序列确定为所述参考操作码序列集合中的操作码序列,其中,M为大于或等于1的正整数,M小于所述目标操作码序列集合中的操作码序列的数量。
可选地,所述获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,包括:对所述目标操作码序列集合中的每个操作码序列执行以下操作,其中,执行以下操作时,所述每个操作码序列为当前操作码序列:根据预设的第二样本软件集合,确定所述恶意软件类型的第一信息熵,和在所述当前操作码序列给定的前提下的所述恶意软件类型的第二信息熵;根据所述第一信息熵和所述第二信息熵,确定所述当前操作码序列对应的信息增益IG(Y|X),其中,所述当前操作码序列对应的所述第二关联度参数的取值为所述当前操作码序列对应的信息增益IG(Y|X),Y表示所述恶意软件类型,X表示所述当前操作码序列。
可选地,在根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量之前,所述方法还包括:获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,其中,所述每个函数对对应的所述第三关联度参数的取值用于表示所述每个函数对与所述恶意软件类型的第三关联度,所述第三关联度与所述第三关联度参数的取值正相关;按照所述第三关联度参数的取值从高到低的顺序,将所述目标函数对集合中所述第三关联度参数的取值排名前P位对应的函数对确定为所述参考函数对集合中的函数对,其中,P为大于或等于1的正整数,P小于所述目标函数对集合中的函数对的数量。
可选地,所述获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,包括:对所述目标函数对序列集合中的每个函数对序列执行以下操作,其中,执行以下操作时,所述每个函数对为当前函数对:在所述当前函数对表示具有调用关系的第一函数和第二函数的情况下,在预设的第三样本软件集合中确定所述当前函数对出现的次数,以及候选函数对集合中的每个候选函数对出现的次数,其中,所述每个候选函数对表示具有调用关系的一个函数和所述第二函数,所述第三样本软件集合中的软件的类型为所述恶意软件类型;根据所述当前函数对出现的次数,以及所述候选函数对集合中的每个候选函数对出现的次数,确定所述当前函数对的转移概率,其中,所述当前函数对对应的所述第三关联度参数的取值为所述当前函数对的转移概率。
可选地,所述目标函数对集合中的函数对中的函数包括以下至少之一:操作系统中的原生函数、开发者自定义函数、混淆函数。
可选地,所述根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型,包括:将所述权限特征向量输入第一检测模型,得到第一检测结果,其中,所述第一检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;将所述操作码序列特征向量输入第二检测模型,得到第二检测结果,其中,所述第二检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;将所述函数调用特征向量输入第三检测模型,得到第三检测结果,其中,所述第三检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;将所述第一检测结果、所述第二检测结果、以及所述第三检测结果输入到融合检测模型,得到目标检测结果,其中,所述目标检测结果用于表示所述目标软件的类型是否为所述恶意软件类型。
可选地,所述第一检测模型、所述第二检测模型、所述第三检测模型、所述融合检测模型中的至少2个模型是采用随机森林算法构建的模型。
根据本申请实施例的另一方面,还提供了一种软件检测装置,包括:获取模块,用于获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;第一确定模块,用于根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;第二确定模块,用于根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;第三确定模块,用于根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;第四确定模块,用于根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
可选地,第一确定模块包括:
第一获取单元,用于获取所述当前权限集合和所述参考权限集合的交集,得到权限交集集合;
第一生成单元,用于根据所述权限交集集合,生成所述权限特征向量,其中,所述权限特征向量中的特征的数量为所述参考权限集合中的权限的数量,所述权限特征向量中的每个特征与所述参考权限集合中的一个权限对应,所述权限特征向量中的每个特征的取值表示对应的权限是否为所述权限交集集合中的权限。
可选地,第二确定模块包括:
第二获取单元,用于获取所述当前操作码序列集合和所述参考操作码序列集合的交集,得到操作码序列交集集合;
第二生成单元,用于根据所述操作码序列交集集合,生成所述操作码序列特征向量,其中,所述操作码序列特征向量中的特征的数量为所述参考操作码序列集合中的操作码序列的数量,所述操作码序列特征向量中的每个特征与所述参考操作码序列集合中的一个操作码序列对应,所述操作码序列特征向量中的每个特征的取值表示对应的操作码序列是否为所述操作码序列交集集合中的操作码序列。
可选地,第三确定模块包括:
第三获取单元,用于获取所述当前函数对集合和所述参考函数对集合的交集,得到函数对交集集合;
第三生成单元,用于根据所述函数对交集集合,生成所述函数调用特征向量,其中,所述函数调用特征向量中的特征的数量为所述参考函数对集合中的函数对的数量,所述函数调用特征向量中的每个特征与所述参考函数对集合中的一个函数对对应,所述函数调用特征向量中的每个特征的取值表示对应的函数对是否为所述函数对交集集合中的函数对。
可选地,上述装置还包括:第五确定模块;第五确定模块包括:
第四获取单元,用于在根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量之前,获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,其中,所述每个权限对应的所述第一关联度参数的取值用于表示所述每个权限与所述恶意软件类型的第一关联度,所述第一关联度与所述第一关联度参数的取值正相关;
第一确定单元,用于按照所述第一关联度参数的取值从高到低的顺序,将所述目标权限集合中所述第一关联度参数的取值排名前N位对应的权限确定为所述参考权限集合中的权限,其中,N为大于或等于1的正整数,N小于所述目标权限集合中的权限的数量。
可选地,第四获取单元,用于通过以下方式获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值:对所述目标权限集合中的每个权限执行以下操作,其中,执行以下操作时,所述每个权限为当前权限:在预设的第一样本软件集合中确定具有所述当前权限、且类型为所述恶意软件类型的软件的第一数量,确定具有所述当前权限、且类型为正常软件类型的软件的第二数量,确定不具有所述当前权限、且类型为所述恶意软件类型的软件的第三数量,以及确定不具有所述当前权限、且类型为所述正常软件类型的软件的第四数量;根据所述第一数量、所述第二数量、所述第三数量以及所述第四数量,确定所述当前权限对应的所述第一关联度参数的取值。
可选地,上述装置还包括:第六确定模块;第六确定模块包括:
第五获取单元,用于在根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量之前,获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,所述每个操作码序列对应的所述第二关联度参数的取值用于表示所述每个操作码序列与所述恶意软件类型的第二关联度,所述第二关联度与所述第二关联度参数的取值正相关;
第二确定单元,用于按照所述第二关联度参数的取值从高到低的顺序,将所述目标操作码序列集合中所述第二关联度参数的取值排名前M位对应的操作码序列确定为所述参考操作码序列集合中的操作码序列,其中,M为大于或等于1的正整数,M小于所述目标操作码序列集合中的操作码序列的数量。
可选地,第五获取单元,用于通过以下方式获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值:对所述目标操作码序列集合中的每个操作码序列执行以下操作,其中,执行以下操作时,所述每个操作码序列为当前操作码序列:根据预设的第二样本软件集合,确定所述恶意软件类型的第一信息熵,和在所述当前操作码序列给定的前提下的所述恶意软件类型的第二信息熵;根据所述第一信息熵和所述第二信息熵,确定所述当前操作码序列对应的信息增益IG(Y|X),其中,所述当前操作码序列对应的所述第二关联度参数的取值为所述当前操作码序列对应的信息增益IG(Y|X),Y表示所述恶意软件类型,X表示所述当前操作码序列。
可选地,上述装置还包括:第七确定模块;第七确定模块包括:
第六获取单元,用于在根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量之前,获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,其中,所述每个函数对对应的所述第三关联度参数的取值用于表示所述每个函数对与所述恶意软件类型的第三关联度,所述第三关联度与所述第三关联度参数的取值正相关;
第三确定单元,用于按照所述第三关联度参数的取值从高到低的顺序,将所述目标函数对集合中所述第三关联度参数的取值排名前P位对应的函数对确定为所述参考函数对集合中的函数对,其中,P为大于或等于1的正整数,P小于所述目标函数对集合中的函数对的数量。
可选地,第六获取单元,用于通过以下方式获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值:对所述目标函数对序列集合中的每个函数对序列执行以下操作,其中,执行以下操作时,所述每个函数对为当前函数对:在所述当前函数对表示具有调用关系的第一函数和第二函数的情况下,在预设的第三样本软件集合中确定所述当前函数对出现的次数,以及候选函数对集合中的每个候选函数对出现的次数,其中,所述每个候选函数对表示具有调用关系的一个函数和所述第二函数,所述第三样本软件集合中的软件的类型为所述恶意软件类型;根据所述当前函数对出现的次数,以及所述候选函数对集合中的每个候选函数对出现的次数,确定所述当前函数对的转移概率,其中,所述当前函数对对应的所述第三关联度参数的取值为所述当前函数对的转移概率。
可选地,目标函数对集合中的函数对中的函数包括以下至少之一:操作系统中的原生函数、开发者自定义函数、混淆函数。
可选地,第四确定模块包括:
第一检测单元,用于将所述权限特征向量输入第一检测模型,得到第一检测结果,其中,所述第一检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第二检测单元,用于将所述操作码序列特征向量输入第二检测模型,得到第二检测结果,其中,所述第二检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第三检测单元,用于将所述函数调用特征向量输入第三检测模型,得到第三检测结果,其中,所述第三检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第四检测单元,用于将所述第一检测结果、所述第二检测结果、以及所述第三检测结果输入到融合检测模型,得到目标检测结果,其中,所述目标检测结果用于表示所述目标软件的类型是否为所述恶意软件类型。
可选地,所述第一检测模型、所述第二检测模型、所述第三检测模型、所述融合检测模型中的至少2个模型是采用随机森林算法构建的模型。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述软件检测方法。
根据本申请实施例的又一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上软件检测方法。
根据本申请实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的软件检测方法。
在本申请实施例中,获取了目标软件的多个维度的特征向量,包括目标软件的权限特征向量、操作码序列特征向量以及函数调用特征向量,上述多个维度的特征向量可以表征目标软件的行为关系(例如,函数调用关系),以及对不同类型的函数(例如,混淆函数)进行表征。这样,根据上述多个维度的特征向量,可以准确地检测目标软件的类型是否为恶意软件,解决了相关技术中的软件检测的准确性较低的技术问题,达到了提高软件检测的准确性的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种可选的软件测试方法的应用环境的示意图;
图2是根据本申请实施例的一种可选的软件测试方法的流程图;
图3是根据本申请实施例的一种可选的软件测试方法的示意图;
图4是根据本申请实施例的一种可选的确定特征向量的流程示意图;
图5是根据本申请实施例的一种可选的确定参考权限集合的流程示意图;
图6是根据本申请实施例的一种可选的确定参考操作码序列集合的流程示意图;
图7是根据本申请实施例的一种可选的确定参考函数对集合的流程示意图;
图8是根据本申请实施例的一种可选的确定检测模型的流程示意图;
图9是根据本申请实施例的一种可选的确定融合检测模型的流程示意图;
图10是根据本申请实施例的一种可选的软件测试装置的结构示意图;
图11是根据本申请实施例的一种可选的电子设备的计算机系统结构框图;
图12是根据本申请实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面结合实施例对本申请进行说明:
根据本申请实施例的一个方面,提供了一种软件检测方法,可选地,在本实施例中,上述软件检测方法可以应用于如图1所示的由终端设备102、网络104、服务器106以及数据库108和所构成的硬件环境中。如图1所示,终端设备102可以但不限于通过网络104与服务器106进行通信,上述终端设备102可以但不限包括人机交互屏幕、处理器及存储器。服务器106可以但不限于为终端设备或终端设备上安装的应用程序提供服务,应用程序可以但不限于是视频应用程序、即时通信应用程序、浏览器应用程序、教育应用程序、游戏应用程序等。可在服务器上或独立于服务器设置数据库108,用于为服务器106提供数据存储服务,例如,游戏数据存储服务器,上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络,终端设备102可以是配置有应用程序的终端,可以包括但不限于以下至少之一:手机(如Android手机、iOS手机等)、笔记本电脑、平板电脑、掌上电脑、MID(Mobile InternetDevices,移动互联网设备)、PAD、台式电脑、智能电视等计算机设备,上述服务器可以是单一服务器,也可以是由多个服务器组成的服务器集群,或者是云服务器,上述数据库108可以是一种关系型数据库,上述仅是一种示例,本实施例中对此不作任何限定。
结合图1所示,上述软件检测方法可以在终端设备102执行,包括如下步骤:
S102:获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合;
S104:根据当前权限集合与参考权限集合,确定目标软件的权限特征向量;根据当前操作码序列集合与参考操作码序列集合,确定目标软件的操作码序列特征向量;根据当前函数对集合与参考函数对集合,确定目标软件的函数调用特征向量;
S106:根据权限特征向量、操作码序列特征向量以及函数调用特征向量,确定目标软件的类型是否为恶意软件类型。
可选地,上述软件检测方法还可以在服务器上执行,例如,由图1所示的服务器106执行上述步骤S102-S106。
可选地,上述软件检测方法还可以通过终端和服务器共同实现,例如,由图1所示终端设备102执行上述步骤S102,进而通过网络104将目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合发送至服务器106,随后服务器106执行上述步骤S104-S106。
在本实施例中,获取了目标软件的多个维度的特征向量,包括目标软件的权限特征向量、操作码序列特征向量以及函数调用特征向量,上述多个维度的特征向量可以表征目标软件的行为关系(例如,函数调用关系),以及对不同类型的函数(例如,混淆函数)进行表征。这样,根据上述多个维度的特征向量,可以准确地检测目标软件的类型是否为恶意软件,解决了相关技术中的软件检测的准确性较低的技术问题,达到了提高软件检测的准确性的技术效果。
可选地,作为一种可选地实施方式,图2是根据本申请实施例的一种可选地软件测试方法的流程图,该流程包括如下步骤S202-S210:
步骤S202:获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
作为一种可选的示例,在目标软件在终端设备安装的过程中,或者,目标软件在终端设备安装以后,用户通过终端设备上的安全软件上选择对目标软件进行检测,或者,终端设备接收到其他用户发送的目标软件的软件包以后,由终端设备执行上述步骤S202,或者终端设备将目标软件的安装包发送至服务器,由服务执行上述步骤S202。目标软件包括但不限于Android应用软件,IOS应用软件等。
作为一种可选的示例,如图3所示,可以通过反编译模块与函数对提取模块执行步骤S1:获取目标软件的安装包;进而反编译模块对目标软件的安装包进行反编译确定目标软件的当前权限集合与当前操作码序列集合,以及函数对提取模块对目标软件的安装包进行处理确定目标软件的当前函数对集合。
作为一种可选的示例,目标软件的安装包包括但不限于Android应用软件包APK。反编译模块包括但不限于使用Android应用软件的反编译工具APKTOOL对目标软件的APK文件进行反编译处理,生成汇编文件集(例如,smali汇编文件集)以及配置文件等文件集合。其中,汇编文件集中记录了目标软件的汇编源码。
需要说明的是,在生成的汇编文件集对应的配置文件中,记录了目标软件安装和运行时需要申请的权限,进而通过记录的所有权限确定目标软件的当前权限集合,可选地,假设记录有权限1,权限2,权限3,权限4,权限5,进而当前权限集合为{权限1,权限2,权限3,权限4,权限5}。
需要说明的是,生成的汇编文件集的每一个文件对应了目标软件的源程序的一个Java类,该文件中的每一个函数方法都由一系列操作码组成。可选地,操作码包括但不限于Dalvik操作码。进而通过扫描由反编译模块生成的汇编文件集,实现对目标软件的操作码的抽取,并对抽取后的操作码进行简化。在一个可选地示例中,以操作码为Dalvik操作码为例,简化指令对照表如表1所示:
表1
对抽取后的每个操作码进行简化以后,将获取简化后的Dalvik操作码集合,进而采用N-gram方法生成简化Dalvik操作码序列,在一个可选地示例中,将上述9类Dalvik操作码通过N-gram方法后得到的操作码序列排列组合成操作码序列集合,需要说明的是,根据N-gram方法中N的不同值,特征维度会不同。
为了更好的理解,在一个可选地示例中,假设目标软件具有两个函数,对两个函数提取Dalvik操作码以后,得到的目标软件的操作码为DMDIRPMGDIT,采用3-gram方法生成操作码序列,得到操作码序列DMD,MDI,DIR,IRP,RPM,PMG,MGD,GDI,DIT。进而可以得到操作码序列集合{DMD,MDI,DIR,IRP,RPM,PMG,MGD,GDI,DIT}。
在本实施例中,通过对操作码进行简化,使得更容易通过N-gram方法得到操作码序列,降低了获取操作码序列集合的复杂度。
作为一种可选的示例,函数对提取模块包括但不限于使用了Android静态分析框架Soot对目标软件的APK文件进行处理,生成该APK文件对应的函数关系图文件,进而根据函数关系图文件确定当前函数对集合。可选,函数关系图文件包括但不限于dot文件。函数关系图文件中包含函数调用关系中每个节点函数名称及其节点的所有邻居节点集合。进而通过函数调用关系中函数与函数之间的调用关系确定多个函数对,得到当前函数对集合。可选地,假设函数调用关系表示函数A调用函数B,函数B调用函数C,函数A调用函数D,进而可以得到当前函数对集合{AB,BC,AD}。
作为一种可选的示例,目标软件中的函数包含但不限于:原生函数、开发者自定义函数和混淆函数。由于目标软件中的函数数量过于庞大,且无法穷举,所以需要进行抽象处理。具体抽象处理过程如下:
(1)原生函数
原生函数通过函数所在的包的包名来进行抽象;可选地,以目标软件为Android软件为例,Android官网中Android 8.1版本总共有243类包名,例如:android.accounts、android.app、android.app.job等。
(2)开发者自定义函数
开发者定义函数也通过函数所在的包进行抽象;可选地,开发者自定义函数一般采用“采用反域名命名规则”进行定义,比如:以com.***.***;一级包名一般是顶级域名(com/cn/org),二级包名一般是公司/机构名称,后面则是软件名、模块名或功能名等;通过该命名方式判断开发者自定义函数。
(3)混淆函数
现有的应用软件为了防止被反编译,通常会采用混淆技术对应用软件进行函数名混淆;一般用无规律的字符或字符串来代替原有的函数名;进而不符合上述(1)、(2)中包名特征的函数统一识别为混淆函数。例如,在识别出一个函数名1是用无规律的字符或字符串来表示,则将此函数确定为混淆函数1。
在本实施例中,通过上述方式来标识混淆函数,提高区分混淆函数的目标软件是否为恶意软件的准确率。
在本实施例中,由于目标软件的函数较多,进而通过对函数进行抽象处理,降低了得到的当前函数对集合的复杂度。
步骤S204:根据当前权限集合与参考权限集合,确定目标软件的权限特征向量,其中,参考权限集合包括与恶意软件类型对应的一组权限;
作一种可选地示例,上述步骤S204可以通过以下步骤S21-S22实现:
步骤S21:获取所述当前权限集合和所述参考权限集合的交集,得到权限交集集合;
作为一种可选的示例,如图3所示,通过反编译模块对目标软件的安装包进行反编译得到当前权限集合以后,反编译模块执行步骤S2:将当前权限集合发送至权限特征向量确定模块;同时,权限特征向量确定模块会执行步骤S3:获取参考权限集合;进而如图4中的(a)所示,权限特征向量确定模块将当前权限集合和参考权限集合进行交集运算,得到权限交集集合。可选地,假设当前权限集合为{权限1,权限2,权限3,权限4,权限5}。参考权限集合为{权限1,权限3,权限5,权限7,权限8},进而得到的权限交集集合为{权限1,权限3,权限5}。
步骤S22:根据权限交集集合,生成权限特征向量,其中,权限特征向量中的特征的数量为参考权限集合中的权限的数量,权限特征向量中的每个特征与所述参考权限集合中的一个权限对应,权限特征向量中的每个特征的取值表示对应的权限是否为权限交集集合中的权限;
作为一种可选的示例,如图4中的(a)所示,权限特征向量确定模块根据权限交集集合来确定权限特征向量,需要说明的是,权限特征向量中的特征的数量等于参考权限集合中权限的数量,即权限特征向量的维度与参考权限集合中权限的数量是相等的,如图4中的(a)所示,假设参考权限集合中具有N个权限,进而权限特征向量为N维向量。为了更好的理解,作为一种可选的示例,假设当前权限集合为{权限1,权限2,权限3,权限4,权限5},参考权限集合为{权限1,权限3,权限5,权限6,权限7},进行交集运算后,得到的权限交集集合为{权限1,权限3,权限5}。由于参考权限集合中的权限1在权限交集集合中存在,进而权限特征向量中权限1对应的数值为1,由于参考权限集合中的权限7在权限交集集合中不存在,进而权限特征向量中权限7对应的数值为,同理确定权限特征向量中每一个特征的取值,得到权限特征向量为(1,1,1,0,0)。
在本实施例中,采用上述方式确定权限特征向量,可以更简单的表达当前权限集合中是否具有参考权限集合中对应的权限。此外,由于只考虑当前权限集合中是否具有参考权限集合中对应的权限,即只从当前权限集合中选取具有代表性的权限来确定目标软件是否为恶意软件,避免了无效权限的干扰,使得后续构建第一检测模型更为容易。
作为一种可选的示例,执行上述步骤S206之前,还需要确定参考权限集合,具体可以通过以下步骤S41-S42实现:
步骤S41:获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,其中,每个权限对应的第一关联度参数的取值用于表示每个权限与恶意软件类型的第一关联度,第一关联度与第一关联度参数的取值正相关。
作为一种可选的示例,第一关联度参数的取值越大,表示权限与恶意软件类型的第一关联度越高,表示权限更具有区分恶意软件的能力。
作为一种可选的示例,目标权限集合包括操作系统提供的所有权限,或包括第一样本软件集合中每一个第一样本软件对应的权限集合的并集。本申请实施例在此不进行限定。假设目标软件为:Android软件,则目标权限集合可以包括Android原生系统提供的138个权限。
在确定了目标权限集合以后,需要确定目标权限集合中的每个权限对应的第一关联度参数的取值。作为一种可选的示例,可以通过对目标权限集合中的每个权限执行以下步骤S411-S412,其中,执行以下操作时,每个权限为当前权限:
步骤S411:在预设的第一样本软件集合中确定具有当前权限、且类型为恶意软件类型的软件的第一数量,确定具有当前权限、且类型为正常软件类型的软件的第二数量,确定不具有当前权限、且类型为恶意软件类型的软件的第三数量,以及确定不具有当前权限、且类型为正常软件类型的软件的第四数量;
作为一种可选的示例,需要先确定第一样本软件集合中每一个样本软件对应权限集合,进而才可以通过第一样本软件的权限集合中是否具有的当前权限来确定第一样本软件是否具有当前权限,可选地,确定第一样本软件集合中每一个样本软件对应权限集合的方式与上述确定目标软件对应的当前权限集合的方式相同。第一样本软件集合中的软件类型包括恶意软件类型,正常软件类型。
作为一种可选的示例,如图5所示,假设目标权限集合中具有n1个权限,则需要根据第一样本软件集合确定权限1至权限n1中每一个权限的第一关联度参数的取值,假设当前权限为图5中所示的权限1,进而就需要确定第一样本软件集合中确定具有权限1、且类型为恶意软件类型的软件的第一数量a1,确定具有权限1、且类型为正常软件类型的软件的第二数量b1,确定不具有权限1、且类型为恶意软件类型的软件的第三数量c1,以及确定不具有权限1、且类型为正常软件类型的软件的第四数量d1。同理,依次确定权限2至权限n1对应的第一数量,第二数量,第三数量、第四数量。为了更好的理解,以权限1为例,对应的第一数量,第二数量,第三数量、第四数量如表2为例:
表2
恶意软件的个数 | 正常软件的个数 | |
存在权限1 | a1 | b 1 |
不存在权限1 | c1 | d1 |
步骤S412:根据所述第一数量、所述第二数量、所述第三数量以及所述第四数量,确定所述当前权限对应的所述第一关联度参数的取值。
作为一种可选的示例,如图5所示,在确定权限1对应的第一数量a1,第二数量b1,第三数量c1,第四数量d1以后,需要根据a1、b1、c1以及d1确定权限1的对应的第一关联度参数的取值,可选地,可以通过计算卡方值,将卡方值确定为第一关联参数的取值,具体的,通过以下公式一计算卡方值:
其中,x2表示卡方值,a表示第一数量,b表示第二数量,c表示第三数量,d表示第四数量。进而可以根据权限1对应的第一数量a1,第二数量b1,第三数量c1,第四数量d1计算权限1对应的第一关联度参数的取值P1,同理,可以分别计算权限2至权限n1对应第一关联度参数的取值P2-Pn1。
步骤S41:按照所述第一关联度参数的取值从高到低的顺序,将所述目标权限集合中所述第一关联度参数的取值排名前N位对应的权限确定为所述参考权限集合中的权限,其中,N为大于或等于1的正整数,N小于所述目标权限集合中的权限的数量。
作为一种可选的示例,如图5所示,假设目标权限集合中按照第一关联度参数的取值从高到低的顺序对应的前N个权限分别为权限1、权限2、权限3…权限N,则参考权限集合为{权限1、权限2、权限3…权限N}。
在本实施例中,通过上述方式确定参考权限集合,使得确定的参考权限集合中的权限更具有代表性,更具有区分恶意软件的能力。
步骤S206:根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
作为一种可选的示例,上述步骤S206可以通过以下步骤S51-S52实现:
步骤S51:获取所述当前操作码序列集合和所述参考操作码序列集合的交集,得到操作码序列交集集合;
作为一种可选的示例,如图3所示,通过反编译模块对目标软件的安装包进行反编译得到当前操作码序列集合以后,反编译模块会执行步骤S6:将当前操作码序列集合发送至操作码序列特征向量确定模块;同时操作码序列特征向量确定模块会执行步骤S7:获取参考操作码序列集合;进而如图4中的(b)所示,操作码序列特征向量确定模块将当前操作码序列集合和参考操作码序列集合进行交集运算,得到权限操作码序列集合。
步骤S52:根据所述操作码序列交集集合,生成所述操作码序列特征向量,其中,所述操作码序列特征向量中的特征的数量为所述参考操作码序列集合中的操作码序列的数量,所述操作码序列特征向量中的每个特征与所述参考操作码序列集合中的一个操作码序列对应,所述操作码序列特征向量中的每个特征的取值表示对应的操作码序列是否为所述操作码序列交集集合中的操作码序列;
为了更好的理解,作为一种可选的示例,如图4中的(b)所示,假设参考操作码序列权限集合中具有M个操作码序列,进而操作码序列特征向量为M维向量。假设当前操作码序列集合为{DMD,MDI,DIR,IRP,RPM,PMG,MGD,GDI,DIT},参考操作码序列集合为{DMD,DDD,PDI,TTI,MDI,DIR},进行交集运算后,得到的操作码序列交集集合为{DMD,MDI,DIR}。由于参考操作码序列集合中的操作码序列DMD在操作码序列交集集合中存在,进而操作码序列特征向量中操作码序列DMD对应的数值为1,由于参考操作码序列集合中的操作码序列PDI在操作码序列交集集合中不存在,进而操作码序列特征向量中操作码序列PDI对应的数值为0,同理可以确定操作码序列特征向量中每一个特征的取值,得到操作码序列特征向量为(1,0,0,0,1,1)。
在本实施例中,采用上述方式确定操作码序列特征向量,可以更简单的表达当前操作码序列集合中是否具有参考操作码序列集合中对应的操作码序列。此外,由于只考虑当前操作码序列集合中是否具有参考操作码序列集合中对应的操作码序列,即只从当前操作码序列集合中选取具有代表性的操作码序列来确定目标软件是否为恶意软件,避免了无效操作码序列的干扰,使得后续构建第二检测模型更为容易。
作为一种可选的示例,在执行上述步骤S206以前,还需确定参考操作码序列集合,具体的,通过以下步骤S61-S62实现:
步骤S61:获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,所述每个操作码序列对应的所述第二关联度参数的取值用于表示所述每个操作码序列与所述恶意软件类型的第二关联度,第二关联度与第二关联度参数的取值正相关。
作为一种可选的示例,第二关联度参数的取值越大,表示操作码序列与所述恶意软件类型的第二关联度越高,表示操作码序列更具有区分恶意软件的能力。
作为一种可选的示例,目标操作码序列集合包括但不限于第二样本软件集合中每一个第二样本软件对应操作码序列集合的并集。可选地,以目标操作码序列集合为第二样本软件集合中每一个第二样本软件对应操作码序列集合的并集为例。
作为一种可选的示例,确定第二样本软件集合中每一第二样本软件的操作码序列集合的确定方式与上述确定目标软件的当前操作码序列集合的方式相同。可选地,假设第二样本软件集合中具有4个第二样本软件,其中,第二样本软件1与第二样本软件2的类型为恶意软件类型,第二样本软件3与第二样本软件4的类型为正常软件类型,对第二样本软件1进行处理,得到操作码序列集合为{操作码序列1、操作序列2、操作码序列3},对第二样本软件2进行处理,得到操作码序列集合为{操作码序列1、操作序列3、操作码序列4},对第二样本软件3进行处理,得到操作码序列集合为{操作码序列4、操作序列5、操作码序列6},对第二样本软件4进行处理,得到操作码序列集合为{操作码序列2、操作序列5、操作码序列7}。进而取并集操作,得到的目标操作码序列集合为{操作码序列1、操作序列2、操作码序列3,操作码序列4、操作序列5、操作码序列6、操作码序列7}。
作为一种可选的示例,通过对所述目标操作码序列集合中的每个操作码序列执行以下步骤S612-S614来确定目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,执行以下操作时,所述每个操作码序列为当前操作码序列:
步骤S612:根据预设的第二样本软件集合,确定所述恶意软件类型的第一信息熵,和在所述当前操作码序列给定的前提下的所述恶意软件类型的第二信息熵;
作为一种可选的示例,如图6所示,需要根据第二样本软件集合计算目标操作码序列集合中每一个操作码序列的第一信息熵e以及第二信息熵h,其中,第一信息熵e的计算公式如公式二所示:
H(Y)=-∑P(yi)log2(P(yi)) (公式二);
其中,H(Y)表示属性Y的信息熵,P(yi)表示Y所有值的先验概率,在本实施例中,Y为恶意软件类型,H(Y)的值对应第一信息熵。
第二信息熵的计算公式如公式三所示:
H(Y|X)=-∑P(xi)∑P(yi|xj)log2(P(yi|xj)) (公式三);
其中,H(Y|X)表示在特征X给定的前提下,属性Y的信息熵,其中P(yi|xj)是给定X的值的Y的后验概率。在本实施例中,X为当前操作码序列,H(Y|X)的值对应第二信息熵。
步骤S614:根据所述第一信息熵和所述第二信息熵,确定所述当前操作码序列对应的信息增益IG(Y|X),其中,所述当前操作码序列对应的所述第二关联度参数的取值为所述当前操作码序列对应的信息增益IG(Y|X),Y表示恶意软件类型,X表示当前操作码序列。
作为一种可选的示例,如图6所示,在确定每一个操作码序列的第一信息熵e以及第二信息熵h以后,需要根据第一信息熵e以及第二信息熵h确定每一个操作码序列的第二关联度参数的取值F,其中,F等于信息增益IG(Y|X),信息增益IG(Y|X)是衡量一个特征X区分类Y的能力,即在本实施例中,信息增益IG(Y|X)表示当前操作码序列用于衡量恶意软件类型的能力。可选地,IG(Y|X)的计算公式如公式四所示:
IG(Y|X)=H(Y)-H(Y|X) (公式四);
进而可以计算每一个操作码序列第二关联度参数的取值。需要说明的是,如果IG(Y|X)>IG(Y|Z),则认为特征X被认为与类Y更相关。也就是说,假设IG(恶意软件类型|操作码序列1)>IG(恶意软件类型|操作码序列2),则操作码序列1的第二关联度参数的取值大于操作码序列1的第二关联度参数的取值。
步骤S62:按照所述第二关联度参数的取值从高到低的顺序,将所述目标操作码序列集合中所述第二关联度参数的取值排名前M位对应的操作码序列确定为所述参考操作码序列集合中的操作码序列,其中,M为大于或等于1的正整数,M小于所述目标操作码序列集合中的操作码序列的数量。
作为一种可选的示例,如图6所示,假设目标操作码序列集合中按照第二关联度参数的取值从高到低的顺序对应的前M个操作码序列分别为操作码序列1、操作码序列2、操作码序列3…操作码序列M,则参考操作码序列集合为{操作码序列1、操作码序列2、操作码序列3…操作码序列M}。
在本实施例中,通过上述方式确定参考操作码序列集合,使得确定的参考操作码序列集合中的操作码序列更具有代表性,更具有区分恶意软件的能力。
步骤S208:根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
作为一种可选的示例,上述步骤S208可以通过以下步骤S71-S72实现:
步骤S71:获取所述当前函数对集合和所述参考函数对集合的交集,得到函数对交集集合;
作为一种可选的示例,如图3所示,通过函数对提取模块对目标软件的安装包进行处理得到当前函数对集合以后,函数对提取模块会执行步骤S10:将当前函数对集合发送至函数调用特征向量确定模块;同时函数调用特征向量确定模块会执行步骤S11:获取参考函数对集合;进而如图4中的(c)所示,函数调用特征向量确定模块将当前函数对集合和参考函数对集合进行交集运算,得到权限函数对集合。
步骤S72:根据所述函数对交集集合,生成所述函数调用特征向量,其中,所述函数调用特征向量中的特征的数量为所述参考函数对集合中的函数对的数量,所述函数调用特征向量中的每个特征与所述参考函数对集合中的一个函数对对应,所述函数调用特征向量中的每个特征的取值表示对应的函数对是否为所述函数对交集集合中的函数对。
为了更好的理解,作为一种可选的示例,如图4中的(c)所示,假设参考函数对集合中具有P个函数对,进而函数对特征向量为P维向量。假设当前函数对集合为{AB,BC,CD,DE,EF},参考函数对集合为{AB,MN,CD,XY,EF},进行交集运算后,得到的函数对交集集合为{AB,CD,EF}。由于参考函数对集合中的函数对AB在函数对交集集合中存在,进而函数对特征向量中函数对AB对应的数值为1,由于参考函数对集合中的函数对MN在函数对交集集合中不存在,进而函数对特征向量中函数对MN对应的数值为0,同理可以确定函数对特征向量中每一个特征的取值,进而得到函数对特征向量为(1,0,1,0,1)。
在本实施例中,采用上述方式确定函数对特征向量,可以更简单的表达当前函数对集合中是否具有参考函数对集合中对应的函数对。此外,由于只考虑当前函数对集合中是否具有参考函数对集合中对应的函数对,即只从当前函数对集合中选取具有代表性的函数对来确定目标软件是否为恶意软件,避免了无效函数对的干扰,使得后续构建第三检测模型更为容易。
作为一种可选的示例,在执行步骤S208以前,还需要确定参考函数对集合,可选地,通过以下步骤S81-S82实现:
步骤S81:获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,其中,所述每个函数对对应的所述第三关联度参数的取值用于表示所述每个函数对与所述恶意软件类型的第三关联度,第三关联度与第三关联度参数的取值正相关。
作为一种可选的示例,第三关联度参数的取值越大,表示函数对与所述恶意软件类型的第三关联度越高,表示函数对更具有区分恶意软件的能力。
作为一种可选的示例,目标函数对集合包括但不限于第三样本软件集合中每一个第三样本软件对应函数对集合的并集。可选地,以目标函数对集合为第三样本软件集合中每一个第三样本软件对应函数对集合的并集为例。
作为一种可选的示例,所述目标函数对集合中的函数对中的函数包括以下至少之一:操作系统中的原生函数、开发者自定义函数、混淆函数。
作为一种可选的示例,确定第三样本软件集合中每一第三样本软件的函数对集合的确定方式与上述确定目标软件的当前函数对集合的方式相同。可选地,假设图7所示的第三样本软件集合中具有4个第三样本软件,分别为:第三样本软件1、第二样本软件2、第二样本软件3、第二样本软件4。对第三样本软件1进行处理,得到函数对集合为{AB,BC,AD,CB,DB},对第二样本软件2进行处理,得到函数对集合为{AB,AE,MB,DE},对第三样本软件3进行处理,得到函数对集合为{AB,CB,DC,CD},对第三样本软件4进行处理,得到函数对集合为{CB,EC,AE}。进而取并集操作,得到的目标函数对集合为{AB,BC,AD,CB,DB,AE,MB,DE,DC,CD,EC}。需要说明的是,函数对AB表示函数A调用函数B。其中,图7中的函数对1为函数对AB,函数对2为函数对BC....函数对n3为函数对EC。
作为一种可选的示例,通过对所述目标函数对集合中的每个函数对执行以下步骤S812-S814来确定目标函数对集合中的每个函数对序列对应的第三关联度参数的取值,其中,执行以下操作时,所述每个函数对为当前函数对:
步骤S812:在所述当前函数对表示具有调用关系的第一函数和第二函数的情况下,在预设的第三样本软件集合中确定所述当前函数对出现的次数,以及候选函数对集合中的每个候选函数对出现的次数,其中,所述每个候选函数对表示具有调用关系的一个函数和所述第二函数,所述第三样本软件集合中的软件的类型为所述恶意软件类型;
作为一种可选的示例,如图7所示,需要计算目标函数对集合中每一个函数对在第三样本软件集合中出现的次数Cij,以及候选函数对集合中的每个候选函数对出现的次数Ckj。其中,ij表示函数对,用于指示函数i调用函数j,k属于目标函数对集合对应的函数种类集合。如图7所示的函数对1(S12)用于指示函数1调用函数2,C12用于指示函数对1(S12)在第三样本软件集合中出现的次数。
作为一种可选的示例,假设目标函数对集合为上述{AB,BC,AD,CB,DB,AE,MB,DE,DC,CD,EC},则目标函数对集合中共具有6个类型的函数,包括:A,B,C,D,E,M(例如,上述k属于其中一个)。假设第三样本软件集合包括:第三样本软件1、第二样本软件2、第二样本软件3、第二样本软件4。则第三样本软件集合对应的函数对集合为{AB,BC,AD,CB,DB,AB,AE,MB,DE,AB,CB,DC,CD,CB,EC,AE}。则可以确定目标函数对集合中的函数对AB在第三样本软件集合中出现的次数为3次,由于函数对AB中B为第二函数,进而函数对AB对应的候选函数对集合中的函数对为任意一个函数与第二函数B具有调用关系的函数对,具体的,函数对AB对应的候选函数对集合包括为{AB,CB,DB,MB},进而可以得到候选函数对集合中每一个每个候选函数对出现的次数(AB:3次;CB:3次;DB:1次;MB:1次)。同理可以计算目标函数对集合中其他函数对在第三样本软件集合中出现的次数与对应的候选函数对集合中的每个候选函数对出现的次数。
步骤S814:根据所述当前函数对出现的次数,以及所述候选函数对集合中的每个候选函数对出现的次数,确定所述当前函数对的转移概率,其中,所述当前函数对对应的所述第三关联度参数的取值为所述当前函数对的转移概率。
作为一种可选的示例,可以将当前函数对出现的次数除以候选函数对集合中的每个候选函数对出现的次数之和确定为当前函数对的转移概率,具体的,通过以下公式五进行计算:
其中,Pij表示函数对ij的转移概率,Cij表示函数对ij出现的次数,A属于目标函数集合对应的函数种类集合。
作为一种可选的示例,如图7所示,在确定每一个函数对出现的次数Cij以及对应的候选函数对集合中的每个候选函数对出现的次数Ckj之后,可以根据上述当前函数对转移概率的计算方式计算每一个函数对的第三关联度参数的取值J,具体的,以上述函数对AB为例,函数对AB出现的次数为3次,函数对AB对应的候选函数对集合中的每个候选函数对出现的次数之和为8,进而可以计算得到函数对AB的转移概率为3/8,即函数对AB的第三关联度参数的取值为3/8。同理可以确定目标函数对集合中每一个函数对的第三关联度参数的取值。
步骤S82:按照所述第三关联度参数的取值从高到低的顺序,将所述目标函数对集合中所述第三关联度参数的取值排名前P位对应的函数对确定为所述参考函数对集合中的函数对,其中,P为大于或等于1的正整数,P小于所述目标函数对集合中的函数对的数量。
作为一种可选的示例,如图7所示,假设目标函数对集合中按照第三关联度参数的取值从高到低的顺序对应的前P个函数对分别为函数对1…函数对P,则参考函数对集合为{函数对1…函数对P}。
在本实施例中,通过上述方式确定参考函数对集合,使得确定的参考函数对集合中的函数对更具有代表性,更具有区分恶意软件的能力。
作为一个可选地实例,上述步骤S204-S208是异步执行的。图3所示的步骤S2-S5、步骤S6-S9、S10-S13也是异步执行的。
步骤S210:根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
作为一种可选的示例,上述步骤S210可以通过步骤S92-S98实现:
步骤S92:将所述权限特征向量输入第一检测模型,得到第一检测结果,其中,所述第一检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
作为一种可选的示例,如图3所示,权限特征向量确定模块在确定权限特征向量以后,会执行图3所示的步骤S4:发送权限特征向量至第一检测模型,进而第一检测模型得到第一检测结果。
步骤S94:将所述操作码序列特征向量输入第二检测模型,得到第二检测结果,其中,所述第二检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
作为一种可选的示例,如图3所示,操作码序列特征向量确定模块在确定操作码序列特征向量以后,会执行图3所示的步骤S8:发送操作码序列特征向量至第二检测模型,进而第二检测模型得到第二检测结果。
步骤S96:将所述函数调用特征向量输入第三检测模型,得到第三检测结果,其中,所述第三检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
作为一种可选的示例,如图3所示,函数调用特征向量确定模块在确定函数调用特征向量以后,会执行图3所示的步骤S12:发送函数调用特征向量至第三检测模型,进而第三检测模型得到第三检测结果。
作为一种可选的示例,上述步骤S92-S96是异步执行的。
步骤S98:将所述第一检测结果、所述第二检测结果、以及所述第三检测结果输入到融合检测模型,得到目标检测结果,其中,所述目标检测结果用于表示所述目标软件的类型是否为所述恶意软件类型。
作为一种可选的示例,如图3所示,第一检测模型在得到第一检测结果以后,执行步骤S5:发送第一检测结果至融合检测模型;第二检测模型在得到第二检测结果以后,执行步骤S9:发送第二检测结果至融合检测模型,第三检测模型在得到第三检测结果以后,执行步骤S13:发送第三检测结果至融合检测模型;进而融合检测模型获取到第一检测结果,第二检测结果以及第三检测结果以后,根据第一检测结果、第二检测结果以及第三检测结果得到目标检测结果,并执行步骤S14:输出目标检测结果。
作为一种可选的示例,第一检测模型、第二检测模型、第三检测模型、融合检测模型中的至少2个模型是采用随机森林算法构建的模型。其中,随机森林中具有多个决策树,其输出的类别是由其中个别决策树树输出的类别的众数而定。
作为一种可选的示例,如图8所示,可以通过以下方式构建检测模型,具体包括检测模型的训练过程与检测模型的测试过程,其中,通过以下方式构建的检测模型可以是第一检测模型、或第二检测模型,或第三检测模型:
其中,检测模型的训练过程通过图8中的(a)所示的步骤S1-S5实现:
步骤S1.1:从样本恶意软件集合与样本正常软件集合中分别抽取样本软件,得到n个训练样本软件;
作为一种可选的示例,可以采取随机抽样的方式分别从样本恶意软件集合与样本正常软件集合抽取n/2个训练样本软件。
步骤S1.2:确定n个训练样本软件中每一个训练样本软件对应的训练特征向量;
作为一种可选的示例,确定每一个训练样本软件对应的训练特征向量的方式与上述确定目标软件对应的特征向量的方式相同。
步骤S1.3:将n个训练样本软件中每一个训练样本软件对应的训练特征向量以及软件类型发送至原始检测模型;
步骤S1.4:原始检测模型使用n个训练特征向量以及对应的软件类型进行训练;
作为一种可选的示例,在原始检测模型在训练的过程中,若根据n个训练特征向量预测得到的软件类型的正确率小于第一预设正确率,则会调整原始检测模型的参数,继续进行训练。
步骤S1.5:在确定原始检测模型满足训练结束条件的情况下,将原始检测模型确定为测试检测模型。
作为一种可选的示例,原始检测模型的训练结束条件为原始检测模型根据n个训练特征向量预测得到的软件类型的正确率大于或等于第一预设正确率。可选地,假设有100个训练特征向量,第一预设正确率为90%,若原始检测模型预测95个训练特征向量对应的软件类型正确,即原始检测模型的预测正确率大于90%,进而原始检测模型满足训练结束条件。
检测模型的测试过程通过图8中的(b)所示的步骤S1-S4实现:
步骤S2.1:从样本恶意软件集合与样本正常软件集合中分别抽取样本软件,得到x个测试样本软件;
作为一种可选的示例,可以采取随机抽样的方式分别从样本恶意软件集合与样本正常软件集合抽取n/2个测试样本软件。
步骤S2.2:确定x个测试样本软件中每一个测试样本软件对应的特征向量;
作为一种可选的示例,确定每一个测试样本软件对应的测试特征向量的方式与上述确定目标软件对应的特征向量的方式相同。
步骤S2.3:将x个测试样本软件中每一个测试样本软件对应的训练特征向量以及软件类型发送至测试检测模型中进行测试;
步骤S2.4:在确定测试检测模型对x测试样本软件的测试准确率满足对应的条件的情况下,将测试检测模型确定为检测模型。
作为一种可选的示例,在测试检测模型的测试准确率大于或等于第二预设正确率的情况下,确定满足对应的条件。可选地,第一预设正确率与第二预设正确率可以相等,也可以不相等。可选地,假设有100个测试特征向量,第二预设正确率为90%,若测试检测模型预测95个训练特征向量对应的软件类型正确,即测试检测模型的测试正确率大于90%,进而测试检测模型满足对应的条件。
作为一种可选的示例,在确定测试检测模型对x测试样本软件的测试准确率不满足对应的条件的情况下,可以重新执行上述检测模型的训练过程与检测模型的测试过程。
在本申请实施例中,通过上述方式得到的检测模型,提高了检测模型的检测准确率。
作为一种可选的示例,如图9所示,可以通过以下方式构建融合检测模型,具体包括融合检测模型的训练过程与融合检测模型的测试过程:
其中,融合检测模型的训练过程通过图9中的(a)所示的步骤S1-S6实现:
步骤S1.1:将样本软件集合中的每个样本软件分别输入至第一检测模型、第二检测模型以及第三检测模型中进行检测;
步骤S1.2:第一检测模型、第二检测模型以及第三检测模型分别输出每个样本软件的检测结果,得到第一检测结果集合、第二检测结果集合以及第三检测结果集合;
步骤S1.3:从第一检测结果集合、第二检测结果集合以及第三检测结果集合抽取部分样本软件的检测结果,作为训练结果集合,其中,训练结果集合中具有多个训练样本软件对应的第一检测结果、第二检测结果以及第三检测结果;
步骤S1.4:将训练结果集合发送至原始融合检测模型;
步骤S1.5:原始融合检测模型使用训练结果集合进行训练;
作为一个可选的示例,在原始融合检测模型训练的过程中,若根据训练结果集合预测得到的软件类型的正确率小于第三预设正确率,则会调整原始融合检测模型的参数,继续进行训练。可选地,假设训练结果集合100个样本软件对应第一检测结果、第二检测结果以及第三检测结果;第三预设正确率为90%,若原始融合检测模型预测95个样本软件对应的软件类型正确,即原始融合检测模型的预测正确率大于90%,进而原始融合检测模型满足训练结束条件。
步骤S1.6:在确定原始融合检测模型满足训练结束条件的情况下,将原始融合检测模型确定为测试融合检测模型。
作为一种可选的示例,原始融合检测模型的训练结束条件为根据训练结果集合预测得到的软件类型的正确率大于或等于第三预设正确率。
其中,融合检测模型的测试过程通过图9中的(b)所示的步骤S1-S5实现:
步骤S2.1:将样本软件集合中的每个样本软件分别输入至第一检测模型、第二检测模型以及第三检测模型中进行检测;
步骤S2.2:第一检测模型、第二检测模型以及第三检测模型分别输出每个样本软件的检测结果,得到第一检测结果集合、第二检测结果集合以及第三检测结果集合;
步骤S2.3:从第一检测结果集合、第二检测结果集合以及第三检测结果集合抽取部分样本软件的检测结果,作为测试结果集合,其中,测试结果集合中具有多个测试样本软件对应的第一检测结果、第二检测结果以及第三检测结果;
步骤S2.4:将测试结果集合发送至测试融合检测模型中进行测试;
步骤S2.5:在确定测试融合检测模型根据测试结果集合对测试样本软件检测的测试准确率满足对应的条件的情况下,将测试融合检测模型确定为融合检测模型。
作为一种可选的示例,在测试融合检测模型的测试准确率大于或等于第四预设正确率的情况下,确定满足对应的条件。可选地,第三预设正确率与第四预设正确率可以相等,也可以不相等。可选地,假设测试结果集合100个样本软件对应第一检测结果、第二检测结果以及第三检测结果;第四预设正确率为90%,若测试融合检测模型预测95个样本软件对应的软件类型正确,即测试融合检测模型的测试准确率大于90%,即测试融合检测模型满足对应的条件。
作为一种可选的示例,在确定测试融合检测模型根据测试结果集合对测试样本软件检测的测试准确率不满足对应的条件的情况下,重新执行上述融合检测模型的训练过程与融合检测模型的测试过程。
在本申请实施例中,通过上述方式确定融合检测模型,提高了融合检测模型的检测准确率。
在本申请实施例中,获取了目标软件的多个维度的特征向量,包括目标软件的权限特征向量、操作码序列特征向量以及函数调用特征向量,上述多个维度的特征向量可以表征目标软件的行为关系(例如,函数调用关系),以及对不同类型的函数(例如,混淆函数)进行表征。这样,根据上述多个维度的特征向量,可以准确地检测目标软件的类型是否为恶意软件,解决了相关技术中的软件检测的准确性较低的技术问题,达到了提高软件检测的准确性的技术效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
根据本申请实施例的另一个方面,还提供了一种用于实施上述软件测试方法的软件测试装置。如图10所示,该装置包括:
获取模块1002,用于获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
第一确定模块1004,用于根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;
第二确定模块1006,用于根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
第三确定模块1008,用于根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
第四确定模块1010,用于根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
在本申请实施例中,获取了目标软件的多个维度的特征向量,包括目标软件的权限特征向量、操作码序列特征向量以及函数调用特征向量,上述多个维度的特征向量可以表征目标软件的行为关系(例如,函数调用关系),以及对不同类型的函数(例如,混淆函数)进行表征。这样,根据上述多个维度的特征向量,可以准确地检测目标软件的类型是否为恶意软件,解决了相关技术中的软件检测的准确性较低的技术问题,达到了提高软件检测的准确性的技术效果。
可选地,第一确定模块1004包括:
第一获取单元,用于获取所述当前权限集合和所述参考权限集合的交集,得到权限交集集合;
第一生成单元,用于根据所述权限交集集合,生成所述权限特征向量,其中,所述权限特征向量中的特征的数量为所述参考权限集合中的权限的数量,所述权限特征向量中的每个特征与所述参考权限集合中的一个权限对应,所述权限特征向量中的每个特征的取值表示对应的权限是否为所述权限交集集合中的权限。
可选地,第二确定模块1006包括:
第二获取单元,用于获取所述当前操作码序列集合和所述参考操作码序列集合的交集,得到操作码序列交集集合;
第二生成单元,用于根据所述操作码序列交集集合,生成所述操作码序列特征向量,其中,所述操作码序列特征向量中的特征的数量为所述参考操作码序列集合中的操作码序列的数量,所述操作码序列特征向量中的每个特征与所述参考操作码序列集合中的一个操作码序列对应,所述操作码序列特征向量中的每个特征的取值表示对应的操作码序列是否为所述操作码序列交集集合中的操作码序列。
可选地,第三确定模块1008包括:
第三获取单元,用于获取所述当前函数对集合和所述参考函数对集合的交集,得到函数对交集集合;
第三生成单元,用于根据所述函数对交集集合,生成所述函数调用特征向量,其中,所述函数调用特征向量中的特征的数量为所述参考函数对集合中的函数对的数量,所述函数调用特征向量中的每个特征与所述参考函数对集合中的一个函数对对应,所述函数调用特征向量中的每个特征的取值表示对应的函数对是否为所述函数对交集集合中的函数对。
可选地,上述装置还包括:第五确定模块;第五确定模块包括:
第四获取单元,用于在根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量之前,获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,其中,所述每个权限对应的所述第一关联度参数的取值用于表示所述每个权限与所述恶意软件类型的第一关联度,所述第一关联度与所述第一关联度参数的取值正相关;
第一确定单元,用于按照所述第一关联度参数的取值从高到低的顺序,将所述目标权限集合中所述第一关联度参数的取值排名前N位对应的权限确定为所述参考权限集合中的权限,其中,N为大于或等于1的正整数,N小于所述目标权限集合中的权限的数量。
可选地,第四获取单元,用于通过以下方式获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值:对所述目标权限集合中的每个权限执行以下操作,其中,执行以下操作时,所述每个权限为当前权限:在预设的第一样本软件集合中确定具有所述当前权限、且类型为所述恶意软件类型的软件的第一数量,确定具有所述当前权限、且类型为正常软件类型的软件的第二数量,确定不具有所述当前权限、且类型为所述恶意软件类型的软件的第三数量,以及确定不具有所述当前权限、且类型为所述正常软件类型的软件的第四数量;根据所述第一数量、所述第二数量、所述第三数量以及所述第四数量,确定所述当前权限对应的所述第一关联度参数的取值。
可选地,上述装置还包括:第六确定模块;第六确定模块包括:
第五获取单元,用于在根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量之前,获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,所述每个操作码序列对应的所述第二关联度参数的取值用于表示所述每个操作码序列与所述恶意软件类型的第二关联度,所述第二关联度与所述第二关联度参数的取值正相关;
第二确定单元,用于按照所述第二关联度参数的取值从高到低的顺序,将所述目标操作码序列集合中所述第二关联度参数的取值排名前M位对应的操作码序列确定为所述参考操作码序列集合中的操作码序列,其中,M为大于或等于1的正整数,M小于所述目标操作码序列集合中的操作码序列的数量。
可选地,第五获取单元,用于通过以下方式获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值:对所述目标操作码序列集合中的每个操作码序列执行以下操作,其中,执行以下操作时,所述每个操作码序列为当前操作码序列:根据预设的第二样本软件集合,确定所述恶意软件类型的第一信息熵,和在所述当前操作码序列给定的前提下的所述恶意软件类型的第二信息熵;根据所述第一信息熵和所述第二信息熵,确定所述当前操作码序列对应的信息增益IG(Y|X),其中,所述当前操作码序列对应的所述第二关联度参数的取值为所述当前操作码序列对应的信息增益IG(Y|X),Y表示所述恶意软件类型,X表示所述当前操作码序列。
可选地,上述装置还包括:第七确定模块;第七确定模块包括:
第六获取单元,用于在根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量之前,获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,其中,所述每个函数对对应的所述第三关联度参数的取值用于表示所述每个函数对与所述恶意软件类型的第三关联度,所述第三关联度与所述第三关联度参数的取值正相关;
第三确定单元,用于按照所述第三关联度参数的取值从高到低的顺序,将所述目标函数对集合中所述第三关联度参数的取值排名前P位对应的函数对确定为所述参考函数对集合中的函数对,其中,P为大于或等于1的正整数,P小于所述目标函数对集合中的函数对的数量。
可选地,第六获取单元,用于通过以下方式获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值:对所述目标函数对序列集合中的每个函数对序列执行以下操作,其中,执行以下操作时,所述每个函数对为当前函数对:在所述当前函数对表示具有调用关系的第一函数和第二函数的情况下,在预设的第三样本软件集合中确定所述当前函数对出现的次数,以及候选函数对集合中的每个候选函数对出现的次数,其中,所述每个候选函数对表示具有调用关系的一个函数和所述第二函数,所述第三样本软件集合中的软件的类型为所述恶意软件类型;根据所述当前函数对出现的次数,以及所述候选函数对集合中的每个候选函数对出现的次数,确定所述当前函数对的转移概率,其中,所述当前函数对对应的所述第三关联度参数的取值为所述当前函数对的转移概率。
可选地,目标函数对集合中的函数对中的函数包括以下至少之一:操作系统中的原生函数、开发者自定义函数、混淆函数。
可选地,第四确定模块1010包括:
第一检测单元,用于将所述权限特征向量输入第一检测模型,得到第一检测结果,其中,所述第一检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第二检测单元,用于将所述操作码序列特征向量输入第二检测模型,得到第二检测结果,其中,所述第二检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第三检测单元,用于将所述函数调用特征向量输入第三检测模型,得到第三检测结果,其中,所述第三检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
第四检测单元,用于将所述第一检测结果、所述第二检测结果、以及所述第三检测结果输入到融合检测模型,得到目标检测结果,其中,所述目标检测结果用于表示所述目标软件的类型是否为所述恶意软件类型。
可选地,所述第一检测模型、所述第二检测模型、所述第三检测模型、所述融合检测模型中的至少2个模型是采用随机森林算法构建的模型。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序/指令,该计算机程序/指令包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理器1101执行时,执行本申请实施例提供的各种功能。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
图11示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图11示出的电子设备的计算机系统1100仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图11所示,计算机系统1100包括中央处理器1101(Central Processing Unit,CPU),其可以根据存储在只读存储器1102(Read-Only Memory,ROM)中的程序或者从存储部分1108加载到随机访问存储器1103(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1103中,还存储有系统操作所需的各种程序和数据。中央处理器1101、在只读存储器1102以及随机访问存储器1103通过总线1104彼此相连。输入/输出接口1105(Input/Output接口,即I/O接口)也连接至总线1104。
以下部件连接至输入/输出接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至输入/输出接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。在该计算机程序被中央处理器1101执行时,执行本申请的系统中限定的各种功能。
根据本申请实施例的又一个方面,还提供了一种用于实施上述软件测试方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为终端设备为例来说明。如图12所示,该电子设备包括存储器1202和处理器1204,该存储器1202中存储有计算机程序,该处理器1204被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
S2,根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;
S3,根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
S4,根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
S5,根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
可选地,本领域普通技术人员可以理解,图12所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图12其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图12中所示更多或者更少的组件(如网络接口等),或者具有与图12所示不同的配置。
其中,存储器1202可用于存储软件程序以及模块,如本申请实施例中的软件测试方法和装置对应的程序指令/模块,处理器1204通过运行存储在存储器1202内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的软件测试方法。存储器1202可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1202可进一步包括相对于处理器1204远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1202具体可以但不限于用于参考权限集合、参考操作码序列集合以及参考函数对集合等信息。作为一种示例,如图12所示,上述存储器1202中可以但不限于包括上述软件测试装置中的获取模块1002、第一确定模块1004、第二确定模块1006、第三确定模块1008及第四确定模块1010。此外,还可以包括但不限于上述软件测试装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1206包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1206为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1208,用于显示上述目标软件是否为恶意软件类型;和连接总线1310,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机可读存储介质,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的软件测试方法。
可选地,在本实施例中,上述计算机可读存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
S2,根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;
S3,根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
S4,根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
S5,根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (15)
1.一种软件检测方法,其特征在于,包括:
获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;
根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,包括:
获取所述当前权限集合和所述参考权限集合的交集,得到权限交集集合;
根据所述权限交集集合,生成所述权限特征向量,其中,所述权限特征向量中的特征的数量为所述参考权限集合中的权限的数量,所述权限特征向量中的每个特征与所述参考权限集合中的一个权限对应,所述权限特征向量中的每个特征的取值表示对应的权限是否为所述权限交集集合中的权限。
3.根据权利要求1所述的方法,其特征在于,所述根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,包括:
获取所述当前操作码序列集合和所述参考操作码序列集合的交集,得到操作码序列交集集合;
根据所述操作码序列交集集合,生成所述操作码序列特征向量,其中,所述操作码序列特征向量中的特征的数量为所述参考操作码序列集合中的操作码序列的数量,所述操作码序列特征向量中的每个特征与所述参考操作码序列集合中的一个操作码序列对应,所述操作码序列特征向量中的每个特征的取值表示对应的操作码序列是否为所述操作码序列交集集合中的操作码序列。
4.根据权利要求1所述的方法,其特征在于,所述根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,包括:
获取所述当前函数对集合和所述参考函数对集合的交集,得到函数对交集集合;
根据所述函数对交集集合,生成所述函数调用特征向量,其中,所述函数调用特征向量中的特征的数量为所述参考函数对集合中的函数对的数量,所述函数调用特征向量中的每个特征与所述参考函数对集合中的一个函数对对应,所述函数调用特征向量中的每个特征的取值表示对应的函数对是否为所述函数对交集集合中的函数对。
5.根据权利要求1所述的方法,其特征在于,在根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量之前,所述方法还包括:
获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,其中,所述每个权限对应的所述第一关联度参数的取值用于表示所述每个权限与所述恶意软件类型的第一关联度,所述第一关联度与所述第一关联度参数的取值正相关;
按照所述第一关联度参数的取值从高到低的顺序,将所述目标权限集合中所述第一关联度参数的取值排名前N位对应的权限确定为所述参考权限集合中的权限,其中,N为大于或等于1的正整数,N小于所述目标权限集合中的权限的数量。
6.根据权利要求5所述的方法,其特征在于,所述获取预设的目标权限集合中的每个权限对应的第一关联度参数的取值,包括:
对所述目标权限集合中的每个权限执行以下操作,其中,执行以下操作时,所述每个权限为当前权限:
在预设的第一样本软件集合中确定具有所述当前权限、且类型为所述恶意软件类型的软件的第一数量,确定具有所述当前权限、且类型为正常软件类型的软件的第二数量,确定不具有所述当前权限、且类型为所述恶意软件类型的软件的第三数量,以及确定不具有所述当前权限、且类型为所述正常软件类型的软件的第四数量;
根据所述第一数量、所述第二数量、所述第三数量以及所述第四数量,确定所述当前权限对应的所述第一关联度参数的取值。
7.根据权利要求1所述的方法,其特征在于,在根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量之前,所述方法还包括:
获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,其中,所述每个操作码序列对应的所述第二关联度参数的取值用于表示所述每个操作码序列与所述恶意软件类型的第二关联度,所述第二关联度与所述第二关联度参数的取值正相关;
按照所述第二关联度参数的取值从高到低的顺序,将所述目标操作码序列集合中所述第二关联度参数的取值排名前M位对应的操作码序列确定为所述参考操作码序列集合中的操作码序列,其中,M为大于或等于1的正整数,M小于所述目标操作码序列集合中的操作码序列的数量。
8.根据权利要求7所述的方法,其特征在于,所述获取预设的目标操作码序列集合中的每个操作码序列对应的第二关联度参数的取值,包括:
对所述目标操作码序列集合中的每个操作码序列执行以下操作,其中,执行以下操作时,所述每个操作码序列为当前操作码序列:
根据预设的第二样本软件集合,确定所述恶意软件类型的第一信息熵,和在所述当前操作码序列给定的前提下的所述恶意软件类型的第二信息熵;
根据所述第一信息熵和所述第二信息熵,确定所述当前操作码序列对应的信息增益IG(Y|X),其中,所述当前操作码序列对应的所述第二关联度参数的取值为所述当前操作码序列对应的信息增益IG(Y|X),Y表示所述恶意软件类型,X表示所述当前操作码序列。
9.根据权利要求1所述的方法,其特征在于,在根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量之前,所述方法还包括:
获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,其中,所述每个函数对对应的所述第三关联度参数的取值用于表示所述每个函数对与所述恶意软件类型的第三关联度,所述第三关联度与所述第三关联度参数的取值正相关;
按照所述第三关联度参数的取值从高到低的顺序,将所述目标函数对集合中所述第三关联度参数的取值排名前P位对应的函数对确定为所述参考函数对集合中的函数对,其中,P为大于或等于1的正整数,P小于所述目标函数对集合中的函数对的数量。
10.根据权利要求9所述的方法,其特征在于,所述获取预设的目标函数对集合中的每个函数对对应的第三关联度参数的取值,包括:
对所述目标函数对序列集合中的每个函数对序列执行以下操作,其中,执行以下操作时,所述每个函数对为当前函数对:
在所述当前函数对表示具有调用关系的第一函数和第二函数的情况下,在预设的第三样本软件集合中确定所述当前函数对出现的次数,以及候选函数对集合中的每个候选函数对出现的次数,其中,所述每个候选函数对表示具有调用关系的一个函数和所述第二函数,所述第三样本软件集合中的软件的类型为所述恶意软件类型;
根据所述当前函数对出现的次数,以及所述候选函数对集合中的每个候选函数对出现的次数,确定所述当前函数对的转移概率,其中,所述当前函数对对应的所述第三关联度参数的取值为所述当前函数对的转移概率。
11.根据权利要求9所述的方法,其特征在于,所述目标函数对集合中的函数对中的函数包括以下至少之一:操作系统中的原生函数、开发者自定义函数、混淆函数。
12.根据权利要求1至11中任一项所述的方法,其特征在于,所述根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型,包括:
将所述权限特征向量输入第一检测模型,得到第一检测结果,其中,所述第一检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
将所述操作码序列特征向量输入第二检测模型,得到第二检测结果,其中,所述第二检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
将所述函数调用特征向量输入第三检测模型,得到第三检测结果,其中,所述第三检测结果用于表示所述目标软件的类型是否为所述恶意软件类型;
将所述第一检测结果、所述第二检测结果、以及所述第三检测结果输入到融合检测模型,得到目标检测结果,其中,所述目标检测结果用于表示所述目标软件的类型是否为所述恶意软件类型。
13.根据权利要求12所述的方法,其特征在于,所述第一检测模型、所述第二检测模型、所述第三检测模型、所述融合检测模型中的至少2个模型是采用随机森林算法构建的模型。
14.一种软件检测装置,其特征在于,包括:
获取模块,用于获取目标软件的当前权限集合、当前操作码序列集合以及当前函数对集合,其中,所述当前操作码序列集合包括所述目标软件中的函数对应的操作码序列,所述当前函数对集合包括所述目标软件中具有调用关系的函数对;
第一确定模块,用于根据所述当前权限集合与参考权限集合,确定所述目标软件的权限特征向量,其中,所述参考权限集合包括与恶意软件类型对应的一组权限;
第二确定模块,用于根据所述当前操作码序列集合与参考操作码序列集合,确定所述目标软件的操作码序列特征向量,其中,所述参考操作码序列集合包括与所述恶意软件类型对应的一组操作码序列;
第三确定模块,用于根据所述当前函数对集合与参考函数对集合,确定所述目标软件的函数调用特征向量,其中,所述参考函数对集合包括与所述恶意软件类型对应的一组函数对;
第四确定模块,用于根据所述权限特征向量、所述操作码序列特征向量以及所述函数调用特征向量,确定所述目标软件的类型是否为所述恶意软件类型。
15.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至13任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210335989.6A CN114662108A (zh) | 2022-03-31 | 2022-03-31 | 软件检测方法和装置、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210335989.6A CN114662108A (zh) | 2022-03-31 | 2022-03-31 | 软件检测方法和装置、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114662108A true CN114662108A (zh) | 2022-06-24 |
Family
ID=82032501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210335989.6A Pending CN114662108A (zh) | 2022-03-31 | 2022-03-31 | 软件检测方法和装置、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114662108A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115378747A (zh) * | 2022-10-27 | 2022-11-22 | 北京六方云信息技术有限公司 | 恶意数据检测方法、终端设备以及存储介质 |
CN115396411A (zh) * | 2022-08-23 | 2022-11-25 | 北京星汉未来网络科技有限公司 | 一种获取目标服务器的方法、装置、系统及介质 |
-
2022
- 2022-03-31 CN CN202210335989.6A patent/CN114662108A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115396411A (zh) * | 2022-08-23 | 2022-11-25 | 北京星汉未来网络科技有限公司 | 一种获取目标服务器的方法、装置、系统及介质 |
CN115396411B (zh) * | 2022-08-23 | 2023-04-28 | 北京星汉未来网络科技有限公司 | 一种获取目标服务器的方法、装置、系统及介质 |
CN115378747A (zh) * | 2022-10-27 | 2022-11-22 | 北京六方云信息技术有限公司 | 恶意数据检测方法、终端设备以及存储介质 |
CN115378747B (zh) * | 2022-10-27 | 2023-01-24 | 北京六方云信息技术有限公司 | 恶意数据检测方法、终端设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fan et al. | Dapasa: detecting android piggybacked apps through sensitive subgraph analysis | |
CN107180192B (zh) | 基于多特征融合的安卓恶意应用程序检测方法和系统 | |
US9349006B2 (en) | Method and device for program identification based on machine learning | |
Schmidt et al. | Monitoring smartphones for anomaly detection | |
US9003529B2 (en) | Apparatus and method for identifying related code variants in binaries | |
Crussell et al. | Andarwin: Scalable detection of android application clones based on semantics | |
CN114662108A (zh) | 软件检测方法和装置、电子设备 | |
CN103544430B (zh) | 运算环境安全方法和电子运算系统 | |
CN101388056B (zh) | 一种预防恶意程序的方法、系统及装置 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN105205356B (zh) | 一种app应用重打包检测方法 | |
RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
CN106534268B (zh) | 一种数据共享方法及装置 | |
CN106709336A (zh) | 识别恶意软件的方法和装置 | |
US20230385416A1 (en) | Systems and methods for classifying malware based on feature reuse | |
CN113221032A (zh) | 链接风险检测方法、装置以及存储介质 | |
Kumar et al. | Machine learning based malware detection in cloud environment using clustering approach | |
Meng et al. | Androvault: Constructing knowledge graph from millions of android apps for automated analysis | |
Korine et al. | DAEMON: dataset/platform-agnostic explainable malware classification using multi-stage feature mining | |
CN107085684B (zh) | 程序特征的检测方法和装置 | |
He et al. | On‐Device Detection of Repackaged Android Malware via Traffic Clustering | |
CN116167057B (zh) | 基于关键代码语义检测的代码动态安全加载方法及装置 | |
CN109450853B (zh) | 恶意网站判定方法、装置、终端及服务器 | |
WO2023072002A1 (zh) | 开源组件包的安全检测方法及装置 | |
Chen et al. | Android malware detection method based on graph attention networks and deep fusion of multimodal features |
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 |