CN112989344A - 基于硬件追踪技术的恶意程序智能检测方法、装置及系统 - Google Patents
基于硬件追踪技术的恶意程序智能检测方法、装置及系统 Download PDFInfo
- Publication number
- CN112989344A CN112989344A CN202110280246.9A CN202110280246A CN112989344A CN 112989344 A CN112989344 A CN 112989344A CN 202110280246 A CN202110280246 A CN 202110280246A CN 112989344 A CN112989344 A CN 112989344A
- Authority
- CN
- China
- Prior art keywords
- program
- data packet
- sample
- virtual machine
- malicious
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
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
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了基于硬件追踪技术的恶意程序智能检测方法、装置及系统,能够实现对恶意程序的动态检测,利用程序运行时的PT数据进行深度学习处理,该检测高效、准确。构建用于在虚拟机中运行的样本程序。在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,得到当前样本程序的PT数据包序列;保存安全虚拟机快照,每个样本程序执行前均恢复安全虚拟机快照。将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本。采用所有样本程序对应的RGB图像训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于恶意程序检测。
Description
技术领域
本发明涉及软件安全技术领域,具体涉及一种基于硬件追踪技术的恶意程序智能检测方法、装置及系统。
背景技术
近年来,恶意程序增长迅速,给计算机和用户带来了严重的威胁。
恶意程序是指带有攻击意图所编写的一段程序,包括陷门、逻辑炸弹、特洛伊木马、蠕虫、病毒等多种形式,会对计算机或网络系统造成严重危害。恶意程序检测是一种能够识别出恶意程序的方法,恶意程序检测技术随着恶意程序的发展而不断发展。恶意程序检测的方法主要分为静态检测和动态检测。
静态检测技术使用待测程序的文件结构特征来检测恶意代码,不需要在主机系统上运行待测程序,只需要分析其结构及其指令即可,因此静态检测相对来说比较安全。目前最常见的静态检测技术是检测可移植可执行文件(PE files),通过分析PE文件头中包含的信息,分析出待测程序用到的动态链接库,这些信息对于检测恶意程序是十分有效的。但是,一般情况下恶意程序样本的源代码并不容易获得,因此通常需要进行分解和反编译,并执行逆向工程以分析低级汇编代码,这个过程往往并不容易。静态检测还容易受到混淆代码的干扰。混淆代码是指恶意程序的编写人员通过编写一些代码,以掩藏其真实执行所需要的代码,其中最典型的是加壳技术。加壳是将可执行程序资源压缩,压缩后的程序可以直接运行,它可以防止程序被静态反编译,使得恶意程序变得难以分析。
动态检测是指在检测待测样本时运行该样本程序,在运行的过程中观察该样本的活动过程,并同时观察系统在运行该样本时发生的变化,可以观察到恶意程序的实际功能,同时可以时刻检测恶意程序对系统中的各个部分所做的更改。动态检测通常是在静态检测无法继续分析的情况下才进行的,因为静态检测不需要运行样本,所以静态检测只能针对样本程序本身进行分析,相比之下动态检测更准确、更全面。但是动态检测需要执行待测样本程序,可能会危害到系统环境,因此在使用动态检测时,通常会将待测程序放入一个虚拟环境中,从主机观察虚拟机系统中发生的变化,这样可以防止主机系统及网络被恶意程序破坏。现有的动态检测一般基于规则对样本行为进行打分,分值的高低代表恶意程度的高低,其智能检测程度不高。大部分动态检测方法需要拦截目标程序的API函数调用(或者系统调用),给目标程序带来较大的性能开销。
面对快速发展的恶意程序,传统的机器学习方法已经难以胜任检测工作,而基于深度学习的检测方法得到了广泛的研究与应用。
目前深度学习方法在恶意程序检测领域得到了广泛的应用。由于深度学习方法,尤其是卷积神经网络在图像处理领域取得了十分优异的成果,因此在进行恶意程序检测时,通常会把恶意程序转化为图像或矩阵,然后再按照深度学习的步骤进行训练,最终获得一个训练好的模型。
将恶意程序转换为图像有很多方法,较常见的方法有以下两种:
(1)将样本程序转换为灰度图,这种方法通过静态分析目标二进制程序将其转换成灰度图。一个二进制程序的每个字节范围在00到FF之间,可以对应灰度图的0到255。通过设置长和宽,可将程序的字节序列转换为矩阵。其中,矩阵中每一项可对应灰度图中一个像素点。最后,可利用深度学习算法对灰度图进行分析,识别对应的恶意程序。
(2)将样本程序运行时调用的API序列信息转换为一个矩阵。在沙箱中运行恶意程序,进行动态分析时,可以利用API Hook或者程序插桩技术分析出恶意程序在系统运行时调用的API序列信息,将每个API调用信息转化为词向量,而每个样本程序运行时获得到的API序列列表就变成了一个矩阵。最后,通过深度学习算法对矩阵进行分析,以识别对应的恶意程序。
上述利用深度学习的原理进行恶意程序检测的方案,第一种属于静态检测,检测过程中,恶意程序加壳、变形、多态会对检测造成干扰,第二种方法是利用程序运行时调用的API信息,无法避免对程序API函数调用的拦截,且需要进行耗时的向量化处理,无法实现高效、准确的恶意程序检测。
发明内容
有鉴于此,本发明提供了一种基于硬件追踪技术的恶意程序智能检测方法、装置及系统,能够实现对恶意程序的动态检测,利用程序运行时的PT数据进行深度学习处理,可以实现高效、准确的恶意程序检测。
为达到上述目的,本发明的技术方案提供的恶意程序的动态检测方法,包括如下步骤:
构建用于在虚拟机中运行的样本程序,样本程序具备标签,被标识为正常程序或者恶意程序。
在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,得到当前样本程序的PT数据包序列;保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均先恢复安全虚拟机快照。
将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本。
采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于进行恶意程序检测。
进一步地,在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的PT数据包序列,具体为:
对虚拟机环境进行配置,安装用于保证所有样本程序正常执行的程序库;
虚拟机内部部署一个代理程序,代理程序依次执行所有的样本程序,每个样本程序执行前均先恢复安全虚拟机快照。
样本程序执行过程如下:
当前样本程序执行启动后,代理程序立即暂停当前样本程序的执行,然后配置Intel PT机制;开启Intel PT机制后,代理程序恢复当前样本程序的执行,Intel PT机制捕获当前样本程序的执行信息,执行信息以PT数据包序列的形式存储在内存缓冲区中;将缓冲区中的PT数据序列保存到主机,并且附上标签,最后关闭虚拟机快照。
按照同样的步骤执行下一个样本程序,直至执行完所有的样本程序。
进一步地,采用Intel PT机制捕获样本程序的执行信息,具体为:采用Intel PT处理器,仅对样本程序的代码区域的执行信息进行捕获;执行信息包括样本程序执行时的控制流和时序信息。
进一步地,得到当前样本程序的PT数据包序列,之后还包括对所获取的当前样本程序的PT数据包序列进行修剪,具体为包括如下步骤:
第一步,获取当前样本程序的原始PT数据包序列。
修剪后的PT数据包序列仅包含PGE型数据包、PGD型数据包、TNT型数据包以及TIP型数据包,其构成的精简PT数据包序列记为P,其初始为空;设置标志位flag,其初始值设置为0;依次从原始PT数据包序列中取出一个PT 数据包,记为当前处理PT数据包pi。
第二步,提取当前处理PT数据包pi的类型ti。
第三步,如果当前处理PT数据包类型ti是PGD类型,从当前处理PT数据包中获取其TIP值,如果TIP值为0,则跳过当前处理PT数据包,并将标志flag 设置为1;如果TIP值不为0,则将当前处理PT数据包插入到精简后PT数据包序列P中;如果当前处理PT数据包类型ti为PGE类型,且flag标志值为1,则跳过当前处理PT数据包,并将flag标志值设置为0;如果flag标志值不为1,就将当前处理PT数据包插入到精简PT数据包序列P中;若当前处理PT数据包类型ti为TNT类型或者TIP类型,则直接将当前处理PT数据包插入到精简 PT数据包P中。
第四步,从原始PT数据包序列中取下一个PT数据包作为前处理PT数据包pi,返回第二步。
进一步地,将样本程序对应的PT数据包序列进行像素化处理,转换为RGB 图像,具体为:将PT数据包序列中的每个PT数据包转换为一个颜色像素,从而将PT数据包序列转换为RGB图像。
进一步地,将PT数据包序列中的每个PT数据包转换为一个颜色像素,具体为:颜色像素采用RGB值表示,包含红色值、绿色值和蓝色值。针对待转换的PT数据包,获取其类型,根据其类型确定RGB值中的红色值。其中针对PGE 型数据包、PGD型数据包、TNT型数据包以及TIP型数据包四种类型的数据包,设定不同的红色值即R值分别对应四种类型数据包。对于TNT型数据包,根据其条件分支是否被采取,设定不同的绿色值;TNT型数据包蓝色值设置为0。对于TIP型数据包和PGE型数据包,对应包含16位的TIP值,采用绿色值和蓝色值组合表示TIP值。对于PGD型数据包,对应TIP值中包含动态链接库调用信息以及偏移地址信息,采用绿色值表示动态链接库调用信息,采用蓝色值表示偏移地址信息。
本发明的另外一个实施例还提供了恶意程序的动态检测装置,包括程序数据采集模块、数据预处理模块以及模型训练模块,具体为:
程序数据采集模块,首先构建用于在虚拟机中运行的样本程序,样本程序具备标签,被标识为正常程序或者恶意程序;然后在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的 PT数据包序列,送入数据与处理模块;其中保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均先恢复安全虚拟机快照。
数据预处理模块,用于将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本,所有的模型训练样本都送入模型训练模块。
模型训练模块,采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于进行恶意程序检测。
本发明的另外一个实施例还提供了恶意程序的动态检测系统,包括主机(其 CPU支持Intel PT机制)、运行在主机上的具有PT感知功能的虚拟机监视器、客户虚拟机、虚拟机自省器以及检测器。
主机上运行客户虚拟机,客户虚拟机运行待检测程序;主机的CPU支持Intel PT机制。
检测器部署在主机的用户层;检测器上部署训练好的恶意程序检测模型;恶意程序检测模型采用上述方法或者装置训练得到。
虚拟机自省器部署在主机的用户层,虚拟机自省器在客户虚拟机暂停运行待检测程序时,利用虚拟机自省技术获取待检测程序中当前进程的标识信息(包括进程ID);虚拟机自省器将获取的当前进程的标识信息送入虚拟机监视器。
虚拟机监视器运行在主机底层,虚拟机监视器与Intel PT处理器关联;虚拟机监视器在接收到当前进程的标识信息之后,对Intel PT处理器的Intel PT机制进行管理和配置。
虚拟机监视器在客户虚拟机运行待检测程序时,利用Intel PT机制获取待检测程序中当前进程的执行信息,由Intel PT处理器进行记录。
Intel PT处理器将待检测程序中所有进程的执行信息均送入检测器中,检测器利用恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断待检测程序是否恶意程序。
进一步地,虚拟机监视器中设置环形缓冲区,环形缓冲区用于对虚拟机监视器获取的PT数据进行存储。
进一步地,检测器内部设置收集线程和分析线程以及环形缓冲区。
收集线程用于收集获取待检测程序对应的执行信息。
分析线程利用恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断待检测程序是否恶意程序。
收集线程和分析线程同步运行,利用环形缓冲区进行数据同步。
有益效果:
(1)本发明实施例提供的一种恶意程序的动态检测方法及装置,采用动态检测方法,在虚拟机中运行样本程序,可以动态观察到程序的实际功能,能有效减少程序加壳、变形和多态技术对恶意程序检测带来的影响。
本发明借助Intel PT技术,使用现有Intel CPU的硬件特性捕获目标程序的执行信息。由于Intel PT技术对被追踪的程序只造成较小程度的性能扰动,本发明降低了计算成本,减少了动态检测方法对目标程序带来的性能影响。
本发明通过Intel PT获取程序的控制流信息,将获得的二进制数据像素化,通过转化为RGB彩色图像,从而将程序执行信息转换成图像将,PT数据包序列转换为RGB图像,进而将恶意程序检测问题转化为图像分类问题,以方便深度学习模型进行训练。具体而言,本发明采用动态检测方法,通过利用Intel PT 技术提取目标程序的执行信息,将该信息转换为RGB彩色图像。通过利用卷积神经网络对RGB图像进行分类处理,从而识别对应的恶意程序。
因此本发明能够实现对恶意程序的动态检测,利用程序运行时的PT数据进行深度学习处理,可以实现高效、准确的恶意程序检测。
(2)本发明实施例提供的恶意程序的动态检测系统,利用卷积神经网络对转换后的RGB图像进行训练和学习。当基于卷积神经网络的检测模型训练好后,可部署在虚拟化生产环境中,用于对目标程序的实时安全检测,以判断是否为恶意程序。不同于传统动态检测方案,本检测机制无需在目标虚拟机中部署和插入任何模块,保证了其透明性和实用性。同时该系统利用虚拟机自省技术,无需在目标系统中部署代理程序,保证了其透明性。
(3)本发明实施例提供的恶意程序的动态检测系统,通过在虚拟机监视器和检测器内部设置环形缓冲区,虚拟机监视器利用环形缓冲区算法保证PT数据高效传输到检测器中,使虚拟机监视器和检测器能并行工作。另一方面,检测器内部的收集线程和分析线程利用环形缓冲区进行数据同步,从而使PT数据收集和分析并行工作。保证了虚拟机外部的检测模块能够并行分析PT数据包,并充分利用了CPU多核技术,降低了对目标虚拟机的性能影响。
附图说明
图1为本发明实施例提供的恶意程序的动态检测装置总体架构图;
图2为本发明实施例提供的PT数据包修剪过程流程图;
图3为本发明实施例提供的恶意程序的动态检测系统组成框图;
图4为本发明实施例提供的恶意进程并行分析机制原理图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了基于硬件追踪技术的恶意程序智能检测方法,包括如下步骤:
步骤一、构建用于在虚拟机中运行的样本程序,样本程序具备标签,被标识为正常程序或者恶意程序;
步骤二、在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的PT数据包序列。
为了避免恶意程序对对虚拟机系统造成破坏,首先保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均恢复安全虚拟机快照,而不需要启动虚拟机,因此可有效提高数据收集的效率。
具体地,要在虚拟机中依次运行所有的样本程序,应当首先对虚拟机环境进行配置,安装用于保证所有样本程序正常执行的程序库;然后在虚拟机内部部署一个代理程序,代理程序依次执行所有的样本程序(每个样本程序执行前均先恢复安全虚拟机快照)。
样本程序执行过程如下:
S201、当前样本程序执行启动后,代理程序立即暂停当前样本程序的执行,然后配置Intel PT机制,配置Intel PT机制主要包括:设置所监控的当前执行的样本程序,配置相应的缓冲区以存储样本程序执行中获取的PT数据。
S202、开启Intel PT机制后,代理程序恢复当前样本程序的执行,Intel PT 机制捕获当前样本程序的执行信息,本发明实施例中采用Intel PT技术,仅对样本程序的代码区域的执行信息进行捕获;执行信息包括样本程序执行时的控制流和时序信息。
捕获的执行信息由PT数据包序列组成。
S203、将当前样本程序的PT数据序列保存到主机,并且附上标签(该标签与当前样本程序的标签一致),然后关闭虚拟机快照;
S204、按照同样的步骤S201~S203执行下一个样本程序,直至执行完所有的样本程序。
本发明实施例中,Intel PT可以捕获执行程序的控制流、时序和其他上下文信息,并产生高度压缩的PT数据包,利用这些数据包可以重建出程序的执行流程。Intel PT通过CPU内部的记录分支器来工作。在程序运行时,当CPU遇到任何分支指令(如ret、call、je)时,它将记录对该分支采取的操作。对于有条件的跳转指令,PT用1位记录采取(T)或未采取(NT)这一条件;对于间接调用和跳转,它会记录目标指令地址;对于无条件的分支,它不会记录变化,因为可以从程序指令语义中推断出目标指令地址。
PT数据包集合中包含了多种类型的数据包,本发明主要关注的是PGE,PGD, TNT和TIP类型数据包。PGE(Packet Generation Enable)数据包是PT追踪开始的标志,记录了起始的目标指令指针。PGD(Packet Generation Disable)数据包标志着PT追踪的结束。TNT(Taken/Not Taken)数据包记录直接条件分支的方向。TNT数据包有两种形式:1个字节的短TNT数据包和最多8个字节的长 TNT数据包。短TNT数据包的最小有效位是1位TNT头,包含1至6个TNT 位;长TNT数据包的最小有效位是2字节头,最多可以包含47个TNT位。TNT 数据包的最后一个有效TNT位后面跟着1位为1,称为停止位。如果TNT包没有满,停止位就会向前移动,后面的位用0填充。TIP(Target IP)数据包记录间接分支、异常、中断和其他分支或事件的目标IP(指令指针)。
得到当前样本程序的PT数据包序列,之后还包括对所获取的当前样本程序的PT数据包序列进行修剪,其原理如图2所示,具体为包括如下步骤:
第一步,获取当前样本程序的原始PT数据包序列;
修剪后的PT数据包序列仅包含PGE型数据包、PGD型数据包、TNT型数据包以及TIP型数据包,其构成的精简PT数据包序列记为P,其初始为空;设置标志位flag,其初始值设置为0;依次从原始PT数据包序列中取出一个PT 数据包,记为当前处理PT数据包pi;
第二步,提取当前处理PT数据包pi的类型ti;
第三步,如果当前处理PT数据包类型ti是PGD类型,从当前处理PT数据包中获取其TIP值,如果TIP值为0,则跳过当前处理PT数据包,并将标志flag 设置为1;如果TIP值不为0,则将当前处理PT数据包插入到精简后PT数据包序列P中;如果当前处理PT数据包类型ti为PGE类型,且flag标志值为1,则跳过当前处理PT数据包,并将flag标志值设置为0;如果flag标志值不为1,就将当前处理PT数据包插入到精简PT数据包序列P中;若当前处理PT数据包类型ti为TNT类型或者TIP类型,则直接将当前处理PT数据包插入到精简 PT数据包P中;
第四步,从原始PT数据包序列中取下一个PT数据包作为前处理PT数据包pi,返回第二步。
步骤三、将样本程序对应的PT数据包序列进行像素化处理,转换为RGB 图像;每个样本程序对应RGB图像及标签组成一个模型训练样本。
本发明实施例中,对PT数据包进行修剪后,再采用一种改进的独热(One-Hot) 编码方法。具体而言,该方法将每个PT数据包转换为一个颜色像素,每个像素包含RGB(RedGreen Blue)红绿蓝三种值,从而将收集到的数据包序列转换为 RGB图像。为了区分不同的PT数据包类型,对PGD、PGE、TNT和TIP数据包采用4种不同的红色(Red)值。TNT数据包有两种不同的类型:短TNT数据包和长TNT数据包,它们的值表示条件分支是否被采取,进一步为这些TNT 数据包分配不同的绿色(Green)值加以区分。由于TNT包不包含额外的信息,所以不分配相应的蓝色(Blue)值。对于TIP和PGE数据包,由于其中的TIP 值最多可占用16位存储空间,将同时分配绿色(Green)值和蓝色(Blue)值来表示其TIP值。PGD数据包也包含一个TIP值,表示目标程序调用了哪个库函数。为了对函数调用信息进行编码,首先利用TIP值和程序内存布局信息来识别被调用的动态链接库,然后根据TIP值进一步计算出库的偏移地址。获得动态链接库和偏移地址信息后,将为不同的动态链接库分配不同的绿色(Green)值,为动态链接库中不同的函数分配不同的蓝色(Blue)值。
对于收集到的目标程序(包括正常程序和恶意程序),逐一运行,利用Intel PT技术获取PT数据包。按照上述方法将获取到的PT数据包序列转换为RGB 彩色图像,从而构建出包含正常程序和恶意程序的训练数据集。
步骤四、采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于进行恶意程序检测。
在这一步骤中,构建卷积神经网络模型,训练上一模块获得的数据集,从而获得训练模型,对程序是否是恶意程序进行检测。卷积神经网络在图像处理领域应用广泛,它可以减少预处理,直接处理原始数据,因此对于提取和分析特征十分方便。将上一模块得到的RGB彩色图像通过多个卷积层和池化层进行特征提取,再通过全连接层构建分类模型,实现分类识别。
如图1所示,本发明还提供了一种恶意程序的动态检测装置,该装置主要包括三个模块,分别是程序数据采集模块、数据预处理模块和模型训练模块。
程序数据采集模块,首先构建用于在虚拟机中运行的样本程序,样本程序具备标签,被标识为正常程序或者恶意程序;然后在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的 PT数据包序列,送入数据与处理模块;其中保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均恢复安全虚拟机快照。
数据预处理模块,用于将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本,所有的模型训练样本送入模型训练模块。
模型训练模块,采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于进行恶意程序检测。
该实施例中所有模块的实现步骤可依据上述恶意程序的动态检测方法原理进行。
本发明恶意程序的动态检测系统,其框架如图3所示,包括主机、运行在主机上的具有PT感知功能的虚拟机监视器、客户虚拟机、虚拟机自省器以及检测器。
主机上运行客户虚拟机,客户虚拟机运行待检测程序。主机的CPU支持Intel PT机制。
检测器部署在主机的用户层;检测器上部署训练好的恶意程序检测模型;恶意程序检测模型采用上述方法或者装置训练得到。
虚拟机自省器部署在主机的用户层,虚拟机自省器在客户虚拟机暂停运行待检测程序时,利用虚拟机自省技术获取待检测程序中当前进程的标识信息(包括进程ID);虚拟机自省器将获取的当前进程的标识信息送入虚拟机监视器。
虚拟机监视器运行在主机底层,虚拟机监视器与Intel PT处理器关联;虚拟机监视器在接收到当前进程的标识信息之后,对Intel PT处理器的Intel PT机制进行管理和配置。
虚拟机监视器在客户虚拟机运行待检测程序时,利用Intel PT机制获取待检测程序中当前进程的执行信息,由Intel PT处理器进行记录。
Intel PT处理器将待检测程序中所有进程的执行信息均送入检测器中,检测器利用恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断待检测程序是否恶意程序。
为了准确配置PT机制对目标进程进行追踪,需通过虚拟机自省器获取目标进程的标识信息。不同于传统的恶意进程检测方法,本发明通过监控目标进程的核心代码内部的控制流信息以及核心代码与进程加载的动态链接库交互情况识别其恶意行为。因此,还需利用虚拟机自省技术获取目标进程代码和动态链接库的内存布局信息,以设置目标进程追踪的代码区域。
此外,虚拟机监视器需设置多个物理内存区域,以保证较长时间追踪目标进程的执行信息能被完整记录到内存。然而,由于这些物理内存区域大小是有限制的,可能会出现Intel PT记录的PT数据发生溢出情况,需进行处理。为此,本发明采用并行计算思路,利用虚拟机监视器定期将PT记录的程序执行信息传送给检测器模块进行并行分析和检测。另一方面,检测器模块利用CPU多核技术开启两个线程:收集线程和分析线程。收集线程主要负责收集和整理PT记录的执行信息;分析线程负责分析执行信息,以检测恶意进程。
为了保证虚拟机监视器与检测器模块能并行工作,本发明采用环形缓冲区算法解决数据同步问题。虚拟机监视器中设置环形缓冲区,环形缓冲区用于对虚拟机监视器获取的数据进行存储。检测器内部设置收集线程和分析线程以及环形缓冲区;收集线程用于收集获取待检测程序对应的执行信息;分析线程利用恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断待检测程序是否恶意程序;收集线程和分析线程同步运行,利用环形缓冲区进行数据同步。
虚拟机监视器利用环形缓冲区算法保证PT数据高效传输到检测器中,使虚拟机监视器和检测器能并行工作。另一方面,检测器内部的收集线程和分析线程利用环形缓冲区进行数据同步,从而使PT数据收集和分析并行工作。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于硬件追踪技术的恶意程序智能检测方法,其特征在于,包括如下步骤:
构建用于在虚拟机中运行的样本程序,所述样本程序具备标签,被标识为正常程序或者恶意程序;
在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,得到当前样本程序的PT数据包序列;保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均先恢复所述安全虚拟机快照;
将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本;
采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于恶意程序检测。
2.如权利要求1所述的方法,其特征在于,所述在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的PT数据包序列,具体为:
对虚拟机环境进行配置,安装用于保证所有样本程序正常执行的程序库;
虚拟机内部部署一个代理程序,所述代理程序依次执行所有的样本程序,每个样本程序执行前均先恢复所述安全虚拟机快照;
样本程序执行过程如下:
当前样本程序执行启动后,所述代理程序立即暂停当前样本程序的执行,然后配置Intel PT机制;开启Intel PT机制后,所述代理程序恢复当前样本程序的执行,Intel PT机制捕获当前样本程序的执行信息,执行信息以PT数据包序列的形式存储在内存缓冲区中;将缓冲区中PT数据包序列保存到主机,并且附上标签,最后关闭虚拟机快照;
按照同样的步骤执行下一个样本程序,直至执行完所有的样本程序。
3.如权利要求2所述的方法,其特征在于,所述采用Intel PT机制捕获样本程序的执行信息,具体为:
采用Intel PT处理器,仅对样本程序的代码区域的执行信息进行捕获;
所述执行信息包括样本程序执行时的控制流和时序信息。
4.如权利要求1所述的方法,其特征在于,所述得到当前样本程序的PT数据包序列,之后还包括对所获取的当前样本程序的PT数据包序列进行修剪,具体为包括如下步骤:
第一步,获取当前样本程序的原始PT数据包序列;
修剪后的PT数据包序列仅包含PGE型数据包、PGD型数据包、TNT型数据包以及TIP型数据包,其构成的精简PT数据包序列记为P,其初始为空;设置标志位flag,其初始值设置为0;依次从原始PT数据包序列中取出一个PT数据包,记为当前处理PT数据包pi;
第二步,提取所述当前处理PT数据包pi的类型ti;
第三步,如果当前处理PT数据包类型ti是PGD类型,从当前处理PT数据包中获取其TIP值,如果TIP值为0,则跳过当前处理PT数据包,并将标志flag设置为1;如果TIP值不为0,则将当前处理PT数据包插入到精简后PT数据包序列P中;如果当前处理PT数据包类型ti为PGE类型,且flag标志值为1,则跳过当前处理PT数据包,并将flag标志值设置为0;如果flag标志值不为1,就将当前处理PT数据包插入到精简PT数据包序列P中;若当前处理PT数据包类型ti为TNT类型或者TIP类型,则直接将当前处理PT数据包插入到精简PT数据包P中;
第四步,从原始PT数据包序列中取下一个PT数据包作为前处理PT数据包pi,返回第二步。
5.如权利要求1~4任一所述的方法,其特征在于,所述将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像,具体为:
将PT数据包序列中的每个PT数据包转换为一个颜色像素,从而将所述PT数据包序列转换为RGB图像。
6.如权利要求5所述的方法,其特征在于,所述将PT数据包序列中的每个PT数据包转换为一个颜色像素,具体为:
颜色像素采用RGB值表示,包含红色值、绿色值和蓝色值;
针对待转换的PT数据包,获取其类型,根据其类型确定RGB值中的红色值;
其中针对PGE型数据包、PGD型数据包、TNT型数据包以及TIP型数据包四种类型的数据包,设定不同的红色值即R值分别对应四种类型数据包;
对于TNT型数据包,根据其条件分支是否被采取,设定不同的绿色值;TNT型数据包蓝色值设置为0;
对于TIP型数据包和PGE型数据包,对应包含16位的TIP值,采用绿色值和蓝色值组合表示所述TIP值;
对于PGD型数据包,对应TIP值中包含动态链接库调用信息以及偏移地址信息,采用绿色值表示动态链接库调用信息,采用蓝色值表示偏移地址信息。
7.基于硬件追踪技术的恶意程序智能检测装置,其特征在于,包括程序数据采集模块、数据预处理模块以及模型训练模块,具体为:
所述程序数据采集模块,首先构建用于在虚拟机中运行的样本程序,所述样本程序具备标签,被标识为正常程序或者恶意程序;然后在虚拟机中依次运行所有的样本程序,采用Intel PT机制捕获样本程序的执行信息,组成当前样本程序的PT数据包序列,送入所述数据与处理模块;其中保存未运行过恶意程序的虚拟机快照即为安全虚拟机快照,每个样本程序执行前均恢复所述安全虚拟机快照;
所述数据预处理模块,用于将样本程序对应的PT数据包序列进行像素化处理,转换为RGB图像;每个样本程序对应RGB图像及标签组成一个模型训练样本,所有的模型训练样本送入所述模型训练模块;
所述模型训练模块,采用所有样本程序对应的模型训练样本,对预先构建的卷积神经网络模型进行训练得到恶意程序检测模型,用于进行恶意程序检测。
8.基于硬件追踪技术的恶意程序智能检测系统,其特征在于,包括主机、运行在主机上的具有PT感知功能的虚拟机监视器、客户虚拟机、虚拟机自省器以及检测器;
所述主机上运行所述客户虚拟机,所述客户虚拟机运行待检测程序;所述主机的CPU支持Intel PT机制;
所述检测器部署在所述主机的用户层;所述检测器上部署训练好的恶意程序检测模型;所述恶意程序检测模型采用如权利要求1~6任一种方法或者如权利要求7的装置训练得到;
所述虚拟机自省器部署在所述主机的用户层,所述虚拟机自省器在客户虚拟机暂停运行待检测程序时,利用虚拟机自省技术获取所述待检测程序中当前进程的标识信息;所述虚拟机自省器将获取的当前进程的标识信息送入虚拟机监视器;
所述虚拟机监视器运行在主机底层,虚拟机监视器与所述Intel PT处理器关联;所述虚拟机监视器在接收到所述当前进程的标识信息之后,对所述Intel处理器的Intel PT机制进行管理和配置;
所述虚拟机监视器在客户虚拟机运行所述待检测程序时,利用Intel PT机制获取所述待检测程序中当前进程的执行信息,由所述Intel PT处理器进行记录;
所述Intel PT处理器将待检测程序中所有进程的执行信息均送入所述检测器中,所述检测器利用所述恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断所述待检测程序是否恶意程序。
9.如权利要求8所述的系统,其特征在于,所述虚拟机监视器中设置环形缓冲区,所述环形缓冲区用于对所述虚拟机监视器获取的PT数据进行存储。
10.如权利要求8或9所述的系统,其特征在于,所述检测器内部设置收集线程和分析线程以及环形缓冲区;
所述收集线程用于收集获取待检测程序对应的执行信息;
所述分析线程利用所述恶意程序检测模型对待检测程序对应的执行信息进行检测,以判断所述待检测程序是否恶意程序;
所述收集线程和所述分析线程同步运行,利用环形缓冲区进行数据同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280246.9A CN112989344B (zh) | 2021-03-16 | 2021-03-16 | 基于硬件追踪技术的恶意程序智能检测方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110280246.9A CN112989344B (zh) | 2021-03-16 | 2021-03-16 | 基于硬件追踪技术的恶意程序智能检测方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112989344A true CN112989344A (zh) | 2021-06-18 |
CN112989344B CN112989344B (zh) | 2022-07-05 |
Family
ID=76336010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110280246.9A Active CN112989344B (zh) | 2021-03-16 | 2021-03-16 | 基于硬件追踪技术的恶意程序智能检测方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989344B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977188A (zh) * | 2010-10-14 | 2011-02-16 | 中国科学院计算技术研究所 | 恶意程序检测系统 |
CN103839003A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 恶意文件检测方法及装置 |
CN110059484A (zh) * | 2017-12-28 | 2019-07-26 | 英特尔公司 | 对轨迹数据执行深度学习以用于漏洞检测 |
US20200201998A1 (en) * | 2017-11-30 | 2020-06-25 | Palo Alto Networks, Inc. | Detecting malware via scanning for dynamically generated function pointers in memory |
CN111796911A (zh) * | 2020-07-08 | 2020-10-20 | 中国科学院信息工程研究所 | 一种面向云平台虚拟设备的攻击检测方法及电子装置 |
CN111931179A (zh) * | 2020-08-13 | 2020-11-13 | 北京理工大学 | 基于深度学习的云端恶意程序检测系统及方法 |
-
2021
- 2021-03-16 CN CN202110280246.9A patent/CN112989344B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101977188A (zh) * | 2010-10-14 | 2011-02-16 | 中国科学院计算技术研究所 | 恶意程序检测系统 |
CN103839003A (zh) * | 2012-11-22 | 2014-06-04 | 腾讯科技(深圳)有限公司 | 恶意文件检测方法及装置 |
US20200201998A1 (en) * | 2017-11-30 | 2020-06-25 | Palo Alto Networks, Inc. | Detecting malware via scanning for dynamically generated function pointers in memory |
CN110059484A (zh) * | 2017-12-28 | 2019-07-26 | 英特尔公司 | 对轨迹数据执行深度学习以用于漏洞检测 |
CN111796911A (zh) * | 2020-07-08 | 2020-10-20 | 中国科学院信息工程研究所 | 一种面向云平台虚拟设备的攻击检测方法及电子装置 |
CN111931179A (zh) * | 2020-08-13 | 2020-11-13 | 北京理工大学 | 基于深度学习的云端恶意程序检测系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112989344B (zh) | 2022-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Chua et al. | Neural nets can learn function type signatures from binaries | |
US11258813B2 (en) | Systems and methods to fingerprint and classify application behaviors using telemetry | |
US9747452B2 (en) | Method of generating in-kernel hook point candidates to detect rootkits and the system thereof | |
Hu et al. | {MutantX-S}: Scalable Malware Clustering Based on Static Features | |
Kawakoya et al. | Memory behavior-based automatic malware unpacking in stealth debugging environment | |
CN109583200B (zh) | 一种基于动态污点传播的程序异常分析方法 | |
US20190050566A1 (en) | Technologies for control flow exploit mitigation using processor trace | |
CN102024112B (zh) | 基于静态特征的pe文件加壳检测方法 | |
KR101715759B1 (ko) | 멀티코어 환경에서의 악성코드 분석 장치 및 방법 | |
CN109858239B (zh) | 一种动静态结合的容器内cpu漏洞攻击程序检测方法 | |
US11048798B2 (en) | Method for detecting libraries in program binaries | |
CN111931179B (zh) | 基于深度学习的云端恶意程序检测系统及方法 | |
CN107526970B (zh) | 基于动态二进制平台检测运行时程序漏洞的方法 | |
CN109033839A (zh) | 一种基于动态多特征的恶意软件检测方法 | |
CN110135160A (zh) | 软件检测的方法、装置及系统 | |
CN110837641A (zh) | 一种基于内存分析的恶意软件检测方法及检测系统 | |
EP2988242B1 (en) | Information processing device, and information processing method | |
CN108038376A (zh) | 基于混合分析的加壳程序通用脱壳方法及装置 | |
CN114090406A (zh) | 电力物联网设备行为安全检测方法、系统、设备及存储介质 | |
CN111382428A (zh) | 恶意软件识别模型训练方法、恶意软件识别方法及装置 | |
CN110210216B (zh) | 一种病毒检测的方法以及相关装置 | |
CN112989344B (zh) | 基于硬件追踪技术的恶意程序智能检测方法、装置及系统 | |
Isawa et al. | An original entry point detection method with candidate-sorting for more effective generic unpacking | |
CN116522345A (zh) | 漏洞挖掘方法、装置、设备及可读存储介质 | |
CN108255496B (zh) | 一种获取安卓应用原生层代码的方法、系统及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |