CN101848092A - 恶意代码检测方法和装置 - Google Patents
恶意代码检测方法和装置 Download PDFInfo
- Publication number
- CN101848092A CN101848092A CN200910106335A CN200910106335A CN101848092A CN 101848092 A CN101848092 A CN 101848092A CN 200910106335 A CN200910106335 A CN 200910106335A CN 200910106335 A CN200910106335 A CN 200910106335A CN 101848092 A CN101848092 A CN 101848092A
- Authority
- CN
- China
- Prior art keywords
- instruction
- packet
- command sequence
- module
- detected
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及网络通信领域,尤其涉及一种恶意代码检测方法和装置。该方法包括:网络设备将待检测的数据包作为指令进行逆向,构建指令序列;在虚拟中央处理器指令系统中执行所述指令序列;当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,所述网络设备对包括所述数据包的流量进行安全化处理。采用本发明实施例提供的技术方案,因为采用网络侧的虚拟CPU指令系统检测恶意代码,能检测未知恶意代码,并且能检测采用了多种反检测手段的恶意代码,解决了在网络侧不依赖特征库进行恶意代码检测的问题。
Description
技术领域
本发明涉及网络通信领域,尤其涉及一种恶意代码检测方法和装置。
背景技术
随着网络技术的发展和互联网资源的大范围使用,恶意代码对计算机系统安全及网络安全的威胁日益增加。恶意代码层出不穷,虽然各种恶意代码的检测技术也在不断的发展,但是总是滞后于恶意代码。一方面,恶意代码的欺骗隐藏技术使得人们难以分辨正常代码和恶意代码,另一方面,客户端往往缺乏合格的信息保护机制。
目前的恶意代码检测技术倾向于在客户端侧对恶意代码进行分析,无法在恶意代码到达客户端侧之前及时地识别出恶意代码,给出告警信息。
客户端侧特征码扫描是常见的恶意代码检测技术之一。在客户端侧进行特征码扫描的特点是将被检测文件与特征数据库中的恶意代码特征进行字符串匹配。常用的技术是将一个已知恶意代码样本进行静态反汇编或动态调试,提取指令片断,该指令片断能够唯一标识某种恶意代码特征。多个指令片断构成特征数据库。在被检测文件中查找是否含有特征数据库中的恶意代码特征串。
客户端侧特征码扫描技术要求在客户端侧引入恶意代码。恶意代码的隐藏和多副本,使本地系统有可能受到感染。另外,恶意代码的多态和变形技术,使对恶意代码的特征码扫描不足以检测出采用了反检测技术的恶意代码。
客户端侧特征码扫描技术还要求特征数据库保持最新,而特征数据库的更新总是落后于恶意代码的发展。
客户端侧完整性检测技术是另一种常见的恶意代码检测技术。该技术原理是,计算文件的一个值,用这个值来描述完整的正常文件的状态。一般使用哈希(HASH)算法计算文件的HASH值,该值放在安全数据库中。周期性对文件进行检测,当再次计算被检测文件的HASH值,与安全数据库中原有的值不同时,文件可能被感染。
同样,客户端侧完整性检测技术也无法避免在客户端侧引入恶意代码。并且,文件的值有可能一开始就不是安全值。这将影响以后的检测结果。正常应用程序对文件的修改,也将影响文件的HASH值。因此,客户端侧完整性检测技术虽然能检测出未知恶意代码,但是无法区分正常修改和恶意代码对文件的修改,误报率较高。
网络侧的恶意代码检测技术可以改进客户端侧检测无法避免的引入恶意代码的问题。网络入侵检测系统(Network Intrusion Detection System,NIDS)是发展较成熟的网络侧检测技术。
NIDS通过协议解析,将网络流进行特征匹配。检测的速度和粒度取决于协议解析的深度、特征匹配的速度和特征库的质量。同客户端侧的特征匹配技术一样,NIDS也无法检测出未知恶意代码。
发明内容
本发明实施例的目的是提供一种恶意代码检测方法和装置,解决了在网络侧不依赖特征库进行恶意代码检测的问题。
本发明实施例的目的是通过以下技术方案实现的:
一种恶意代码检测方法,包括:
网络设备将待检测的数据包作为指令进行逆向,构建指令序列;
在虚拟中央处理器(Central Process Unit,CPU)指令系统中执行所述指令序列;
当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,所述网络设备对包括所述数据包的流量进行安全化处理。
一种网络设备,包括,构建模块、虚拟模块、判断模块和处理模块;其中,
所述构建模块,用于将待检测的数据包作为指令进行逆向,构建指令序列;
所述虚拟模块,用于虚拟至少一个CPU指令系统,在虚拟CPU指令系统中执行所述指令序列;
所述判断模块,用于当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,通知所述处理模块;
所述处理模块,用于进行安全化处理。
采用本发明实施例提供的技术方案,因为采用网络侧的虚拟CPU指令系统检测恶意代码,能检测未知恶意代码,并且能检测采用了多态、变形、自我修改、间接跳转、非自我包含等多种反检测手段的恶意代码,因为判断标准在于恶意代码在虚拟机上的运行行为特征,不依赖特征码库能够检测到包含未知恶意代码的数据流,解决了在网络侧不依赖特征库进行恶意代码检测的问题。
附图说明
图1为本发明一个实施例中恶意代码检测方法流程图;
图2为本发明一个实施例中网络设备框图;
图3为本发明另一个实施例中在虚拟CPU指令系统中执行指令序列的流程图;
图4为本发明另一个实施例中网络设备框图;
图5为本发明又一个实施例中恶意代码检测方法流程图;
图6为本发明又一个实施例中网络设备框图;
图7为本发明另一个实施例中恶意代码检测方法流程图;
图8为本发明另一个实施例中网络设备框图。
具体实施方式
以下结合图1和图2说明本发明一个实施例:
图1为本发明一个实施例中恶意代码检测方法流程图。该方法包括:
102、网络设备将待检测的数据包作为指令进行逆向,构建指令序列。
举例来说,网络设备可以从核心路由器、边缘路由器或其他网络设备获得待检测的数据包,从数据包的每一个字节开始,进行逆向,分别构建指令序列。所述网络设备可以是一台或一组专用服务器,也可以是具有恶意代码检测能力的通用网络设备。以一段6个字节的代码的指令序列构建为例,首先,从第一个字节开始,对代码进行逆向,构建第一条指令序列;接着,从第二个字节开始,对代码进行逆向,构建第二条指令序列;如此依次进行指令序列的构建,每次构建中逆向的代码都比上一次少一个字节。所述逆向可以是静态反汇编等代码逆向技术。对于不同类型的中央处理器(Central Process Unit,CPU),可以采用相应的逆向方法。所述不同类型的中央处理器可以是复杂指令集运算(Complex Instruction Set Computer,CISC)处理器如个人计算机常用的x86类处理器或应用于移动电话、个人数码助理、手持设备或其他移动数字设备的低功耗x86类处理器,也可以是精简指令集运算(reduced instruction set computer,RISC)处理器如PowerPC处理器、CELL处理器或进阶精简指令集机器(Advanced RISC Machine,ARM)处理器,还可以是显式并行指令集运算(Explicitly Parallel Instruction Computing,EPIC)处理器如IA-64类处理器。
104、在虚拟CPU指令系统中执行指令序列。
举例来说,网络设备虚拟一个或多个CPU指令系统,在虚拟CPU指令系统中执行构建出的指令序列。对同一段代码从不同位置开始构建出的不同指令序列,可以在一个虚拟CPU指令系统中依次执行,也可以在多个虚拟CPU指令系统中执行,或分成若干组,多个虚拟CPU指令系统中分别依次执行。
106、当虚拟CPU指令系统对指令序列的执行效果符合预设特征时,网络设备对包括数据包的流量进行安全化处理。
举例来说,当所述虚拟CPU指令系统对所述指令序列的执行效果满足根据恶意代码的行为特点构造的预定特征时,对包括所述数据包的流量进行安全化处理。例如,多数恶意代码会有一个使用获取指令寻找攻击部分代码所在内存地址并读取,之后执行这些恶意代码的过程。以x86类处理器为例,具体表现为虚拟CPU指令系统执行了调用(call)指令或浮点保存环境(floating store environment,fstenv)指令集中的任何指令后又执行超过第一阈值次读负载操作,并且发生了超过第二阈值次独写操作并执行了超过第三阈值条写-执行指令。所述读负载操作是指对本指令序列地址空间内地址的读操作,所述独写操作是指把数据写到不同地址空间的写操作,所述写-执行指令是指在同一指令序列执行过程中由独写操作写入的指令。所述第一阈值、第二阈值、第三阈值,根据具体处理器类型设定,例如根据是x86处理器、RISC处理器或EPIC处理器具体设定。当虚拟CPU指令系统表现出以上行为时,就需要对包括所述数据包的流量进行安全化处理,例如,对包括所述数据包的流量进行报警,和/或拦截包括所述数据包的流量。
本领域普通技术人员可以知道,其他根据恶意程序的行为特点构造的判断条件,都可以作为虚拟CPU指令系统对所述指令序列的执行效果的预定特征。
图2为本发明一个实施例中网络设备框图。所述网络设备可以是一台或一组专用服务器,也可以是具有恶意代码检测能力的通用网络设备。该装置包括:构建模块、虚拟模块、判断模块和处理模块;其中,
构建模块202,用于将待检测的数据包作为指令进行逆向,构建指令序列。
举例来说,构建模块202从数据包的每一个字节开始,进行逆向,分别构建指令序列。以一段6个字节的代码的指令序列构建来说,首先,构建模块202从第一个字节开始,对代码进行逆向,构建第一条指令序列;接着,构建模块202从第二个字节开始,对代码进行逆向,构建第二条指令序列;如此依次进行指令序列的构建,每次构建中逆向的代码都比上一次少一个字节。所述逆向可以是静态反汇编等代码逆向技术。
虚拟模块204,用于虚拟至少一个CPU指令系统,在虚拟CPU指令系统中执行所述指令序列。
举例来说,虚拟模块204虚拟一个或多个CPU指令系统,在虚拟CPU指令系统中执行构建模块202构建出的指令序列。对同一段代码从不同位置开始构建出的不同指令序列,可以在一个虚拟CPU指令系统中依次执行,也可以在多个虚拟CPU指令系统中执行,或分成若干组,多个虚拟CPU指令系统中分别依次执行。
判断模块206,用于当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,通知处理模块208。
举例来说,当所述虚拟CPU指令系统对所述指令序列的执行效果满足根据恶意代码的行为特点,构造的预定特征时,判断模块206通知处理模块208。例如,多数恶意代码会有一个使用获取指令寻找攻击部分代码所在内存地址并读取,之后执行这些恶意代码的过程。以x86类处理器为例,具体表现为虚拟CPU指令系统执行了调用指令或浮点保存环境指令集中的任何指令后又执行超过第一阈值次读负载操作,并且发生了超过第二阈值次独写操作并执行了超过第三阈值条写-执行指令。所述读负载操作是指对本指令序列地址空间内地址的读操作,所述独写操作是指把数据写到不同地址空间的写操作,所述写-执行指令是指在同一指令序列执行过程中由独写操作写入的指令。所述第一阈值、第二阈值、第三阈值,根据具体处理器类型设定,例如根据是x86处理器、RISC处理器或EPIC处理器具体设定。当虚拟CPU指令系统表现出以上行为时,判断模块206通知处理模块208。
本领域普通技术人员可以知道,其他根据恶意程序的行为特点构造的判断条件,都可以作为虚拟CPU指令系统对所述指令序列的执行效果的预定特征。
处理模块208,用于进行安全化处理。
举例来说,处理模块208收到对流量安全化处理通知时,对该流量进行报警,和/或拦截该流量。
以下结合图3和图4说明本发明另一个实施例:
图3为本发明另一个实施例中在虚拟CPU指令系统中执行指令序列的流程图,是对图1所示实施例中106的举例说明。该方法包括:
302、获得指令序列首地址与指令序列数目,初始化虚拟CPU指令系统的指令缓冲区。
304、将虚拟CPU指令系统中的寄存器初始值赋为指令序列首地址。
举例来说,在x86架构的虚拟CPU中,所述寄存器可以是标志寄存器(EFLAGS)或堆栈指针寄存器(Stack Pointer Register,esp)。
306、当指令缓冲区中不存在指令指针时,将指令序列中的对应指令存放到指令缓冲区。
308、在当前指令为非法指令或特权指令时,对包括数据包的流量进行安全化处理。
举例来说,在x86类处理器中,Ring0指令是特权指令,在当前指令为Ring0指令时,网络设备对包括所述数据包的流量进行安全化处理。例如,网络设备对包括所述数据包的流量进行报警,和/或拦截包括所述数据包的流量。
310、执行当前指令,并相应改变指令寄存器指针。
举例来说,在x86类处理器中,虚拟CPU指令系统执行当前指令,并随之改变指令指针寄存器(Instruction Pointer Register,eip)中的指令寄存器指针。
在本发明实施例的具体应用场景中,在302之前或之后,可以扫描指令序列,当指令序列中存在限制符,且所述限制符与所述指令序列首地址的偏移,小于预设阈值时,不执行所述限制符之前的指令序列。或者,当指令序列存在一个以上限制符时,当所述限制符与上一个限制符之间的偏移,小于预设阈值时,不执行所述限制符与所述上一个限制符之间的指令序列。
举例来说,恶意代码的数据输入流,会被含漏洞的进程当作字符串输入流,这时如果恶意代码中含有任何的限制符,例如空(null或‘\0’)字节,就会使恶意代码失去攻击能力。因此,两个限制符之间或者指令序列首部与限制符之间小于某一预设阈值的代码,是安全代码,可以跳过这一部分代码不在虚拟CPU指令系统中执行。所述预设阈值可以根据具体的处理器类型设置。
图4为本发明另一个实施例中网络设备框图。该装置包括构建模块402、虚拟模块404、判断模块406、处理模块408和扫描模块410。该装置各个组成部分与图2所示实施例的网络设备基本相同,功能也基本相同,区别在于,增加了扫描模块410。
扫描模块410,用于扫描指令序列,当所述指令序列中存在限制符,且所述限制符与所述指令序列首地址的偏移,或所述限制符与上一个限制符之间的偏移,小于预设阈值时,通知所述虚拟模块不执行所述限制符之前的指令序列。例如,所述限制符包括空(null或‘\0’)字节,所述预设阈值可以根据具体的处理器类型设置。
以下结合图5和图6说明本发明又一个实施例:
图5为本发明又一个实施例中恶意代码检测方法流程图。该方法在图1所示方法的基础上,在将待检测的数据包作为指令进行逆向,构建指令序列之前增加以下步骤:
502、网络设备获取指定数据流的流量镜像。
举例来说,为了不影响网络本身的运行,采用旁路并接的方法,从核心路由器或其他网络设备上导出流量镜像。获取流量镜像时,可以进行负载均衡和/或零拷贝式获取。
所述负载均衡机制是指将流量镜像分流到网络设备中不同的物理CPU,根据物理CPU使用状态进行调节,在某个物理CPU负担过重时,减小分流到该物理CPU上的流量。
所述零拷贝式获取是指采用存储器直接访问(Direct Memory Access,DMA)方法将网络数据包直接传递到预先分配的地址空间中。还可以利用内存映射(memory map,mmap)调用将存储数据包的内存区域映射到应用程序空间,减少内存拷贝。
504、对流量镜像进行协议分析。
举例来说,对流量镜像进行协议分析可以采用树型协议分析的方法。首先对网络层协议识别后还原,然后脱去网络层协议头;再对传输层协议识别后还原,脱去传输层协议头;最后对应用层协议识别后还原,脱去应用层协议头。建立的协议树以流量镜像的无结构数据流作为根节点,网络层协议作为第一层节点。以相同的网络层协议作为父节点,生出不同协议分支,以此类推。在解析过程中,按照数据包的协议类型,在协议树中建立新的分支,或者找到相对应的协议叶子节点。
在本发明实施例的具体应用场景中,可以对相同协议类型的数据包进行HASH提取。例如,在网络流量太大,网络设备的处理能力不足时,可以用HASH提取的方法对相同协议类型的数据包进行抽样,以降低网络设备需要处理的数据量。
506、根据所述协议分析的结果获得待检测的数据包。
在本发明实施例的一个具体应用场景中,可以直接将协议分析的结果作为待检测的数据包。
在本发明实施例的另一个具体应用场景中,可以在协议解析完成后,根据数据提取分类规则,对数据包进行筛选。例如,分类规则可以是判断作为协议分析的结果的某个数据包的IP地址是否在IP地址列表中,当协议分析的结果的IP地址不在IP地址列表中时,丢弃协议分析的结果。或者,当协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果。也可以是,当协议分析的结果的IP地址不在IP地址列表中,并且协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果。还可以是,当协议分析的结果的IP地址不在IP地址列表中,或者协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果。
所述IP地址列表,可以按照具体需要设置。举例来说,IP地址列表可以是在网段中重点关注的网络节点,也可以是以增值业务等方式获得网络侧恶意代码检测服务的客户端的IP地址,所述客户端包括个人计算机、服务器或其他网络设备,以及移动电话、个人数码助理、手持设备或其他移动数字设备。所述协议列表,可以根据安全性或其他标准设置,例如,流媒体协议数据流量大,携带恶意代码的可能性低,网络设备可以丢弃这类协议的流量。
在本发明实施例的又一个具体应用场景中,建立待检测的数据包的多层目录文档,多层目录文档建立后,检查所述多层目录文档的目录项的值,当所述目录项的值超过设定的阈值时,对包括目录项的流量进行安全化处理,例如,对该流量进行报警,和/或拦截该流量。例如,周期性检查目录项的值大小,当其超过设定的阈值,则怀疑出现拒绝服务(Denial of service,DOS)攻击或分布式拒绝服务(Distribution Denial of service,DDOS)攻击,对包括目录项的流量进行安全化处理,例如,对该流量进行报警,和/或拦截该流量。
图6为本发明又一个实施例中网络设备框图。该装置包括获取模块602、存储模块604、分析模块606、构建模块608、虚拟模块610、判断模块612和处理模块614。该装置各个组成部分与图2所示实施例的网络设备基本相同,功能也基本相同,区别在于,增加了获取模块602、存储模块604和分析模块606。其中,
获取模块602,用于获取指定数据流的流量镜像,将所述流量镜像发送给存储模块604。
举例来说,采用旁路并接的方法,获取模块602从网络上导出流量镜像,将所述流量镜像发送给存储模块604。获取流量镜像时,可以进行负载均衡和/或零拷贝式获取。
所述负载均衡机制是指将流量镜像分流到网络设备中不同的物理CPU,根据物理CPU使用状态进行调节,在某个物理CPU负担过重时,减小分流到该物理CPU上的流量。
所述零拷贝式获取是指采用存储器直接访问方法将网络数据包直接传递到预先分配的地址空间中。还可以利用内存映射调用将存储数据包的内存区域映射到应用程序空间,减少内存拷贝。
存储模块604,用于存储获取模块602或分析模块606发送的数据。
举例来说,存储模块604可以在用大容量硬盘组成的独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID),采用该方案的存储模块604存储空间较大,并且采用某些RAID规范可以加快存储,例如RAID0、RAID5、RAID7、RAID10或RAID53。存储模块604还可以采用大内存虚拟为镜像磁盘,将获取模块602或分析模块606发送的数据直接存储为内存上的转储(dump)文件,将内存作为虚拟磁盘访问,直接在内存上进行数据独写。采用该方案的存储模块604可以快速存储,减小存储周转空间。
举例来说,分析模块606发送的协议分析的结果在存储模块604中,可以以多层目录文档的方式存储。存储模块604还可以按照文件生成的日期时间进行归类。存储模块604可以周期性的检查目录项,当所述目录项的值超过设定的阈值时,对包括目录项的流量进行安全化处理。根据文件生成时间,存储模块604定期进行存储空间清空或整理,以保证存储空间高效使用。
分析模块606,用于对所述存储模块中的流量镜像进行协议分析,根据所述协议分析的结果获得待检测的数据包,将所述待检测的数据包发送给存储模块604。
在本发明实施例的一个具体应用场景中,分析模块606可以之间将协议分析的结果作为待检测的数据包发送给存储模块604。
在本发明实施例的另一个具体应用场景中,分析模块606可以在协议解析完成后,根据数据提取分类规则,对数据包进行筛选,将筛选后的数据包发送给存储模块604。例如,分类规则可以是判断作为协议分析的结果的某个数据包是否在IP地址列表中,当协议分析的结果的IP地址不在IP地址列表中时,丢弃协议分析的结果。或者,当协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果。所述IP地址列表,可以按照具体需要设置。举例来说,IP地址列表可以是在网段中重点关注的网络节点,也可以是以增值业务等方式获得网络侧恶意代码检测服务的客户端的IP地址,所述客户端包括个人计算机、服务器或其他网络设备,以及移动电话、个人数码助理、手持设备或其他移动数字设备。所述协议列表,可以根据安全性或其他标准设置,例如,流媒体协议数据流量大,携带恶意代码的可能性低,网络设备可以丢弃这类协议的流量。
以下结合图7和图8说明本发明另一个实施例:
图7为本发明另一个实施例中恶意代码检测方法流程图。该方法包括:
702、根据恶意代码特征库对待检测的数据包进行特征码匹配检测,当所述数据包匹配所述恶意代码特征库时,对包括所述数据包的流量进行安全化处理。
704、当所述数据包不匹配所述恶意代码特征库时,网络设备将待检测的数据包作为指令进行逆向,构建指令序列。
706、在虚拟CPU指令系统中执行所述指令序列。
704、706的具体方法可以参见图1所示实施例。
708、当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,对包括所述数据包的流量进行安全化处理。
举例来说,当所述虚拟CPU指令系统对所述指令序列的执行效果满足根据恶意代码的行为特点,构造的预定特征时,对包括所述数据包的流量进行安全化处理。例如,多数恶意代码会有一个使用获取指令寻找攻击部分代码所在内存地址并读取,之后执行这些恶意代码的过程。以x86类处理器为例,具体表现为虚拟CPU指令系统执行了调用指令或浮点保存环境指令集中的任何指令后又执行超过第一阈值次读负载操作,并且发生了超过第二阈值次独写操作并执行了超过第三阈值条写-执行指令。所述读负载操作是指对本指令序列地址空间内地址的读操作,所述独写操作是指把数据写到不同地址空间的写操作,所述写-执行指令是指在同一指令序列执行过程中由独写操作写入的指令。所述第一阈值、第二阈值、第三阈值,根据具体处理器类型设定,例如根据是x86处理器、RISC处理器或EPIC处理器具体设定。当虚拟CPU指令系统表现出以上行为时,就需要对包括所述数据包的流量进行安全化处理。所述安全化处理包括以下至少一种:进行报警;拦截相关流量;将检测出的恶意代码的特征添加到恶意代码特征库。
本领域普通技术人员可以知道,图7所示实施例可以与图3所示实施例或图5所示实施例相结合。当图7所示实施例与图3所示实施例结合时,与图3所示实施例中的安全化处理包括以下至少一种:进行报警;拦截相关流量;将检测出的恶意代码的特征添加到恶意代码特征库。
图8为本发明另一个实施例中网络设备框图。该装置包括匹配模块802、构建模块804、虚拟模块806、判断模块808和处理模块810。该装置各个组成部分与图2所示实施例的网络设备基本相同,功能也基本相同,区别在于,增加了匹配模块802。其中,
匹配模块802,用于根据恶意代码特征库对待检测的数据包进行特征码匹配检测,当所述数据包匹配所述恶意代码特征库时,通知所述处理模块。
本领域普通技术人员可以知道,图8所示实施例可以与图4所示实施例或图6所示实施例相结合。
采用本发明实施例提供的技术方案,因为采用网络侧的虚拟CPU指令系统检测恶意代码,能检测未知恶意代码,并且能检测采用了多态、变形、自我修改、间接跳转、非自我包含等多种反检测手段的恶意代码,因为判断标准在于恶意代码在虚拟机上的运行行为特征,不依赖特征码库能够检测到包含未知恶意代码的数据流,解决了在网络侧不依赖特征库进行恶意代码检测的问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是ROM/RAM,磁盘或光盘等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (16)
1.一种恶意代码检测方法,其特征在于,包括:
网络设备将待检测的数据包作为指令进行逆向,构建指令序列;
在虚拟中央处理器CPU指令系统中执行所述指令序列;
当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,所述网络设备对包括所述数据包的流量进行安全化处理。
2.根据权利要求1所述的方法,其特征在于,在所述网络设备将待检测的数据包作为指令进行逆向,构建指令序列之前,还包括:
所述网络设备获取指定数据流的流量镜像;
对所述流量镜像进行协议分析;
根据所述协议分析的结果获得待检测的数据包。
3.根据权利要求2所述的方法,其特征在于,根据所述协议分析的结果获得待检测的数据包,包括:
将协议分析的结果作为待检测的数据包;或
根据分类原则,对所述协议分析的结果进行筛选,获得待检测的数据包。
4.根据权利要求3所述的方法,其特征在于,所述分类原则,包括:
当所述协议分析的结果的网际协议IP地址不在IP地址列表中时,丢弃所述协议分析的结果;或
当协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果;或
当协议分析的结果的IP地址不在IP地址列表中,并且协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果;或
当协议分析的结果的IP地址不在IP地址列表中,或者协议分析的结果的协议类型不在协议列表中时,丢弃协议分析的结果。
5.根据权利要求2或3所述的方法,其特征在于,在所述根据所述协议分析的结果获得待检测的数据包之后,还包括:
建立待检测的数据包的多层目录文档,检查所述多层目录文档的目录项的值,当所述目录项的值超过设定的阈值时,对包括目录项的流量进行安全化处理。
6.根据权利要求2或3所述的方法,其特征在于,在所述根据所述协议分析的结果获得待检测的数据包之后,还包括:
对相同协议类型的数据包进行HASH提取。
7.根据权利要求1所述的方法,其特征在于,所述网络设备将待检测的数据包作为指令进行逆向,构建指令序列,包括:
根据恶意代码特征库对待检测的数据包进行特征码匹配检测,当所述数据包匹配所述恶意代码特征库时,对包括所述数据包的流量进行安全化处理;
当所述数据包不匹配所述恶意代码特征库时,所述网络设备将待检测的数据包作为指令进行逆向,构建指令序列。
8.根据权利要求1所述的方法,其特征在于,所述将待检测的数据包作为指令进行逆向,构建指令序列,包括:
从所述数据包的每一个字节开始,进行逆向,分别构建指令序列。
9.根据权利要求1所述的方法,其特征在于,所述在虚拟中央处理器CPU指令系统中执行所述指令序列,包括:
获得指令序列首地址与指令序列数目,初始化虚拟CPU指令系统的指令缓冲区;
将虚拟CPU指令系统中的寄存器初始值赋为所述指令序列首地址;
当所述指令缓冲区中不存在指令指针时,将指令序列中的对应指令存放到所述指令缓冲区;
在当前指令为非法指令或特权指令时,对包括所述数据包的流量进行安全化处理;
执行当前指令,并相应改变指令寄存器指针。
10.根据权利要求1所述的方法,其特征在于,在所述网络设备将待检测的数据包作为指令进行逆向,构建指令序列之后,还包括:
扫描指令序列,当所述指令序列中存在限制符,且所述限制符与所述指令序列首地址的偏移,小于预设阈值时,不执行所述限制符之前的指令序列;或
扫描指令序列,当所述指令序列中存在限制符,且所述限制符与上一个限制符之间的偏移,小于预设阈值时,不执行所述限制符与所述上一个限制符之间的指令序列。
11.根据权利要求1所述的方法,其特征在于,所述预定特征,包括:
虚拟CPU指令系统执行了调用call指令或浮点保存环境fstenv指令集中的任何指令后又执行超过第一阈值的读负载操作,所述读负载操作是指对本指令序列地址空间内地址的读操作;和
虚拟CPU指令系统在执行一个指令序列的过程中,发生了超过第二阈值的独写操作并执行了超过第三阈值的写-执行指令,所述独写操作是指把数据写到不同地址空间的写操作,所述写-执行指令是指在同一指令序列执行过程中由独写操作写入的指令。
12.根据权利要求1至4、7至11任一所述的方法,其特征在于,所述安全化处理,包括以下至少一种:
进行报警;
拦截相关流量;
当存在恶意代码特征库时,将检测出的恶意代码的特征添加到所述恶意代码特征库。
13.一种网络设备,其特征在于,包括,构建模块、虚拟模块、判断模块和处理模块;其中,
所述构建模块,用于将待检测的数据包作为指令进行逆向,构建指令序列;
所述虚拟模块,用于虚拟至少一个CPU指令系统,在虚拟CPU指令系统中执行所述指令序列;
所述判断模块,用于当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,通知所述处理模块;
所述处理模块,用于进行安全化处理。
14.根据权利要求13所述的网络设备,其特征在于,还包括:
扫描模块,用于扫描指令序列,当所述指令序列中存在限制符,且所述限制符与所述指令序列首地址的偏移,或所述限制符与上一个限制符之间的偏移,小于预设阈值时,通知所述虚拟模块不执行所述限制符之前的指令序列。
15.根据权利要求13或14所述的网络设备,其特征在于,还包括,获取模块、存储模块和分析模块;其中,
所述获取模块,用于获取指定数据流的流量镜像,将所述流量镜像发送给所述存储模块;
所述存储模块,用于存储所述获取模块或所述分析模块发送的数据;
所述分析模块,用于对所述存储模块中的所述流量镜像进行协议分析,根据所述协议分析的结果获得待检测的数据包,将所述待检测的数据包发送给所述存储模块。
16.根据权利要求13或14所述的网络设备,其特征在于,还包括:
匹配模块,用于根据恶意代码特征库对待检测的数据包进行特征码匹配检测,当所述数据包匹配所述恶意代码特征库时,通知所述处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910106335A CN101848092A (zh) | 2009-03-25 | 2009-03-25 | 恶意代码检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910106335A CN101848092A (zh) | 2009-03-25 | 2009-03-25 | 恶意代码检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101848092A true CN101848092A (zh) | 2010-09-29 |
Family
ID=42772559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910106335A Pending CN101848092A (zh) | 2009-03-25 | 2009-03-25 | 恶意代码检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101848092A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761481A (zh) * | 2014-01-23 | 2014-04-30 | 北京奇虎科技有限公司 | 一种恶意代码样本自动处理的方法及装置 |
CN104573508A (zh) * | 2013-10-22 | 2015-04-29 | 中国银联股份有限公司 | 虚拟化环境下支付应用的合规性检测方法 |
CN104702605A (zh) * | 2015-03-11 | 2015-06-10 | 国家计算机网络与信息安全管理中心 | 用于内外网之间的业务的恶意代码识别方法及识别设备 |
CN104714831A (zh) * | 2015-03-31 | 2015-06-17 | 北京奇虎科技有限公司 | 一种检测虚拟机中的寄生进程的方法和装置 |
CN105653954A (zh) * | 2015-12-25 | 2016-06-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种检测恶意代码的方法及装置 |
CN106709338A (zh) * | 2016-05-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN108090352A (zh) * | 2016-11-22 | 2018-05-29 | 财团法人资讯工业策进会 | 检测系统及检测方法 |
CN109947466A (zh) * | 2019-01-15 | 2019-06-28 | 珠海金山网络游戏科技有限公司 | 一种逆向获取ue4全局对象表的方法及其装置 |
CN110516445A (zh) * | 2019-08-07 | 2019-11-29 | 南方电网科学研究院有限责任公司 | 反检测恶意代码的识别方法、装置及存储介质 |
CN111291368A (zh) * | 2018-12-07 | 2020-06-16 | 北京奇虎科技有限公司 | Cpu漏洞的防御方法及系统 |
CN113039411A (zh) * | 2018-11-28 | 2021-06-25 | 三菱电机株式会社 | 攻击消除装置、攻击消除方法以及攻击消除程序 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070016948A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Immunizing HTML browsers and extensions from known vulnerabilities |
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN101286979A (zh) * | 2008-06-03 | 2008-10-15 | 电子科技大学 | 一种网络攻击检测方法 |
-
2009
- 2009-03-25 CN CN200910106335A patent/CN101848092A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070016948A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Immunizing HTML browsers and extensions from known vulnerabilities |
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN101286979A (zh) * | 2008-06-03 | 2008-10-15 | 电子科技大学 | 一种网络攻击检测方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104573508B (zh) * | 2013-10-22 | 2017-06-23 | 中国银联股份有限公司 | 虚拟化环境下支付应用的合规性检测方法 |
CN104573508A (zh) * | 2013-10-22 | 2015-04-29 | 中国银联股份有限公司 | 虚拟化环境下支付应用的合规性检测方法 |
US10445746B2 (en) | 2013-10-22 | 2019-10-15 | China Unionpay Co., Ltd. | Method for checking compliance of payment application in virtualized environment |
CN103761481A (zh) * | 2014-01-23 | 2014-04-30 | 北京奇虎科技有限公司 | 一种恶意代码样本自动处理的方法及装置 |
CN104702605A (zh) * | 2015-03-11 | 2015-06-10 | 国家计算机网络与信息安全管理中心 | 用于内外网之间的业务的恶意代码识别方法及识别设备 |
CN104714831B (zh) * | 2015-03-31 | 2018-04-17 | 北京奇虎科技有限公司 | 一种检测虚拟机中的寄生进程的方法和装置 |
CN104714831A (zh) * | 2015-03-31 | 2015-06-17 | 北京奇虎科技有限公司 | 一种检测虚拟机中的寄生进程的方法和装置 |
CN106909839A (zh) * | 2015-12-22 | 2017-06-30 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN106909839B (zh) * | 2015-12-22 | 2020-04-17 | 北京奇虎科技有限公司 | 一种提取样本代码特征的方法及装置 |
CN105653954A (zh) * | 2015-12-25 | 2016-06-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种检测恶意代码的方法及装置 |
CN105653954B (zh) * | 2015-12-25 | 2019-02-01 | 北京神州绿盟信息安全科技股份有限公司 | 一种检测恶意代码的方法及装置 |
CN106709338A (zh) * | 2016-05-30 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 一种程序检测方法及装置 |
CN108090352A (zh) * | 2016-11-22 | 2018-05-29 | 财团法人资讯工业策进会 | 检测系统及检测方法 |
CN113039411A (zh) * | 2018-11-28 | 2021-06-25 | 三菱电机株式会社 | 攻击消除装置、攻击消除方法以及攻击消除程序 |
CN111291368A (zh) * | 2018-12-07 | 2020-06-16 | 北京奇虎科技有限公司 | Cpu漏洞的防御方法及系统 |
CN109947466A (zh) * | 2019-01-15 | 2019-06-28 | 珠海金山网络游戏科技有限公司 | 一种逆向获取ue4全局对象表的方法及其装置 |
CN109947466B (zh) * | 2019-01-15 | 2023-01-03 | 珠海金山数字网络科技有限公司 | 一种逆向获取ue4全局对象表的方法及其装置 |
CN110516445A (zh) * | 2019-08-07 | 2019-11-29 | 南方电网科学研究院有限责任公司 | 反检测恶意代码的识别方法、装置及存储介质 |
CN110516445B (zh) * | 2019-08-07 | 2021-05-04 | 南方电网科学研究院有限责任公司 | 反检测恶意代码的识别方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101848092A (zh) | 恶意代码检测方法和装置 | |
WO2015120752A1 (zh) | 网络威胁处理方法及设备 | |
RU2706896C1 (ru) | Система и способ выявления вредоносных файлов с использованием модели обучения, обученной на одном вредоносном файле | |
US9571510B1 (en) | Systems and methods for identifying security threat sources responsible for security events | |
KR101724307B1 (ko) | 악성코드를 검출하는 방법 및 시스템 | |
CN112019521B (zh) | 一种资产评分方法、装置、计算机设备及存储介质 | |
US11216555B2 (en) | System and method of providing a set of convolutions to a computing device for detecting anomalous events | |
US11108787B1 (en) | Securing a network device by forecasting an attack event using a recurrent neural network | |
CN101841533A (zh) | 分布式拒绝服务攻击检测方法和装置 | |
US20140195793A1 (en) | Remotely Establishing Device Platform Integrity | |
CN106850647B (zh) | 基于dns请求周期的恶意域名检测算法 | |
CN113711559B (zh) | 检测异常的系统和方法 | |
US20200169570A1 (en) | Systems and methods for detecting malware infections associated with domain generation algorithms | |
US20170187731A1 (en) | Information processing system, information processing method and program | |
CN103218276A (zh) | 多节点增量备份的方法及系统 | |
CA2674327A1 (en) | Exploit nonspecific host intrusion prevention/detection methods and systems and smart filters therefor | |
US11916937B2 (en) | System and method for information gain for malware detection | |
CN109597675A (zh) | 虚拟机恶意软件行为检测方法及系统 | |
US9239907B1 (en) | Techniques for identifying misleading applications | |
KR102318714B1 (ko) | 바이너리 코드 클론 기반 소프트웨어 취약점 탐지를 위한 컴퓨터 프로그램 | |
US10262135B1 (en) | Systems and methods for detecting and addressing suspicious file restore activities | |
US20200334353A1 (en) | Method and system for detecting and classifying malware based on families | |
CN113037689A (zh) | 基于日志的病毒发现方法、装置、计算设备及存储介质 | |
CN114297645B (zh) | 在云备份系统中识别勒索家族的方法、装置和系统 | |
Wu et al. | Towards SQL injection attacks detection mechanism using parse tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100929 |