CN1656732A - 变形计算机病毒检测 - Google Patents

变形计算机病毒检测 Download PDF

Info

Publication number
CN1656732A
CN1656732A CN03811842.4A CN03811842A CN1656732A CN 1656732 A CN1656732 A CN 1656732A CN 03811842 A CN03811842 A CN 03811842A CN 1656732 A CN1656732 A CN 1656732A
Authority
CN
China
Prior art keywords
virus
register
file
computer
module
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
Application number
CN03811842.4A
Other languages
English (en)
Inventor
彼得·司泽尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NortonLifeLock Inc
Original Assignee
Symantec Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Symantec Corp filed Critical Symantec Corp
Publication of CN1656732A publication Critical patent/CN1656732A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

分析计算机病毒的执行,以开发该病毒的寄存器签名。寄存器签名指定了当使用一组给定的输入进行执行时,病毒所产生的一组输出。病毒检测系统(VDS)(400)拥有寄存器签名的数据库(430)。VDS(400)检测可能包含计算机病毒的文件,并识别文件中的潜在入口点。VDS(400)使用拥有初始状态的虚拟机(422)来在每个入口点模拟相对少量的指令。当模拟每个潜在入口点时,VDS构建了一个寄存器表,用于跟踪虚拟寄存器(428)的子集的状态。一旦VDS(400)到达模拟断点,它将结合考虑寄存器签名来分析寄存器表,以确定文件是否包含病毒。

Description

变形计算机病毒检测
技术领域
本发明总体上涉及检测计算机病毒,特别是涉及检测变形(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的控制权转交给病毒代码,从而获得这一控制权。病毒通过执行自己的指令,然后调用初始指令将控制权交回宿主文件,从而隐藏自己的存在。如此处所用,术语“病毒”还包括其它形式的恶意代码,如“蠕虫”和“特洛伊木马”。它们可以渗透和感染计算机系统。
病毒使用不同的技术来感染宿主文件。例如,一种简单的病毒总是将相同的病毒体插入文件中。加密病毒通过向宿主文件中插入不变的解密程序和加密的病毒体来感染文件。多形性加密病毒(多形性病毒)与加密病毒相似,不同点是多形性病毒在每次感染文件时会产生新的解密程序。变形病毒不需要加密,但是它在每次感染文件时会重新安排病毒体中的指令顺序,以产生另一种不同的、但功能等同的病毒。病毒可能使用上述技术的组合。虽然本发明的优势是它能够可靠地检测变形病毒,但应当理解,本发明可用于检测任何类型的病毒。
病毒通常通过在或接近文件入口点的地方附加或改变代码来感染宿主文件。“入口点”是指文件中的任何指令指向的指针,或文件中的其它数据,病毒可以修改这些数据而获得文件所在的计算机系统的控制权。入口点通常通过与文件中某个任意点(arbitrary point)的偏移量来识别。某些入口点位于文件或区域的开始,因此在执行文件或区域时始终被调用。例如,入口点可以是当执行宿主文件或调用文件中的功能时所执行的第一条指令。其它入口点可以包括能够被病毒修改的文件深处的单指令。例如,入口点可以被修改用于调用病毒代码的CALL或JMP指令。一旦病毒通过入口点攫取了计算机系统的控制权,病毒通常会感染该系统或与主系统联网的其它系统上的其它文件。
图1是一个高级方块图,显示拥有多个能够如上所述被病毒感染的入口点的潜在病毒宿主文件100。在图1所示的例子中,可执行文件是一个Win32可移植可执行(PE)文件,用于结合基于MICROSOFT WINDOWS的操作系统(OS)而使用,如WINDOWSME、WINDOWS NT、WINDOWS 2000或WINDOWS XP。通常,所示的文件100是表示文件是可执行文件的.EXE类型或表示文件是动态链接库的.DLL。然而,本发明可以用于任何文件,而不仅限于图1所示的文件类型。例如,APPLE MACINTOSH文件与Win32文件有许多相似之处,本发明同样适用于这些文件。
文件100分成多个包含代码或数据且大小为4千字节(KB)的段。MS-DOS段102包含MS-DOS报头102,并以字符“MZ”作为标记。该段102包含一个小的可执行程序103,设计用于当可执行文件在不支持的OS(例如MS-DOS)中运行时,显示错误消息。该程序103是文件100的一个入口点。MS-DOS段102还包含一个与PE段106的起点108保持相关偏移量的字段104。该字段(104)是文件100的另一个入口点。
PE段106以字符“PE”作为标记且带有一个包含关于文件100的基本信息的数据结构110。数据结构110具有许多描述文件100各个方面的数据字段。
下面的段112带有一个段表114。段表114包含有关文件100中每个段的信息,包括段的类型、大小和在文件100中的位置。例如,段表114中的项目表示段是否具有代码或数据,段是否可读、可写和/或可执行。段表114中的每个项目都描述了可以拥有多个、一个或没有入口点的段。
文本段116带有由编译程序或汇编程序产生的通用代码。数据段118带有在编译时初始化的全局和静态变量。
导出段120包含一个导出表122,其识别由文件100导出的、供其它程序使用的功能。EXE文件可能不导出任何功能,但是DLL文件通常会导出一些功能。导出表122带有功能名、入口点地址关于被导出的功能的导出顺序值。入口点地址通常指向文件100中的其它段。导出表122中列出的每个被导出的功能都是到文件100中的入口点。
导入段124拥有一个导入表126,其识别文件100导入的功能。导入表126中的每个项目通过名称识别外部的DLL和导入的功能。当文本段116中的代码调用其它模块的功能时,如外部DLL文件,调用指令将控制权移交给也在文本段116中的JMP指令。JMP指令接着将调用导向导入表126中的一个位置。JMP指令和导入表126中的项目表示到文件100中的入口点。
图2是一个用于存储和执行宿主文件100和病毒检测系统(VDS)400的计算机系统200的高级方块图。图中至少一个处理器202连接到总线204上。另外,内存206、存储设备208、键盘210、图形适配器212、定点设备214和网络适配器216也连接到总线204上。显示器218连接到图形适配器212。
处理器202可以是任何通用处理器,如INTEL x86、SUNMICROSYSTEMS SPARC或兼容POWERPC的CPU。如本领域中所知,处理器202拥有多个寄存器,用于存储指令、数据、地址和其它信息。存储设备208可以是任何能够存储数据的设备,如硬盘、压缩盘只读存储器(CD-ROM)、DVD或固态存储器设备。如本领域中所知,存储设备208通常可存储多个不同类型的文件,包括潜在的病毒宿主文件,如图1所示。内存206存储处理器202所使用的指令和数据。定点设备214可以是鼠标、跟踪球或其它类型的定点设备,并与键盘210结合使用,以便向计算机系统200输入数据。图形适配器212在显示器218上显示图像和其它信息。网络适配器216将计算机系统200连接到局域网或广域网上。
如本领域中所知,计算机系统200适合于执行用于提供这里所述的功能的计算机程序模块。如这里的用法,术语“模块”是指计算机程序逻辑和/或任何用于提供指定功能的硬件或电路。因此,模块能够以硬件、固件和/或软件形式实现。提供VDS 400的功能的程序模块优选地存储在存储设备208中。
图3是一个流程图,显示典型变形病毒在感染宿主文件时执行的步骤。所示的步骤只是病毒感染的示例,并不代表任何特殊病毒。最初,病毒在计算机系统200上执行310。例如,病毒可以在计算机系统200指定或调用以前被感染的文件中的功能时执行。
病毒识别312要感染的新宿主文件。例如,病毒可能搜索匹配字符串“*.EXE”的文件,以确定新的宿主文件候选者。然后,病毒筛选候选文件,以确定特定的新宿主文件100。可以根据文件的大小、名称、文件是否已经被该病毒感染等来筛选文件。
病毒将其病毒代码插入314新的宿主文件中。例如,病毒可以将病毒体附加到段末尾的空闲空间内,或将病毒体加入全新的段中。在此步骤期间,病毒使用一种或多种技术来修改其当前的病毒代码,以产生新的病毒代码,然后插入到文件100中。病毒可用于修改其代码的技术包括插入和/或删除跳转(“JMP”)和空操作(“NOP”)指令,替换不同组的等效指令,以执行某些任务,如寄存器减法(registersubtraction)或置零(zeroing),和/或替代某些指令所使用的寄存器。
病毒通常修改316宿主文件100中的段表114,以支持(accountfor)添加的病毒代码。例如,病毒可能更改段表114中的大小项目,以支持添加的病毒代码。同样,病毒可能添加项目,用于病毒所添加的新段。如果需要,病毒可以将被感染的段标记为可执行和/或在不使用的字段内放置一个值,以谨慎地将文件标记为被感染,并防止病毒再次感染文件100。
此外,病毒通常还改变318宿主文件100的入口点,以调用病毒代码。例如,病毒可以通过覆写字段104中的值来完成这个步骤,其中字段104保持与PE段106的起点108的相关偏移量,和与存储在文件中别处的病毒代码的相关偏移量。或者,病毒可以将导出表122中的项目改成指向病毒代码段而不是导出的功能。病毒还可以修改文件中任何位置的现有JMP或CALL指令的目的地,以指向文件中别处的病毒代码的位置,从而有效地将被修改的指令变成病毒的新入口点。
特别复杂的病毒能够使用非常复杂的技术来感染宿主文件,这些技术在一些方面与上述的技术不同。例如,一个复杂的病毒在其病毒体中包括反汇编引擎,使用它把宿主文件反汇编成最小的单元。然后,病毒以下述的方式来感染被反汇编的宿主文件:把代码块移动到用于病毒代码的空闲空间,插入其修改过的病毒体,重新生成代码和数据引用(reference),包括位置信息,然后重建文件。另一种复杂的病毒检测宿主计算机系统200上是否有编译程序。如果有编译程序,病毒则使用它来重新编译病毒源代码的经过稍微修改后的版本,从而产生一个全新的病毒体。然后,病毒把新病毒体插入宿主文件。其它变形病毒可以使用除了这里描述的之外或不是这里描述的其它技术来修改病毒体和把病毒体插入宿主文件中。
图4是一个高级方块图,显示根据本发明的实施例的用于检测在计算机系统200中的宿主文件或其它地方是否有病毒的VDS 400的模块。图4只显示了用于描述本发明的VDS 400的模块,应当理解,本发明的实施例可以包括在这里没有描述的其它模块。此外,本发明的实施例可以没有这里描述的模块,和/或采用与这里的描述不同的方式在多个模块间分布所描述的功能。
VDS 400包括P代码数据模块410、引擎模块412、模拟模块414和病毒数据库模块430。P代码数据模块410优选地带有P代码指令模块,用于控制VDS 400的操作,以检测是否存在病毒。像这里的用法一样,“P代码”是指用于向VDS 400提供数据驱动功能的程序代码。优选地,病毒研究者通过以任何计算机语言编写指令,然后把这些指令编译成P代码,从而在数据模块410中创建P代码指令。此外,P代码的功能可以由其它数据驱动的技术来代替。例如,程序代码可以以除P代码以外的表示法来存储,或者状态机可以与P代码结合或取代P代码来使用,以便提供确定性的数据驱动的病毒检测。
本发明的优选实施例使用数据驱动的技术来控制VDS 400的操作,因为这些技术允许VDS的功能能够通过更新P代码和/或其它数据来更新。例如,VDS 400可以通过更新P代码而非其它模块来更新,以检测新病毒。因此,使用数据驱动的技术简化了更新数以千计或数百万的、安装在“现场”中的计算机系统上的VDS 400的任务。然而,本发明的其它替代实施例通过非数据驱动的技术实现了所描述的功能。
引擎模块412优选地响应于P代码数据模块410中的P代码来控制VDS 400的操作。引擎412优选地包含一个P代码解释程序416,用于解释P代码,其从而反过来控制引擎412的操作。在其它替代实施例中,数据模块410带有除P代码之外的格式的指令,引擎414配备了一个模块,用于以关联格式解释或编译指令。
P代码解释程序416优选地包括特定的P代码功能调用,称为“原语”418。例如,原语418可以是以P代码或固有语言编写,和/或集成到解释程序416本身之中。原语418本质上是可用于检查能够被其它P代码调用的宿主文件和虚拟机422的功能。例如,原语418执行诸如打开文件以便阅读、关闭文件、置零(zero out)存储单元(memorylocation)、截断(truncate)存储单元、定位文件中的导出、确定文件的类型、寻找功能起点的偏移量等功能。取决于其中正在使用VDS 400的计算机或操作系统,原语418所执行的功能可以不同。例如,在运行MACINTOSH操作系统的计算机系统中可能使用与运行WINDOWS操作系统版本的计算机系统不同的原语。在替代实施例中,一些或全部原语可以存储在P代码数据模块410中,而不是解释程序416中。
模拟模块414优选地适用于在引擎模块412的指导下,在虚拟机中执行宿主文件中的计算机程序指令。模拟模块414包括一个用于设置虚拟机422的控制程序(CP)模块,虚拟机422拥有虚拟处理器424、虚拟内存426和一组虚拟寄存器428(通常是虚拟处理器的一部分)。虚拟机422能够模拟32位MICROSOFT WINDOWS环境、APPLEMACINTOSH环境或希望模拟的任何其它硬件和/或软件环境。虚拟机422使用虚拟处理器424来执行虚拟内存426中的指令,与计算机系统200上的实际硬件和软件相隔离。从而,模拟模块414所执行的病毒或其它恶意代码不会感染计算机系统200。
病毒数据库模块430优选地存储VDS 400用于确定文件是否被病毒感染的数据。在一种实施例中,病毒数据库模块430存储VDS可以检测到的描述已知病毒的数据。对于每个病毒,数据库模块430优选地存储描述病毒的感染特征的数据432,描述如何检测是否存在病毒的数据43,;以及描述如何修复被病毒感染的文件(如果可能的话)的数据436。在一种实施例中,病毒数据库模块430还存储其它数据,如表示可用于检测未知病毒的特征的数据。
在一种实施例中,病毒数据库模块430存储的感染特征432包括病毒留下的、表示病毒已经感染了文件的标记。通常,病毒会在文件中留下这样的标记,以避免重复感染相同的文件。然而,标记也可能自然地出现,因此不能只依赖它们来表示是否存在病毒。感染特征432还描述了病毒所感染的文件的类型,病毒如何感染文件等。文件选择模块510优选地使用这些特征来确定文件是否可能寄住病毒,下面将更详细地描述文件选择模块510。
在优选的实施例中,病毒数据库模块430中的数据434描述了如何根据寄存器值来检测是否存在病毒。如上所述,变形病毒通常没有可被用来检测病毒的固定指令顺序。而且,变形病毒通常用一个或多个用于执行相同功能的不同指令来代替原有指令,从而实现指令的多形性。因此,变形病毒的给定分段(例如病毒中的功能、程序或模块)将按一组固定的输入来行动,以产生一组固定的输出。
考虑在第一代拥有以下指令的变形病毒:
MOV BP,9090
MOV AX,9192
XOR BX,BX
PUSH AX
前两个指令分别将值9090和9192放入寄存器BP和AX。第三个指令将BX寄存器的值置为零,且第四个指令将值9192推到堆栈上。
假定第二代病毒把执行这些功能的指令改成:
MOV BP,B0A0
SUB BP,B0A2
ADD BP,9194
SUB BP,102
MOV AX,9092
ADD AX,100
XOR BX,BX
PUSH AX
这些指令与第一代病毒中的指令有了很大的不同。不过,这些指令完成与第一代指令相同的任务,也就是将值9090放入寄存器BP,将寄存器BX的值置零,且将值9192从寄存器AX推到堆栈上。
虽然本例中的两代病毒使用了相同的寄存器,但是其它病毒可能会改变不同代所使用的寄存器。然而,如果给定一组相同的输入,则相同病毒的所有代通常会以相同的顺序存储相同的值。因此,可以利用病毒存储在寄存器中的值以及病毒存储这些值的顺序来检测是否存在病毒。为了便于描述,将病毒放入寄存器的值集合和/或这些值在寄存器中放入的顺序称为病毒的“寄存器签名”。寄存器签名优选地由病毒研究者开发,他们分析病毒的功能行为,并确定能够高度可靠地表示病毒是否存在的签名。
寄存器签名不同于传统的防病毒软件所使用的常规“签名”,因为寄存器签名识别病毒代码所产生的输出,而传统的签名是确认病毒代码本身。然而,在本发明的优选实施例中,寄存器签名也可以指定一个或多个可能出现在病毒代码中或由病毒执行的操作代码(opcode)。允许寄存器签名中包含操作代码增强了本发明检测病毒的能力,因为它为病毒研究者提供了较大的灵活性来微调(fine-tuning)寄存器签名,以识别特殊的病毒。
病毒数据库模块430优选地提供了病毒的寄存器签名,作为期望病毒满足的一个或多个谓词(predicate)的列表。列表中的项目优选地以先后顺序排列,意味着病毒被期望在满足后面的谓词之前,先要满足前面列出的谓词。例如,在一种实施例中,上述样本病毒的寄存器签名如下:
[REGISTER_SIGNATURE_BEGIN]
regBP=9090
regAX=9192
regBX=0
[REGISTER_SIGNATURE_END]
在本例中,标记“[REGISTER_SIGNATURE_BEGIN]”和“[REGISTER_SIGNATURE_END]”分别表示签名的开始和结束。标记之间的项目每个都包含一个谓词。在本例中,每个谓词都指定了一个特定的寄存器和一个该寄存器必须包含以便满足该谓词的值。本例中的寄存器是BP、AX和BX,且各自的值分别是9090、9192和0。因而,这个寄存器签名匹配上述的样本病毒。
由于变形病毒经常改变指令所使用的寄存器,本发明的优选实施例允许谓词使用通配符来指定寄存器。此外,优选的实施例还允许谓词指定多个等同的寄存器值。例如,考虑以下寄存器签名:
[REGISTER_SIGNATURE_BEGIN]
regBP=9090,regSP=9090
regAX=9192,regBX=1234
regBX=0,regCX=0
reg??=5678
[REGISTER_SIGNATURE_END]
在此签名中,如果寄存器BP或寄存器SP包含值9090,则满足第一个谓词。如果寄存器AX包含值9192或如果寄存器BX包含值1234,则满足第二个谓词。如果寄存器BX或寄存器CX包含值0,则满足第三个谓词。最后一个谓词使用通配符“??”来指定寄存器,并且如果任何寄存器包含值5678,则它被满足。
在一种实施例中,寄存器签名可以使用通配符和逻辑表达式来指定寄存器中存储的值。例如,谓词可以陈述“regBX!=0,”意思是如果寄存器BX的值不是0,则满足该谓词;或者陈述“regBX=0&regCX=1234,”意思是如果寄存器BX的值是零和寄存器CX的值是1234,则满足该谓词。类似地,谓词也可以陈述“regCX=F??A,”意思是如果寄存器CX包含以“F”开头和以“A”结尾的值,则满足该谓词。寄存器签名也可以陈述如果寄存器中有多个值中的一个,则满足谓词。例如,如果寄存器BX包含值0011或值A00D,那就满足了谓词“regBX=0011,A00D。”寄存器签名中的谓词的更多变化对于本领域技术人员来说是显而易见的。
此外,本发明优选地允许寄存器签名以签名指定寄存器的相同方式来指定操作代码。例如,寄存器签名可以陈述“OPCODE=8B1A,”意思是如果处理器执行的操作代码是8B1A,则满足该谓词。由于寄存器签名是以相同的方式指定操作代码和寄存器值,这里使用的术语“寄存器”和“虚拟寄存器”在任何适当的时候也是指操作代码。
病毒数据库430优选地包含寄存器签名和指定如何使用寄存器签名来检测文件中的病毒的其它数据。在一种实施例中,这些数据包括指定如何模拟计算机程序指令以使病毒现形的模拟参数。取决于实施例和/或病毒,这些参数可以指定虚拟机422的初始状态,宿主文件中开始模拟的起点,要模拟的指令数量,如何响应断点或异常,对应于寄存器签名要跟踪的虚拟寄存器等等。此信息的一部分或全部可以被指定为默认值。在一种实施例中,虚拟机422的默认初始状态是所有虚拟寄存器428的值为零。
病毒数据库模块430中的、描述如何修复被感染的文件的数据436通常高度特定于病毒的类型。这些数据优选地由病毒研究者开发,他们研究病毒,并确定将被感染的文件和计算机系统恢复到原始状态的途径。某些病毒将文件和/或计算机系统破坏得无法修复,如果是这种情况,数据库模块430中的数据会优选地指出。
图5是显示P代码数据模块410的更详细视图的高级方块图。P代码数据模块410的实施例可以包含与结合图5而描述的模块不同或附加的模块,而功能可能会以与这里的描述不同的方式分布在模块上。
文件选择模块510优选地包含P代码,用于选择计算机系统200上的潜在宿主文件,以检查是否存在病毒。一般而言,文件选择模块510过滤计算机系统200上的文件,以只选择容易被病毒感染的文件。在一种实施例中,文件选择模块510对每个文件执行一次或多次测试,且只有通过每次测试的那些文件才会被指定为“容易被病毒感染。”例如,这些测试可能包括确定文件是否包含可执行指令(例如文件是否拥有“.EXE”或“.DLL”扩展名),文件是不是PE文件,文件是否包含与已知病毒感染相一致的标记,文件的大小是否值得怀疑;文件的内部特征是否指出可能的病毒感染等。
在一种实施例中,VDS 400中的其它模块适用于识别计算机系统200上的文件,并利用文件选择模块510来确定文件是否容易感染。例如,其它模块可以被配置为监测存储设备208上的文件何时被访问,然后激活文件选择模块510来处理文件。在另一个例子中,其它模块可以被配置为递归地搜索存储设备208上的文件,并利用文件选择模块510来检查每个遇到的文件。在其它实施例中,这两个例子中描述的功能由文件选择模块510自己提供。
P代码数据模块410优选地包括一个模拟控制模块520。该模块520优选地包含代码,用于识别和选择文件中的潜在病毒入口点,并在每个选定的点上模拟文件中的指令。虽然模拟控制模块520的优选实施例只选择文件中的一些位置作为的潜在入口点,但该模块的一种实施例将文件中的每个指令或文件一些区域中的每个指令作为的潜在入口点。模拟控制模块520访问病毒数据库模块430,以确定模拟的参数,并且与模拟模块414中的控制程序420进行交互,以便根据参数进行模拟。在一种实施例,模拟控制模块520带有模拟参数,而不是病毒数据库430。
P代码数据模块410还优选地包括一个建表程序模块522。此模块522优选地包含用于建表的代码,该表在给定指令模拟期间跟踪虚拟寄存器428和操作代码的状态。在优选实施例中,该表只跟踪操作代码和虚拟寄存器的子集。要跟踪的寄存器子集优选地由存储在病毒数据库430中数据指定,尽管本发明的其它实施例可以使用其它技术来指定寄存器。VDS 400优选地将表存储在模拟模块414中或VDS中的模块可以访问到的计算机系统200的其它位置。
图6显示了根据本发明的示例性实施例的寄存器表600。优选地,表600有一个计算模拟迭代的列612(即计算虚拟机422模拟的指令数量)。在一种实施例中,该列612只保存模拟指令的计数。在其它实施例中,该列612跟踪在模拟的每个步骤中的虚拟指令指针寄存器的值。
表600还优选地包括一~N列614,用于跟踪在模拟的每个步骤中的指定虚拟寄存器428中的值。所示的表600的第一行618显示在所有虚拟寄存器中的值为零,这是因为本发明的优选实施例是在寄存器处于此状态时开始模拟。虚拟机422模拟的指令致使寄存器在后来的迭代中具有不同的值。表400中的另一列616指定了虚拟机422在每次迭代时执行的指令的操作代码。
虽然所示的表600中的虚拟寄存器有32位,但是在实际的实施例中,每一列中的项目所具有的数据量可能是不同的,这取决于该列所跟踪的数据。例如,在与特定虚拟寄存器有关的列中的项目优选地具有等于相关寄存器宽度的数据量。在图6的表600内的项目中显示的值只是范例并不代表虚拟机422的特定模拟。
表600的总体大小取决于本发明的特定实施例。在一种实施例中,表的总体大小小于64K。在一种实施例中,如果迭代数量超过表的行数,建表模块522绕回到表600的起点,并继续填充表项目。
返回到图5,P代码数据模块410还优选地包括一个断点条件模块524。该模块524优选地指定模拟的断点和其它停止条件。优选地,模拟控制模块520利用断点条件模块524在某些点上停止模拟。
在一种实施例中,断点条件模块524指定多个将在停止前模拟的指令。优选地,将断点配置为在相对少量的指令后停止模拟。例如,在一种实施例中,断点在50-500个指令后停止模拟。相比之下,典型的基于模拟的病毒检测软件在到达断点之前可以模拟超过1百万个指令。
在另一种实施例中,断点条件模块524指定一种虚拟机状态,在该状态时模拟应停止。在另一种实施例中,模块524指定了一组因素组合,用于确定是否停止模拟。例如,断点条件模块524可以指定如果模拟了超过75个指令且BP寄存器具有值“9090,”则模拟应停止。在另一个例子中,断点条件模块524可以指定每100个指令后应出现一个断点,直到模拟的指令总数超过指定的最大值。
在一种实施例中,断点条件模块524存储用于某些宿主文件和/或病毒的分开断点条件。例如,在一种实施例中,模块524存储在文件在标准的MICROSOFT WINDOWS分布中的时候要使用的断点条件。类似地,在一种实施例中,模块524存储当VDS 400正在检查是否存在特定病毒时要使用的断点条件。在一种实施例中,断点条件模块524还存储默认的断点,以便在没有用于给定文件和/或病毒的特定断点条件时使用。
P代码数据模块410还优选地包括一个病毒报告模块526,存储用于检测文件中是否存在病毒的代码。优选地,病毒报告模块526分析建表模块522所创建的表600,以确定它是否包含病毒数据库模块430中存储的任何寄存器签名。在一种实施例中,如果病毒报告模块526在表中发现一个起点,从该起点开始寄存器签名中的每个谓词都被满足,那么表600包含一个寄存器签名。
如果病毒报告模块526将寄存器签名与表600中的数据相匹配,则该模块优选地向VDS 400报告可能的病毒检测。作为响应,VDS 400中的其它模块优选地执行行动,例如向计算机用户通知出现病毒,隔离文件,并尝试修复受感染的文件和/或计算机系统。如果病毒报告模块526不匹配寄存器签名与表600中的数据,则模块将优选地向VDS400报告此否定结果。
图7是一个流程图,显示根据本发明的实施例的VDS 400检测是否存在病毒的操作。优选地,用于使VDS 400能够以所述方式操作的P代码存储在P代码数据模块410中。因为操作是数据驱动的,所以本发明的其它实施例可以执行与这里的描述不同的或额外的步骤。此外,这些步骤可以以不同的顺序执行。
VDS 400检查计算机系统200上的文件,以确定容易被病毒感染的文件。优选地,VDS 400选择710单个文件,用于进一步检查。另一种情况是,VDS 400从在计算机系统200上执行的其它模块接收对文件的引用,并使该文件接受进一步检查。
VDS 400检查选定的文件,以便识别712病毒的潜在入口点。如上所述,文件中有许多位置可被病毒当成入口点利用。VDS 400选择一个入口点并根据指定的模拟参数,在该入口点模拟714指令。VDS400还建立了716一个寄存器表,用于跟踪在模拟指令时一些虚拟寄存器428的内容。VDS 400连续模拟指令和建立寄存器表,直到模拟到达断点。模拟文件中的指令和填充(populating)寄存器表的过程在这里称为“跟踪”或“微跟踪(micro-tracing)。”
随后,VDS 400优选地分析718寄存器表,以确定它是否包含表示病毒的寄存器签名。在一种实施例中,VDS 400将病毒数据库430中的所有寄存器签名与寄存器表相比较。在另一种实施例中,取决于诸如所模拟的文件、入口点、断点等变量,VDS 400只把寄存器签名的子集与寄存器表进行比较。
如果720 VDS 400检测到病毒,则它优选地通过通知计算机用户、清除文件等方式来对病毒作出响应722。取决于断点,如果没有检测到病毒(此步骤没有在图7中显示),VDS 400可以继续微跟踪入口点。例如,如果VDS已经模拟了100个指令,且断点指定每100个指令应有一次中断,直到模拟完最多1000个指令,那么VDS继续微跟踪。
如果VDS 400完成对入口点的微跟踪而没有检测到病毒,则VDS确定722选定的文件中是否有更多的潜在入口点需要微跟踪。如果有,VDS 400开始在下一个潜在入口点进行新的微跟踪。
当VDS 400已经微跟踪过所有潜在入口点而没有检测到病毒,它确定724是否有更多的文件需要检查病毒。如果有更多的文件,VDS400会选择另一个文件并重复上述的病毒检测过程。如果没有更多文件,则VDS 400结束726操作。
总之,利用一组给定输入的程序将产生一组给定的输出。本发明利用这一特性,通过微跟踪部分潜在病毒宿主文件和将所得的寄存器状态与已知变形病毒的寄存器签名进行比较,来检测是否存在变形病毒。结果,本发明能够检测到利用其它方法(例如模式匹配)可能检测不到的病毒。
包括上面的描述仅用于示出优选实施例的操作,并不意味着限制本发明的范围。本发明的范围只受所附权利要求书的限制。从上述讨论中,许多变化对于本领域技术人员来说将是显而易见的,其在本发明的精神和范围的涵盖范围内。

Claims (50)

1.一种用于检测计算机系统上的文件中的计算机病毒的方法,包括以下步骤:
识别文件中的病毒的潜在入口点;
在拥有虚拟寄存器的虚拟机中,在入口点模拟文件中的指令;
跟踪虚拟寄存器的内容;以及
响应虚拟寄存器的内容,检测计算机病毒。
2.如权利要求1所述的方法,其中在文件中存在病毒的多个潜在入口点,并且其中对多个潜在入口点中的至少一些潜在入口点执行模拟、跟踪和检测步骤。
3.如权利要求1所述的方法,其中模拟步骤包括以下子步骤:
确定模拟参数,这些参数指定了如何在入口点模拟指令;以及
响应所确定的模拟参数,模拟所述指令。
4.如权利要求3所述的方法,其中模拟参数指定用于虚拟寄存器的初始开始状态。
5.如权利要求3所述的方法,其中模拟参数指定用于模拟的断点。
6.如权利要求3所述的方法,其中模拟参数指定要跟踪的用于跟踪步骤的虚拟寄存器。
7.如权利要求1所述的方法,其中跟踪步骤跟踪虚拟寄存器的子集的内容。
8.如权利要求1所述的方法,其中跟踪步骤跟踪虚拟机所模拟的操作代码。
9.如权利要求1所述的方法,其中跟踪步骤包括以下子步骤:
建立一个表,所述表具有用于被跟踪的虚拟寄存器的列和指定被跟踪的虚拟寄存器的状态的行。
10.如权利要求9所述的方法,其中所述表的每一行指定在模拟步骤中被跟踪的虚拟寄存器的状态。
11.如权利要求9所述的方法,其中跟踪步骤进一步包括以下子步骤:
将在模拟期间被跟踪的虚拟寄存器的状态填入所述表中。
12.如权利要求1所述的方法,其中检测步骤包括以下步骤:
确定虚拟寄存器的内容是否匹配用于计算机病毒的寄存器签名。
13.如权利要求12所述的方法,其中寄存器签名指定表示特定病毒的寄存器状态的序列。
14.一种用于检测计算机系统中是否存在计算机病毒的病毒检测系统,包括:
病毒数据库,用于存储描述计算机病毒的寄存器签名;
模拟模块,用于在拥有虚拟寄存器的虚拟计算机系统中模拟计算机程序指令;以及
引擎模块,用于分析虚拟寄存器的内容,以检测与病毒数据库中的寄存器签名是否匹配。
15.如权利要求14所述的病毒检测系统,其中寄存器签名包括至少一个谓词,当虚拟寄存器包含指定值时,满足所述谓词。
16.如权利要求15所述的病毒检测系统,其中所述谓词使用通配符来指定虚拟寄存器的值。
17.如权利要求15所述的病毒检测系统,其中所述谓词使用通配符来指定虚拟寄存器。
18.如权利要求14所述的病毒检测系统,其中寄存器签名指定表示计算机病毒的寄存器值的序列。
19.如权利要求18所述的病毒检测系统,其中寄存器签名指定模拟模块所模拟的至少一个操作代码,其表示计算机病毒。
20.如权利要求14所述的病毒检测系统,其中病毒数据库进一步适用于存储描述多个病毒的感染特征的数据。
21.如权利要求14所述的病毒检测系统,其中病毒数据库进一步适用于存储描述如何修复被多个病毒中的一个或多个病毒感染的文件的数据。
22.如权利要求14所述的病毒检测系统,其中模拟模块以初始状态来模拟指令,并且其中初始状态响应于病毒数据库中的数据来确定。
23.如权利要求14所述的病毒检测系统,进一步包括:
用于指定断点条件的断点条件模块,其中模拟模块适用于模拟计算机程序指令,直到到达断点条件。
24.如权利要求23所述的病毒检测系统,其中计算机程序指令在文件中,并且其中模拟模块响应于断点条件来执行对文件中的指令的微跟踪。
25.如权利要求14所述的病毒检测系统,其中计算机程序指令在文件中,其中该文件包括多个潜在病毒入口点,并且其中模拟模块适用于在多个潜在病毒入口点中的至少一些潜在病毒入口点模拟指令。
26.如权利要求25所述的病毒检测系统,其中模拟模块适用于分开地在潜在病毒入口点模拟指令,并且其中引擎模块适用于分析每次模拟的虚拟寄存器的内容,以检测是否与病毒数据库中的寄存器签名匹配。
27.如权利要求25所述的病毒检测系统,其中模拟模块在多个潜在病毒入口点中的至少一些潜在病毒入口点执行对指令的微跟踪。
28.如权利要求14所述的病毒检测系统,进一步包括:
建表模块,用于响应于模拟的指令来建立一个表,所述表跟踪虚拟寄存器的至少一个子集的值。
29.如权利要求28所述的病毒检测系统,其中响应于病毒数据库中存储的数据,确定所述表所跟踪的虚拟寄存器的子集。
30.如权利要求28所述的病毒检测系统,进一步包括:
病毒报告模块,用于分析所述表,以确定所述表所跟踪的虚拟寄存器的值是否匹配病毒数据库中的寄存器签名。
31.如权利要求14所述的病毒检测系统,进一步包括:
文件选择模块,用于在计算机系统上的多个文件中进行选择,以识别容易被计算机病毒感染的文件。
32.一种计算机程序产品,包括:
计算机可读介质,它带有包括在其中的用于检测计算机系统中的计算机病毒的计算机程序逻辑,所述计算机程序逻辑包括:
病毒数据库模块,用于存储描述计算机病毒的寄存器签名;
模拟模块,用于在拥有虚拟寄存器的虚拟计算机系统中模拟计算机程序指令;
引擎模块,用于分析虚拟寄存器的内容,以检测与病毒数据库中的寄存器签名是否匹配。
33.如权利要求32所述的计算机程序产品,其中寄存器签名包括至少一个谓词,当虚拟寄存器包含指定值时,满足所述谓词。
34.如权利要求33所述的计算机程序产品,其中所述谓词使用通配符来指定虚拟寄存器的值。
35.如权利要求33所述的计算机程序产品,其中所述谓词使用通配符来指定虚拟寄存器。
36.如权利要求32所述的计算机程序产品,其中寄存器签名指定表示计算机病毒的寄存器值的序列。
37.如权利要求36所述的计算机程序产品,其中寄存器签名指定模拟模块所模拟的至少一个操作代码,其表示计算机病毒。
38.如权利要求32所述的计算机程序产品,其中病毒数据库模块进一步适用于存储描述多个计算机病毒的感染特征的数据。
39.如权利要求32所述的计算机程序产品,其中病毒数据库模块进一步适用于存储描述如何修复被计算机病毒中的一个或多个计算机病毒感染的文件的数据。
40.如权利要求32所述的计算机程序产品,其中模拟模块以初始状态来模拟指令,并且其中初始状态响应于病毒数据库中的数据来确定。
41.如权利要求32所述的计算机程序产品,进一步包括:
用于指定断点条件的断点条件模块,其中模拟模块适用于模拟指令,直到到达断点条件。
42.如权利要求41所述的计算机程序产品,其中模拟模块响应于断点条件对计算机指令进行微跟踪。
43.如权利要求32所述的病毒检测系统,其中计算机程序指令在文件中,其中该文件包括多个潜在病毒入口点,并且其中模拟模块适用于在多个潜在病毒入口点中的至少一些潜在病毒入口点模拟指令。
44.如权利要求43所述的计算机程序产品,其中模拟模块适用于分开地在潜在病毒入口点模拟指令,并且其中引擎模块适用于分析每次模拟的虚拟寄存器的内容,以检测是否与病毒数据库中的寄存器签名匹配。
45.如权利要求43所述的计算机程序产品,其中模拟模块在多个潜在病毒入口点中的一些潜在病毒入口点执行对指令的微跟踪。
46.如权利要求32所述的计算机程序产品,进一步包括:
建表模块,用于响应被模拟的指令来建立一个表,所述表跟踪虚拟寄存器的至少一个子集的值。
47.如权利要求46所述的计算机程序产品,其中响应于病毒数据库中存储的数据,确定所述表所跟踪的虚拟寄存器的子集。
48.如权利要求46所述的计算机程序产品,进一步包括:
病毒报告模块,用于分析所述表,以确定所述表所跟踪的虚拟寄存器的值是否匹配病毒数据库中的寄存器签名。
49.如权利要求32所述的计算机程序产品,其中数据模块包括:
病毒报告模块,用于确定虚拟寄存器的值是否匹配病毒数据库中的寄存器签名。
50.如权利要求32所述的计算机程序产品,进一步包括:
文件选择模块,用于在计算机系统上的多个文件中进行选择,以识别容易被计算机病毒感染的文件,其中模拟模块模拟选定文件中的计算机程序指令。
CN03811842.4A 2002-05-23 2003-05-22 变形计算机病毒检测 Pending CN1656732A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/154,070 2002-05-23
US10/154,070 US7409717B1 (en) 2002-05-23 2002-05-23 Metamorphic computer virus detection

Publications (1)

Publication Number Publication Date
CN1656732A true CN1656732A (zh) 2005-08-17

Family

ID=29582098

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03811842.4A Pending CN1656732A (zh) 2002-05-23 2003-05-22 变形计算机病毒检测

Country Status (5)

Country Link
US (3) US7409717B1 (zh)
EP (1) EP1522163B1 (zh)
CN (1) CN1656732A (zh)
AU (1) AU2003245327A1 (zh)
WO (1) WO2003101037A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056933A1 (fr) * 2005-11-16 2007-05-24 Jie Bai Procede pour identifier des virus inconnus et les supprimer
WO2007076624A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Virtual machine to detect malicious code
CN101373501B (zh) * 2008-05-12 2010-06-02 公安部第三研究所 针对计算机病毒的动态行为捕获方法
CN101236584B (zh) * 2007-01-31 2010-10-13 三星电子株式会社 检测入侵代码的设备及其方法
CN101645119B (zh) * 2008-08-07 2012-05-23 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
CN102737171A (zh) * 2011-04-12 2012-10-17 腾讯科技(深圳)有限公司 一种病毒文件存储的方法、装置及存储设备
CN103136474A (zh) * 2011-11-29 2013-06-05 姚纪卫 检测文件的方法和装置
CN105528220A (zh) * 2014-09-28 2016-04-27 腾讯科技(深圳)有限公司 加载动态共享对象的方法和装置
CN107533497A (zh) * 2015-04-22 2018-01-02 三菱电机株式会社 可编程逻辑控制器、从属仪器以及二重化系统

Families Citing this family (125)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111201B2 (en) * 2000-05-19 2006-09-19 Self Repairing Computers, Inc. Self repairing computer detecting need for repair and having switched protected storage
US7096381B2 (en) * 2001-05-21 2006-08-22 Self Repairing Computer, Inc. On-the-fly repair of a computer
US20060277433A1 (en) * 2000-05-19 2006-12-07 Self Repairing Computers, Inc. Computer having special purpose subsystems and cyber-terror and virus immunity and protection features
US7302584B2 (en) * 2001-03-16 2007-11-27 Mcafee, Inc. Mechanisms for banning computer programs from use
US7392541B2 (en) * 2001-05-17 2008-06-24 Vir2Us, Inc. Computer system architecture and method providing operating-system independent virus-, hacker-, and cyber-terror-immune processing environments
US7849360B2 (en) * 2001-05-21 2010-12-07 Vir2Us, Inc. Computer system and method of controlling communication port to prevent computer contamination by virus or malicious code
FR2830638A1 (fr) * 2001-10-05 2003-04-11 France Telecom Procede de detection generique de programmes d'attaque caches dans des chaines de donnees
US7536598B2 (en) * 2001-11-19 2009-05-19 Vir2Us, Inc. Computer system capable of supporting a plurality of independent computing environments
US7788699B2 (en) * 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US7409717B1 (en) * 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
US7904955B1 (en) * 2002-06-13 2011-03-08 Mcafee, Inc. Method and apparatus for detecting shellcode
US7529897B1 (en) 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US20100005531A1 (en) * 2004-12-23 2010-01-07 Kenneth Largman Isolated multiplexed multi-dimensional processing in a virtual processing space having virus, spyware, and hacker protection features
US7490268B2 (en) * 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7603715B2 (en) * 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
US7685640B2 (en) * 2004-09-21 2010-03-23 Agere Systems Inc. Methods and apparatus for interface adapter integrated virus protection
US7765400B2 (en) * 2004-11-08 2010-07-27 Microsoft Corporation Aggregation of the knowledge base of antivirus software
US7810158B2 (en) * 2004-12-16 2010-10-05 At&T Intellectual Property I, L.P. Methods and systems for deceptively trapping electronic worms
EP1684151A1 (en) * 2005-01-20 2006-07-26 Grant Rothwell William Computer protection against malware affection
US8037534B2 (en) * 2005-02-28 2011-10-11 Smith Joseph B Strategies for ensuring that executable content conforms to predetermined patterns of behavior (“inverse virus checking”)
EP1875662A2 (en) * 2005-04-08 2008-01-09 Vir2us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US7349931B2 (en) * 2005-04-14 2008-03-25 Webroot Software, Inc. System and method for scanning obfuscated files for pestware
US7591016B2 (en) * 2005-04-14 2009-09-15 Webroot Software, Inc. System and method for scanning memory for pestware offset signatures
US7571476B2 (en) * 2005-04-14 2009-08-04 Webroot Software, Inc. System and method for scanning memory for pestware
US20060288417A1 (en) * 2005-06-21 2006-12-21 Sbc Knowledge Ventures Lp Method and apparatus for mitigating the effects of malicious software in a communication network
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8549639B2 (en) 2005-08-16 2013-10-01 At&T Intellectual Property I, L.P. Method and apparatus for diagnosing and mitigating malicious events in a communication network
US8407785B2 (en) 2005-08-18 2013-03-26 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
US7739740B1 (en) * 2005-09-22 2010-06-15 Symantec Corporation Detecting polymorphic threats
JP4754922B2 (ja) * 2005-09-30 2011-08-24 富士通株式会社 ワーム感染装置の検出装置
JP2009512939A (ja) * 2005-10-21 2009-03-26 ヴァー2アス インコーポレイテッド 複数のオペレーティングシステムのインスタンスが単一のマシン資源を安全に共有することを可能とする、オペレーティングシステムの仮想化、を有するコンピュータセキュリティ方法
CA2626993A1 (en) 2005-10-25 2007-05-03 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions
US7836303B2 (en) 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US7934229B1 (en) * 2005-12-29 2011-04-26 Symantec Corporation Generating options for repairing a computer infected with malicious software
US8255992B2 (en) * 2006-01-18 2012-08-28 Webroot Inc. Method and system for detecting dependent pestware objects on a computer
US8196205B2 (en) * 2006-01-23 2012-06-05 University Of Washington Through Its Center For Commercialization Detection of spyware threats within virtual machine
US7937758B2 (en) * 2006-01-25 2011-05-03 Symantec Corporation File origin determination
US20090133124A1 (en) * 2006-02-15 2009-05-21 Jie Bai A method for detecting the operation behavior of the program and a method for detecting and clearing the virus program
US8364965B2 (en) * 2006-03-15 2013-01-29 Apple Inc. Optimized integrity verification procedures
US7664626B1 (en) * 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US8640235B2 (en) * 2006-03-31 2014-01-28 Symantec Corporation Determination of malicious entities
US8479174B2 (en) * 2006-04-05 2013-07-02 Prevx Limited Method, computer program and computer for analyzing an executable computer file
US8321941B2 (en) * 2006-04-06 2012-11-27 Juniper Networks, Inc. Malware modeling detection system and method for mobile platforms
ATE504448T1 (de) * 2006-04-28 2011-04-15 Telecom Italia Spa Tintenstrahldruckkopfplatte und herstellungsverfahren dafür
US7945956B2 (en) * 2006-05-18 2011-05-17 Microsoft Corporation Defining code by its functionality
US9178907B2 (en) 2006-06-09 2015-11-03 Mcafee, Inc. System, method and computer program product for detecting encoded shellcode in network traffic
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US8171550B2 (en) * 2006-08-07 2012-05-01 Webroot Inc. System and method for defining and detecting pestware with function parameters
US8065664B2 (en) 2006-08-07 2011-11-22 Webroot Software, Inc. System and method for defining and detecting pestware
US20080215852A1 (en) * 2006-08-31 2008-09-04 Kenneth Largman System and Device Architecture For Single-Chip Multi-Core Processor Having On-Board Display Aggregator and I/O Device Selector Control
US20080127348A1 (en) * 2006-08-31 2008-05-29 Kenneth Largman Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware
US8135994B2 (en) 2006-10-30 2012-03-13 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
US20080115219A1 (en) * 2006-11-13 2008-05-15 Electronics And Telecommunications Research Apparatus and method of detecting file having embedded malicious code
WO2008092031A2 (en) 2007-01-24 2008-07-31 Vir2Us, Inc. Computer system architecture having isolated file system management for secure and reliable data processing
IL181426A (en) * 2007-02-19 2011-06-30 Deutsche Telekom Ag Automatic removal of signatures for malware
US20080201722A1 (en) * 2007-02-20 2008-08-21 Gurusamy Sarathy Method and System For Unsafe Content Tracking
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US9558019B2 (en) * 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US8874425B2 (en) * 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US7854002B2 (en) * 2007-04-30 2010-12-14 Microsoft Corporation Pattern matching for spyware detection
US8296848B1 (en) * 2007-06-20 2012-10-23 Symantec Corporation Control flow redirection and analysis for detecting vulnerability exploitation
US8621610B2 (en) * 2007-08-06 2013-12-31 The Regents Of The University Of Michigan Network service for the detection, analysis and quarantine of malicious and unwanted files
US8176477B2 (en) 2007-09-14 2012-05-08 International Business Machines Corporation Method, system and program product for optimizing emulation of a suspected malware
US7559086B2 (en) * 2007-10-02 2009-07-07 Kaspersky Lab, Zao System and method for detecting multi-component malware
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
US8082584B1 (en) 2007-10-16 2011-12-20 Mcafee, Inc. System, method, and computer program product for conditionally performing a scan on data based on an associated data structure
US8621606B1 (en) * 2007-12-31 2013-12-31 Symantec Corporation Systems and methods for identifying external functions called by untrusted applications
US20090235357A1 (en) * 2008-03-14 2009-09-17 Computer Associates Think, Inc. Method and System for Generating a Malware Sequence File
US8065730B1 (en) * 2008-03-31 2011-11-22 Symantec Corporation Anti-malware scanning in a virtualized file system environment
KR20090109154A (ko) * 2008-04-15 2009-10-20 한국전자통신연구원 악성코드 차단 장치, 시스템 및 방법
US8522015B2 (en) * 2008-06-27 2013-08-27 Microsoft Corporation Authentication of binaries in memory with proxy code execution
US8935789B2 (en) * 2008-07-21 2015-01-13 Jayant Shukla Fixing computer files infected by virus and other malware
US8365283B1 (en) * 2008-08-25 2013-01-29 Symantec Corporation Detecting mutating malware using fingerprints
US9177144B2 (en) * 2008-10-30 2015-11-03 Mcafee, Inc. Structural recognition of malicious code patterns
MY151479A (en) * 2008-12-16 2014-05-30 Secure Corp M Sdn Bhd F Method and apparatus for detecting shellcode insertion
US8402541B2 (en) * 2009-03-12 2013-03-19 Microsoft Corporation Proactive exploit detection
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US8555391B1 (en) 2009-04-25 2013-10-08 Dasient, Inc. Adaptive scanning
US9154364B1 (en) * 2009-04-25 2015-10-06 Dasient, Inc. Monitoring for problems and detecting malware
US8683584B1 (en) 2009-04-25 2014-03-25 Dasient, Inc. Risk assessment
US8516590B1 (en) 2009-04-25 2013-08-20 Dasient, Inc. Malicious advertisement detection and remediation
US8479292B1 (en) * 2010-11-19 2013-07-02 Symantec Corporation Disabling malware that infects boot drivers
US20120260304A1 (en) 2011-02-15 2012-10-11 Webroot Inc. Methods and apparatus for agent-based malware management
US8966625B1 (en) 2011-05-24 2015-02-24 Palo Alto Networks, Inc. Identification of malware sites using unknown URL sites and newly registered DNS addresses
US8555388B1 (en) 2011-05-24 2013-10-08 Palo Alto Networks, Inc. Heuristic botnet detection
JP2014526751A (ja) 2011-09-15 2014-10-06 ザ・トラスティーズ・オブ・コロンビア・ユニバーシティ・イン・ザ・シティ・オブ・ニューヨーク リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体
RU2491615C1 (ru) * 2012-02-24 2013-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ формирования записей для обнаружения программного обеспечения
US20130239214A1 (en) * 2012-03-06 2013-09-12 Trusteer Ltd. Method for detecting and removing malware
US8925074B1 (en) * 2012-05-22 2014-12-30 Trend Micro Incorporated Methods and apparatus for detecting abnormal computer files
US9215239B1 (en) 2012-09-28 2015-12-15 Palo Alto Networks, Inc. Malware detection based on traffic analysis
US9104870B1 (en) * 2012-09-28 2015-08-11 Palo Alto Networks, Inc. Detecting malware
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9852290B1 (en) 2013-07-12 2017-12-26 The Boeing Company Systems and methods of analyzing a software component
US9336025B2 (en) 2013-07-12 2016-05-10 The Boeing Company Systems and methods of analyzing a software component
US9280369B1 (en) * 2013-07-12 2016-03-08 The Boeing Company Systems and methods of analyzing a software component
US9396082B2 (en) 2013-07-12 2016-07-19 The Boeing Company Systems and methods of analyzing a software component
US10019575B1 (en) 2013-07-30 2018-07-10 Palo Alto Networks, Inc. Evaluating malware in a virtual machine using copy-on-write
US9811665B1 (en) 2013-07-30 2017-11-07 Palo Alto Networks, Inc. Static and dynamic security analysis of apps for mobile devices
US9613210B1 (en) 2013-07-30 2017-04-04 Palo Alto Networks, Inc. Evaluating malware in a virtual machine using dynamic patching
US9479521B2 (en) 2013-09-30 2016-10-25 The Boeing Company Software network behavior analysis and identification system
US9304874B2 (en) * 2014-02-03 2016-04-05 Red Hat Israel, Ltd. Virtual machine-guest driven state restoring by hypervisor
CN103810428B (zh) * 2014-02-24 2017-05-24 珠海市君天电子科技有限公司 一种宏病毒检测方法及装置
GB2527323B (en) 2014-06-18 2016-06-15 Ibm Runtime protection of web services
US9489516B1 (en) 2014-07-14 2016-11-08 Palo Alto Networks, Inc. Detection of malware using an instrumented virtual machine environment
CN104298918B (zh) * 2014-09-12 2018-08-21 北京云巢动脉科技有限公司 一种在虚拟机中基于数据块的病毒扫描方法和系统
CN104217165B (zh) * 2014-09-16 2016-07-06 百度在线网络技术(北京)有限公司 文件的处理方法及装置
US10397261B2 (en) * 2014-10-14 2019-08-27 Nippon Telegraph And Telephone Corporation Identifying device, identifying method and identifying program
US9519780B1 (en) * 2014-12-15 2016-12-13 Symantec Corporation Systems and methods for identifying malware
US9542554B1 (en) 2014-12-18 2017-01-10 Palo Alto Networks, Inc. Deduplicating malware
US9805193B1 (en) 2014-12-18 2017-10-31 Palo Alto Networks, Inc. Collecting algorithmically generated domains
US9438612B1 (en) 2015-03-23 2016-09-06 Fortinet, Inc. Calculating consecutive matches using parallel computing
US9935972B2 (en) * 2015-06-29 2018-04-03 Fortinet, Inc. Emulator-based malware learning and detection
WO2017187999A1 (ja) * 2016-04-26 2017-11-02 日本電気株式会社 プログラム分析システム、プログラム分析方法、及び、記録媒体
US11010474B2 (en) 2018-06-29 2021-05-18 Palo Alto Networks, Inc. Dynamic analysis techniques for applications
US10956573B2 (en) 2018-06-29 2021-03-23 Palo Alto Networks, Inc. Dynamic analysis techniques for applications
US11196765B2 (en) 2019-09-13 2021-12-07 Palo Alto Networks, Inc. Simulating user interactions for malware analysis
US12010517B1 (en) 2021-05-10 2024-06-11 Zimperium, Inc. Dynamic detection for mobile device security
KR102393795B1 (ko) * 2021-08-26 2022-05-03 시큐레터 주식회사 응용프로그램의 실행 흐름 변경을 통한 비실행 파일의 악성 탐지 방법 및 장치

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386523A (en) 1992-01-10 1995-01-31 Digital Equipment Corporation Addressing scheme for accessing a portion of a large memory space
JPH07146788A (ja) 1993-11-22 1995-06-06 Fujitsu Ltd ウイルス診断機構の作成システムと作成方法並びにウイルス診断機構と診断方法
US5796989A (en) 1995-03-20 1998-08-18 Apple Computer, Inc. Method and system for increasing cache efficiency during emulation through operation code organization
US6067410A (en) * 1996-02-09 2000-05-23 Symantec Corporation Emulation repair system
US5854916A (en) 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
US5826013A (en) * 1995-09-28 1998-10-20 Symantec Corporation Polymorphic virus detection module
US5696822A (en) 1995-09-28 1997-12-09 Symantec Corporation Polymorphic virus detection module
US5712583A (en) 1995-11-13 1998-01-27 International Business Machines Corporation Clock phase alignment using frequency comparison
JP3848684B2 (ja) 1996-03-22 2006-11-22 株式会社日立製作所 コンピュータネットワークシステムの管理方法,および,コンピュータネットワークシステムに用いるコンピュータ
US5964889A (en) 1997-04-16 1999-10-12 Symantec Corporation Method to analyze a program for presence of computer viruses by examining the opcode for faults before emulating instruction in emulator
US5978917A (en) 1997-08-14 1999-11-02 Symantec Corporation Detection and elimination of macro viruses
US6357008B1 (en) 1997-09-23 2002-03-12 Symantec Corporation Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases
US6021510A (en) 1997-11-24 2000-02-01 Symantec Corporation Antivirus accelerator
US6094731A (en) 1997-11-24 2000-07-25 Symantec Corporation Antivirus accelerator for computer networks
US6088803A (en) 1997-12-30 2000-07-11 Intel Corporation System for virus-checking network data during download to a client device
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
US6347375B1 (en) * 1998-07-08 2002-02-12 Ontrack Data International, Inc Apparatus and method for remote virus diagnosis and repair
US6851057B1 (en) * 1999-11-30 2005-02-01 Symantec Corporation Data driven detection of viruses
US6971019B1 (en) * 2000-03-14 2005-11-29 Symantec Corporation Histogram-based virus detection
US6981279B1 (en) 2000-08-17 2005-12-27 International Business Machines Corporation Method and apparatus for replicating and analyzing worm programs
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US7092861B1 (en) * 2000-11-02 2006-08-15 Koninklijke Philips Electronics N.V. Visual anti-virus in a network control environment
US6564154B1 (en) * 2000-11-28 2003-05-13 Steelcase Development Corporation Monitoring system
US7409717B1 (en) * 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
AU2002341754A1 (en) * 2002-07-05 2004-01-23 Cyberscan Technology, Inc. Secure game download

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007056933A1 (fr) * 2005-11-16 2007-05-24 Jie Bai Procede pour identifier des virus inconnus et les supprimer
WO2007076624A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Virtual machine to detect malicious code
CN101236584B (zh) * 2007-01-31 2010-10-13 三星电子株式会社 检测入侵代码的设备及其方法
CN101373501B (zh) * 2008-05-12 2010-06-02 公安部第三研究所 针对计算机病毒的动态行为捕获方法
CN101645119B (zh) * 2008-08-07 2012-05-23 中国科学院软件研究所 一种基于虚拟硬件环境的恶意代码自动分析方法及系统
CN102737171A (zh) * 2011-04-12 2012-10-17 腾讯科技(深圳)有限公司 一种病毒文件存储的方法、装置及存储设备
CN103136474A (zh) * 2011-11-29 2013-06-05 姚纪卫 检测文件的方法和装置
CN103136474B (zh) * 2011-11-29 2017-07-04 姚纪卫 检测文件的方法和装置
CN105528220A (zh) * 2014-09-28 2016-04-27 腾讯科技(深圳)有限公司 加载动态共享对象的方法和装置
CN107533497A (zh) * 2015-04-22 2018-01-02 三菱电机株式会社 可编程逻辑控制器、从属仪器以及二重化系统

Also Published As

Publication number Publication date
EP1522163A1 (en) 2005-04-13
US20080209562A1 (en) 2008-08-28
US7937764B2 (en) 2011-05-03
AU2003245327A1 (en) 2003-12-12
EP1522163B1 (en) 2012-09-26
WO2003101037A1 (en) 2003-12-04
US7409717B1 (en) 2008-08-05
US20040255165A1 (en) 2004-12-16
US7334263B2 (en) 2008-02-19
EP1522163A4 (en) 2010-03-31

Similar Documents

Publication Publication Date Title
CN1656732A (zh) 变形计算机病毒检测
Pewny et al. Leveraging semantic signatures for bug search in binary programs
Blazytko et al. Syntia: Synthesizing the semantics of obfuscated code
Wenzl et al. From hack to elaborate technique—a survey on binary rewriting
US7636856B2 (en) Proactive computer malware protection through dynamic translation
Cesare et al. Malwise—an effective and efficient classification system for packed and polymorphic malware
Cesare et al. Software similarity and classification
Crussell et al. Andarwin: Scalable detection of android application clones based on semantics
Ren et al. Unleashing the hidden power of compiler optimization on binary code difference: An empirical study
Angelini et al. Ropmate: Visually assisting the creation of rop-based exploits
Hu et al. A semantics-based hybrid approach on binary code similarity comparison
Wang et al. Enhancing dnn-based binary code function search with low-cost equivalence checking
Black et al. Evolved similarity techniques in malware analysis
Zhang et al. Unleashing the power of pseudo-code for binary code similarity analysis
Wang et al. MetaHunt: Towards taming malware mutation via studying the evolution of metamorphic virus
Khoo Decompilation as search
Alrabaee et al. Binary analysis overview
CN106372508B (zh) 恶意文档的处理方法及装置
CN108255496A (zh) 一种获取安卓应用原生层代码的方法、系统及相关装置
Ahad et al. Pyfet: Forensically equivalent transformation for python binary decompilation
Cesare Fast automated unpacking and classification of malware
Qiu et al. Identifying functions in binary code with reverse extended control flow graphs
Khadra et al. Techniques For Efficient Binary-Level Coverage Analysis
Nagy Practical Feedback and Instrumentation Enhancements for Performant Security Testing of Closed-source Executables
Van Wilder Hybrid static-dynamic ARM software matching

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20050817