CN103500308B - 用于对抗由恶意软件对仿真的检测的***和方法 - Google Patents

用于对抗由恶意软件对仿真的检测的***和方法 Download PDF

Info

Publication number
CN103500308B
CN103500308B CN201310446575.1A CN201310446575A CN103500308B CN 103500308 B CN103500308 B CN 103500308B CN 201310446575 A CN201310446575 A CN 201310446575A CN 103500308 B CN103500308 B CN 103500308B
Authority
CN
China
Prior art keywords
instruction
user model
function
api calls
emulation
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.)
Active
Application number
CN201310446575.1A
Other languages
English (en)
Other versions
CN103500308A (zh
Inventor
谢尔盖·Y·别洛夫
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.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of CN103500308A publication Critical patent/CN103500308A/zh
Application granted granted Critical
Publication of CN103500308B publication Critical patent/CN103500308B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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)
  • Debugging And Monitoring (AREA)

Abstract

用于对抗由恶意软件对仿真的检测的***和方法。应用程序的指令被仿真使得其在表示操作***的用户模式数据处理的第一虚拟执行环境中顺序地实行。检测请求用户模式***功能的执行的***API调用。作为响应,由API所调用的用户模式***功能的指令根据第二仿真模式被仿真,其中用户模式***功能的指令在表示操作***的用户模式数据处理的第二虚拟执行环境中顺序地实行,包括追踪由用户模式***功能的指令所影响的某些处理器和存储器状态。对根据第一仿真模式的应用程序指令的进行仿真的结果针对恶意代码的任何存在进行分析。

Description

