恶意代码检测方法和装置的制作方法

文档序号:7703977阅读:156来源:国知局
专利名称:恶意代码检测方法和装置的制作方法
技术领域
本发明涉及网络通信领域,尤其涉及一种恶意代码检测方法和装置。
背景技术
随着网络技术的发展和互联网资源的大范围使用,恶意代码对计算机系统安全及 网络安全的威胁日益增加。恶意代码层出不穷,虽然各种恶意代码的检测技术也在不断的 发展,但是总是滞后于恶意代码。一方面,恶意代码的欺骗隐藏技术使得人们难以分辨正常 代码和恶意代码,另一方面,客户端往往缺乏合格的信息保护机制。目前的恶意代码检测技术倾向于在客户端侧对恶意代码进行分析,无法在恶意代 码到达客户端侧之前及时地识别出恶意代码,给出告警信息。客户端侧特征码扫描是常见的恶意代码检测技术之一。在客户端侧进行特征码扫 描的特点是将被检测文件与特征数据库中的恶意代码特征进行字符串匹配。常用的技术是 将一个已知恶意代码样本进行静态反汇编或动态调试,提取指令片断,该指令片断能够唯 一标识某种恶意代码特征。多个指令片断构成特征数据库。在被检测文件中查找是否含有 特征数据库中的恶意代码特征串。客户端侧特征码扫描技术要求在客户端侧引入恶意代码。恶意代码的隐藏和多副 本,使本地系统有可能受到感染。另外,恶意代码的多态和变形技术,使对恶意代码的特征 码扫描不足以检测出采用了反检测技术的恶意代码。客户端侧特征码扫描技术还要求特征数据库保持最新,而特征数据库的更新总是 落后于恶意代码的发展。客户端侧完整性检测技术是另一种常见的恶意代码检测技术。该技术原理是,计 算文件的一个值,用这个值来描述完整的正常文件的状态。一般使用哈希(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类处理器中,RingO指令是特权指令,在当前指令为RingO指令 时,网络设备对包括所述数据包的流量进行安全化处理。例如,网络设备对包括所述数据包的流量进行报警,和/或拦截包括所述数据包的流量。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规范可以加快存储,例如RAIDO、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指令系统检测恶 意代码,能检测未知恶意代码,并且能检测采用了多态、变形、自我修改、间接跳转、非自我 包含等多种反检测手段的恶意代码,因为判断标准在于恶意代码在虚拟机上的运行行为特 征,不依赖特征码库能够检测到包含未知恶意代码的数据流,解决了在网络侧不依赖特征 库进行恶意代码检测的问题。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以 通过程序来指令相关的硬件完成,所述的程序可以存储于计算机可读存储介质中,所述存 储介质可以是R0M/RAM,磁盘或光盘等。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围 为准。
权利要求
一种恶意代码检测方法,其特征在于,包括网络设备将待检测的数据包作为指令进行逆向,构建指令序列;在虚拟中央处理器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所述的网络设备,其特征在于,还包括 匹配模块,用于根据恶意代码特征库对待检测的数据包进行特征 码匹配检测,当所述 数据包匹配所述恶意代码特征库时,通知所述处理模块。
全文摘要
本发明涉及网络通信领域,尤其涉及一种恶意代码检测方法和装置。该方法包括网络设备将待检测的数据包作为指令进行逆向,构建指令序列;在虚拟中央处理器指令系统中执行所述指令序列;当所述虚拟CPU指令系统对所述指令序列的执行效果符合预设特征时,所述网络设备对包括所述数据包的流量进行安全化处理。采用本发明实施例提供的技术方案,因为采用网络侧的虚拟CPU指令系统检测恶意代码,能检测未知恶意代码,并且能检测采用了多种反检测手段的恶意代码,解决了在网络侧不依赖特征库进行恶意代码检测的问题。
文档编号H04L9/36GK101848092SQ20091010633
公开日2010年9月29日 申请日期2009年3月25日 优先权日2009年3月25日
发明者刘丹, 向令, 张大成, 李毅超, 杨婷, 贾范兵 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1