变形计算机病毒检测制造技术

技术编号:3519564 阅读:190 留言:0更新日期:2012-04-11 18:40
分析计算机病毒的执行,以开发该病毒的寄存器签名。寄存器签名指定了当使用一组给定的输入进行执行时,病毒所产生的一组输出。病毒检测系统(VDS)(400)拥有寄存器签名的数据库(430)。VDS(400)检测可能包含计算机病毒的文件,并识别文件中的潜在入口点。VDS(400)使用拥有初始状态的虚拟机(422)来在每个入口点模拟相对少量的指令。当模拟每个潜在入口点时,VDS构建了一个寄存器表,用于跟踪虚拟寄存器(428)的子集的状态。一旦VDS(400)到达模拟断点,它将结合考虑寄存器签名来分析寄存器表,以确定文件是否包含病毒。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术总体上涉及检测计算机病毒,特别是涉及检测变形(metamorphic)计算机病毒。
技术介绍
现代计算机系统正处在计算机病毒和其它恶意代码(maliciouscode)持续攻击的威胁之下。病毒往往通过传统途径传播计算机用户向计算机系统插入被病毒感染的盘或其它介质。当计算机访问盘上的数据时,病毒就会感染该计算机系统。病毒还可通过新的途径进行传播。与以前相比,现在有更多的计算机系统连接到互联网和其它通信网络上。这些网络允许联网的计算机访问广泛的程序和数据,但是也提供了许多新的、能够被计算机病毒借以感染计算机的途径。例如,用户可能把病毒当成可执行程序、电子邮件附件以及网页上的恶意代码等下载到计算机上。因此,普遍的经验是在计算机系统上安装防病毒软件,以便检测是否存在病毒。一些简单的计算机病毒会把自己的精确副本拷贝到它们感染的每个可执行的程序文件中。当执行被感染的程序时,该简单的病毒会获取计算机系统的控制权,并尝试感染其它文件。如果病毒确定了要感染的目标可执行文件,它将把自己一个字节不差地(byte-for-byte)拷贝到目标可执行文件中。因为此类病毒在每次感染新文件时复制自己的同一副本,所以防病毒软件能够通过扫描文件,查找病毒的具体的特征字节串(例如“签名(signature)”),来非常轻松地检测到病毒。计算机病毒的设计者正在不断开发新技术,以躲避防病毒软件。例如,加密病毒就是这样的一种技术。加密病毒包含解密程序(又称为“解密循环(decryption loop)”)和加密的病毒体。当感染了加密病毒的文件执行时,解密程序获得计算机的控制权,并给加密的病毒体解密。随后,解密程序把控制权移交给解密后的病毒体,该解密后的病毒体能够传播病毒。病毒通过把同一解密程序和加密的病毒体拷贝到目标可执行文件来传播。虽然病毒体进行了加密,从而隐藏起来看不见,但防病毒软件能够通过搜索不变的解密程序中的签名来检测到这些病毒。多形性(polymorphic)加密病毒(“多形性病毒”)包含解密程序和加密的病毒体。病毒体包含静态部分和通常称为“变形病毒生产机(mutation engine)”的机器码生成器。多形性病毒的运行类似于加密病毒的运行,不同点是多形性病毒在每次感染文件时都产生了新的解密程序。许多多形性病毒都使用解密程序,但是采用不同的指令顺序,其中解密程序对于所有被感染的文件来说,在功能上是相同的。这些各种各样的变形使每个解密程序能够拥有不同的签名。因此,防病毒软件不能通过仅仅搜索解密程序的签名来检测多形性病毒。相反,软件把可能被感染的程序载入基于软件的CPU模拟器,该CPU模拟器作为模拟的虚拟计算机进行工作。允许所述的程序在该虚拟计算机内自由执行。如果程序实际上不包含多形性病毒,则允许解密程序对病毒体解密。防病毒软件通过在虚拟计算机的虚拟内存中搜索已解密病毒体的签名来检测病毒。病毒创造者已经开发出“变形”病毒,以便战胜上述的基于签名扫描的检测技术。变形病毒没有必要加密,但是每次感染都会改变病毒体中的指令。变形病毒通常利用的技术包括在病毒体中的每个指令后插入跳转(jump)指令,使用不同组的等效指令来执行某些功能,在代码的随机位置插入空操作(no-operation)指令等。一个复杂的变形病毒实际上反汇编目标宿主文件,在反汇编过的宿主代码中插入病毒代码,然后再重新汇编宿主文件。因此,防病毒软件往往检测不到变形病毒,因为没有静态的签名可供搜索。因此,本领域需要一种能够可靠检测是否存在变形病毒的技术。
技术实现思路
使用寄存器签名(register signature)来检测变形和其它类型病毒的病毒检测系统(VDS)(400)满足了上述需求。VDS(400)优选地包括数据模块(410)、引擎模块(412)、模拟模块(412)和病毒数据库模块(430)。VDS(400)的操作优选地由数据模块(410)中存储的P代码指令来驱动。引擎模块(412)包括P代码解释程序(416),用于进行响应解释P代码和控制VDS(400)。模拟模块(412)由引擎模块(412)控制,并在拥有虚拟处理器(424)、虚拟寄存器(428)和虚拟内存(426)的虚拟机(422)中执行计算机程序指令。虚拟机(422)与计算机系统(200)上的实际硬件和软件相隔离地执行指令,从而虚拟机中的病毒不会感染计算机系统上的文件。病毒数据库模块(430)优选地存储VDS(400)所使用的寄存器签名,以检测是否存在病毒。寄存器签名描述了病毒在执行时存储在寄存器中的值,以及病毒存储这些值的顺序。寄存器签名是有效的,因为计算机程序(例如病毒)在使用一组给定的输入进行执行时,将产生一组给定的输出,例如寄存器值。即使对于代码不断改变的变形病毒,这种说法通常也是成立的。数据模块(410)中的P代码指令优选地包括文件选择模块(510),用于过滤计算机系统(200)上的文件,以确定潜在的病毒宿主文件。模拟控制模块(520)在选定的文件中确定和选择潜在的病毒入口点,并且促使模拟模块(412)模拟在入口点上的指令,直到到达断点条件。当模拟模块(412)模拟指令时,建表模块(522)构建一个表(600),以跟踪虚拟寄存器(428)在每一步的值。优选地,模拟模块(412)在每个选定的入口点模拟相对少量的(例如50到500个)指令。一旦模拟到达断点或以其它方式停止,病毒报告模块(526)将分析该表,以确定它是否包含病毒数据库模块(430)中存储的任何寄存器签名。如果某个寄存器签名匹配,则选定的文件可能包含病毒。附图说明图1是一个高级方块图,显示拥有多个入口点的潜在的病毒宿主文件100。图2是一个高级方块图,显示用于执行病毒检测系统(VDS)400的计算机系统200。图3是一个流程图,显示典型变形病毒在感染宿主文件100时执行的步骤。图4是一个高级方块图,显示根据本专利技术的实施例的VDS 400的各个模块。图5是一个高级方块图,显示VDS 400中的P代码数据模块410的更详细视图。图6显示了根据本专利技术的示例性实施例建立的寄存器表600。图7是一个流程图,显示根据本专利技术的实施例的VDS 400检测是否存在病毒的操作。这些图仅用于图解描述本专利技术的实施例。本领域技术人员将非常容易地从以下说明中发现,在不背离这里描述的本专利技术原理的情况下,可以使用这里图解说明的结构和方法的替换实施例。具体实施例方式为了实现它们被设计成要实现的危害,计算机病毒必须获得计算机的中央处理单元(CPU)的控制权。病毒通常通过把它们自己附加到可执行文件(“宿主文件”)上,并修改宿主文件的可执行映像,以把CPU的控制权转交给病毒代码,从而获得这一控制权。病毒通过执行自己的指令,然后调用初始指令将控制权交回宿主文件,从而隐藏自己的存在。如此处所用,术语“病毒”还包括其它形式的恶意代码,如“蠕虫”和“特洛伊木马”。它们可以渗透和感染计算机系统。病毒使用不同的技术来感染宿主文件。例如,一种简单的病毒总是将相同的病毒体插入文件中。加密病毒通过向宿主文件中插入不变的解密程序和加密的病毒体来感染文件。多形性加密病毒(多形性病毒)与加密病毒相似,不同点是多形性病毒在每次感染文件时会产生新的解密程序。变形病毒不需要加密,但是它在每次感本文档来自技高网
...

【技术保护点】
一种用于检测计算机系统上的文件中的计算机病毒的方法,包括以下步骤:    识别文件中的病毒的潜在入口点;    在拥有虚拟寄存器的虚拟机中,在入口点模拟文件中的指令;    跟踪虚拟寄存器的内容;以及    响应虚拟寄存器的内容,检测计算机病毒。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:彼得司泽尔
申请(专利权)人:赛门铁克公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1