用于对抗由恶意软件对仿真的检测的***和方法
优先权声明
本申请要求于2012年9月28日提交的、2012141480号俄罗斯联邦专利申请的优先权,本文对其公开内容通过援引的方式加以合并。
技术领域
本发明总地涉及数据处理***和方法,并且更具体地,涉及使用***仿真技术来检测恶意软件的存在的信息安全。
背景技术
恶意的软件应用(即恶意软件)可实施许多各种不同的有害动作,诸如盗窃密码和其他机密用户数据、访问财务数据以进行诸如身份盗窃和其他欺诈的犯罪行为、将计算机加入机器人网络以实施拒绝服务(DoS)攻击或发送垃圾邮件、在许多其他恶意动作之中出于勒索目的而封锁***功能性。
为了感染计算机***并回避反病毒程序的检测,恶意软件通常嵌入似乎是实施某一有用功能的看似良性的程序中。在这种程序的执行期间,恶意软件代码被设计为在用户不知道的情况下执行。迄今已花费了巨大的努力来对抗恶意软件。然而,恶意软件开发者持续地寻找新的方式来回避计算机安全***。因此,数据安全军备竞赛持续进行,其中恶意软件和反恶意软件的开发者卷入创造新“武器”和防御以对抗那些武器的重复循环。
计算机软件是涉及到不同执行环境、***调用、循环等等的转移的复杂指令集。应注意的是,可执行文件的复杂性在不断增加,其可归因于高级编程语言的日益普及以及计算机装备和操作***的日益增加的复杂性。这对于可信应用和恶意应用这二者都是成立的。
所采用以评估潜在恶意程序的技术之一是通过反病毒应用来仿真程序的执行,其许可反病毒应用来观察和分析程序行为。仿真涉及对计算机部件–处理器、存储器和其他***设备的基于软件的建模或模仿(imitation)–通过创建处理器寄存器、存储器和处理器指令集以及部分操作***的虚拟表示。以这种方式,程序指令不在实际处理器和相关的硬件上执行,而是在这些部件在受保护的隔离的环境中的虚拟拷贝上执行。
为了对抗程序代码仿真,恶意程序的创造者使用各种欺骗方式,其可基于在反病毒解决方案中的与仿真进程和与仿真器的实现相关的限制。这些办法之一涉及对程序代码添加大量指令,所述指令不携带恶意成分,但要求时间来仿真。考虑到所分配的用于程序代码的仿真的时间受到限制以防止用户不满(通常,该时间可以是几秒)的现实,仿真进程可能在真正恶意的代码执行前停止。在7,603,713号美国专利中描述了与这种反仿真办法进行斗争的方法之一,本文对其公开内容通过援引的方式加以合并,其操作模式包括在实际处理器上若干指令的执行,这大体上加速了仿真未知应用的进程以便到达恶意代码本身。在2011/0225655号美国公开文本中公开了另一个办法,本文对其公开内容通过援引的方式加以合并,该办法考虑如果应用抵抗仿真则将其定义为可疑的选项。这种办法基于的事实是,安全(合法的)应用通常显示关于在仿真器中的执行的不可能性的警告,而恶意应用则顺畅地完成执行或突然改变执行矢量(逻辑)。
另一个反仿真方法是基于对以下事实的确定:应用当前特定在仿真器中启动,而不是在实际操作***中启动。应注意的是,仿真器仅在有限的程度上创建处理器、计算机部件和操作***(OS)的具有经减少的能力的虚拟表示。考虑到操作***的复杂性,由应用经由应用程序接口(API)对操作***服务所做出的调用,被通过返回所制造的(即“经仿真的”)该API调用的结果来进行仿真,诸如利用子***动态链接库(DLL)的调用,其转而经由例如ntdll.dll文件来对操作***内核的功能性提供受保护的访问。换句话说,在仿真期间,并不实际处理这种***调用。因此,回避“全***”仿真对于仿真而言在复杂性和执行时间上提供了大量的节省,其对于保持合理的快速和响应积极的用户体验是重要的。的确,对***API功能或处理器的全部能力的完全再现出于数个原因是不现实的–这种设计的高劳动成本、未文档化功能的存在、以及在这种仿真器的操作期间生产率引人注目的损失。
利用该知识,恶意程序的创造者可使用下面的技术,其允许程序发现在经仿真的环境中执行的事实:
·调用未文档化的或很少使用的API功能。
·具有后续检查的由中央处理器进行的若干指令的执行,例如若干个经设置的标记。在处理器命令的不够准确的仿真的情况下,若干标记可具有值,所述值不同于将在实际OS上执行的情况中所设置的那些值。
·API功能执行的正确性的验证。这种验证可以很复杂并且可包括对在不正确调用的情况下所返回的错误代码的分析或对所设置的处理器标记的验证。
·对于与API调用处理相关联的特定字节的存在进行存储器扫描也是普遍的反仿真方法。
当出于上文描述的原因而不可能实现对每个API功能的正确仿真时,最后的办法由于其允许不断地绕开现有的仿真器而被广泛使用。
鉴于以上内容,需要实用的解决方案用于击败反仿真技术。
发明内容
本发明的一个方面指向用于调查在存储于主体(subject)计算机***上的应用程序中恶意代码的存在的方法。实行用户模式数据处理和内核模式数据处理,其中多个***应用程序接口(API)提供对用户模式和内核模式***功能的访问。应用程序的指令被仿真使得其在表示操作***的用户模式数据处理的第一虚拟执行环境中顺序地实行。在应用程序的指令之中检测请求用户模式***功能的执行的***API调用。作为响应,由API所调用的用户模式***功能的指令根据第二仿真模式被仿真,在该第二仿真模式中用户模式***功能的指令在表示操作***的用户模式数据处理的第二虚拟执行环境中顺序地实行,包括追踪由用户模式***功能的指令所影响的某些处理器和存储器状态。对根据第一仿真模式的应用程序指令的仿真的结果针对恶意代码的任何存在进行分析。
根据本发明的另一个方面,用于调查在应用程序中恶意代码的存在的***包括计算硬件,该计算硬件包括至少一个处理器、存储器以及促成用户模式数据处理和内核模式数据处理的操作***,在该情况下多个***应用程序接口(API)提供对用户模式和内核模式***功能的访问。该计算硬件包括存储在非暂时性媒介中的指令,当其由至少一个处理器执行时,建立标准仿真器模块、指令复核模块、***调用仿真器模块以及分析器模块。
标准仿真器模块根据第一仿真模式来仿真应用程序的指令,其中该应用程序的指令在表示操作***的用户模式数据处理的第一虚拟执行环境中顺序地实行。指令复核模块在应用程序的指令之中检测请求用户模式***功能的执行的***API调用。***调用仿真器模块响应于检测到***API调用,根据第二仿真模式来仿真由API调用所调用的用户模式***功能的指令,在该情况下该用户模式***功能的指令在表示操作***的用户模式数据处理的第二虚拟执行环境中顺序地实行,其中表示了由用户模式***功能的指令所影响的某些处理器和存储器状态。分析器模块分析根据第一仿真模式的应用程序指令的仿真的结果以在应用程序中检测恶意代码的任何存在。
附图说明
结合附图考虑下面对本发明的各种实施例的详细描述,可更彻底地理解本发明,其中:
图1A和1B是分别示出了当处理API功能调用时,诸如操作***的实际操作***以及使用常规仿真器的仿真环境的操作的示例的示意图。
图1C是示出了在操作***中的示范性API调用序列的示意图。
图1D示出了在操作环境中的API功能执行的示例。
图1E是示出了在虚拟执行环境中所仿真的示范性API调用序列的示意图。
图2示出了根据本发明的一个方面的经改进的仿真技术。
图3更详细地示出了根据本发明的一个方面的、用于仿真API功能调用的过程。
图4是示出了根据本发明的一个实施例的、由计算机***实现的***的框图。
图5示出了根据一个实施例的、由在图4中所描绘的指令复核模块所实施的基本决策过程。
图6是更详细地示出了计算机***的示意图,在该计算机***上可实现根据各种实施例的、如本文所描述的本发明的各方面。
尽管本发明细节在图示中已通过示例的方式示出并将进行详细描述,但其可接受各种修改和替代形式。然而,应予以理解的是,不意图将本发明限于所描述的特定实施例。相反,意图覆盖落在由所附的权利要求所定义的本发明的精神和范围内的全部修改、等同物以及替代物。
具体实施方式
图1A和1B是分别示出了当处理API功能调用时,诸如操作***的实际操作***以及使用常规仿真器的仿真环境的操作的示例的示意图。在实际OS中的应用的运行期间(图1A),当有由应用进行的API功能调用时,OS执行指令集。API功能调用导致在处理器上大量的指令的执行,其后实施所调用的API功能的结果被发送回该应用。在仿真器的操作期间(图1B),API功能调用不像在实际OS中一样导致该数目的指令的同样执行,而是取而代之地,应用接收回API功能实施的经仿真的结果。例如,在尝试创建文件的情况下,仿真器将向虚构的文件返回指针,该文件实际上并未在仿真中创建。然而,不管操作的整体结果如何(例如,向文件返回指针),所调用的API功能的执行的结果均可在实际OS和仿真器之间不同,其是由于以下事实:真实的API功能调用执行可涉及处理器寄存器、存储器地址等的状态的可检测改变,如果API功能调用处理是经仿真的结果则将不会做出改变。该差异可主要由恶意程序用于反仿真技术。
图1C是示出了在操作***中的示范性API调用序列的示意图。用户应用线程做出API调用,其致使来自子***DLL的指令被执行,诸如在kernel32.dll库(或诸如例如Advapi32.dll、User32.dll以及Gdi32.dll的库)中找到的那些指令。所调用的功能的执行转而可调用原生(native)API、ntdll.dll中的相应的功能,其致使后续的处理从用户模式切换到内核模式以实行所请求的操作。
在用户模式中的每个操作内,应用线程具有进入某些CPU寄存器、进程存储器以及诸如TLS(线程本地存储)和TEB(线程环境块)的数据结构中的一定可见性。该可见性的简化表示被描绘为CPU状态#1-3以及存储器状态#1-3,通过参考数字102、104和106加以指示。反仿真技术可在某些时间在这些可见的数据存储中查找某些值的存在,或以一定次序来确认API功能调用实际上正在执行,从中恶意软件可推断其当前未受到仿真,并可继续进行恶意代码的执行。
图1D示出了在操作环境中的API功能执行的示例。选择WriteFile(写文件)作为API功能示例。在阶段110处,Windows应用(例如,微软Word或记事本)通过调用相应的Win32API功能WriteFile到Kernel32.dll,尝试将数据写入文件。然后,在阶段120处,存在用于NtWriteFile到Ntdll.dll的调用,当NtWriteFile被调用时其转而导致在阶段130处的***中断调用和搜索相应的处理程序(handler)(其由在Ntoskrnl.dll中的KiSystemService功能来完成)。应注意的是,该过程在用户模式中发生,但在该中断调用后,***切换到内核模式。在阶段140处,NtWriteFile在Ntoskrnl.dll中直接被调用,并且在阶段150处对文件直接做出写入(与文件***驱动程序操作相关的细节在此也被隐藏)。基于此,变得清楚的是,用于即使一个API功能的调用也导致在现今的OS中的大量操作,包括从用户到内核模式的应用执行的转移。如果从以汇编语言执行指令的观点来考虑这些操作,则变得清楚的是,非常难以正确地仿真API功能调用,因为需要将OS的全部内部结构的状态和全部处理器寄存器的状态考虑在内。
图1E是示出了在虚拟执行环境中所仿真的示范性API调用序列的示意图。响应于由用户应用线程做出的API调用,仿真器返回经仿真的结果。该经仿真的结果并不像在由完整的操作***实际执行期间将出现的情况那样,由来自子***DLL的指令的执行、在原生API中的指令的执行以及内核代码的执行来达成。反而,经仿真的结果110被返回,其基于由用户应用线程的API调用的性质而返回虚构的(虽然看起来可信的)结果。正在监视CPU和存储器状态102、104和106的仿真回避工具将注意到,取代所期望的状态104和106,存在不同的状态104’和106’。这是仿真正在进行的指示。
图2示出了根据本发明的一个方面的经改进的仿真技术。在标准仿真模式200a中,用户应用线程指令逐指令地在经仿真的用户模式中执行。用参考数字202加以指示的CPU状态#1和存储器状态#1是可观察的。当用户应用线程做出API调用时,子***DLL和原生API NTDLL.DLL中的所调用的功能在***调用仿真模式200b中而且在经仿真的用户模式中执行。这提供了CPU和存储器状态信息204和206,其与状态信息104和106相匹配。在一个实施例中,仿真模式200a和200b共享相同的虚拟执行环境(例如,普通的经仿真的存储器空间、处理器寄存器、某些经仿真的操作***数据结构等等)。这提供了单***的出现,在其中应用进程正在执行。
当执行必须从经仿真的用户模式切换到经仿真的内核模式时,在简略的仿真模式200c中仿真所调用的内核模式功能性,其中内核代码不被执行。反而,在208处返回经仿真的结果。在相关实施例中,简略的仿真模式200c实行为标准仿真模式200a的子集。由于在内核模式中CPU和存储器状态对用户级应用不可见,内核模式仿真是虚构的这一事实对用户应用来说不明显。因此,具有依靠对用户级API功能调用的非执行的标识进行监视的仿真回避技术的恶意软件不能检测到仿真环境并继续前进到暴露其恶意代码,所述恶意代码可由对应用行为的常规启发式分析来检测。
图3更详细地示出了根据本发明的一个方面的、用于仿真API功能调用的过程。在框310处,发生了对应用的标准仿真,例如诸如在记事本(Notepad)应用仿真的情况下(用于所述记事本应用仿真的汇编代码在下面的表1中列出):
表1
这种指令如MOV、PUSH、SUB、LEA等,将“照原样(as is)”即通过在仿真器中使用虚拟处理器仿真汇编指令来进行仿真。API功能调用一发生,(其在框320处确定),诸如表2中所示的指令:
表2
对这种调用的仿真将跟随把全部相关联的API功能调用考虑在内的机器指令(框330)发生。当一旦执行API功能而实施到内核模式的切换时,所述到内核模式的切换在框340处被识别,则在框350处仿真切换到简略的模式以仿真内核模式指令,即进一步的调用将不会跟随每个指令被顺序地处理,而是将仅返回功能调用的结果。一旦从对调查下的经仿真应用的功能调用返回,过程从框350返回到框310以在标准模式中对调查下的应用的进一步进行顺序的仿真。
图4是示出了根据本发明的一个实施例的,由计算机***所实现的***的框图。该计算机***可以是一个物理机器,或可以分布在多个物理机器之中,诸如在云计算分布式模型的情况下按角色或功能、或按进程线程。在各种实施例中,本发明的各方面可配置为在依次在一个或多个物理机器上执行的虚拟机中运行。本领域的技术人员应理解的是,本发明的特征可通过多种不同的、合适的机器实现方案来加以实现。
如该示例中所描绘的,用户计算机具有未知的可执行文件410,所述可执行文件应被仿真来确定其恶意的潜在性。应注意的是,可执行文件应意味着不仅是以PE或ELF格式的可执行文件,而且还有包含各种代码的诸如.class或.jar文件(用于在Java虚拟机中执行)的其他文件、诸如.vbs的各种脚本语言文件以及许多其他的文件。
文件410本身包含指令420,所述指令的顺序仿真再现了文件的执行。由仿真器模块405实施仿真,所述仿真器模块405包括指令复核模块430、标准仿真器模块440以及***调用仿真器模块450。注意在该上下文中,顺序仿真还意味着全部分支操作的执行,包括有条件的和无条件的这二者,以及对可执行文件410内的各种功能的调用。随着顺序仿真,每个指令420均被发送到指令复核模块430的输入处,所述指令复核模块430确定指令是否是对***API功能的调用,并且如果是,则发送指令到***调用模拟器450。如果不是,则指令被传递到标准仿真器440用于执行。
在一些实施例中,API功能调用指令可以以与将由常规仿真来完成的同样的方式而被仿真–即以简略的方式,在这种情况下将仅返回API功能调用的虚构的结果。API功能调用是以常规(即简略的)方式被处理或是被传递至***调用仿真器450,可在指令复核模块430中由附加的决策逻辑来决定。
应注意的是,***调用仿真器450跟随机器指令实施API功能的仿真,并追踪处理器和存储器的受影响的状态,直到切换到内核模式。一旦切换到内核模式,代码仿真控制就被转移到标准仿真器440,其中内核模式代码的仿真须要从内核级代码的执行来生成并返回虚构的但相关的、即看起来可信的结果。该简略类型的仿真利用逻辑来确定虚构的结果的类型以响应各种类型的功能调用来返回;API功能本身的实际逐指令顺序虚拟处理不由标准仿真器440所实施。
分析器460监视由标准仿真器440所实行的指令的序列并应用多种已知技术中的任何技术以查明文件410是否包含恶意代码。用于确定恶意代码存在的已知技术的示例包括统计技术、启发式分析、人工神经网络、专家***等等。任何合适的分析/检测技术或其任何组合,不论已知的或后来所发展出的,均被预期用于与本发明的实施例一起使用。在相关实施例中,分析器460还监视***调用仿真器450的操作。该选项可相关于某些数据被传递到正被调用的***API并且***API操作被用作实施恶意软件的恶意功能性的一部分的情况。
指令复核模块430、标准仿真器440、***调用仿真器450以及分析器460实现为模块。本文所使用的术语“模块”意指现实世界中的设备、部件或使用硬件或作为硬件和软件的组合来实现的部件组合体,所述硬件诸如通过专用集成电路(ASIC)或现场可编程门阵列(FPGA),所述硬件和软件的组合诸如通过微处理器***和指令集以实现模块功能性,其(当正被执行时)将微处理器***转换为专用设备。模块还可实现为此二者的组合,由硬件单独促成某些功能以及由硬件和软件的组合促成其他功能。在某些实现方案中,模块的至少一部分并且在一些情况下模块的全部可在一个或多个通用计算机(诸如下面更详细地所描述的通用计算机)的处理器上执行,所述通用计算机执行操作***、***程序以及应用程序,与此同时还使用多任务、多线程、分布式(例如,云)处理或其他这种技术来实现模块。因此,每个模块均可以多种合适的配置来实现,并不应限于本文例示的任何特定实现方案。在一个特定实施例中,这些模块实现为虚拟执行环境的部分,所述虚拟执行环境本身作为用户应用而运行。在相关实施例中,虚拟执行环境是与计算机***的存储器空间和其他资源相隔开的沙盒,使得正在被仿真的任何恶意软件指令不能做出任何实际伤害。
图5示出了根据一个实施例的、由指令复核模块430所实施的基本决策过程。在框510处,做出尝试以在用户计算机上仿真可执行文件410。另外作为响应,在框520处,指令复核模块430确定是否需要实施***API功能的仿真。
根据各种实施例,用于更多的***功能的选择性仿真的示范性要求包括:
·结束非常快并且不通知用户的初始仿真。这通常意味着应用确定经仿真的操作的事实,而不通知用户,其一般由危险程序完成。
·需要对可执行文件410的更深的仿真。如果早前并未遭遇可执行文件410则这一情况发生,其意味着在仿真器正工作于其中的部分反病毒应用上关于未知文件的信息的缺失(即不分类并且不作为恶意的或安全的应用被包含在反病毒应用数据库中)。
·分析器460已检测到反仿真方法。示例包括具有故意不正确参数的API调用,所述参数具有错误状况(代码)的后续验证;在API调用后的易失性寄存器的验证;***模块内容的扫描;检测***中的调试器的尝试;以及标准方法的调用用于检测在虚拟机上的执行(例如,RedPill)。
·自动提取或自动保护(打包器和保护器)的检测。
根据实施例的一个集合,如果满足这种要求中的至少一个,则其导致***调用仿真器450在框530处的参与以通过实行机器指令来仿真API功能的,如图4所示。否则,框540选择标准仿真器440。使用这种选择性办法虑及对反病毒应用内的仿真过程更通用的解决方案,且不会由于需要使用***调用仿真器450的机器指令办法的顺序跟随来仿真每个单个API功能调用而因附加的加载过分地致使用户不满。
在相关实施例中,仿真时间不被严格的时间框架所限制;例如,其可持续数十秒或甚至数分钟并且更长,可依照需要来完成***调用仿真器的操作。
在各种相关实施例中,本发明的方法和***的使用的示例包括:
·在用户操作环境的上下文内以其全部库和解释器对潜在恶意项的仿真,例如多部件恶意项。
·可实行对安装在用户设备上的解释器和JIT编译器(.NET和Java、perl)的操作的仿真。
·可实行对批处理和控制文件(bat、powershell、reg)的仿真。现在可使用***调用仿真器对在用户计算机上执行的一切事物以及恶意代码可包含于其中的一切事物进行检查。
图6是更详细地示出了计算机***600的示意图,在该计算机***600上可根据各种实施例实现如本文所描述的本发明的各方面。计算机***600可包括计算设备诸如个人计算机602。个人计算机602包括一个或多个处理单元604、***存储器606、视频接口608、输出***接口610、网络接口612、用户输入接口614、可移动616和不可移动618存储器接口以及耦连各种部件的***总线或高速通信信道620。在各种实施例中,处理单元604可具有能够处理在计算机可读媒介上所存储的信息的多个逻辑核心,所述计算机可读媒介诸如***存储器606或附接到可移动616和不可移动618存储器接口618的存储器。计算机602***存储器606可包括非易失性存储器诸如只读存储器(ROM)622或易失性存储器诸如随机存取存储器(RAM)624。ROM622可包括基本输入/输出***(BIOS)626以促进与计算机602的其他部分进行通信。RAM624可存储各种软件应用的各部分,诸如操作***628、应用程序630以及其他程序模块632。进一步地,RAM624可存储其他信息诸如程序或应用数据634。在各种实施例中,RAM624存储要求低延迟和有效访问的信息,诸如正***纵或操作的程序和数据。在各种实施例中,RAM624包括双倍数据速率(DDR)存储器、错误校正存储器(ECC)或具有变化延迟和配置的其他存储器技术诸如RAMBUS或DDR2以及DDR3。通过该方式,在各种实施例中,***存储器606可存储输入数据存储、访问凭证数据存储、操作存储器数据存储、指令集数据存储、分析结果数据存储以及操作存储器数据存储。进一步地,在各种实施例中,处理单元604可配置为执行指令,所述指令在对信息的访问经准许之前通过要求访问凭证来限制对前述数据存储的访问。
可移动616和不可移动618存储器接口可将计算机602耦连到诸如SSD或旋转式磁盘驱动器的磁盘驱动器636。这些磁盘驱动器636可进一步提供用于诸如操作***638、应用程序640以及其他程序模块642的各种软件应用的存储。进一步地,磁盘驱动器636可存储其他信息诸如程序或应用数据644。在各种实施例中,磁盘驱动器636存储不要求与在其他存储媒介中相同的低延迟的信息。进一步地,操作***638、应用程序640数据、程序模块642以及程序或应用数据644可以是与在上述的各种实施例中的RAM624中存储的相同的信息,或其可以是潜在地衍生于RAM624所存储数据的不同的数据。
进一步地,可移动非易失性存储器接口616可将计算机602耦连到利用磁性媒介诸如软盘648、Zip或Jazz的便携式磁盘驱动器646,或耦合到利用光学媒介652的光盘驱动器650用于诸如Blu-DVD-R/RW、CD-R/RW以及其他类似格式的计算机可读媒介的存储。还有其他实施例利用封装在便携式外壳中的SSD或旋转式磁盘来增加可移动存储器的容量。
计算机602可利用网络接口612来与在局域网(LAN)658或广域网(WAN)660之上的一个或多个远程计算机656进行通信。网络接口612可利用网络接口卡(NIC)或诸如调制解调器662的其他接口来使能通信。调制解调器662可在电话线、同轴电缆、光纤、电力线之上或无线地使能通信。远程计算机656可包含类似的硬件和软件配置或可具有存储器664,所述存储器664包含对计算机602提供附加的计算机可读指令的远程应用程序666。在各种实施例中,可利用远程计算机存储器664来存储信息诸如可被稍后下载到本地***存储器606的经识别的文件信息。进一步地,在各种实施例中,远程计算机656可以是应用服务器、管理服务器、客户端计算机或网络家电。
用户可使用连接到用户输入接口614的诸如鼠标668和键盘670的输入设备对计算机602键入信息。此外,输入设备可以是触控板、指纹扫描器、操纵杆、条形码扫描器、媒介扫描器等。视频接口608可向诸如监视器672的显示器提供视觉信息。视频接口608可以是嵌入式接口或其可以是分立接口。进一步地,计算机可利用多个视频接口608、网络接口612以及可移动616和不可移动618接口以增加计算机602的操作中的灵活性。进一步地,各种实施例利用数个监视器672和数个视频接口608来改变计算机602的性能和能力。在计算机602中可包括其他计算机接口诸如输出***接口610。该接口可耦连到打印机674或扬声器676或其他***设备以对计算机602提供附加的功能。
计算机602的各种替代配置和实现方案均在本发明的精神内。这些变形可包括但不限于耦连到***总线620的附加的接口诸如通用串行总线(USB)、打印机端口、游戏端口、PCI总线、PCI Express或上文所描述的各种部件集成为芯片集部件诸如北桥或南桥。例如,在各种实施例中,处理单元604可包括嵌入式存储器控制器(未示出)以相比于***总线620可提供的来使能对来自***存储器606的数据的更有效率的转移。
上文的实施例意在是例示性的而非限制。附加的实施例在权利要求内。此外,尽管已参考特定实施例对本发明的各方面进行描述,但本领域的技术人员应理解的是,可在形式和细节中做出改变而不脱离本发明的范围,如由权利要求所定义的。
相关领域中的普通技术人员应理解的是,本发明可包含比上文所描述的任何单独实施例中所例示的更少的特征。本文所描述的实施例不意图穷举可组合本发明的各种特征的方式的表示。因此,实施例不是特征的互相排他的组合;而是,如本领域的普通技术人员所将理解的,本发明可包括选择自不同的单独实施例的不同的单独特征的组合。
限制通过援引上文文档的任何合并,使得不包含与本文明确的公开内容相反的主题。进一步限制通过援引上文文档的任何合并,使得在文档中所包括的权利要求不通过援引被包含进本申请的权利要求。然而,除非特别加以排除,否则任何文档的权利要求均作为本文公开内容的部分被包含在内。还进一步限制通过援引上文文档的任何合并,使得除非本文明确加以包括,否则在文档中所提供的任何定义均不通过援引在本文中被包含。
为了对本发明的权利要求进行解释,明确意在,除非在权利要求中叙述特定术语“装置用于(means for)”或“步骤用于(step for)”,否则不调用美国法典第35篇、112节、第6段的规定。

Claims (13)

1.一种用于调查在存储于主体计算机***上的应用程序中恶意代码的存在的自动的计算机实现的方法,所述主体计算机***包括处理器、存储器以及促成用户模式数据处理和内核模式数据处理的操作***,其中多个***应用程序接口(API)提供对用户模式和内核模式***功能的访问,所述方法包括:
根据第一仿真模式来仿真所述应用程序的指令,其中所述应用程序的所述指令在表示所述操作***的所述用户模式数据处理的第一虚拟执行环境中顺序地实行;
在所述应用程序的所述指令之中检测请求用户模式***功能的执行的***API调用;
响应于检测到所述***API调用,根据第二仿真模式来仿真由所述API调用所调用的所述用户模式***功能的指令,其中所述用户模式***功能的所述指令在表示所述操作***的所述用户模式数据处理的第二虚拟执行环境中顺序地实行,包括追踪由所述用户模式***功能的所述指令所影响的某些处理器和存储器状态;以及
针对恶意代码的任何存在来分析根据所述第一仿真模式的所述应用程序指令的所述仿真的结果。
2.根据权利要求1所述的方法,进一步包括:
在根据所述第一仿真或所述第二仿真模式来仿真所述应用程序的每个单独指令之前,针对***API调用的存在来审查该指令,其中所述审查的结果包括检测到所述***API调用,或确定没有来源于该指令的执行的***API调用。
3.根据权利要求1所述的方法,进一步包括:
在所述***API调用的所述指令之中检测用于请求内核模式功能的执行的***调用;
响应于检测到用于请求所述内核模式功能的执行的所述***调用,根据第一仿真模式来仿真所述内核模式功能,其中所述内核模式功能的虚构的结果被返回。
4.根据权利要求1所述的方法,其中在根据所述第二仿真模式来仿真所述***API调用的所述指令中,仿真时间一般不受限制。
5.根据权利要求1所述的方法,其中根据所述第二仿真模式来仿真所述***API调用的所述指令包括全部有条件的和无条件的分支操作的执行,以及在所述应用程序的所述指令内发生功能调用。
6.根据权利要求1所述的方法,其中在仿真所述应用程序的所述指令中以及在仿真所述***API调用的所述指令中,所述第一虚拟执行环境和所述第二虚拟执行环境是具有共享的虚拟数据存储空间的共同虚拟执行环境。
7.根据权利要求1所述的方法,进一步包括:
响应于每一次检测到***API调用,并且在仿真所述用户模式***功能的指令之前,确定由所述API调用所调用的所述用户模式***功能是否将根据所述第一仿真模式或所述第二仿真模式来被仿真。
8.根据权利要求7所述的方法,其中所述确定由所述API调用所调用的所述用户模式***功能是否将根据所述第一仿真模式或所述第二仿真模式来被仿真,基于所述应用程序的仿真的持续时间。
9.根据权利要求7所述的方法,其中所述确定由所述API调用所调用的所述用户模式***功能是否将根据所述第一仿真模式或所述第二仿真模式来被仿真,基于所述应用程序是否在对所述主体计算机***可访问的白名单数据库中未列出。
10.根据权利要求7所述的方法,其中所述确定由所述API调用所调用的所述用户模式***功能是否将根据所述第一仿真模式或所述第二仿真模式来被仿真,基于在所述应用程序指令在所述第一仿真模式中的所述仿真期间检测到反仿真操作。
11.根据权利要求7所述的方法,其中所述确定由所述API调用所调用的所述用户模式***功能是否将根据所述第一仿真模式或所述第二仿真模式来被仿真,基于在所述应用程序指令在所述第一仿真模式中的所述仿真期间检测到自动提取或自动保护机制。
12.根据权利要求1所述的方法,其中所述操作***是操作***,并且其中根据所述第二仿真模式来仿真由所述API调用所调用的所述用户模式***功能的所述指令包括对来自至少一个从组中所选择的***文件的指令进行仿真,所述组包含:Kernel32.dll、Advapi32.dll、User32.dll、Gdi32.dll、NTDLL.dll或其任何组合。
13.一种用于调查在应用程序中恶意代码的存在的***,所述***包括:
计算硬件,包括至少一个处理器、存储器以及促成用户模式数据处理和内核模式数据处理的操作***,其中多个***应用程序接口(API)提供对用户模式和内核模式***功能的访问,所述计算硬件包括存储在非暂时性媒介中的指令,当由所述至少一个处理器所执行时,建立:
用于根据第一仿真模式来仿真所述应用程序的指令的装置,其中所述应用程序的所述指令在表示所述操作***的所述用户模式数据处理的第一虚拟执行环境中顺序地实行;
用于在所述应用程序的所述指令之间检测请求用户模式***功能的执行的***API调用的装置;
用于根据第二仿真模式来仿真由所述API调用所调用的所述用户模式***功能的指令的装置,其中所述用户模式***功能的所述指令在表示所述操作***的所述用户模式数据处理的第二虚拟执行环境中顺序地实行,其中由所述用户模式***功能的所述指令所影响的某些处理器和存储器状态被表示,所述用于仿真指令的装置响应于检测到所述***API调用而发起操作;以及
用于分析根据所述第一仿真模式的所述应用程序指令的所述仿真的结果以在所述应用程序中检测恶意代码的任何存在的装置。
CN201310446575.1A 2012-09-28 2013-09-26 用于对抗由恶意软件对仿真的检测的***和方法 Active CN103500308B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
RU2012141480/08A RU2514141C1 (ru) 2012-09-28 2012-09-28 Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
RU2012141480 2012-09-28

