CN113987486A - 一种恶意程序检测方法、装置及电子设备 - Google Patents
一种恶意程序检测方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113987486A CN113987486A CN202111197810.7A CN202111197810A CN113987486A CN 113987486 A CN113987486 A CN 113987486A CN 202111197810 A CN202111197810 A CN 202111197810A CN 113987486 A CN113987486 A CN 113987486A
- Authority
- CN
- China
- Prior art keywords
- information
- detected
- common substring
- value
- api
- 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
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种恶意程序检测方法、装置及电子设备,应用于网络安全技术领域,解决压缩API信息过程中丢弃大量信息导致检测误报率高的问题,其中该方法包括:获取第一待检测信息和第二待检测信息,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,目标类程序为恶意程序或非恶意程序;确定第一待检测信息和第二待检测信息之间的第一最大公共子串;获取第一最大公共子串的信息摘要MD5值;将第一最大公共子串的MD5值用于目标类程序检测。
Description
技术领域
本公开涉及网络安全技术领域,尤其涉及一种恶意程序检测方法、装置及电子设备。
背景技术
计算机技术的迅速发展,给各行各业带来了巨大影响变革,与此同时,计算机领域也遭受恶意程序的困扰和侵害。面对错综复杂的网络环境与层出不穷复杂多变的恶意程序,目前检测恶意程序的方法是通过机器学习训练模型,在训练模型的过程中提取样本信息,样本信息中包含多组样本,针对每一组样本提取前1000条应用程序编程接口(Application Programming Interface,API)并转译成对应标识符,再对得到的每组标识符进行去重处理,将相邻的相同标识符去除,以得到训练模型,以使用该模型进行恶意程序检测。但是由于去除了相邻的相同标识符且只使用前1000条进行检测,导致大量信息被丢弃,使用这样的训练模型进行恶意程序检测误报率高。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种恶意程序检测方法、装置及电子设备。
第一方面,本公开提供了一种恶意程序检测方法,该方法包括:
获取第一待检测信息和第二待检测信息,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,目标类程序为恶意程序或非恶意程序;
确定第一待检测信息和第二待检测信息之间的第一最大公共子串;
获取第一最大公共子串的信息摘要MD5值;
将第一最大公共子串的MD5值用于目标类程序检测。
可选的,获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中至少一个API的MD5值;
和/或,
第一最大公共子串的总MD5值。
可选的,获取第一最大公共子串的信息摘要MD5值之后,还包括:
获取第一最大公共子串的API数量;
获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中第一个API的MD5值;
根据第一最大公共子串的API数量,确定第一最大公共子串中最后一个API;
计算第一最大公共子串中最后一个API的MD5值。
可选的,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息;
从第四待检测信息中去除第二最大公共子串,得到第二待检测信息。
可选的,第一待检测信息和第二待检测信息为相同目标类程序的API信息,获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息和第二待检测信息。
可选的,获取第一最大公共子串的MD5值之后,还包括:
若第一最大公共子串与第二最大公共子串相同,则删除第一最大公共子串的MD5值。
可选的,确定第一待检测信息和第二待检测信息之间的第一最大公共子串,包括:
若第二最大公共子串的长度大于或等于预设长度,则确定第一待检测信息和第二待检测信息之间的第一最大公共子串。
可选的,目标类程序为恶意程序;
将第一最大公共子串的MD5值用于目标类程序检测,包括:
若目标存储数据中不存在第一最大公共子串的MD5值,则将第一最大公共子串的MD5值用于恶意程序检测;
其中,目标存储数据为用于进行非恶意程序检测的数据。
第二方面,本公开提供了一种恶意程序检测装置,该装置包括:
接收模块,用于获取第一待检测信息和第二待检测信息,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,目标类程序为恶意程序或非恶意程序;
处理模块,用于确定第一待检测信息和第二待检测信息之间的第一最大公共子串;获取第一最大公共子串的信息摘要MD5值;将第一最大公共子串的MD5值用于目标类程序检测。
可选的,处理模块,还用于获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中至少一个API的MD5值;
和/或,
第一最大公共子串的总MD5值。
可选的,处理模块,还用于获取第一最大公共子串的信息摘要MD5值之后,还包括:
获取第一最大公共子串的API数量;
获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中第一个API的MD5值;
根据第一最大公共子串的API数量,确定第一最大公共子串中最后一个API;
计算第一最大公共子串中最后一个API的MD5值。
可选的,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息;
接收模块,还用于获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息;
从第四待检测信息中去除第二最大公共子串,得到第二待检测信息。
可选的,第一待检测信息和第二待检测信息为相同目标类程序的API信息;
接收模块,还用于获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息和第二待检测信息。
可选的,处理模块,还用于获取第一最大公共子串的MD5值之后,还包括:
若第一最大公共子串与第二最大公共子串相同,则删除第一最大公共子串的MD5值。
可选的,处理模块,还用于确定第一待检测信息和第二待检测信息之间的第一最大公共子串,包括:
若第二最大公共子串的长度大于或等于预设长度,则确定第一待检测信息和第二待检测信息之间的第一最大公共子串。
可选的,目标类程序为恶意程序;
处理模块,还用于将第一最大公共子串的MD5值用于目标类程序检测,包括:
若目标存储数据中不存在第一最大公共子串的MD5值,则将第一最大公共子串的MD5值用于恶意程序检测;
其中,目标存储数据为用于进行非恶意程序检测的数据。
第三方面,本公开提供了一种电子设备,该电子设备包括:处理器,存储器及存储在存储器上并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如第一方面的一种恶意程序检测方法。
第四方面,本公开提供一种计算机可读存储介质,该计算机可读存储介质包括:计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第一方面的一种恶意程序检测方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:提取第一待检测信息和第二待检测信息的最长公共子串,再得到该最长公共子串的信息摘要MD5值,以使用该MD5值检测恶意程序,通过对待检测信息提取最长公共子串,使得检测恶意程序所使用的数据量减少,提高检测恶意程序的效率,同时使用MD5值保留有价值的检测信息,避免提取API特征信息过程中丢弃大量信息导致检测误报率高的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所述一种恶意程序检测方法示意图一;
图2为本公开实施例所述一种恶意程序检测方法示意图二;
图3为本公开实施例所述一种恶意程序检测方法示意图三;
图4为本公开实施例所述一种恶意程序检测装置结构图;
图5为本公开实施例所述一种电子设备结构图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
本发明对于恶意程序的检测在沙箱这一虚拟环境中模拟运行,应用沙箱动态行为分析,从而保障恶意程序无权修改沙箱外的程序及系统设置,保障了系统不会遭到恶意软件及病毒的篡改和入侵。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对沙箱动态行为分析、应用程序编程接口(Application Programming Interface,API)、信息摘要算法(Message-Digest Algorithm 5,MD5)作简单地介绍:
沙箱动态行为分析,在动态分析恶意程序时,为了了解运行时行为,需要在一个隔离的沙箱环境中运行恶意程序,以获得恶意程序的构件和特性,从而得到准确性高的行为分析结果。
应用程序编程接口(Application Programming Interface,API)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程。
信息摘要算法(Message-Digest Algorithm 5,MD5)是一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
本公开实施例所描述的恶意程序检测方法可应用于恶意程序检测装置或者电子设备,其中,该恶意程序检测装置可以为电子设备中可实现恶意程序检测方法的功能模块和/或功能实体。
上述电子设备可以包括:智能手机(如Android手机、IOS手机、Windows Phone手机等)、平板电脑。、掌上电脑、笔记本电脑、视频矩阵、监控平台、移动互联网设备(MID,MobileInternet Devices)或穿戴式设备、服务器,例如,云服务器等设备,上述仅是举例,而非穷举,包含但不限于上述设备。
图1为本公开提供的恶意程序检测方法的示意图一,该方法包括:
步骤S110,获取第一待检测信息和第二待检测信息。
本公开实施例中第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,目标类程序为恶意程序或非恶意程序。
其中,待检测信息包括进程/线程活动信息、注册表访问信息、系统服务访问信息、窗口/模块操作信息、网络访问信息、文件访问信息等;恶意程序可以是木马,僵尸程序,蠕虫病毒文件;非恶意程序可以是正规程序,例如迅雷,本公开对此不做限定。
在一些实施例中,由于目标类程序类型不同以及对待检测信息的拆分方式不同,有包括但不限于下述四种情况:
(1)第一待检测信息和第二待检测信息可以为恶意程序(黑样本)中不同的API信息,例如恶意程序中两段代码A、B。该API信息由多个API序列组成,每个API序列由多个字符组成。例如A中包括abc,B中包括bcd,a中包括123。相应的,下述对API序列中字符的论述类似不再赘述。
(2)第一待检测信息和第二待检测信息可以为非恶意程序(白样本)中不同的API信息,例如X、Y。该API信息由多个API序列组成,例如X中包括xyz,Y中包括xym。
需要说明的是,在第一待检测信息和第二待检测信息为不同的API信息的情况下,在获取第一待检测信息和第二待检测信息之前,还可以获取到任意两个待检测信息(第三待检测信息和第四待检测信息),进一步确定这两个待检测信息的第二最大公共子串,获取该第二最大公共子串的MD5值以用于后续的恶意程序检测;然后从第三待检测信息中去除第二最大公共子串得到第一待检测信息,从第四待检测信息中去除第二最大公共子串得到第二待检测信息。
示例性地,图2为本公开实施例所述一种恶意程序检测方法示意图二,如图2中的(a)所示,获取两个待检测信息A1、B1,A1中包括abceff,B1中包括bcdeff,确定A1、B1之间的最长公共子串为eff;如图2中的(b)所示将eff从A1中删除得到A,A中包括abc;如图2中的(c)所示将eff从B1中删除得到B,B中包括bcd。
(3)第一待检测信息和第二待检测信息可以为恶意程序(黑样本)中相同的API信息中的两部分API序列,例如,恶意程序中一段代码C中包括acdabd,第一检测信息可以为acd,第二检测信息为abd,本公开对API序列的拆分方式不做限定。
(4)第一待检测信息和第二待检测信息可以为非恶意程序(白样本)中相同的API信息中的两部分API序列,例如,Z中包括xymxyn,第一检测信息可以为xym,第二检测信息为xyn。
需要说明的是,在第一待检测信息和第二待检测信息为相同的API信息的情况下,且在获取第一待检测信息和第二待检测信息之前,还可以获取到任意两个待检测信息(第三待检测信息和第四待检测信息),进一步确定这两个待检测信息的第二最大公共子串,获取该第二最大公共子串的MD5值以用于后续的恶意程序检测;然后从第三待检测信息中去除第二大公共子串,得到第一待检测信息和第二待检测信息。
示例性地,图3为本公开实施例所述一种恶意程序检测方法示意图三,如图3中的(a)所示,获取两个待检测信息A2、D2,A2中包括abceffbcd,D2中包括eff,确定A2、D2之间的最长公共子串为eff;如图3中的(b)所示,将eff从A2中删除得到A、B,删除最长公共子串的A2的A、B两部分不做拼接,将作为第一检测信息A和第二检测信息B做后续确定最长公共字符串的处理,其中A中包括abc,B中包括bcd。
为了便于说明,下述步骤将针对恶意程序(黑样本)进行介绍,针对非恶意程序(白样本)的待检测信息的处理方法与恶意程序的方法相同或相似,本公开在此不做赘述。
S120,确定第一待检测信息和第二待检测信息之间的第一最大公共子串。
确定最长公共子串的方法主要包括基于动态规划(Dynamic Programming)的方法、基于广义后缀树(Generalized Suffix Tree)的方法和基于后缀数组(Suffix Array)的方法。
基于动态规划的方法构造一个二维表,使用单向递推的方法求出最长公共子串。
基于广义后缀树的方法把给定的源字符串的所有后缀建成一棵树,树的每个节点都是一个字符串,树根是空字符串。通过在这棵树上找到深度最大并且从属于所有源字符串的节点,那么从根到这个节点路径上的所有节点字符串拼接起来就是最长公共子串。
后缀数组是后缀索引按照后缀的字典顺序排列而组成的数组。基于后缀数组的方法将源字符串组合成一个新串,中间插入哨兵(sentinel)字符,根据合成串构造后缀数组和名次数组(后缀数组取逆),并由二者计算相邻后缀数组元素指向的后缀的最长公共前缀数组,最后根据后缀数组和最长公共前缀数组计算最长公共子串。
本领域技术人员可以通过上述方法确定第一待检测信息和第二待检测信息之间的第一最大公共子串,下述将以基于动态规划的方法为例进行具体介绍。
示例性地,如下表所示,将A1:abceff的每个API作为二维表的行,将B1:bcdeff的每个API作为二维表的列,比较该二维表每行每列对应的字符是否相同,第一行第二列相同,则设置第一行第二列对应的表格中的数值为1,否则为0,然后查找出该二维表的表格数值为1的最长对角线,对应可以得到最长公共子串eff。
需要说明的是,确定第一待检测信息和第二待检测信息之间的第一最大公共子串并不仅限于上述方法,本公开在此不做赘述。
在一些实施例中,本领域技术人员根据实际需要对最长公共子串的长度进行设置,以使确定两个待检测信息之间有效的最长公共子串,一般情况下,最长共公共子串的长度大于或等于1,且小于或等于最长公共子串本身的长度。
若第二最大公共子串的长度大于或等于预设长度,则确定第一待检测信息和第二待检测信息之间的第一最大公共子串。
若第二最大公共子串的长度小于预设长度,值得强调的是,第二最大公共子串的长度小于预设长度存在两种情况,两个检测信息长度大于预设长度而第二最大公共子串的长度小于预设长度,则继续从该最长共公共子串的第二个API开始继续确定最长公共子串;两个检测信息长度小于或等于预设长度而第二最大公共子串的长度小于预设长度,则表示这两个检测信息的最长公共子串已经确定完毕,需要确定其他的待检测信息的最长公共子串。
示例性地,预设长度为3个API序列,两个待检测信息A1、B1,A1中包括abceff,B1中包括bcdeff,确定A1、B1之间的最长公共子串为eff,计算eff的长度为3,并将eff从A1、B1中删除,得到A、B,其中A中包括abc,B中包括bcd,确定A、B之间的最长公共子串为bc,计算bc的长度为2,则表示最长公共子串的长度小于预设长度3,对bc不做处理,然后确定其他待检测信息的最长公共子串。
通过确定所述第一待检测信息和所述第二待检测信息之间的第一最大公共子串,作为恶意程序样本中相同的特征信息,以利用待检测信息之间的最大公共子串这一特征信息进行恶意程序检测,对恶意程序样本进行压缩,减少检测所使用的数据量,同时保证特征信息的完整性,提高了恶意程序检测的检出率,提升了恶意程序检测的效果。
S130,获取第一最大公共子串的信息摘要MD5值。
其中,MD5值是通过MD5算法计算得到的数值。
在一些实施例中,获取第一最大公共子串的信息摘要MD5值包括:计算第一最大公共子串中至少一个API的MD5值;和/或,第一最大公共子串的总MD5值。
示例性地,计算第一最大公共子串中第一个API的MD5值;或者计算第一最大公共子串的总MD5值;或者计算第一最大公共子串中第一个API的MD5值和第一最大公共子串的总MD5值。
在一些实施例中,在获取第一最大公共子串的信息摘要MD5值之后,获取所述第一最大公共子串的API数量,然后计算第一最大公共子串中至少一个API的MD5值包括:计算所述第一最大公共子串中第一个API的MD5值;根据所述第一最大公共子串的API数量,确定所述第一最大公共子串中最后一个API;计算所述第一最大公共子串中最后一个API的MD5值。
示例性地,沿用上述待测信息为A1、B1一例,A1中包括abceff,B1中包括bcdeff,确定A1、B1之间的最长公共子串为eff,得到eff的API数量为3,然后计算eff中第一个API“e”的MD5值,根据eff的API数量为3确定最后一个API“f”的MD5值,以及eff总的MD5值。
实际应用中,由于最长公共子串包括至少一个API,一般情况下是两个以上的API序列,而比对API序列是否相同所需要的时间长,导致比对效率低,而本公开通过MD5算法将第一最长公共子串中包含的较长API序列压缩成16字节的MD5值,减少后续恶意程序检测时比对最长公共字串所需要的时间,提高比对效率。
进一步的,创建API字典,将获取到的第一最长公共子串的MD5值以及API数量进行对应存储,将以使用该API字典与恶意程序进行对比,从而进行恶意程序检测。
在一些实施例中,基于得到第二最大公共子串,在获取第一最大公共子串的信息摘要MD5值之后,比较第一最大公共子串与第二公共子串是否相同,若相同,则将第一最大公共子串的MD5值删除。
示例性地,API字典中已经存有第二最长公共子串eff的MD5值,在待检测信息A1:abceff和B1:bcdeff确定第一最长公共子串为“eff”后,得到第一最长公共子串“eff”的MD5值,在添加至API字典时,比较得到第一最长公共子串“eff”的MD5值与第二最长公共子串eff的MD5值相同,则将第一最长公共子串“eff”的MD5值删除,不会添加至API字典。
由于实际应用中待检测信息为较长的API序列,数据量大,即使提取待检测信息的最长公共子串后,仍不便于检测恶意程序,在本公开实施例所提供的一种实施方式中,通过计算最大公共子串的MD5值,进一步压缩待检测信息为16字节的字符串,不仅节省数据存储空间,还节省了恶意程序检测的时间,提升了恶意程序检测的效率。
S140,将第一最大公共子串的MD5值用于目标类程序检测。
如上所述,将第一最长公共子串中第一个API的MD5值、第一最长公共子串中最后一个API的MD5值、第一最长公共子串的总MD5值以及第一最大公共子串的API数量用于恶意程序检测或非恶意程序检测。
例如,在对目标类程序检测的过程中,比对目标类程序的API序列的MD5值,若比对存在与第一最长公共子串中第一个API的MD5值相同的MD5值,该API记为s,则根据第一最大公共子串的API数量从s所在的位置跳转至该数量对应的API序列,该API记为t,进行比对,若比对结果与第一最长公共子串中最后一个API的MD5值相同,则进一步比较s至t这一API序列的总MD5值与第一最长公共子串的总MD5值是否相同,若相同则表示目标类程序为恶意程序。若不同,则从s所在位置继续进行下一API的对比。
在一些实施例中,目标类程序为恶意程序,在将第一最大公共子串的MD5值用于目标类程序检测的过程中,首先在目标存储数据中查找是否存在第一最大公共子串的MD5值,其中,目标存储数据为用于进行非恶意程序检测的数据,包括非恶意程序的最长公共子串的MD5值和API数量。若在目标存储数据中存在第一最大公共子串的MD5值,则将该第一最大公共子串的MD5值从API字典中删除;若在目标存储数据中不存在第一最大公共子串的MD5值,则将该第一最大公共子串的MD5值用于恶意程序检测,存储于API字典。
通过与目标存储数据的对比,将非恶意程序的最长公共子串这一特征信息的MD5值从API字典中删除,从而避免将非恶意程序检测为恶意程序,降低误报率,以提升恶意程序检测的效果。
综上所述,本公开提取第一待检测信息和第二待检测信息的最长公共子串对检测信息进行压缩,再得到该最长公共子串的信息摘要MD5值,以使用该MD5值检测恶意程序,通过对待检测信息的压缩,提高检测恶意程序的效率,同时使用MD5值保留有价值的检测信息,避免压缩API信息过程中丢弃大量信息导致检测误报率高的问题。
如图4所示,本公开提供一种恶意程序检测装置,该装置包括:
接收模块410,用于获取第一待检测信息和第二待检测信息,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,目标类程序为恶意程序或非恶意程序;
处理模块420,用于确定第一待检测信息和第二待检测信息之间的第一最大公共子串;获取第一最大公共子串的信息摘要MD5值;将第一最大公共子串的MD5值用于目标类程序检测。
可选的,处理模块420,还用于获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中至少一个API的MD5值;
和/或,
第一最大公共子串的总MD5值。
可选的,处理模块420,还用于获取第一最大公共子串的信息摘要MD5值之后,还包括:
获取第一最大公共子串的API数量;
获取第一最大公共子串的信息摘要MD5值,包括:
计算第一最大公共子串中第一个API的MD5值;
根据第一最大公共子串的API数量,确定第一最大公共子串中最后一个API;
计算第一最大公共子串中最后一个API的MD5值。
可选的,第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息;
接收模块410,还用于获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息;
从第四待检测信息中去除第二最大公共子串,得到第二待检测信息。
可选的,第一待检测信息和第二待检测信息为相同目标类程序的API信息;
接收模块410,还用于获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将第二最大公共子串的MD5值用于恶意程序检测;
获取第一待检测信息和第二待检测信息,包括:
从第三待检测信息中去除第二最大公共子串,得到第一待检测信息和第二待检测信息。
可选的,处理模块420,还用于获取第一最大公共子串的MD5值之后,还包括:
若第一最大公共子串与第二最大公共子串相同,则删除第一最大公共子串的MD5值。
可选的,处理模块420,还用于确定第一待检测信息和第二待检测信息之间的第一最大公共子串,包括:
若第二最大公共子串的长度大于或等于预设长度,则确定第一待检测信息和第二待检测信息之间的第一最大公共子串。
可选的,目标类程序为恶意程序;
处理模块420,还用于将第一最大公共子串的MD5值用于目标类程序检测,包括:
若目标存储数据中不存在第一最大公共子串的MD5值,则将第一最大公共子串的MD5值用于恶意程序检测;
其中,目标存储数据为用于进行非恶意程序检测的数据。
值得注意的是,上述恶意程序检测装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本公开的保护范围。
如图5所示,本公开实施例提供一种电子设备,该电子设备包括:处理器501,存储器502及存储在存储器502上并可在处理器501上运行的计算机程序,该计算机程序被处理器501可以实现上述一种恶意程序检测方法中第一终端执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本公开实施例提供一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现上述一种恶意程序检测方法中第一终端执行的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,该计算机可读存储介质可以为只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本公开可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述的方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种恶意程序检测方法,其特征在于,包括:
获取第一待检测信息和第二待检测信息,所述第一待检测信息和所述第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,所述目标类程序为恶意程序或非恶意程序;
确定所述第一待检测信息和所述第二待检测信息之间的第一最大公共子串;
获取所述第一最大公共子串的信息摘要MD5值;
将所述第一最大公共子串的MD5值用于目标类程序检测。
2.根据权利要求1所述的方法,其特征在于,所述获取所述第一最大公共子串的信息摘要MD5值,包括:
计算所述第一最大公共子串中至少一个API的MD5值;
和/或,
所述第一最大公共子串的总MD5值。
3.根据权利要求2所述的方法,其特征在于,所述获取所述第一最大公共子串的信息摘要MD5值之后,还包括:
获取所述第一最大公共子串的API数量;
所述获取所述第一最大公共子串的信息摘要MD5值,包括:
计算所述第一最大公共子串中第一个API的MD5值;
根据所述第一最大公共子串的API数量,确定所述第一最大公共子串中最后一个API;
计算所述第一最大公共子串中最后一个API的MD5值。
4.根据权利要求1所述的方法,其特征在于,所述第一待检测信息和第二待检测信息为不同目标类程序的应用程序编程接口API信息;
所述获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将所述第二最大公共子串的MD5值用于恶意程序检测;
所述获取第一待检测信息和第二待检测信息,包括:
从所述第三待检测信息中去除所述第二最大公共子串,得到所述第一待检测信息;
从所述第四待检测信息中去除所述第二最大公共子串,得到所述第二待检测信息。
5.根据权利要求1所述的方法,其特征在于,所述第一待检测信息和第二待检测信息为相同目标类程序的API信息;
所述获取第一待检测信息和第二待检测信息之前,还包括:
确定第三待检测信息和第四待检测信息之间的第二最大公共子串;
将所述第二最大公共子串的MD5值用于恶意程序检测;
所述获取第一待检测信息和第二待检测信息,包括:
从所述第三待检测信息中去除所述第二最大公共子串,得到所述第一待检测信息和所述第二待检测信息。
6.根据权利要求4或5所述的方法,其特征在于,所述获取所述第一最大公共子串的MD5值之后,还包括:
若所述第一最大公共子串与所述第二最大公共子串相同,则删除所述第一最大公共子串的MD5值。
7.根据权利要求1所述的方法,所述确定所述第一待检测信息和所述第二待检测信息之间的第一最大公共子串,包括:
若所述第二最大公共子串的长度大于或等于预设长度,则确定所述第一待检测信息和所述第二待检测信息之间的第一最大公共子串。
8.根据权利要求1至7任一项所述的方法,其特征在于,所述目标类程序为恶意程序;
所述将所述第一最大公共子串的MD5值用于目标类程序检测,包括:
若目标存储数据中不存在所述第一最大公共子串的MD5值,则将所述第一最大公共子串的MD5值用于恶意程序检测;
其中,所述目标存储数据为用于进行非恶意程序检测的数据。
9.一种恶意程序检测装置,其特征在于,包括:
接收模块,用于获取第一待检测信息和第二待检测信息,所述第一待检测信息和所述第二待检测信息为不同目标类程序的应用程序编程接口API信息,或者,为相同目标类程序的API信息,所述目标类程序为恶意程序或非恶意程序;
处理模块,用于确定所述第一待检测信息和所述第二待检测信息之间的第一最大公共子串;获取所述第一最大公共子串的信息摘要MD5值;将所述第一最大公共子串的MD5值用于目标类程序检测。
10.一种电子设备,其特征在于,包括:处理器,存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至8任一项所述的一种恶意程序检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111197810.7A CN113987486A (zh) | 2021-10-14 | 2021-10-14 | 一种恶意程序检测方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111197810.7A CN113987486A (zh) | 2021-10-14 | 2021-10-14 | 一种恶意程序检测方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113987486A true CN113987486A (zh) | 2022-01-28 |
Family
ID=79738599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111197810.7A Pending CN113987486A (zh) | 2021-10-14 | 2021-10-14 | 一种恶意程序检测方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113987486A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361398A (zh) * | 2022-10-19 | 2022-11-18 | 成都飞机工业(集团)有限责任公司 | 一种数据备份容灾方法、装置、设备及存储介质 |
-
2021
- 2021-10-14 CN CN202111197810.7A patent/CN113987486A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361398A (zh) * | 2022-10-19 | 2022-11-18 | 成都飞机工业(集团)有限责任公司 | 一种数据备份容灾方法、装置、设备及存储介质 |
CN115361398B (zh) * | 2022-10-19 | 2023-03-14 | 成都飞机工业(集团)有限责任公司 | 一种数据备份容灾方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359439B (zh) | 软件检测方法、装置、设备及存储介质 | |
US20200193024A1 (en) | Detection Of Malware Using Feature Hashing | |
CN107066883B (zh) | 用于阻断脚本执行的系统和方法 | |
US9015814B1 (en) | System and methods for detecting harmful files of different formats | |
US20120151586A1 (en) | Malware detection using feature analysis | |
US20110154495A1 (en) | Malware identification and scanning | |
CN108563952B (zh) | 文件的病毒检测方法、装置及存储介质 | |
CN111368289B (zh) | 一种恶意软件检测方法和装置 | |
US11270001B2 (en) | Classification apparatus, classification method, and classification program | |
CN111914257A (zh) | 文档检测的方法、装置、设备、及计算机存储介质 | |
Naik et al. | Fuzzy-import hashing: A static analysis technique for malware detection | |
CN108182360B (zh) | 一种风险识别方法及其设备、存储介质、电子设备 | |
CN111723371A (zh) | 构建恶意文件的检测模型以及检测恶意文件的方法 | |
US10747879B2 (en) | System, method, and computer program product for identifying a file used to automatically launch content as unwanted | |
CN110362995A (zh) | 一种基于逆向与机器学习的恶意软件检测及分析系统 | |
CN112487422A (zh) | 一种恶意文档检测方法、装置、电子设备及存储介质 | |
CN113987486A (zh) | 一种恶意程序检测方法、装置及电子设备 | |
CN108229168B (zh) | 一种嵌套类文件的启发式检测方法、系统及存储介质 | |
CN109145589B (zh) | 应用程序获取方法及装置 | |
CN111666258A (zh) | 信息处理方法和装置、信息查询方法和装置 | |
CN113890758A (zh) | 一种威胁情报方法、装置、设备及计算机存储介质 | |
CN113190847A (zh) | 一种脚本文件的混淆检测方法、装置、设备及存储介质 | |
CN112583827A (zh) | 一种数据泄露检测方法及装置 | |
JP7031438B2 (ja) | 情報処理装置、制御方法、及びプログラム | |
Chen et al. | IHB: A scalable and efficient scheme to identify homologous binaries in IoT firmwares |
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 |