CN101901322A - 用于检测混淆恶意软件的系统和方法 - Google Patents
用于检测混淆恶意软件的系统和方法 Download PDFInfo
- Publication number
- CN101901322A CN101901322A CN2010102030380A CN201010203038A CN101901322A CN 101901322 A CN101901322 A CN 101901322A CN 2010102030380 A CN2010102030380 A CN 2010102030380A CN 201010203038 A CN201010203038 A CN 201010203038A CN 101901322 A CN101901322 A CN 101901322A
- Authority
- CN
- China
- Prior art keywords
- software code
- code
- optimization
- software
- optimize
- 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
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/562—Static detection
- G06F21/563—Static detection by source code analysis
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)
- Stored Programmes (AREA)
Abstract
本发明披露了一种用于有效且可靠地分析、优化及检测混淆恶意软件的系统、方法和计算机程序产品。一个披露的用于恶意软件检测的示例性方法包括将可执行软件代码加载到计算机系统中并且将软件代码反汇编为汇编语言或其它低级程序设计语言。然后,该方法进行简化复杂的汇编指令并构造简化的软件代码的数据流模型。分析数据流模型的代码元的依赖关系和相互关系来识别其中的混淆软件代码。然后优化识别的混淆代码。基于优化的结果,对于软件代码是否为恶意的和/或是否有必要对优化的软件代码进行进一步反恶意软件分析做出判定。
Description
技术领域
本发明总体上涉及恶意软件检测领域,更具体地,涉及用于分析、优化及检测混淆恶意软件的系统和方法。
背景技术
恶意的软件(即恶意软件,malware)的日益复杂和快速繁殖呈现出对世界范围的个人计算机和企业计算机系统的越来越多的安全威胁。为了防止诸如病毒、蠕虫、木马等恶意软件的传播,反恶意软件业已经开发了各种恶意软件检测技术。这些技术通常基于签名匹配或启发式分析的原理,所述签名匹配即是将软件代码和已知的病毒代码词典相比较,所述启发式分析即是根据恶意行为的模式仿真和分析软件。然而,这些技术在其应用于混淆恶意软件时经常失效,在这些混淆恶意软件中,软件代码被修改(或混淆)而使得难以分析。结果,由于反恶意软件程序无法检测混淆恶意软件,或花费大量的时间和系统资源来分析混淆软件,所以检测过程变得极其低效。
因此,需要有效且高效的机制用于分析混淆软件代码以及在其中检测恶意代码。
发明内容
这里披露了用于有效和可靠地分析、优化及检测混淆恶意软件的系统、方法和计算机程序产品。
在一个示例性实施例中,用于恶意软件检测的方法包括在计算机系统中装载可执行软件代码。然后,将软件代码分为多个码组,每个码组被顺序(或并行)地装载到一个或多个存储器缓冲区中。该方法进一步包括将存储器缓冲区中的软件代码反汇编为汇编语言或本领域技术人员已知的其它低级程序设计语言。然后,将任何复杂的汇编语言指令都简化为基本指令。该方法进而可以继续构建简化的软件代码的数据流模型以及分析数据流模型的代码元间的依赖关系和相互关系,以在其中识别混淆软件代码。然后可以进一步优化识别的混淆代码。最后,基于代码优化的结果,对于软件代码是否为恶意和/或是否有必要使用例如签名匹配和/或试探分析法对软件代码进一步分析优化,做出判定。
在另一个示例性实施例中,用于恶意软件检测的方法包括将至少一部分软件代码加载到系统存储器中。软件代码继而被转化为低级程序设计语言。然后,简化软件代码。分析简化的软件代码中的指令之间的依赖关系和相互关系,在其中识别混淆软件代码。然后可以优化识别的混淆软件代码。优化包括去除死代码和优化分布式计算、逆向操作、常量计算、转移指令、存储器调用、标志符操作、分支和循环指令。最后,使用签名匹配和/或启发式分析恶意软件检测技术,重新编译和分析优化的软件代码,来确定软件代码是否是恶意的。
附图说明
附图提供对本发明进一步的理解,并且并入此说明书中构成其中的一部分,这些附图有助于理解本发明的原理。
附图中:
图1示出了根据一个示例性实施例的计算机系统的示意图。
图2示出了根据一个示例性实施例的混淆软件代码的示例。
图3a示出了根据一个示例性实施例的代码优化过程的高级示意图。
图3b示出了根据一个示例性实施例的代码优化过程的详细流程图。
图4示出了根据一个示例性实施例的可以被优化的各种类型的混淆代码。
图5示出了根据一个示例性实施例的混淆软件代码的数据流模型的示例。
图6示出了根据一个示例性实施例的分布式计算操作的示例。
图7示出了根据一个示例性实施例的变量的逆向计算的示例。
图8示出了根据一个示例性实施例的常量计算的示例。
图9示出了根据一个示例性实施例的转移指令的示例。
图10示出了根据另一个示例性实施例的优化存储器调用指令的示例。
图11示出了根据一个示例性实施例的优化标识符指令的示例。
图12示出了根据一个示例性实施例的优化分支和循环指令的示例。
图13示出了根据一个示例性实施例的混淆代码的优化结果。
图14以图形形式示出了代码混淆的程度和一般的反恶意软件程序花费的时间之间的关系。
具体实施方式
本文在用于分析、优化及检测混淆的恶意的软件(也被称为恶意软件)的系统和方法的上下文环境中描述了示例性实施例。本领域的普通技术人员能认识到下列描述仅是说明例证性的而并非意图以任何方式限制。从本发明受益的技术人员将容易地想到其它的实施例。现在将对在附图中示出的示例性实施例的实施方式详细地做出说明。贯穿附图和下面的描述尽可能使用相同的附图标记指代相同或相似的项目。
为了清楚起见,这里所描述的实施方式的常规特征没有全部被示出和描述。应该认识到,在任一这类实际实施方式的开发中,为了实现开发者的特定目标,例如符合与应用程序相关的约束,必须做出大量特定于实施方式的决定,而且这些特定目标从一种实施方式到另一种实施方式、从一个开发者到另一个开发者将是不同的。此外,应该认识到,虽然这样的开发工作会是复杂和耗费时间的,但对受益于本发明的本领域普通技术人员而言仍然是常规的工程工作。
本文披露的用于分析、优化及检测混淆恶意软件的算法的各种实施例,可以使用硬件、软件、固件或其组合来实施,并且可以在各种计算机系统例如通用个人计算机(PC)、膝上型计算机、应用服务器、网络防火墙、路由器或无线访问点中实施。此外,为了检测恶意软件,披露的算法可以在包括多个并行操作的网络服务器计算机的分布式计算系统上实施。此外,披露的算法可以在运行在用户电子设备的软件上实施,所述用户电子设备例如为游戏控制台、移动电话、个人数字助理或其它会暴露于恶意软件的设备。
图1示出了示例性计算机系统的示意图,该示例性计算机系统适合实施用于分析、优化及检测混淆恶意软件的算法的各种实施例。一般说来,计算机系统100包括至少一个中央处理单元(CPU)150、内部系统存储器110、各种网络通信接口185以及各种内部或外部用户分别的输入和输出设备190和195。计算机系统100的组件可以通过系统总线(未示出)相互连接。计算机系统100也可以包括反恶意软件130,所述反恶意软件130实施此处披露的用于分析、优化及检测混淆恶意软件的算法。本领域的普通技术人员应该认识到,此处计算机系统100的描绘被简化了,并且系统100可以包括在其上进行操作所必需的其它组件。
在一个示例性实施例中,处理器150可以包括运算逻辑单元(ALU)160、多个寄存器170和控制单元180。ALU 160一般用于执行诸如加法、减法和比较这类基本算术运算以及依靠处理器150的特定体系结构的各种复杂运算。寄存器170是用于临时存储内部处理器操作的值的存储器位置,所述内部处理器操作的值例如为正在执行的指令的地址以及正在被CPU 150处理的数据。寄存器170一般用EAX、EBX、ECX、EDX、ESI和EDI来标示。寄存器170通常是32位或64位长,但可以根据特定的计算机体系结构更短或更长,如本领域技术人员已知的。控制单元180通过分析和执行软件指令来控制处理器150的操作。CPU 150的指令集体系结构可以是通用RISC体系结构(例如,MIPS、PowerPC、Precision Architecture或SPARK)、嵌入式RISC体系结构(例如,ARM、Hitachi SH、MIPS 16和Thumb)、CISC体系结构(例如,Intel 80x86、IBM 360/370和VAX)或本领域普通技术人员所已知的其它类型的处理器体系结构。
在一个示例性实施例中,系统存储器110可以包括非易失性存储器(NVM)120、随机存取存储器(RAM)140和各种其它类型的次级内部或外部存储设备,例如CD-ROM、DVD-ROM、磁带机等。NVM 120可以包括固态、磁性或光学设备、EPROM、EEPROM和快闪式存储器。NVM 120可以被用于存储操作系统(OS)125和各种软件程序,包括反恶意软件程序130,所述反恶意软件程序130用于根据此处披露的原理来分析及检测系统100上的恶意软件。OS 125可以包括DOS、Windows、MacOS、Unix、Linux或其它类型的操作系统,包括多任务操作系统等。RAM 140可以包括静态RAM(SRAM)、动态RAM(DRAM)和本领域普通技术人员所知道的用于存储常驻程序(runtimeprogram)和应用数据的其它类型的易失性存储器。
在一个示例性实施例中,通信接口185可以包括:各种串行或并行端口,例如USB、FireWire、PCMCIA等;有线网络接口,例如电话或线缆调制解调器、以太网卡等;无线接口,例如蜂窝的、Wi-Fi、Bluetooth;或者其它无线电或光学接口。用户输入设备190可以包括鼠标、键盘、麦克风、远程控制器或其它类型的控制器。用户输出设备195可以包括显示器、打印机、扬声器或其它类型的外部或内部设备。通信接口185和输入/输出接口190、195可以被用于将各种计算机程序即软件加载到系统100的RAM 140中,用于对其进行恶意软件分析。接口185也能够使计算机系统100和其它计算机系统或联网的数据库通信,其可以提供附加的处理能力或用于恶意软件分析的恶意软件知识数据库。
为了利于加载到计算机系统100上的软件的恶意软件分析,根据一个示例性实施例,系统可以包括反汇编程序135。反汇编程序135可以是反恶意软件程序130的组件(component)。反汇编程序135将加载到系统100上的可执行程序转译为汇编语言代码,用于通过反恶意软件130进一步分析程序代码。汇编语言是用于对计算机进行程序设计的低级语言。其实现了对特定CPU体系结构进行程序设计所需要的数字机器码和其它常量的符号表示。替代地,可以使用本领域普通技术人员知道的其它技术将可执行程序转换为适合于根据本文披露的原理对其进行分析和优化的其它格式或低级程序设计语言。
如上所述,值得注意的是,混淆软件使得利用诸如签名匹配、启发式分析以及其它等已知的反恶意软件技术来分析及检测恶意软件代码的过程极大复杂化。图14示出了代码混淆的程度和运行在系统100上的一般反恶意软件程序用以分析这类混淆代码所花费的时间之间的关系的曲线图。如图所证,随着代码混淆程度的增长,分析混淆代码的时间几乎呈指数增长,很快地从最小程度移动到极大的程度,这样无论对一般的基于PC的反恶意软件程序还是对于在实验室中使用的复杂而强大的反恶意软件应用都是反病毒软件开发者和其它恶意软件专家无法接受的。
图2提供了用C++程序设计语言编写的混淆软件代码的示例。具体地,函数DWORD包含下面的混淆代码。
M[i]=D;
T+=M[i];
M[i]=D;
T-=M[i];
在图2的右侧再现了DWORD函数的编译版本。可以用计算机系统100上任一已知的编译器例如Microsoft Visual C/C++编译器或其它等来编译该代码。上述混淆代码以如下汇编语言指令表示:
ADD EAX,ECX
SUB EAX,ECX
因为在处理器150执行加法(ADD)和减法(SUB)操作之后,寄存器EAX的值没有变化,所以这段代码被认为是混淆的,这表示这些指令是冗余的并且它们的运行是不必要的。虽然这个混淆示例相对简单,但恶意软件中的这种和其它混淆技术的广泛使用会极大地妨碍反恶意软件程序对恶意软件的处理和分析。因此,为提高检测过程的性能和效率,会期望对混淆软件代码的优化。
为了实现这些目标,根据一个示例性实施例,计算机系统100包括代码优化器145。代码优化器145可以是反恶意软件程序130的组件。图3a是根据一个示例性实施例的描绘代码优化过程的高级示意图。在步骤301中,由反恶意软件程序130加载未优化的可执行或对象软件代码。在步骤301中,软件代码可以被分为码组(code block)302、303、304等。每个码组的大小可以在一定范围内变化,例如,从400字节到1000字节,但是依赖于系统和应用程序需求或本领域技术人员知道的其它参数而变化。根据步骤301b--301c所示,码组被代码优化器145串行(或并行)优化。因为优化后的模块包含较少的指令,所以其一般较小,并且因而比原始未优化的代码要容易通过反恶意软件程序130来分析。在一个示例性实施例中,可以在正在生成优化码组时以实时的方式针对恶意软件来分析码组,从而在整个软件代码被优化之前,一旦反恶意软件程序130确定代码是恶意的(或良性的),它就可以终止软件代码的分析,这节省了系统资源和时间。
图3b示出了根据一个示例性实施例的代码优化过程的更详细的流程图。在步骤310中,可执行程序文件130被加载到计算机系统100上,以由反恶意软件程序来分析。在步骤320中,反恶意软件程序将加载的可执行软件代码分成若干码组,并且在步骤330中,将码组加载到系统100的RAM 140中的一个或多个存储器缓冲区。在步骤340中,反汇编程序135将每个码组反汇编为汇编语言指令或本领域普通技术人员已知的其它低级程序设计语言。在步骤350中,代码优化器145基本上以实时的方式分析每个码组并且用简单(或基本的)指令替换复杂的汇编指令,简单(或基本的)指令例如为ADD、SUB、MOV、OR和其它基本的汇编指令。例如,复杂的PUSH EAX指令可以被拆分成如下所示的基本指令集:
SUB ESP,4
MOV[ESP],EAX
在步骤360中,代码优化器145可以为一个或多个码组构造简化的软件代码的数据流模型。数据流模型确定简化的软件代码的代码元之间的依赖关系和相互关系。图5示出了数据流模型的示例。在步骤365和370中,代码优化器145可以分析数据流模型,在其中识别混淆代码并且优化数据流模型中的混淆代码。一般而言,优化过程包括分析数据流模型中的代码元(codeelement)之间的依赖关系和相互关系。分析的代码元包括在一个或多个码组中一个或多个汇编指令的例如XOR、ADD、INC等操作和操作数,即,被操作的值。数据流模型帮助优化器145执行这类软件代码的分析。在一个示例性实施例中,优化器145可以为每个码组构造单独的数据流模型。在另一个实施例中,可以构造合并了来自若干码组的指令的公共数据流模型。然而在另一个实施例中,代码优化器145可以不使用任何数据流模型而直接地分析并优化简化的软件代码。
在步骤380中,反恶意软件程序将由优化器145提供的优化的软件代码和原始的未被优化的代码相比较,来度量代码混淆的程度。例如,反恶意软件程序可以比较原始反汇编的软件代码中的指令数目和优化的软件代码中的指令数目。基于代码混淆的程度,反恶意软件程序可以判定分析的软件是否为恶意的。举例来说,如果软件代码严重地被混淆,例如,超过50%的代码是混淆的,那么,反恶意软件程序由于该软件明显试图使用代码混淆来隐藏它的功能性而宣布该软件是恶意的。另外一方面,如果代码不是混淆的或仅仅轻度地混淆,例如,低于10%,则反恶意软件程序可以宣布软件是非恶意的。
在步骤385中,根据一个示例性实施例,反恶意软件程序可以基于代码混淆的程度来决定是否需要对软件代码进行附加的恶意分析。在步骤390中,反恶意软件程序可以进一步使用常规的恶意软件检测技术,例如签名匹配、启发式分析或其它技术,来分析具有极大百分比的混淆代码的软件代码。为了这样的目的,反恶意软件程序可以使用C++、Java或其它类型的编译程序重新编译优化的软件代码,并且提交重新编译的结果,用于进一步的分析。如果使用签名匹配,则将优化的软件代码和由恶意软件数据库中的反恶意软件程序维护的已知病毒代码词典相比较。如果使用启发式分析,则可以针对恶意行为的模式来仿真和分析优化的软件。在于2007年10月2日提交的题为“SYSTEM AND METHOD FOR DETECTING MULTI-COMPONENTMALWARE”的第11/866,302号共同所有的美国专利申请中披露了启发式分析的示例性技术,在此通过援引的方式将其并入本申请中。替代地或附加地,优化的软件代码可以被发送给一位恶意软件专家或专家组来复查。在于2008年11月26日提交的题为“SYSTEM AND METHOD FOR COMPUTERMALWARE DETECTION”的第10/323,835号共同所有的美国专利申请中披露了专家分析的示例性技术,在此通过援引的方式将其并入本申请中。如果在优化的软件代码中找到恶意软件,则原始软件程序可以被分类为病毒、蠕虫、特洛伊木马等,并且在步骤395中将其从系统中隔离或除去。应当认识到,不论使用哪种恶意软件检测技术,优化的软件代码都较易于分析。
图4示出了根据各种示例性实施例的可以由优化器145优化的若干类型的混淆代码。如图所示,优化器145可以执行下列的优化过程:除去死代码(dead code)410,优化分布式计算420,逆向操作430,常量计算440和转移指令450。它还可以优化存储器调用460、标志符操作470以及分支和循环指令480。由优化器145来优化这些指令的顺序仅仅是说明性的,并且可以以不同的顺序来执行优化。同样地,依据系统的应用程序的需要,优化器145可以选择不执行某些描述的优化过程并且用其它已知的优化技术来替代执行。
上述优化过程的示例将在下面的图5-13和下列未优化的、简化的软件代码中更详细地描述。
XOR EAX,EAX
ADD ECX,2500h
OR EAX,250h
ADD EAX,80h
INC ECX
MOV ECX,EAX
ADD ECX,EDX
ADD ECX,30h
SUB ECX,EDX
MOV EAX,100h
SUB ECX,EAX
图5示出了上述软件代码的数据流模型500的示例,该数据流模型500的示例可以由代码优化器145来构造。模型500的指令间的依赖关系和相互关系的分析指出软件代码包括死代码510,该死代码510并不参与软件的执行而仅仅浪费系统的资源。死代码510对应于如下的指令:
ADD ECX,2500h
INC ECX
优化器145会识别这些指令是死代码,这是因为它们后面跟随着如下的MOVE操作,该MOVE操作清除ADD和INC指令的结果:
MOV ECX,EAX
因此,优化器145可以从数据流模型500中除去ADD和INC指令。
图6示出了模型500中的分布式计算的示例,其包括常量(在图中圈出)的加法(ADD)和减法(SUB),并且按如下所示被复制:
ADD EAX,80h
MOV ECX,EAX
ADD ECX,30h
SUB ECX,100h
这些对常量的分布式计算可以预先由优化器145计算,从而进一步优化软件代码500。
图7示出了模型500中变量(在图中圈出)的逆向计算的示例。逆向计算包括如下类型的指令:
A=A+B
A=A-B
换句话说,逆向计算是不改变变量A的值的计算。在图7中,这样的计算被圈出并且包括如下的ADD和SUB指令:
ADD ECX,EDX
SUB ECX,EDX
代码优化器145可以从软件代码500中完全除去这些指令。
图8示出了常量的计算的示例,其可以由优化器145预先计算以便进一步简化软件代码。这些操作可以包括,但不限于如下描述的MOV、ADD和SUB操作:
MOV EAX,15h
ADD EAX,100h
SUB EAX,80h
图9示出了移动操作的示例,其包括可以将:A=B和C=A这类指令优化为:C=B的指令的优化。在图9中提供了这些指令的示例:
MOV EAX,EDX
MOV ECX,EAX
通过分析上述指令间的依赖关系和相互关系,优化器145可以将它们替换为如下指令:
MOV ECX,EDX
应当认识到,仅当寄存器EAX的值将不在程序中的任何其它地方后继使用时,才执行优化。然而,如果它被用于其它别的地方,则优化的结果将如下所示:
MOV EAX,EDX
MOV ECX,EDX
图10示出了将:*A=B和C=*A这类存储器调用指令优化为:C=B的存储器调用指令的优化。这些指令的优化所基于的原理是,如果发生访问存储器的数据流模型中的节点访问相同的存储器位置,则在这些节点之间创建新的连接来访问存储器。在图10中,这样的存储器调用操作按如下指令描述:
PUSH EAX
POP EAX
这些指令尽管被顺次执行,但并不影响寄存器EAX的值。
图11示出了标志符指令集的优化的示例,例如如下指令:
STC
ADC EAX,0
其可以被描述为如下优化操作:
ADD EAX,1
图12示出了分支和循环指令的优化的示例。一个这样的示例可以包括,如果已知始终执行一条件,则将JZ(Jump-If-Zero)转移指令转换为一个无条件转移JMP。因此,JZ指令if(1){…}可以被优化成{…}指令。在图12中,该优化以如下的方式描述:
CMP 0,0
JZ [token]
其可以被优化成单一跳转(Jump)指令:
JMP [token]
其中[token]是计算机程序代码中的指针的地址。
应当认识到,上述所有的代码优化的示例仅仅是说明性的,整个优化算法可以基于如下的规则:
A+0=A
A^A=0
图13示出了代码500中上面描述的优化算法的结果。如上所示,原始的未优化的代码如下:
XOR EAX,EAX
ADD ECX,2500h
OR EAX,250h
ADD EAX,80h
INC ECX
MOV ECX,EAX
ADD ECX,EDX
ADD ECX,30h
SUB ECX,EDX
MOV EAX,100h
SUB ECX,EAX
其数据流模型1301可以在图13中确定。优化过程的结果被确定为优化的数据流模型1302,对应于如下代码:
MOV ECX,200h
MOV EAX,100h
作为优化的结果,软件代码的大小可以被减少多达85%。
依照本文披露的,其中描述的组件、处理步骤和/或数据结构可以使用各种类型的操作系统、计算平台、计算机程序和程序设计语言来实现。此外,本领域的普通技术人员应该认识到也可以使用较少的通用类型的设备,例如硬件、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等,并且可以在不脱离本发明披露的精神和范围的情况下使用。其中计算机或机器实现包含一连串处理步骤的方法并且那些处理步骤可以作为一连串机器可读的指令存储,它们可以存储在有形的媒体上,例如计算机存储器设备(例如,ROM、PROM、EEPROM、闪存储器等等)、磁存储器媒介(例如,磁带、磁盘驱动器等等)、光存储器媒介(例如,CD-ROM、DVD-ROM等等)和其它程序存储器类型。
虽然本文已经结合各种恶意软件检测技术描述了软件去除混淆(deobfuscation)系统和方法的示例性实施例,但本文阐明的软件解混淆的原理并不限于恶意软件检测范例,并且由受益于本发明的本领域技术人员容易地通过恰当的实验来实施和应用在其它应用程序和技术领域。
此外,应当理解,本文使用的措词或术语是为描述说明的目的而并非限制,从而本说明书的措词或术语由本领域技术人员根据本文提出的示教和指导结合相关领域的已知技术来解释。此外,说明书或权利要求中的任一术语并非意图归于非寻常的或特定的意义,除非明确这样阐明。本文所披露的各种实施例包含本文所例示说明的已知组件的当前和未来获知的等同物。而且,虽然已经示出和描述了实施例和应用,但明显地,从本发明受益的本领域技术人员在不脱离本发明的保护范围的情况下可以做出比以上所描述的更多的修改。
Claims (20)
1.一种用于恶意软件检测的由计算机执行的方法,包括:
将至少一部分软件代码加载到系统存储器中;
将加载的软件代码转换为低级程序设计语言;
将转换的代码中的复杂指令简化为基本指令;
构造简化的软件代码的数据流模型;
分析所述数据流模型中代码元的依赖关系和相互关系来识别其中的混淆软件代码;
优化所述数据流模型中的一个或多个识别的混淆代码;和
基于优化的结果确定软件代码是否为恶意的。
2.如权利要求1所述的方法,其中,软件代码包括可执行软件代码。
3.如权利要求1所述的方法,其中,将至少一部分软件代码加载到系统存储器中的步骤包括:
将软件代码划分为多个码组;和
将一个或多个码组加载到一个或多个存储器缓冲区中。
4.如权利要求3所述的方法,其中对两个或更多码组并行执行所述转换、简化、构造、分析和优化的步骤。
5.如权利要求1所述的方法,其中,将加载的软件代码转换为低级程序设计语言的步骤包括将所述软件代码反汇编为汇编语言指令。
6.如权利要求1所述的方法,其中,优化一个或多个混淆代码的步骤包括一个或多个下述操作:除去死代码、优化分布式计算、优化逆向操作、优化常量计算、优化转移指令、优化存储器调用、优化标志符操作以及优化分支和循环指令。
7.如权利要求1所述的方法,其中,基于优化的结果确定软件代码是否为恶意的步骤包括:
将优化的软件代码和原始未优化的软件代码相比较;和
基于比较的结果确定代码混淆的程度。
8.如权利要求7所述的方法,其中,基于优化的结果确定软件代码是否为恶意的步骤进一步包括基于代码混淆的程度执行一个或多个下列步骤:
使用签名匹配来分析优化的软件代码;
使用启发式分析来分析优化的软件代码;和
使用软件代码的人类专家复查来分析优化的软件代码。
9.一种用于恶意软件检测的系统,该系统包括:
用于存储计算机可执行软件代码的系统存储器;和
处理器,其被配置为:
将至少一部分所述可执行软件代码加载到所述系统存储器中;
将加载的软件代码转换为低级程序设计语言;
将转换的代码中的复杂指令简化为基本指令;
构造简化的软件代码的数据流模型;
分析所述数据流模型中代码元的依赖关系和相互关系来识别其中的混淆软件代码;
优化所述数据流模型中一个或多个识别的混淆代码;和
基于优化的结果确定软件代码是否为恶意的。
10.如权利要求9所述的系统,其中,为了将至少一部分所述软件代码加载到所述系统存储器中,所述处理器被进一步配置为:
将软件代码划分为多个码组;和
将一个或多个码组加载到一个或多个存储器缓冲区中。
11.如权利要求10所述的系统,其中,所述处理器被进一步配置为并行地转换、简化、构造、分析和优化两个或更多的码组。
12.如权利要求9所述的系统,其中,为了将加载的软件代码转换为低级程序设计语言,所述处理器被进一步配置为将所述软件代码反汇编为汇编语言指令。
13.如权利要求9所述的系统,其中,所述混淆软件代码包括一个或多个下述项目:死代码、分布式计算、逆向操作、常量计算、转移指令、存储器调用、标志符操作以及分支和循环指令。
14.如权利要求9所述的系统,其中,为了确定所述软件代码是否为恶意的,所述处理器被进一步配置为:
将优化的软件代码和原始未优化的软件代码相比较;和
基于比较结果确定代码混淆的程度。
15.如权利要求14所述的系统,其中,所述处理器被进一步配置为基于代码混淆的程度执行一个或多个下列步骤:
使用签名匹配来分析优化的软件代码;
使用启发式分析来分析优化的软件代码;和
将优化的软件代码提供给人类专家来复查。
16.一种用于恶意软件检测的由计算机执行的方法,该方法包括:
将至少一部分软件代码加载到系统存储器中;
将加载的软件代码转换为低级程序设计语言;
将转换的代码中的复杂指令简化为基本指令;
分析简化的软件代码中的指令间的依赖关系和相互关系来识别其中的混淆软件代码;
优化简化的软件代码中一个或多个识别的混淆代码;和
使用签名匹配或启发式分析恶意软件检测技术来分析优化的软件代码,以确定软件代码是否为恶意的。
17.如权利要求16所述的方法,其中,将至少一部分软件代码加载到系统存储器中的步骤包括:
将软件代码划分为多个码组;和
将一个或多个码组加载到一个或多个存储器缓冲区中。
18.如权利要求16所述的方法,其中,将加载的软件代码转换为低级程序设计语言的步骤包括将所述软件代码反汇编为汇编语言指令。
19.如权利要求16所述的方法,其中,优化一个或多个混淆代码的步骤包括一个或多个下述操作:除去死代码、优化分布式计算、优化逆向操作、优化常量计算、优化转移指令、优化存储器调用、优化标志符操作以及优化分支和循环指令。
20.如权利要求16所述的方法,其中,分析优化的软件代码的步骤包括重新编译所述优化的软件代码、以及使用签名匹配或启发式分析恶意软件检测技术来分析重新编译的优化的软件代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/500,630 US9087195B2 (en) | 2009-07-10 | 2009-07-10 | Systems and methods for detecting obfuscated malware |
US12/500,630 | 2009-07-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101901322A true CN101901322A (zh) | 2010-12-01 |
Family
ID=42732761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102030380A Pending CN101901322A (zh) | 2009-07-10 | 2010-06-18 | 用于检测混淆恶意软件的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9087195B2 (zh) |
EP (2) | EP2669839B1 (zh) |
CN (1) | CN101901322A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475952A (zh) * | 2013-09-11 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种多媒体优化正确性检测方法 |
CN105701368A (zh) * | 2014-12-16 | 2016-06-22 | 恩智浦有限公司 | 通过根据校验和计算目标地址的代码完整性保护 |
CN108573148A (zh) * | 2017-03-10 | 2018-09-25 | 中国科学院软件研究所 | 一种基于词法分析的混淆加密脚本识别方法 |
CN110837372A (zh) * | 2019-11-04 | 2020-02-25 | 贵阳动视云科技有限公司 | 汇编代码清除混淆的方法、装置、介质及设备 |
CN110941431A (zh) * | 2018-09-21 | 2020-03-31 | 北京奇虎科技有限公司 | 混淆代码的优化方法及装置、计算设备、存储介质 |
CN115292203A (zh) * | 2022-09-30 | 2022-11-04 | 平安银行股份有限公司 | 一种源代码分析方法及装置 |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578345B1 (en) * | 2010-04-15 | 2013-11-05 | Symantec Corporation | Malware detection efficacy by identifying installation and uninstallation scenarios |
US9111094B2 (en) * | 2011-01-21 | 2015-08-18 | F-Secure Corporation | Malware detection |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
US8640243B2 (en) * | 2012-03-22 | 2014-01-28 | International Business Machines Corporation | Detecting malicious computer code in an executing program module |
US9792432B2 (en) * | 2012-11-09 | 2017-10-17 | Nokia Technologies Oy | Method and apparatus for privacy-oriented code optimization |
US9817742B2 (en) * | 2013-06-25 | 2017-11-14 | Dell International L.L.C. | Detecting hardware and software problems in remote systems |
US10986103B2 (en) | 2013-07-31 | 2021-04-20 | Micro Focus Llc | Signal tokens indicative of malware |
US9690936B1 (en) * | 2013-09-30 | 2017-06-27 | Fireeye, Inc. | Multistage system and method for analyzing obfuscated content for malware |
US10192052B1 (en) * | 2013-09-30 | 2019-01-29 | Fireeye, Inc. | System, apparatus and method for classifying a file as malicious using static scanning |
WO2015149351A1 (zh) * | 2014-04-04 | 2015-10-08 | 华为技术有限公司 | 监控服务器、解析服务器、请求设备及节点选择方法 |
US10158664B2 (en) * | 2014-07-22 | 2018-12-18 | Verisign, Inc. | Malicious code detection |
US10068070B2 (en) * | 2015-05-05 | 2018-09-04 | Nxp B.V. | White-box elliptic curve point multiplication |
US20160328539A1 (en) * | 2015-05-05 | 2016-11-10 | Nxp B.V. | Obscuring Software Code With Split Variables |
US10019572B1 (en) * | 2015-08-27 | 2018-07-10 | Amazon Technologies, Inc. | Detecting malicious activities by imported software packages |
US10032031B1 (en) | 2015-08-27 | 2018-07-24 | Amazon Technologies, Inc. | Detecting unknown software vulnerabilities and system compromises |
US9760736B2 (en) | 2015-09-29 | 2017-09-12 | International Business Machines Corporation | CPU obfuscation for cloud applications |
RU2622626C2 (ru) * | 2015-09-30 | 2017-06-16 | Акционерное общество "Лаборатория Касперского" | Система и способ обнаружения фишинговых сценариев |
US10785255B1 (en) | 2016-03-25 | 2020-09-22 | Fireeye, Inc. | Cluster configuration within a scalable malware detection system |
US10601863B1 (en) | 2016-03-25 | 2020-03-24 | Fireeye, Inc. | System and method for managing sensor enrollment |
US10671721B1 (en) * | 2016-03-25 | 2020-06-02 | Fireeye, Inc. | Timeout management services |
US10476906B1 (en) | 2016-03-25 | 2019-11-12 | Fireeye, Inc. | System and method for managing formation and modification of a cluster within a malware detection system |
US10891379B2 (en) | 2016-04-26 | 2021-01-12 | Nec Corporation | Program analysis system, program analysis method and storage medium |
US20180285567A1 (en) * | 2017-03-31 | 2018-10-04 | Qualcomm Incorporated | Methods and Systems for Malware Analysis and Gating Logic |
JP7131946B2 (ja) * | 2017-04-20 | 2022-09-06 | Line株式会社 | アプリケーションの保安性を評価する方法およびシステム |
US10909243B2 (en) * | 2017-06-29 | 2021-02-02 | AVAST Software s.r.o. | Normalizing entry point instructions in executable program files |
US10776487B2 (en) | 2018-07-12 | 2020-09-15 | Saudi Arabian Oil Company | Systems and methods for detecting obfuscated malware in obfuscated just-in-time (JIT) compiled code |
AU2019317441A1 (en) * | 2018-08-07 | 2021-04-01 | Jamf Software, Llc | Game engine-based computer security |
US11449609B2 (en) * | 2019-01-22 | 2022-09-20 | Sophos Limited | Detecting obfuscated malware variants |
SG10202002125QA (en) * | 2020-03-09 | 2020-07-29 | Flexxon Pte Ltd | System and method for detecting data anomalies by analysing morphologies of known and/or unknown cybersecurity threats |
KR20210151581A (ko) | 2020-06-05 | 2021-12-14 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치 |
US11244248B1 (en) * | 2020-10-21 | 2022-02-08 | Deeping Source Inc. | Method for training and testing user learning network to be used for recognizing obfuscated data created by obfuscating original data to protect personal information and user learning device and testing device using the same |
US20230385408A1 (en) * | 2022-05-31 | 2023-11-30 | Acronis International Gmbh | Antimalware Scan with Decompilation |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760906B1 (en) * | 1999-01-12 | 2004-07-06 | Matsushita Electric Industrial Co., Ltd. | Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel |
WO2006062849A2 (en) * | 2004-12-06 | 2006-06-15 | Microsoft Corporation | Proactive computer malware protection through dynamic translation |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2834171B2 (ja) * | 1989-02-06 | 1998-12-09 | 株式会社日立製作所 | コンパイル方法 |
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 |
WO2001069384A2 (en) * | 2000-03-14 | 2001-09-20 | Buzzpad, Inc. | Method and apparatus for forming linked multi-user groups of shared software applications |
US7069583B2 (en) * | 2000-07-14 | 2006-06-27 | Computer Associates Think, Inc. | Detection of polymorphic virus code using dataflow analysis |
US7069589B2 (en) * | 2000-07-14 | 2006-06-27 | Computer Associates Think, Inc.. | Detection of a class of viral code |
US7096368B2 (en) * | 2001-08-01 | 2006-08-22 | Mcafee, Inc. | Platform abstraction layer for a wireless malware scanning engine |
US7269649B1 (en) * | 2001-08-31 | 2007-09-11 | Mcafee, Inc. | Protocol layer-level system and method for detecting virus activity |
US6959372B1 (en) * | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
US7624449B1 (en) * | 2004-01-22 | 2009-11-24 | Symantec Corporation | Countering polymorphic malicious computer code through code optimization |
US7370361B2 (en) * | 2004-02-06 | 2008-05-06 | Trend Micro Incorporated | System and method for securing computers against computer virus |
US7349931B2 (en) * | 2005-04-14 | 2008-03-25 | Webroot Software, Inc. | System and method for scanning obfuscated files for pestware |
US7739740B1 (en) * | 2005-09-22 | 2010-06-15 | Symantec Corporation | Detecting polymorphic threats |
WO2007049817A1 (en) * | 2005-10-28 | 2007-05-03 | Matsushita Electric Industrial Co., Ltd. | Obfuscation evaluation method and obfuscation method |
US7854002B2 (en) * | 2007-04-30 | 2010-12-14 | Microsoft Corporation | Pattern matching for spyware detection |
US20100011441A1 (en) * | 2007-05-01 | 2010-01-14 | Mihai Christodorescu | System for malware normalization and detection |
-
2009
- 2009-07-10 US US12/500,630 patent/US9087195B2/en not_active Expired - Fee Related
-
2010
- 2010-06-18 CN CN2010102030380A patent/CN101901322A/zh active Pending
- 2010-07-05 EP EP13182375.9A patent/EP2669839B1/en not_active Not-in-force
- 2010-07-05 EP EP10168401A patent/EP2284750A1/en not_active Ceased
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760906B1 (en) * | 1999-01-12 | 2004-07-06 | Matsushita Electric Industrial Co., Ltd. | Method and system for processing program for parallel processing purposes, storage medium having stored thereon program getting program processing executed for parallel processing purposes, and storage medium having stored thereon instruction set to be executed in parallel |
WO2006062849A2 (en) * | 2004-12-06 | 2006-06-15 | Microsoft Corporation | Proactive computer malware protection through dynamic translation |
Non-Patent Citations (1)
Title |
---|
《IEEE SECURITY AND PRIVACY, IEEE COMPUTER SOCIETY》 20070301 DANILO BRUSCHI, LORENZO MARTIGNONI, MATTIA MONGA Code Normalization for Self-Mutating Malware 第5卷, 第2期 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475952A (zh) * | 2013-09-11 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种多媒体优化正确性检测方法 |
CN103475952B (zh) * | 2013-09-11 | 2016-09-28 | 江苏中科梦兰电子科技有限公司 | 一种多媒体优化正确性检测方法 |
CN105701368A (zh) * | 2014-12-16 | 2016-06-22 | 恩智浦有限公司 | 通过根据校验和计算目标地址的代码完整性保护 |
CN105701368B (zh) * | 2014-12-16 | 2019-01-29 | 恩智浦有限公司 | 一种混淆软件代码的方法 |
CN108573148A (zh) * | 2017-03-10 | 2018-09-25 | 中国科学院软件研究所 | 一种基于词法分析的混淆加密脚本识别方法 |
CN108573148B (zh) * | 2017-03-10 | 2022-05-27 | 中国科学院软件研究所 | 一种基于词法分析的混淆加密脚本识别方法 |
CN110941431A (zh) * | 2018-09-21 | 2020-03-31 | 北京奇虎科技有限公司 | 混淆代码的优化方法及装置、计算设备、存储介质 |
CN110837372A (zh) * | 2019-11-04 | 2020-02-25 | 贵阳动视云科技有限公司 | 汇编代码清除混淆的方法、装置、介质及设备 |
CN115292203A (zh) * | 2022-09-30 | 2022-11-04 | 平安银行股份有限公司 | 一种源代码分析方法及装置 |
CN115292203B (zh) * | 2022-09-30 | 2022-12-16 | 平安银行股份有限公司 | 一种源代码分析方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2669839B1 (en) | 2017-08-23 |
EP2284750A1 (en) | 2011-02-16 |
US9087195B2 (en) | 2015-07-21 |
US20110010697A1 (en) | 2011-01-13 |
EP2669839A1 (en) | 2013-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101901322A (zh) | 用于检测混淆恶意软件的系统和方法 | |
EP2513836B1 (en) | Obfuscated malware detection | |
Ozsoy et al. | Hardware-based malware detection using low-level architectural features | |
Yadegari et al. | Symbolic execution of obfuscated code | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US8904536B2 (en) | Heuristic method of code analysis | |
JP6088713B2 (ja) | 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム | |
US7376970B2 (en) | System and method for proactive computer virus protection | |
RU2514142C1 (ru) | Способ повышения эффективности работы аппаратного ускорения эмуляции приложений | |
CN102841844B (zh) | 一种基于简易符号执行的二进制代码漏洞挖掘方法 | |
US11916937B2 (en) | System and method for information gain for malware detection | |
CN107408176A (zh) | 恶意对象的执行剖析检测 | |
JP6313384B2 (ja) | アンチウィルス判定の最適化のためのシステム及び方法 | |
CN101366035B (zh) | 用于执行中间代码编译的应用程序的方法 | |
KR20200097218A (ko) | Gcn 기반의 어셈블리 코드 학습 장치 및 방법과 이를 이용한 보안 약점 탐지 장치 및 방법 | |
US20180081777A1 (en) | Call trace generation via behavior computation | |
WO2020111482A1 (ko) | 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템 | |
KR101731022B1 (ko) | 익스플로잇 탐지 방법 및 장치 | |
RU94016U1 (ru) | Система обнаружения обфусцированного кода вредоносного программного обеспечения | |
Ouyang et al. | An advanced automatic construction method of ROP | |
US20240320334A1 (en) | Techniques for remediating control flow flattening | |
Majit et al. | Android Botnet Detection by Classification Techniques | |
Cam et al. | uitXkernel: Android Kernel Forensic for Security Analysis Purposes | |
Středa | Analysis of Virtual Machine based obfuscation | |
KR20240012184A (ko) | Evm 바이트코드로부터 제어 흐름 그래프를 복원하는 방법 및 그 방법을 수행하는 시스템 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20101201 |