Publications (2)

Publication Number Publication Date
CN103500308A CN103500308A (zh) 2014-01-08
CN103500308B true CN103500308B (zh) 2016-08-17

Family

ID=47563028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310446575.1A Active CN103500308B (zh) 2012-09-28 2013-09-26 用于对抗由恶意软件对仿真的检测的***和方法

Country Status (4)

Country Link
US (2) US8555386B1 (zh)
EP (1) EP2713302B1 (zh)
CN (1) CN103500308B (zh)
RU (1) RU2514141C1 (zh)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8935789B2 (en) * 2008-07-21 2015-01-13 Jayant Shukla Fixing computer files infected by virus and other malware
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US9471783B2 (en) * 2013-03-15 2016-10-18 Mcafee, Inc. Generic unpacking of applications for malware detection
KR101503785B1 (ko) * 2013-10-10 2015-03-18 (주)잉카엔트웍스 동적 라이브러리를 보호하는 방법 및 장치
RU2553056C2 (ru) 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
EP2866167A1 (en) * 2013-10-24 2015-04-29 Kaspersky Lab, ZAO System and method for preserving and subsequently restoring emulator state
US9723014B2 (en) * 2014-03-31 2017-08-01 International Business Machines Corporation Detecting malware-related activity on a computer
US9516054B2 (en) * 2014-04-14 2016-12-06 Trap Data Security Ltd. System and method for cyber threats detection
US9882929B1 (en) 2014-09-30 2018-01-30 Palo Alto Networks, Inc. Dynamic selection and generation of a virtual clone for detonation of suspicious content within a honey network
US9860208B1 (en) 2014-09-30 2018-01-02 Palo Alto Networks, Inc. Bridging a virtual clone of a target device in a honey network to a suspicious device in an enterprise network
US9716727B1 (en) 2014-09-30 2017-07-25 Palo Alto Networks, Inc. Generating a honey network configuration to emulate a target network environment
US10044675B1 (en) 2014-09-30 2018-08-07 Palo Alto Networks, Inc. Integrating a honey network with a target network to counter IP and peer-checking evasion techniques
US9495188B1 (en) 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US9189630B1 (en) * 2015-01-21 2015-11-17 AO Kaspersky Lab Systems and methods for active operating system kernel protection
CN104766006B (zh) * 2015-03-18 2019-03-12 百度在线网络技术(北京)有限公司 一种确定危险文件所对应的行为信息的方法和装置
CN106326732A (zh) * 2015-07-03 2017-01-11 阿里巴巴集团控股有限公司 一种api保护方法和装置
KR101715759B1 (ko) * 2015-09-22 2017-03-15 한국전자통신연구원 멀티코어 환경에서의 악성코드 분석 장치 및 방법
RU2622627C2 (ru) * 2015-09-30 2017-06-16 Акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносных исполняемых файлов, содержащих интерпретатор, посредством комбинирования эмуляторов
US9984231B2 (en) * 2015-11-11 2018-05-29 Qualcomm Incorporated Detecting program evasion of virtual machines or emulators
RU2628921C1 (ru) * 2016-03-18 2017-08-22 Акционерное общество "Лаборатория Касперского" Система и способ выполнения антивирусной проверки файла на виртуальной машине
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
RU2634171C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения кода интерпретатором
US10645107B2 (en) * 2017-01-23 2020-05-05 Cyphort Inc. System and method for detecting and classifying malware
US11151247B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for detecting malware injected into memory of a computing device
US11151251B2 (en) 2017-07-13 2021-10-19 Endgame, Inc. System and method for validating in-memory integrity of executable files to identify malicious activity
RU2659734C1 (ru) * 2017-07-17 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ эмуляции исполнения файлов
US10839074B2 (en) * 2017-10-19 2020-11-17 AO Kaspersky Lab System and method of adapting patterns of dangerous behavior of programs to the computer systems of users
CN109684826B (zh) * 2018-01-15 2021-01-29 北京微步在线科技有限公司 应用程序沙箱反逃逸方法和电子设备
CN108229172A (zh) * 2018-02-13 2018-06-29 国家计算机网络与信息安全管理中心 基于windows平台的跨层次数据流追踪方法
US10754951B1 (en) * 2018-06-15 2020-08-25 Trend Micro Incorporated Dynamic evaluation of executable files in a lightweight executor
US11171983B2 (en) * 2018-06-29 2021-11-09 Intel Corporation Techniques to provide function-level isolation with capability-based security
US10922180B2 (en) 2018-10-03 2021-02-16 International Business Machines Corporation Handling uncorrected memory errors inside a kernel text section through instruction block emulation
CN111242150B (zh) * 2018-11-29 2024-05-17 阿里巴巴集团控股有限公司 数据训练的方法和装置
US11080400B2 (en) 2019-08-28 2021-08-03 Palo Alto Networks, Inc. Analyzing multiple CPU architecture malware samples
CN110968866B (zh) * 2019-11-27 2021-12-07 浙江工业大学 一种面向深度强化学习模型对抗攻击的防御方法
US11271907B2 (en) 2019-12-19 2022-03-08 Palo Alto Networks, Inc. Smart proxy for a large scale high-interaction honeypot farm
US11265346B2 (en) 2019-12-19 2022-03-01 Palo Alto Networks, Inc. Large scale high-interactive honeypot farm
CN113139176B (zh) * 2020-01-20 2024-07-16 华为技术有限公司 恶意文件的检测方法、装置、设备及存储介质
US11681804B2 (en) 2020-03-09 2023-06-20 Commvault Systems, Inc. System and method for automatic generation of malware detection traps
EP3926470B1 (en) * 2020-06-19 2023-08-16 AO Kaspersky Lab Emulator and emulation method
RU2757409C1 (ru) 2020-06-19 2021-10-15 Акционерное общество "Лаборатория Касперского" Эмулятор и способ эмуляции
RU2748518C1 (ru) 2020-08-27 2021-05-26 Общество с ограниченной ответственностью "Траст" Способ противодействия вредоносному программному обеспечению (ВПО) путем имитации проверочной среды
US12008372B2 (en) * 2022-07-21 2024-06-11 VMware LLC Techniques for reducing CPU privilege boundary crossings
US11687675B1 (en) * 2022-09-08 2023-06-27 Pezo Tech Llc Method and system for improving coupling and cohesion of at least one educational program
CN116760620B (zh) * 2023-07-10 2024-03-26 释空(上海)品牌策划有限公司 一种工业控制***的网络风险预警及管控***

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6275938B1 (en) 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US7461144B1 (en) 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with enhanced security
US7356736B2 (en) 2001-09-25 2008-04-08 Norman Asa Simulated computer system for monitoring of software performance
US7607171B1 (en) * 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7934020B1 (en) 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US7376970B2 (en) * 2004-02-20 2008-05-20 Microsoft Corporation System and method for proactive computer virus protection
US7689747B2 (en) 2005-03-28 2010-03-30 Microsoft Corporation Systems and methods for an augmented interrupt controller and synthetic interrupt sources
US7735136B2 (en) 2005-04-18 2010-06-08 Vmware, Inc. 0-touch and 1-touch techniques for improving the availability of computer programs under protection without compromising security
WO2007050667A2 (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
US8151263B1 (en) 2006-03-31 2012-04-03 Vmware, Inc. Real time cloning of a virtual machine
US8151352B1 (en) 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
JP2008027306A (ja) 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
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
US9378108B2 (en) 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
US8176477B2 (en) 2007-09-14 2012-05-08 International Business Machines Corporation Method, system and program product for optimizing emulation of a suspected malware
US9779235B2 (en) 2007-10-17 2017-10-03 Sukamo Mertoguno Cognizant engines: systems and methods for enabling program observability and controlability at instruction level granularity
US8145871B2 (en) 2008-06-09 2012-03-27 International Business Machines Corporation Dynamic allocation of virtual real memory for applications based on monitored usage
US8484727B2 (en) * 2008-11-26 2013-07-09 Kaspersky Lab Zao System and method for computer malware detection
US7979619B2 (en) 2008-12-23 2011-07-12 Hewlett-Packard Development Company, L.P. Emulating a line-based interrupt transaction in response to a message signaled interrupt
US8132167B2 (en) 2008-12-23 2012-03-06 Hewlett-Packard Development Company, L.P. Context based virtualization
US8635694B2 (en) * 2009-01-10 2014-01-21 Kaspersky Lab Zao Systems and methods for malware classification
US7603713B1 (en) * 2009-03-30 2009-10-13 Kaspersky Lab, Zao Method for accelerating hardware emulator used for malware detection and analysis
RU91213U1 (ru) * 2009-10-01 2010-01-27 ЗАО "Лаборатория Касперского" Система автоматического составления описания и кластеризации различных, в том числе и вредоносных, объектов
US9501644B2 (en) 2010-03-15 2016-11-22 F-Secure Oyj Malware protection
RU101233U1 (ru) * 2010-07-23 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система ограничения прав доступа к ресурсам на основе расчета рейтинга опасности
US20120096554A1 (en) 2010-10-19 2012-04-19 Lavasoft Ab Malware identification
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции

Also Published As

Publication number Publication date
EP2713302B1 (en) 2015-02-25
EP2713302A1 (en) 2014-04-02
US8910286B2 (en) 2014-12-09
CN103500308A (zh) 2014-01-08
US8555386B1 (en) 2013-10-08
RU2514141C1 (ru) 2014-04-27
US20140096250A1 (en) 2014-04-03

Similar Documents

Publication Publication Date Title
CN103500308B (zh) 用于对抗由恶意软件对仿真的检测的***和方法
CN103886252B (zh) 受信进程地址空间中执行的软件代码的恶意性的选择评估
CN103678126B (zh) 用于提高应用仿真加速的效率的***和方法
US9507939B1 (en) Systems and methods for batch processing of samples using a bare-metal computer security appliance
Sikorski et al. Practical malware analysis: the hands-on guide to dissecting malicious software
CN106228069B (zh) 用于检测恶意可执行文件的***和方法
US12013939B2 (en) Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
Sood et al. Targeted cyber attacks: multi-staged attacks driven by exploits and malware
EP3891633B1 (en) Secure deployment and operation of a virtual platform system
CN105760787B (zh) 用于检测随机存取存储器中的恶意代码的***及方法
US10339305B2 (en) Sub-execution environment controller
CN109558207A (zh) 在虚拟机中形成用于进行文件的防病毒扫描的日志的***和方法
CN110414220B (zh) 沙箱内程序动态执行过程中的操作文件提取方法及装置
Neugschwandtner et al. d Anubis–Dynamic Device Driver Analysis Based on Virtual Machine Introspection
Kim et al. Disabling anti-debugging techniques for unpacking system in user-level debugger
US10606965B2 (en) System and method for emulation of unprivileged code in a simulated environment
Kumar et al. Split personality malware detection and defeating in popular virtual machines
Ling et al. Prison break of android reflection restriction and defense
CN104008327A (zh) 一种安全输入方法和***
Paleari Dealing with next-generation malware
CN108197464A (zh) 一种面向云环境的环境敏感型恶意软件分析检测方法和***
EP4312401A1 (en) Methods and systems for analyzing environment-sensitive malware with coverage-guided fuzzing
Fattori Hardware-Assisted Virtualization and its Applications to Systems Security
Backman A brief tour on control-flow protection
Williams Measuring the Performance Cost of Manual System Call Detections Via Process Instrumentation Callback (PIC)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant