CN115098858A - 一种恶意软件检测方法及装置 - Google Patents
一种恶意软件检测方法及装置 Download PDFInfo
- Publication number
- CN115098858A CN115098858A CN202210690482.2A CN202210690482A CN115098858A CN 115098858 A CN115098858 A CN 115098858A CN 202210690482 A CN202210690482 A CN 202210690482A CN 115098858 A CN115098858 A CN 115098858A
- Authority
- CN
- China
- Prior art keywords
- behavior
- software
- learner
- features
- 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/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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种恶意软件检测方法及装置,将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。通过预先的训练,可以使动态行为检测模型达到恶意软件检测精确率较高的效果,该模型对第一原始数据集分别从网络行为和API调用行为两方面提取特征,特征提取方向增加,使动态行为检测挖掘信息更加全面,检测具有全面深入性,进而检测结果精确率较高。
Description
技术领域
本申请涉及机器学习技术领域,尤其涉及一种恶意软件检测方法及装置。
背景技术
恶意软件是对破坏系统正常运行的软件的统称。恶意软件介于病毒软件和正规软件之间,同时具备正常功能如下载、媒体播放等和恶意行为如弹广告、开后门等。这些恶意软件可以与多种规避技术和安全漏洞相结合,突破现有传统防御系统的检测,给用户带来实质危害。所以,研究恶意软件检测方法是维护网络世界安全的重要研究方向。
现有的恶意软件检测大致可以分为两类,即静态文件检测方法和动态行为检测方法。随着代码混淆技术、代码加密技术的发展,恶意软件的源代码可以隐藏部分典型特征,使得利用静态文件检测方法对恶意软件的源代码中的典型特征进行检测变的十分困难。而动态行为检测方法一般基于网络行为的特征对恶意软件进行检测,可以很好的弥补静态文件检测的这种缺点,所以目前常用动态行为检测方法对恶意软件进行检测。
但是,传统的网络行为特征仅包括文件操作特征、注册表操作特征和简单的网络连接请求特征,挖掘信息比较片面。而对恶意软件的检测效果极大程度上依赖对提取到的特征,这就使得传统的动态行为检测方法对恶意软件检测的准确率较低。
发明内容
本申请提供一种恶意软件检测方法及装置,使恶意软件检测时挖掘信息更加全面,对恶意软件检测的准确率较高。
第一方面,本申请提供一种恶意软件检测方法,包括:
将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
可选的,所述动态行为检测模型包括特征提取模块、弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;
所述利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件,包括:
利用特征提取模块对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征;
利用所述网络行为特征学习器,基于所述网络行为特征,确定所述待检测软件为恶意软件的第一概率;
利用所述API调用行为特征学习器,基于所述API调用行为特征确定所述待检测软件为恶意软件的第二概率;
利用所述强学习器,基于所述第一概率和所述第二概率,确定所述待检测软件是否为恶意软件。
该模型可以通过不同弱学习器分别基于多方面的特征对待检测软件进行初步检测,再由强学习器综合多方面特征的检测结果进行综合判断,最终确定出待检测软件的恶意性。从而,可以提高检测准确率,使动态行为检测模型的检测效果更佳。
可选的,所述网络行为特征包括:文件操作相关特征、注册表操作相关特征、网络连接请求相关特征、网络外联中的域名相关特征、内网探测信息相关特征中至少一项;
所述API调用行为特征包括:API调用序列顺序特征、API调用序列内容特征中至少一项。
上述软件的网络行为特征可以比较好的表征软件是否具有恶意性,由于互联网与技术的发展,越来越多的恶意软件都具有一定的网络行为,网络行为可以较直接概括软件外在表现特征;恶意软件可以通过API调用来实现其功能,根据以往经验可知良性应用软件与不同种类的恶意软件在访问的API序列上存在较大差异,所以API调用行为可以从底层全面反映软件的行为特征,从网络行为特征和API调用行为特征这两方面进行信息挖掘,可以使待检测软件的特征被全面深入检测,使动态行为检测模型检测的精确率提高。
可选的,所述方法还包括:
基于Adaboost算法,构建所述网络行为特征学习器;
基于双向长短期记忆算法,构建所述API调用行为特征学习器;
基于逻辑回归算法,构建所述强学习器。
Adaboost算法相对于其他算法,有经过多次迭代计算增加其算法分类的准确性,二分类性能较好;双向长短期记忆算法,可以使信息双向传递,与输入和输出都有依赖关系,针对具有很强的时序性的API调用行为特征,双向长短期记忆算法具有绝对优势。逻辑回归算法具有训练速度快、易通过调整阈值提高分类精确率的优势。
可选的,所述动态行为检测模型的训练过程,包括:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
动态行为检测模型训练过程即为分层模型训练过程,先对第一层学习器进行训练,再以第一层学习器的输出结果对第二层学习器进行训练,进而完成整个模型的训练过程。该模型可以经过多次训练,使动态行为检测模型检测出恶意软件的准确率不断增加。
可选的,所述方法还包括:
判断所述网络行为特征的数量和所述API调用行为特征的数量之和是否小于预设数量;
若根据所述网络行为特征和所述API调用行为特征确定所述待检测软件不是恶意软件,且确定所述网络行为特征的数量和所述API调用行为特征的数量之和小于预设数量,则利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件。
上述判断出所述网络行为特征的数量和所述API调用行为特征的数量之和小于预设数量,可能存在恶意软件针对动态行为检测融入了诸如反虚拟机以及反调试等规避技术,获取到的可作为恶意软件的证据的特征数据较少,动态行为检测模型检测到恶意软件的准确率较低。利用静态检测模型检测可以有效弥补动态行为检测模型存在的缺陷,静态检测和动态行为检测取得很好的互补效果,整体检测准确率更高。
可选的,所述利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件,包括:
将所述待检测软件的源数据作为第二原始数据集;
利用预先训练好的静态检测模型,对所述第二原始数据集进行特征提取,确定可执行文件PE原始特征,并根据所述PE原始特征判断所述待检测软件是否为恶意软件;
所述PE原始特征包括:PE自带属性、程序的程序入口点相对于整个程序的位置节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节的数量、装载数据的节的数量、程序的文件大小与映射到内存中的文件大小的比值、所有节的平局熵值、除代码节之外是否存在其他具有可执行权限的节、导入表导出表的动态链接库分布特征中至少一项。
静态检测模型最终的检测效果极大程度上依赖对原始数据特征的提取,因而提取有效特征十分必要,所述静态检测模型在现有技术基础上进行改进,从更多的方面进行有效的特征提取,使静态检测模型挖掘信息量足够,增加静态检测模型检测出恶意软件的准确率。
第二方面,本申请提供一种模型训练方法,用于对动态行为检测模型进行训练,所述动态行为检测模型包括弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;所述方法包括:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
第三方面,本申请提供一种恶意软件检测装置,包括:
数据集确定模块,用于将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;
恶意软件检测模块,用于利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
可选的,所述动态行为检测模型包括特征提取模块、弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;
所述特征提取模块,具体用于利用特征提取模块对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征;
所述网络行为特征学习器模块,具体用于利用所述网络行为特征学习器,基于所述网络行为特征,确定所述待检测软件为恶意软件的第一概率;
所述API调用行为特征学习器模块,具体用于利用所述API调用行为特征学习器,基于所述API调用行为特征确定所述待检测软件为恶意软件的第二概率;
所述强学习器模块,具体用于利用所述强学习器,基于所述第一概率和所述第二概率,确定所述待检测软件是否为恶意软件。
可选的,所述网络行为特征包括:文件操作相关特征、注册表操作相关特征、网络连接请求相关特征、网络外联中的域名相关特征、内网探测信息相关特征中至少一项;
所述API调用行为特征包括:API调用序列顺序特征、API调用序列内容特征中至少一项。
可选的,所述装置还包括学习器构建模块,用于:
基于Adaboost算法,构建所述网络行为特征学习器;
基于双向长短期记忆算法,构建所述API调用行为特征学习器;
基于逻辑回归算法,构建所述强学习器。
可选的,所述装置还包括模型训练模块,用于:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
可选的,所述装置还包括静态检测模块,用于:
判断所述网络行为特征的数量和所述API调用行为特征的数量之和是否小于预设数量;
若根据所述网络行为特征和所述API调用行为特征确定所述待检测软件不是恶意软件,且确定所述网络行为特征的数量和所述API调用行为特征的数量之和小于预设数量,则利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件。
可选的,所述静态检测模块在利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件时,具体用于:
将所述待检测软件的源数据作为第二原始数据集;
利用预先训练好的静态检测模型,对所述第二原始数据集进行特征提取,确定可执行文件PE原始特征,并根据所述PE原始特征判断所述待检测软件是否为恶意软件;
所述PE原始特征包括:PE自带属性、程序的程序入口点相对于整个程序的位置节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节的数量、装载数据的节的数量、程序的文件大小与映射到内存中的文件大小的比值、所有节的平局熵值、除代码节之外是否存在其他具有可执行权限的节、导入表导出表的动态链接库分布特征中至少一项。
第四方面,本申请提供一种电子设备,包括:存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于调用并执行所述存储器中的程序指令,执行如第一方面任一项或第二方面任一项所述的方法。
第五方面,本申请提供一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面任一项或第二方面任一项的方法的计算机程序。
本申请提供了一种恶意软件检测方法及装置,将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。通过预先的训练,可以使动态行为检测模型达到恶意软件检测精确率较高的效果,该模型对第一原始数据集分别从网络行为和API调用行为两方面提取特征,特征提取方向增加,使动态行为检测挖掘信息更加全面,检测具有全面深入性,进而检测结果精确率较高。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的一种应用场景示意图;
图2为本申请一实施例提供的一种恶意软件检测方法的流程图;
图3为本申请一实施例提供的一种动态行为检测模型的架构图;
图4为本申请一实施例提供的一种动静态结合检测模型的架构图;
图5为本申请一实施例提供的一种恶意软件检测装置的结构示意图;
图6为本申请一实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
恶意软件是对破坏系统正常运行的软件的统称。恶意软件介于病毒软件和正规软件之间,同时具备正常功能如下载、媒体播放等和恶意行为如弹广告、开后门等。这些恶意软件可以与多种规避技术和安全漏洞相结合,突破现有传统防御系统的检测,给用户带来实质危害。所以,研究恶意软件检测方法是维护网络世界安全的重要研究方向。
现有的恶意软件检测大致可以分为两类,即静态文件检测方法和动态行为检测方法。静态文件检测主要对软件的源代码进行检测,动态行为检测是对软件执行过程中产生的数据进行检测。随着代码混淆技术、代码加密技术的发展,恶意软件的源代码可以隐藏部分典型特征,使得利用静态文件检测方法对恶意软件的源代码中的典型特征进行检测变的十分困难。而动态行为检测方法一般基于网络行为的特征对恶意软件进行检测,可以很好的弥补静态文件检测的这种缺点,所以目前常用动态行为检测方法对恶意软件进行检测。
但是,传统的网络行为特征仅包括文件操作特征、注册表操作特征和简单的网络连接请求特征,只可以较直接概括程序外在表现特征,挖掘信息比较片面。而对恶意软件的检测效果极大程度上依赖对提取到的特征,这就使得传统的动态行为检测方法从单一方向上对恶意软件检测的准确率较低。
基于此,本申请提供一种恶意软件检测方法及装置,使恶意软件检测时挖掘信息更加全面,对恶意软件检测的准确率较高。
下面结合说明书附图对本申请实施例作进一步详细描述。
图1为本申请提供的一种应用场景示意图。本申请可以在日常使用的计算机中检测出恶意软件。在计算机系统的使用过程中,恶意软件会破坏系统正常运行,造成用户的损失,所以需要快速精确检验出恶意软件,防止恶意软件影响到计算机的正常使用。为了对图1中计算机中安装的软件进行检测,可以在一服务器中加载本申请提出的恶意软件检测方法。将计算机中待检测软件的相关数据(通过有线/无线)传输到服务器中,服务器执行本申请的方法,应用本申请提出的动态行为检测模型,对恶意软件的信息进行全面的挖掘,最终确定出恶意软件检测结果(是否为恶意软件)。
另外,本申请的恶意软件检测方法可以被集成为杀毒软件或杀毒软件中的检测功能。
恶意软件检测具体的实现方式可以参考以下实施例。
图2为本申请一实施例提供的一种恶意软件检测方法的流程图,本实施例的方法的执行主体可以为以上场景中的服务器,还可以为其它具备计算能力的设备(计算机、智能手机等)。如图2所示的,该方法包括:
S201、将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集。
对于本申请实施例,对待检测软件进行检测时,可先运行该待检测软件,对待检测软件运行过程中产生的所有数据进行网络行为数据和API调用序列数据的提取,提取出的网络行为数据和API调用序列数据为第一原始数据集。
其中,由于互联网与技术的发展,用户的网络行为也变得多种多样,导致海量的网络行为数据不断产生,网络行为数据包括采集到网络内各个终端的网络行为数据;API调用序列数据包括指向触发API使用的API数据,恶意软件可以通知系统执行某些操作的API调用来实现其功能。
在一些场景中,可以建立本实施例的方法的执行主体与待检测软件所在设备之间的通信连接,在进行检测前,由本实施例的方法的执行主体向待检测软件所在设备发起数据请求,以使待检测软件所在设备响应该数据请求,向执行主体反馈该待检测软件的全部相关数据,由执行主体从中筛选出软件运行过程中产生的网络行为数据和API调用序列数据。
在另一些场景中,可以建立本实施例的方法的执行主体与待检测软件所在设备之间的通信连接,在进行检测前,由本实施例的方法的执行主体向待检测软件所在设备发起数据请求,以使待检测软件所在设备响应该数据请求,从该待检测软件的全部相关数据中筛选出软件运行过程中产生的网络行为数据和API调用序列数据,并反馈给执行主体。
在另一些场景中,可以直接从待检测软件所在设备中将该软件运行过程中产生的网络行为数据和API调用序列数据提取出来,上传到执行主体。
S202、利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
预先构建一个动态行为检测模型,并对该模型进行训练,使其具备基于待检测软件的运行过程中产生的网络行为数据和API调用序列数据判断是否为恶意软件的能力。同时,基于该模型可以对第一原始数据集进行网络行为特征和API调用行为特征的提取,并基于提取的特征判断待检测软件是否为恶意软件。
本实施例提供的恶意软件检测方法将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。通过预先的训练,可以使动态行为检测模型达到恶意软件检测精确率较高的效果,该模型对第一原始数据集分别从网络行为和API调用行为两方面提取特征,特征提取方向增加,使动态行为检测挖掘信息更加全面,检测具有全面深入性,进而检测结果精确率较高。在一些实验中,通常使用实验结果的精确率、召回率和F1分数表征恶意软件检测的效果。精确率是指正确检测出恶意样本的数量占所有被检测出为恶意样本的数量的比例,其侧面反映了对恶意样本检测的误报率,误报率随精确率的升高而降低。召回率是指正确检测出恶意样本的数量占所有标注为恶意样本的数量的比例,其侧面反映了对恶意样本检测的漏报率,漏报率随召回率的升高而降低。F1分数是对精确率和召回率的加权调和,是对实验结果的综合评价。
一些具体实施例中,上述的动态行为检测模型可以包括特征提取模块、弱学习器和强学习器,弱学习器包括网络行为特征学习器和API调用行为特征学习器。相对应,上述利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件,具体可以包括:利用特征提取模块对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征;利用所述网络行为特征学习器,基于所述网络行为特征,确定所述待检测软件为恶意软件的第一概率;利用所述API调用行为特征学习器,基于所述API调用行为特征确定所述待检测软件为恶意软件的第二概率;利用所述强学习器,基于所述第一概率和所述第二概率,确定所述待检测软件是否为恶意软件。
在本实施例中,利用特征提取模块对第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征。动态行为检测模型为分层模型集成框架,该框架将网络行为特征学习器和API调用行为特征学习器两个弱学习器作为第一层,分别基于网络行为特征和API调用行为特征,计算待检测软件为恶意软件的概率(在本申请中分别称为第一概率和第二概率);该框架将强学习器作为第二层,基于第一层弱学习器的输出结果,综合判断待检测软件是否为恶意软件。
该模型可以通过不同弱学习器分别基于多方面的特征对待检测软件进行初步检测,再由强学习器综合多方面特征的检测结果进行综合判断,最终确定出待检测软件的恶意性。从而,可以提高检测准确率,使动态行为检测模型的检测效果更佳。在一些实验中,可以从下列表1第一层检测模型实验结果和下列表2第二层检测模型实验结果比较。第二层模型的结果为动态行为检测模型的最终实验结果,与第一层模型结果进行对比,精确率分别提升2.95%、0.88%,这反映从单一行为方向上分析会存在问题,也同时证明了动态行为检测模型的有效性以及必要性。
表1第一层检测模型实验结果
表2第二层检测模型实验结果
在一些具体实施例中,上述的动态行为检测模型提取到的网络行为特征可以包括文件操作相关特征、注册表操作相关特征、网络连接请求相关特征、网络外联中的域名相关特征、内网探测信息相关特征中至少一项;API调用行为特征可以包括API调用序列顺序特征、API调用序列内容特征中至少一项。
具体的,传统的网络行为研究仅从文件操作、注册表操作和简单的网络连接请求信息中进行特征提取,为增强其泛性,本申请在其基础上对网络外联中的域名及内网探测信息进行特征扩展。
其中,在文件操作行为方面,良性软件和部分类型的恶意软件存在较为明显的差别。例如勒索软件会遍历主机上的特定格式文件,然后将其中部分文件进行加密;部分木马程序为了规避恶意软件检测,会将真正的恶意代码隐藏到资源文件处,运行时再从资源文件处释放到本地。因此,通过文件操作行为方面的相关特征,可以有效区分良性软件和部分恶意软件。本实施例可以从网络行为数据中提取出API列表数据,将其与非恶意软件的API列表数据进行对比,来确定待检测软件的文件操作行为中是否有与非恶意软件不同的行为。主要包括是否遍历某些特定文件、是否读写某些特定文件、是否修改某些特定文件、是否创建某些特定文件、是否删除某些特定文件、是否移动某些特定文件等特征,在本申请中将其概括为文件操作相关特征。
在注册表操作行为方面,注册表相当于Windows系统的数据库,存放着各种类型参数,与系统的启动、硬件驱动程序的装载以及一些应用程序的运行存在着直接的联系。各种应用程序为了正常运行,会对注册表进行操作,但是部分恶意软件操作的注册表项与非恶意软件有较大差别。例如,恶意软件可能会修改注册表HKEY_LOCAL_MACHINE目录下的InternetExplorer\Main\StartPage项,以进行IE浏览器劫持;恶意软件可能会在注册表HKEY_LOCAL_MACHINE目录下的AuthRoot\Certificates项上添加新值,以在目标主机上添加根证书,方便后续的中间人攻击等。与文件操作行为分析方法类似的,可以通过从网络行为数据中提取出的API列表数据来确定待检测软件的注册表操作行为,并将注册表操作行为的类型作为注册表操作相关特征,适当提高模型的泛化能力。这些特征主要包括是否打开关闭某些特定注册表项、是否读某些特定注册表项、是否写某些特定注册表项、是否创建某些特定注册表项以及是否删除某些特定注册表项等特征。
在网络连接行为方面,对外发起网络连接是恶意软件传播或者受控的前提。针对该特点,本实施例可以对待检测软件的网络外联行为进行详细分析。从待检测软件运行过程中产生的网络行为数据中获取到应用程序访问的统一资源定位符(Uniform ResourceLocator,URL),分析确定URL是否使用超文本传输安全协议(Hypertext TransferProtocol Secure,HTTPS)、URL中包含的是域名还是网络之间互连的协议(InternetProtocol,IP)、URL中域名的隐马尔可夫(Hidden Markov model,HMM)系数、URL中请求的资源类型等特征,在本申请中将其概括为网络连接请求相关特征。
在网络外联中的域名方面,当前大多数网站为提高安全系数会采用HTTPS进行加密通信,但是需要部署HTTPS证书,意味着需要一定成本。大多数恶意软件并没有安全方面的需求,一般就会采用HTTP。部分恶意软件不需要通过域名作为通信渠道,而且申请域名需要一定成本,也就不会给IP绑定域名;对于绑定域名的网站,还要分辨该域名是否为恶意域名。一般常规网站域名是一些有特殊含义或者是有正常语义的字符组合,但是恶意网站的域名则存在大量无序字符,通过对域名的HMM系数计算,可以有效区分正常域名和恶意域名。部分恶意软件会从远程服务器加载恶意代码文件,而这些恶意代码文件通常为各种类型的脚本文件。因此,可以将上述通信协议类型、是否绑定域名、域名是否为无序字符组合、请求的资源类型等作为网络外联中的域名相关特征。
在内网探测信息方面,类似蠕虫一类的恶意软件常会以受害主机作为跳板机进行一系列的内网主机发现以及漏洞扫描行为,进而进行内网扩散感染。通过这些行为可以较直接的将恶意软件与非恶意软件进行区分。本实施例在待检测软件的内网探测行为分析上,通过解析网络行为数据,可以确定待检测软件是否存在内网IP段通信行为,并将其作为其中一项内网探测信息相关特征。
其中,将待检测软件运行,可以通过钩子(HOOK)技术监控待检测软件的所有API调用行为,根据以往经验可知良性软件与不同种类的恶意软件在访问的API序列上存在较大差异,因此向量化处理过后的API调用序列可以作为API调用序列内容特征,用来表征待检测软件是否为恶意软件。
由于API序列特征具有明显的时序性,在一些具体实现方式中,可以选择N-Gram模型进行上述的向量化处理。
N-Gram主要思想就是以大小为N的窗口对API调用序列进行滑动采集,形成长度为N的词片段序列,这些词片段序列被称作为gram。对全部词片段序列进行频度统计,形成gram列表,即向量空间,每个gram就是向量空间中的一个维度。当N为1时称为unigram,N为2时称为bigram,N为3时称为trigram。
该模型基于一个假设:第N个词的出现只与第N-1个词有关系。那么整个API调用序列文本出现的概率就等于各个词出现概率的乘积。若一个序列由n个词组成,每个词记作wi,则文本概率计算公式如下:
对于unigram为:
对于bigram为:
对于trigram为:
由上述公式可以看到,N-Gram充分考虑了词之间的时序性。但是当N越大时,会导致gram列表越大,即向量空间越大,数据中稀疏性问题也会随之加重,导致信息的丢失。因此,在一些实施例中,优选的,以bigram作为向量处理的模型。
具体的,上述软件的网络行为特征可以比较好的表征软件是否具有恶意性,由于互联网与技术的发展,越来越多的恶意软件都具有一定的网络行为,网络行为可以较直接概括程序外在表现特征;恶意软件可以通过API调用来实现其功能,根据以往经验可知良性应用软件与不同种类的恶意软件在访问的API序列上存在较大差异,所以API调用行为可以从底层全面反映软件的行为特征,从网络行为特征和API调用行为特征这两方面进行信息挖掘,可以使待检测软件的特征被全面深入检测,使动态行为检测模型检测的精确率提高。
在另一些实施例中,上述的动态行为检测模型的构建过程可以包括:基于Adaboost算法,构建所述网络行为特征学习器;基于双向长短期记忆(Long short termmemory,LSTM)算法,构建所述API调用行为特征学习器;基于逻辑回归算法,构建所述强学习器。相对应的,进行网络行为特征提取后,在网络行为特征学习器中使用Adaboost算法,对网络行为特征进行计算,最终输出待检测软件为恶意软件的第一概率;进行API调用行为特征提取后,在API调用行为特征学习器中使用双向LSTM算法,对API调用行为特征进行计算,最终输出待检测软件为恶意软件的第二概率;在强学习器中使用逻辑回归算法,对第一概率和第二概率进行计算,最终输出待检测软件是否为恶意软件的检测结果。此过程可以参考图3。
Adaboost算法基本原理就是将多个弱分类器进行合理的结合,使其成为一个较强的分类器。Adaboost采用迭代的思想,每次迭代只训练其中一个弱分类器,训练好的弱分类器将参与下一次迭代的使用。也就是说,在第N次迭代中,一共就有N个弱分类器,其中N-1个是以前训练好的,其各种参数都不再改变,本次训练第N个分类器。其中弱分类器的关系是第N个弱分类器更可能分对前N-1个弱分类器没分对的数据,最终分类输出要看这N个分类器的综合效果。Adaboost算法在二分类任务上性能优越,运算速度快,准确率高。也就是说,上述的网络行为特征学习器可以是由若干个弱分类器组合而成的分类效果较强的弱学习器。
双向LSTM模型中,前馈层和反向层共同影响输出层。如公式(4)、(5)、(6)所示,前馈层正向计算,保存每个时刻向前隐含层的输出,反向层反向计算,保存每个时刻向后隐含层的输出,最后结合前馈层和反向层每个时刻的输出得到最终输出。
ht=f(w1xt+w2ht-1)(4)
h′t=f(w3xt+w5h′t+1)(5)
ot=g(w4ht+w6h′t)(6)
其中,w1~w6为共享权重,xt为每个时刻的输入ht为每个时刻的最终输出,h′t为向后隐含层的输出,ot为某时刻输出信息。
该双向LSTM模型将每个时刻前后的状态信息都进行统计分析,完全匹配API调用行为的情形。其中,每个时刻对信息的处理都依赖于LSTM模块,该模块主要由细胞状态、遗忘门、输入门和输出门构成。其中,细胞状态用来保存t时刻的记忆信息;遗忘门负责对细胞状态中信息进行选择性丢弃,通过sigmoid函数对上一序列的ht-1和本序列的xt激活,去除上一层细胞状态中的部分信息;输入门由两部分组成,如公式(7)、(8)所示,第一部分是通过包含sigmoid层的输入门确定需要更新到细胞状态的信息,第二部分通过tanh函数将这些信息转化成可以加入到细胞状态的形式。
it=σ(Wi*[ht-1,xt]+bi)(7)
输出门选择性的输出细胞状态的内容,其也由两部分构成。如公式(9)、(10)所示,第一部分通过sigmoid函数对需要输出的信息进行选择,第二部分通过tanh函数将这部分信息进行格式处理。
Ot=σ(Wo*[ht-1,xt]+bo)(9)
ht=ot*tanh(Ct)(10)
其中,Ot为某时刻输出信息,Wo为某输出信息的权重矩阵,bo为某输出信息的偏置值,Ct为某时刻细胞状态。
程序中每项功能的实现都需要一系列的API组合,这些API之间相互关联,每个API的调用不仅与其前面的API有关,与其后面的API同样有联系,具有很强的时序性特征。同样的,API调用序列数据具有很强的时序性特征。双向LSTM算法适用于处理序列数据,对于本申请API调用序列数据的处理具有绝对优势。
在一些实施例中,动态行为检测模型训练过程,包括:将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集,对样本数据集进行网络行为特征和API调用行为特征提取。根据提取到的样本数据集的网络行为特征,对网络行为特征学习器进行训练,在达到预设第一训练停止条件后停止训练并输出第一概率样本结果。根据提取到的样本数据集的API调用行为特征,对API调用行为特征学习器进行训练,在达到预设第二训练停止条件后停止训练并输出第二概率样本结果。根据网络行为特征学习器输出的第一概率样本结果和API调用行为特征学习器输出的第二概率样本结果,对强学习器进行训练,直至达到预设第三训练停止条件最终输出样本软件是否为恶意软件的结果。
上述的预设第一训练停止条件、预设第二训练停止条件、预设第三训练停止条件为模型训练过程中可能用到的停止条件,三者可以为同种条件或者不同种条件。具体的,可以为迭代次数,或者为训练时长,或者为学习率,或者为损失函数的值等。例如,预设第一训练停止条件可以设置为若干迭代次数,当训练达到设置的若干迭代次数后,网络行为特征学习器训练完成,最终输出结果确定第一概率样本。
动态行为检测模型训练过程即为分层模型训练过程,先对第一层学习器进行训练,再以第一层学习器的输出结果对第二层学习器进行训练,进而完成整个模型的训练过程。该模型可以经过多次训练,使动态行为检测模型检测出恶意软件的准确率不断增加。
在另一些实施例中,还可以判断所述网络行为特征的数量和所述API调用行为特征的数量之和是否小于预设数量;若动态行为检测模型提取到的网络行为特征的数量和API调用行为特征的数量之和小于预设数量,则可以确定网络行为特征和API调用行为特征数量不充足,动态行为检测模型的检测效果可能不太准确。这时如果通过动态行为检测模型检测出待检测软件不是恶意软件,则可以再利用预先训练好的静态检测模型辅助检测待检测软件是否为恶意软件。
在此实时例中,整个恶意软件检测方法先后使用到动态行为检测模型和静态检测模型,为方便描述,可以将其称为动静态结合检测模型。具体的架构和检测过程,可以参考图4。
其中,预设数量是预先设定的。例如,预设数量可以为网络行为特征的数量和API调用行为特征的数量之和的百分之三十;或者,可以是某个具体的数值。这里不做限定,本领域技术人员可以根据检测精度需求调整预设数量的大小。
部分恶意软件可能针对动态行为检测采用诸如反虚拟机以及反调试等规避技术,会使该恶意软件进行动态行为检测模型提取到的网络行为特征的数量和API调用行为特征的数量较少,导致挖掘信息量不足,使得动态行为检测异常困难,获取到的可作为恶意软件的证据的特征数据较少,动态行为检测模型检测到恶意软件的准确率较低。由于静态检测具有不受虚拟机检测机制影响的优势,在本实施例中可以对待检测软件利用预先训练好的静态检测模型进行检测,可以有效弥补动态行为检测模型存在的缺陷,进而有更高的检测精确率,整体检测效果更佳。在一些实验中,表3为动静态结合检测模型的实验结果,较动态行为检测模型在精确率上虽然仅有0.21%的提升,但在带有虚拟机的检测的样本数据集上漏报率明显下降,可以证明动静态结合检测模型可以有效弥补动态行为检测模型存在的缺陷,进而有更高的检测精确率。
表3动静态结合检测模型的实验结果
在一些实施例中,静态检测模型的训练过程可以包括:确定待检测软件的源数据为第二原始数据集,对第二原始数据集进行PE原始特征提取,确定可执行文件PE原始特征,并根据所述PE原始特征判断所述待检测软件是否为恶意软件。其中,PE原始特征包括:PE自带属性、程序的程序入口点相对于整个程序的位置节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节的数量、装载数据的节的数量、程序的文件大小(FileSize)与映射到内存中的文件大小(VirtualSize)的比值、所有节的平局熵值、除代码节之外是否存在其他具有可执行权限的节、导入表导出表的动态链接库分布特征中至少一项。
其中,PE自带属性是针对待检测软件的全局特征。
其中,是否加载配置表特征。早期用于描述PE头信息,在XP之后主要用于存储安全结构化异常处理程序SEH句柄,当配置表中不存在SEH句柄,那么软件中的异常处理程序就不会执行。在一些实施例中,加载配置表特征可以表征出待检测软件为恶意软件。
其中,是否使用异常表特征。异常表存放着与SEH相关代码的起始位置信息。在一些实施例中,使用异常表特征可以表征出待检测软件为恶意软件。
其中,是否开启NX位特征。即是否开启数据执行保护(Data ExecutionPrevention,DEP)功能,引入该安全机制就是防止恶意软件的程序利用溢出漏洞对系统造成破坏。一般溢出指的是栈溢出或者堆溢出,当代码使用一些危险函数,并且对数据输入长度未进行限制时,恶意软件的程序通过向该输入点发送大量恶意数据使得数据正好溢出到数据区域,然后引导程序去执行这些数据。例如,恶意软件的程序使数据正好溢出到堆栈区域,引导程序去执行恶意代码。在一些实施例中,开启NX位特征可以表征待检测软件为恶意软件。
其中,是否启用重定位功能特征。诸如蠕虫病毒类的恶意软件的程序,其存在一项功能就是感染其他良性程序,也就意味着恶意程序需要将恶意代码注入到该良性程序中。在平常的软件开发中,程序加载到内存中会有一个基址,而程序中的绝大多数变量的位置实际上都是基于这个基址的相对位置,恶意代码被注入到宿主程序中,其基址会发生变化,因此需要对这些变量的位置进行重定位。在一些实施例中,启用重定位功能特征可以表征待检测软件为恶意软件。
其中,是否启用资源加载功能特征。当前恶意软件的程序比较广泛的使用资源释放技术。当恶意软件的程序需要加载额外的动态链接库、图片、视频等文件时,就会将这些文件当作资源载入到程序中,在运行的时候释放出来。这样可以使得程序以一个单独的EXE存在,简洁并且不易被安全软件发现。在一些实施例中,启用资源加载功能特征可以表征待检测软件为恶意软件。
其中,是否启用数字签名功能特征。正规软件一般都会使用正规的数字签名证书进行数字签名,而恶意软件的程序中大部分不会进行数字签名,其中少部分恶意程序会盗用正规软件的数字签名证书,冒充该软件的附属软件,对杀毒软件进行欺骗。在一些实施例中,启用数字签名功能特征可以表征待检测软件为恶意软件。
其中,是否启用线程本地存储技术TLS特征。一个进程中的所有线程共享同一个地址空间。那么对于全局变量和静态变量,所有线程访问的是同一份资源,那么便会导致多线程之间对该变量访问的干扰。TLS就能较好解决这个问题,其通过把全局变量和静态变量打包到一个节中,当新线程被创建的时候,这个节就会被当作副本拷贝到进程空闲的空间中,线程访问全局变量就类似访问局部变量,不会存在同步问题。恶意程序就利用TLS回调来进行反调试。一般调试器都是从程序入口点(Original Entry Point,OEP)开始,但是TLS可以在OEP之前运行代码,也就意味着恶意程序可以对TLS回调函数进行调试检测,判断进程是否正在被调试。在一些实施例中,启用TLS特征可以表征待检测软件为恶意软件。
具体的,针对恶意软件中加壳的通用行为,本实施例中提取程序的OEP相对于整个程序的位置、节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节和装载数据的节的数量这五项特征。大量恶意软件通过加壳来规避安全设备对原始恶意代码的检测,程序进行加壳,一般会对原先的应用程序进行加密,之后通过在程序结尾增加一个新的节来进行解密。因此,程序原先的OEP会修改为新增节的函数入口,经过新增节代码解密之后再跳转到原先应用程序正常运行。这会导致程序的OEP相对整个程序靠后,并且在函数入口处会有一个跳转的操作,跳转到脱壳代码出处,而对原先代码的加密会导致节表的数量可能减少,同时装载代码的节和装载数据的节的数量可能发生相对应的变化。
具体的,针对恶意软件加壳中的压缩行为,本实施例中提取程序的FileSize和VirtualSize的比值、所有节的平局熵值这三项特征,均为布尔型数据。对恶意软件进行加壳操作过程中,部分壳代码会对原先代码进行压缩。而压缩操作会使得程序的FileSize与VirtualSize的比值降低,同样部分节的FileSize与VirtualSize的比值也会降低。此外由于部分段的数据量变少,其平均熵值也可能减小。在恶意检测中香农熵通常用于检测打包或者压缩的恶意软件,根据选择的阈值,二进制文件被分类为良性或恶意软件。
具体的,针对恶意软件中的payload隐藏行为,静态检测模型提取除代码节之外是否存在其他具有可执行权限的节作为一项特征。恶意软件一般会将恶意代码加载到除代码节之外的数据节作为隐藏,之后通过指针指向恶意代码处引导恶意代码的加载运行。因此除代码节之外还存在其他具有可执行权限的节。
具体的,为从底层全面反映良性样本和恶意样本的行为,静态检测模型将导入表中导入函数所属动态链接库中的分布情况作为一项特征,总共统计了150个动态链接库。恶意软件通常会以较高频率调用某些动态链接库中的API,而正常软件与恶意软件在调用的API上会有较大差别,因此选用对动态链接库调用情况作为特征,适当提高模型的泛化能力。
静态检测模型最终的检测效果极大程度上依赖对PE原始数据特征的提取,因而提取有效特征十分必要,所述静态检测模型在现有技术基础上进行改进,从更多的方面进行有效的特征提取,使静态检测模型挖掘信息量足够,增加静态检测模型检测出恶意软件的准确率。
在本申请实例恶意软件检测模型训练方法,用于对上述动态行为检测模型进行训练,动态行为检测模型包括弱学习器和强学习器,弱学习器包括网络行为特征学习器和API调用行为特征学习器。所述方法包括:将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
本实施例的模型训练方法与上述恶意软件检测方法中动态行为检测模型的训练过程一致,其具体实现方式和产生的有益效果可以参考上述实施例,这里不再赘述。
图5为本申请一实施例提供的一种恶意软件检测装置的结构示意图,如图5所示的,本实施例的恶意软件检测装置500包括:数据集确定模块501和恶意软件检测模块502。
数据集确定模块501,用于将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;
恶意软件检测模块502,用于利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
可选的,所述动态行为检测模型包括特征提取模块、弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;
所述特征提取模块503,具体用于利用特征提取模块对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征;
所述网络行为特征学习器模块504,具体用于利用所述网络行为特征学习器,基于所述网络行为特征,确定所述待检测软件为恶意软件的第一概率;
所述API调用行为特征学习器模块505,具体用于利用所述API调用行为特征学习器,基于所述API调用行为特征确定所述待检测软件为恶意软件的第二概率;
所述强学习器模块506,具体用于利用所述强学习器,基于所述第一概率和所述第二概率,确定所述待检测软件是否为恶意软件。
可选的,所述网络行为特征包括:文件操作相关特征、注册表操作相关特征、网络连接请求相关特征、网络外联中的域名相关特征、内网探测信息相关特征中至少一项;
所述API调用行为特征包括:API调用序列顺序特征、API调用序列内容特征中至少一项。
可选的,所述装置还包括学习器构建模块507,用于:
基于Adaboost算法,构建所述网络行为特征学习器;
基于双向LSTM算法,构建所述API调用行为特征学习器;
基于逻辑回归算法,构建所述强学习器。
可选的,所述装置还包括模型训练模块508,用于:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
可选的,所述装置还包括静态检测模块509,用于:
判断所述网络行为特征的数量和所述API调用行为特征的数量之和是否小于预设数量;
若根据所述网络行为特征和所述API调用行为特征确定所述待检测软件不是恶意软件,且确定所述网络行为特征的数量和所述API调用行为特征的数量之和小于预设数量,则利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件。
可选的,所述静态检测模块509在利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件时,具体用于:
将所述待检测软件的源数据作为第二原始数据集;
利用预先训练好的静态检测模型,对所述第二原始数据集进行特征提取,确定可执行文件PE原始特征,并根据所述PE原始特征判断所述待检测软件是否为恶意软件;
所述PE原始特征包括:PE自带属性、程序的程序入口点相对于整个程序的位置节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节的数量、装载数据的节的数量、程序的FileSize与VirtualSize的比值、所有节的平局熵值、除代码节之外是否存在其他具有可执行权限的节、导入表导出表的动态链接库分布特征中至少一项。
本实施例的装置,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图6为本申请一实施例提供的一种电子设备的结构示意图,如图6所示,本实施例的电子设备600可以包括:存储器601和处理器602。
存储器601上存储有能够被处理器602加载并执行上述实施例中方法的计算机程序。
其中,处理器602和存储器601相连,如通过总线相连。
可选地,电子设备600还可以包括收发器。需要说明的是,实际应用中收发器不限于一个,该电子设备600的结构并不构成对本申请实施例的限定。
处理器602可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器602也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线可包括一通路,在上述组件之间传送信息。总线可以是PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器601可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器601用于存储执行本申请方案的应用程序代码,并由处理器602来控制执行。处理器602用于执行存储器601中存储的应用程序代码,以实现前述方法实施例所示的内容。
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。还可以为服务器等。图6示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
本实施例的电子设备,可以用于执行上述任一实施例的方法,其实现原理和技术效果类似,此处不再赘述。
本申请还提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上实施例中的方法的计算机程序。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (10)
1.一种恶意软件检测方法,其特征在于,包括:
将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;
利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
2.根据权利要求1所述的方法,其特征在于,所述动态行为检测模型包括特征提取模块、弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;
所述利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件,包括:
利用特征提取模块对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征;
利用所述网络行为特征学习器,基于所述网络行为特征,确定所述待检测软件为恶意软件的第一概率;
利用所述API调用行为特征学习器,基于所述API调用行为特征确定所述待检测软件为恶意软件的第二概率;
利用所述强学习器,基于所述第一概率和所述第二概率,确定所述待检测软件是否为恶意软件。
3.根据权利要求1或2所述的方法,其特征在于,
所述网络行为特征包括:文件操作相关特征、注册表操作相关特征、网络连接请求相关特征、网络外联中的域名相关特征、内网探测信息相关特征中至少一项;
所述API调用行为特征包括:API调用序列顺序特征、API调用序列内容特征中至少一项。
4.根据权利要求2所述的方法,其特征在于,还包括:
基于Adaboost算法,构建所述网络行为特征学习器;
基于双向长短期记忆算法,构建所述API调用行为特征学习器;
基于逻辑回归算法,构建所述强学习器。
5.根据权利要求2所述的方法,其特征在于,所述动态行为检测模型的训练过程,包括:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
6.根据权利要求1、2、4、5中任一项所述的方法,其特征在于,还包括:
判断所述网络行为特征的数量和所述API调用行为特征的数量之和是否小于预设数量;
若根据所述网络行为特征和所述API调用行为特征确定所述待检测软件不是恶意软件,且确定所述网络行为特征的数量和所述API调用行为特征的数量之和小于预设数量,则利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件。
7.根据权利要求6所述的方法,其特征在于,所述利用预先训练好的静态检测模型检测所述待检测软件是否为恶意软件,包括:
将所述待检测软件的源数据作为第二原始数据集;
利用预先训练好的静态检测模型,对所述第二原始数据集进行特征提取,确定可执行文件PE原始特征,并根据所述PE原始特征判断所述待检测软件是否为恶意软件;
所述PE原始特征包括:PE自带属性、程序的程序入口点相对于整个程序的位置节表的数量、函数入口的前20个字节是否包含跳转指令、装载代码的节的数量、装载数据的节的数量、程序的文件大小与映射到内存中的文件大小的比值、所有节的平局熵值、除代码节之外是否存在其他具有可执行权限的节、导入表导出表的动态链接库分布特征中至少一项。
8.一种模型训练方法,其特征在于,用于对动态行为检测模型进行训练,所述动态行为检测模型包括弱学习器和强学习器;所述弱学习器包括网络行为特征学习器和API调用行为特征学习器;所述方法包括:
将样本软件运行过程中产生的网络行为数据和API调用序列数据作为样本数据集;
对所述样本数据集进行特征提取,确定样本数据集的网络行为特征和API调用行为特征;
基于所述样本数据集的网络行为特征,对所述网络行为特征学习器进行训练;
基于所述样本数据集的API调用行为特征,对所述API调用行为特征学习器进行训练;
在达到预设第一训练停止条件后,基于所述网络行为特征学习器的最终输出结果确定第一概率样本;
在达到预设第二训练停止条件后,基于所述API调用行为特征学习器的最终输出结果确定第二概率样本;
基于所述第一概率样本和所述第二概率样本,对所述强学习器进行训练,直至达到预设第三训练停止条件。
9.一种恶意软件检测装置,其特征在于,包括:
数据集确定模块,用于将待检测软件运行过程中产生的网络行为数据和API调用序列数据作为第一原始数据集;
恶意软件检测模块,用于利用预先训练好的动态行为检测模型,对所述第一原始数据集进行特征提取,确定网络行为特征和API调用行为特征,并根据所述网络行为特征和所述API调用行为特征判断所述待检测软件是否为恶意软件。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序指令;
所述处理器,用于调用并执行所述存储器中的程序指令,执行如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210690482.2A CN115098858A (zh) | 2022-06-17 | 2022-06-17 | 一种恶意软件检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210690482.2A CN115098858A (zh) | 2022-06-17 | 2022-06-17 | 一种恶意软件检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115098858A true CN115098858A (zh) | 2022-09-23 |
Family
ID=83290691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210690482.2A Pending CN115098858A (zh) | 2022-06-17 | 2022-06-17 | 一种恶意软件检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115098858A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563614A (zh) * | 2022-10-27 | 2023-01-03 | 任文欣 | 一种应用于人工智能的软件异常行为文件溯源方法 |
CN116738427A (zh) * | 2023-08-14 | 2023-09-12 | 深信服科技股份有限公司 | 终端安全防护方法、装置、设备及存储介质 |
CN117113352A (zh) * | 2023-10-25 | 2023-11-24 | 西安热工研究院有限公司 | Dcs上位机恶意可执行文件检测方法、系统、设备及介质 |
-
2022
- 2022-06-17 CN CN202210690482.2A patent/CN115098858A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115563614A (zh) * | 2022-10-27 | 2023-01-03 | 任文欣 | 一种应用于人工智能的软件异常行为文件溯源方法 |
CN115563614B (zh) * | 2022-10-27 | 2023-08-04 | 艾德领客(上海)数字技术有限公司 | 一种应用于人工智能的软件异常行为文件溯源方法 |
CN116738427A (zh) * | 2023-08-14 | 2023-09-12 | 深信服科技股份有限公司 | 终端安全防护方法、装置、设备及存储介质 |
CN116738427B (zh) * | 2023-08-14 | 2024-02-23 | 深信服科技股份有限公司 | 终端安全防护方法、装置、设备及存储介质 |
CN117113352A (zh) * | 2023-10-25 | 2023-11-24 | 西安热工研究院有限公司 | Dcs上位机恶意可执行文件检测方法、系统、设备及介质 |
CN117113352B (zh) * | 2023-10-25 | 2024-02-06 | 西安热工研究院有限公司 | Dcs上位机恶意可执行文件检测方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11188650B2 (en) | Detection of malware using feature hashing | |
US8117660B2 (en) | Secure control flows by monitoring control transfers | |
CN115098858A (zh) | 一种恶意软件检测方法及装置 | |
Andronio et al. | Heldroid: Dissecting and detecting mobile ransomware | |
US8307432B1 (en) | Generic shellcode detection | |
CN102043915B (zh) | 一种非可执行文件中包含恶意代码的检测方法及其装置 | |
US10986103B2 (en) | Signal tokens indicative of malware | |
US9798981B2 (en) | Determining malware based on signal tokens | |
US9239922B1 (en) | Document exploit detection using baseline comparison | |
Shankarapani et al. | Kernel machines for malware classification and similarity analysis | |
CN105959324A (zh) | 基于正则匹配的网络攻击检测方法及装置 | |
CN110933104B (zh) | 恶意命令检测方法、装置、设备及介质 | |
US10395033B2 (en) | System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks | |
US11916937B2 (en) | System and method for information gain for malware detection | |
US11809556B2 (en) | System and method for detecting a malicious file | |
Xiao et al. | Detection and prevention of code injection attacks on HTML5-based apps | |
CN108647517B (zh) | 一种Android混合应用代码注入的漏洞检测系统及方法 | |
JPWO2019225216A1 (ja) | 判定方法、判定装置および判定プログラム | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
US20160239364A1 (en) | Method of verifying integrity of program using hash | |
CN104008336B (zh) | 一种ShellCode检测方法和装置 | |
Alazab et al. | Malicious code detection using penalized splines on OPcode frequency | |
Wen et al. | CNN based zero-day malware detection using small binary segments | |
CN115310082A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
US20230394145A1 (en) | Machine learning-based malware detection in process memory |
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 |