CN108027860B - 用于进行异常检测的硬化事件计数器 - Google Patents
用于进行异常检测的硬化事件计数器 Download PDFInfo
- Publication number
- CN108027860B CN108027860B CN201680039540.8A CN201680039540A CN108027860B CN 108027860 B CN108027860 B CN 108027860B CN 201680039540 A CN201680039540 A CN 201680039540A CN 108027860 B CN108027860 B CN 108027860B
- Authority
- CN
- China
- Prior art keywords
- computer system
- hardware counters
- time period
- hardware
- operating system
- 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
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/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- 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/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2135—Metering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
一系列技术允许通过利用可信硬件事件计数器以及生成可疑恶意活动的指令的特定存储器地址(以及这种地址的序列)两者来检测试图隐藏其在系统上的存在的隐蔽恶意软件。通过随着时间推移而监测地址分布的特定模式,人们可以建立特定进程的行为模型(即,“指纹”)——并且稍后试图将可疑恶意进程与所存储行为模型进行匹配。每当可疑恶意进程的实际测量行为未能与所述所存储行为模型匹配时,所述系统或系统管理员可以试图对计算机系统执行恢复动作以便定位并删除隐藏在所述系统上的恶意软件。
Description
技术领域
本文描述的实施例总体上涉及恶意软件检测,并且具体地,涉及通过使用可信硬件事件计数器和各种分析技术(比如,指纹识别和机器学习)来检测恶意软件(以及其他异常)。
背景技术
Rootkit是被设计用于使特定进程或程序的存在躲避正常检测方法的隐蔽型恶意软件(“恶意软件(malware)”)。Rootkit通常使得能够对受损系统进行连续特权访问。当攻击者获得根或管理员访问时,可以自动进行或激活rootkit安装。获得这种访问可以是或者利用已知漏洞直接攻击系统的结果或者通过得到对密码的访问(通过破解、特权提升或社会工程)。一旦被安装,rootkit通常试图隐藏侵入并且试图维持对其自身(或其他进程)的特权访问。
Rootkit检测是很困难的,因为rootkit可以能够破坏旨在将其发现的软件。检测方法包括:使用可替代的可信操作系统、基于行为的方法、签名扫描、差异扫描以及存储器转储分析。删除rootkit可能是复杂的或实际上是不可能的,特别是在rootkit驻留于内核内的情况下。重新安装操作系统可能是这种问题的唯一可用的解决方案。当处理固件rootkit时,删除可能需要硬件替换或专用设备。
现代rootkit不必提升访问,但经常用于通过添加隐蔽能力来使另一个软件有效负载不可检测。大多数rootkit被分类为恶意软件,因为与这些恶意软件捆绑在一起的有效负载是恶意的。例如,有效负载可能隐蔽地盗取用户密码、信用卡信息、计算资源或进行其他未经授权的活动。少量的rootkit可以被其用户认为是实用应用。例如,rootkit可能掩蔽CD-ROM仿真驱动程序,从而允许视频游戏用户击败需要将原始安装介质插入物理光学驱动器中以验证软件为合法购买的反盗版措施。
Rootkit可以在计算机环境的不同特权级或模式下运行。用户模式rootkit在与大多数其他用户应用而不是低级系统进程相同的模式下运行。它们具有多个可能的安装向量以便拦截和修改应用程序编程接口(API)的标准行为。一些rootkit将动态链接库(比如,.DLL文件、.dylib文件、.so文件或.shlib文件)插入其他进程中,并且因此能够在任何目标进程内执行以欺骗所述目标进程。具有充分特权的其他rootkit仅重写目标应用的存储器。
内核模式rootkit(环0)和/或驻留在虚拟化层内的rootkit(有时被称为环-1)通过添加代码或替换核心操作系统的部分(包括内核和相关联设备驱动程序),以最高操作系统特权运行。大多数操作系统支持以与操作系统本身相同的特权执行的内核模式设备驱动程序。如此,许多内核模式rootkit被开发为设备驱动程序或可加载模块,比如,可加载内核模块或设备驱动程序。这类rootkit具有无限制的安全访问。可能特别难以检测并删除内核rootkit,因为它们以与操作系统本身相同的安全级别运行,并且因此能够拦截或破坏最可信的操作系统操作并且由此以类似隐蔽方式“隐藏”自身。难以检测隐藏其在系统上的存在的rootkit和其他恶意软件并且将其从受感染的操作环境的范围内清除。
试图使用硬件事件计数器来执行恶意软件和异常检测的现有解决方案仅考虑了使用特定计数器的时间序列数据,即,测量并观察计数器随着时间推移的变化率。这种方式具有许多缺点,例如,计数器将反映来自不同进程的事件的混合。因此,只有当单个工作负载消耗系统计算资源的显著部分时,这种方式才能成功应用。当许多进程在任何当代操作系统(OS)中并行运行时,发现每个特定进程对于计数器的贡献变得非常有问题。可以应用各种技术,例如,期望最大化(EM)算法,但这些技术也将缺少细节。
因此,需要一种利用可信硬件性能和事件计数器以及生成可疑恶意活动的指令的地址两者来执行恶意软件(和其他异常)检测的系统。通过分析地址分布的特定模式,可以建立特定进程的行为模型(即,“指纹”)并且稍后每当实际测量行为与所存储行为模型匹配时,将恶意进程与所述所存储行为模型进行匹配。
发明内容
根据本发明的一个方面,提供一种非暂态计算机可读介质,其上存储有指令,所述指令包括当被执行时使得计算机系统执行以下操作的指令:在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;其中,所述一个或多个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
根据本发明的另一方面,提供一种检测异常的方法,所述方法包括:在第一时间段上监测计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据,其中,所述一个或多个操作系统进程中的每个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
根据本发明的又一方面,提供一种计算机系统,包括:硬件处理器;操作系统,所述操作系统包括当被所述处理器执行时执行以下操作的指令:控制所述处理器并且提供操作系统环境用于其他软件在所述处理器上执行;异常检测软件,所述异常检测软件包括当被所述处理器执行时使所述处理器执行以下操作的指令:在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据,其中,所述一个或多个操作系统进程中的每个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
附图说明
本专利或申请文件包含至少一幅彩色绘制的附图。根据要求并且在支付必要费用时后,具有(多幅)彩色附图的本专利申请公开的副本将由本局提供。
图1是图示,根据一个实施例展示了随时间推移使用事件计数器的特定子集来进行的行为指纹识别。
图2是图示,根据一个实施例展示了在同一时间帧中使用事件计数器的特定子集的‘相’空间来进行的行为指纹识别。
图3是框图,根据一个实施例展示了用于检测rootkit或其他异常的计算机系统。
图4是框图,根据另一个实施例展示了用于检测rootkit或其他异常的计算机系统。
图5是流程图,根据一个实施例展示了用于检测恶意软件的技术。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对本发明的彻底理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节的情况下实践本发明将是明显的。在其他实例中,以框图的形式示出了结构和设备以避免使本发明模糊。对不带下标或后缀的数字的引用被理解为引用对应于被引用数字的所有下标和后缀的实例。此外,在本公开中使用的语言主要是出于可读性和指导的目的而被选择,并且可能尚未被选择用于描绘或限制创造性主题,有必要借助权利要求书来确定这样的创造性主题。在说明书中提及“一个实施例”或者“实施例”意味着结合实施例所描述的特定特征、结构或特性被包含在本发明的至少一个实施例中,并且多次提及“一个实施例”或“实施例”不应当被理解为一定都是指相同的实施例。
本文所描述的实施例是示例并且出于说明性目的。本领域的普通技术人员应认识到可以使用用于实现所公开主题的替代技术。示例实施例的要素可以以不同的安排方式安排或与不同示例实施例的要素组合。例如,可以改变流程图的各个框的执行顺序。可以改变、消除或组合这些流程图的框中的一些框,并且可以根据期望添加其他框。
如本文所使用的,术语“计算机系统”可指用于执行被描述为在计算机系统上或由计算机系统执行的功能的单台计算机或一起工作的多台计算机。
对企业、政府机构等的网络攻击越来越隐蔽且持久。因此,对于能够处理知识产权威胁和个人信息窃取来说,检测隐蔽通信的能力变得越来越重要。
覆盖某个人的轨迹的主要要素涉及躲避驻留于操作系统中的软件。避免检测的常用方法是使用能够使活动躲避软件(比如,反病毒(AV)和基于主机的入侵检测)的恶意软件。当代威胁(例如,rootkit和bootkit)更加注重隐藏在操作系统中。Bootkit(即,在引导进程期间,在操作系统启动前激活的rootkit)可以控制操作系统与网络硬件的交互。它们还可以操纵安装在系统上的AV软件,以便利用或禁用AV保护。这将会使得操作系统和在操作系统下运行的软件(包括AV或其他安全软件)不能够观察到或停止恶意程序活动。Rootkit代码还可以从固件中激活,这将使得更难将其检测到并且明显更难将其删除。
在市场上存在采用不同方法的多种rootkit检测程序。对可信信息与潜在受污染的信息进行比较的方法是众所周知的并且已经在许多反rootkit工具中得以使用,例如,对由若斯诺维奇(Russinovich)的RootkitRevealer进行的基于差异的检测的使用,其实现了对索尼DRM rootkit的检测。其他示例是芬安全(F-Secure)的Blacklight和迈克菲(McAfee)的RootkitDetective,所有所述工具都将差异观察用作主要检测方法之一。然而,现有的反rootkit解决方案无法可靠地解决并识别已知恶意软件代码的前所未见变体以及之前未发现的恶意软件代码。使用纯粹基于软件、基于差异的检测来检测这些类型的恶意软件将是困难的,如果不是不可能的话。
因此,本文公开了用于经由恶意软件检测程序的软件实现方式来克服静态分析的缺点的各种技术。具体地,本文公开了用于支持安全、有效、动态的程序分析以便检测恶意软件或其他异常的硬件修改型式。这种方式使用现有技术的基于软件的恶意软件检测技术来解决所述问题中的一些问题。
首先,通过在安全硬件中(最小限度地依赖于操作系统软件并且不依赖于操作系统的完整性)执行AV保护,大大降低了恶意软件破坏保护机制的可能性。换言之,本文描述的技术所利用的硬件事件计数器永远无法被重置,并且对OS软件不可见或‘只读’。第二,对可信硬件计数器的动态分析以及随着时间推移对被访问指令存储器地址的跟踪使得对新的未发现的恶意软件变体的检测变得更加容易。
认识到这样一种事实产生本文所公开的发明:在某个恶意软件家族内的所有恶意软件(不论代码变体如何)都试图在相似的相对存储器地址处并且以相似的模式做相似的事。以下是可以从这些发明中获得的益处的几个示例:
1.高信任和证明级:所收集数据是高度可信的并且难以伪造或规避。例如,计数器数据可以通过平台绑定密钥来签名,以便确保计数器数据确实来自可信硬件源。
3.OS-不可知:因为收集来自计数器的信息是完全基于硬件的,所以如果存在通往基于融合式安全管理引擎(Converged Security Management Engine)的远程控制台的硬件通道,则在被监测机器上不需要启用OS。
4.对OS/管理程序/BIOS/UEFI恶意软件的弹性:即使在存在基于OS或基于固件高级持续性威胁(APT)的情况下,数据也将像平常一样被收集并且被安全地传递至监测代理。
如以上所提及的,使用硬件事件计数器使得本文所描述的技术比传统的基于软件的AV和恶意软件检测程序更具弹性。具体地,CPU和芯片组性能计数器提供了广泛的分析数据,所述分析数据可用于以两种通用方法来检测恶意软件:1.)一些计数器对系统执行的工作负载的类型/混合的变化非常敏感;以及2.)其他计数器可以被认为是可疑行为的直接证据。
报告造成相应事件的指令的地址的固定的不可重置硬件事件计数器可以指示的状况中的一些状况的示例包括以下各项:
1.上下文切换(例如,用户/内核、VM/管理程序)
2.存储器/IO/高速缓存使用、DMA以及总线事务
3.调试指令、自修改代码
4.加密操作码统计数据
5.典型利用模式(例如,多个误预测分支、栈指针变化等)
在一些实施例中,对硬件事件计数器数据的收集是使用基于可信执行环境的代理来进行的。架构平台上的一种可能实施方式包括如下文将在图4中进一步详细讨论的,由在融合式安全管理引擎(CSME)450中运行的代理通过平台环境控制接口(PECI)440进行对平台计数器的收集。
出于威胁检测目的,由在可信执行环境(TEE)中运行的代理进行的对事件计数器的收集与签名使数据保持可信。这样做确保了用于将数据传送至分析代理的安全路径,所述数据传送或者在端点本身处本地地发生,或者在企业威胁情报后台系统的情况下远程地发生。
CPU核计数器
本文所描述的技术所利用的一个假设是:由于对恶意软件代码的附加执行,任何恶意软件安装将改变安装所述恶意软件的系统的工作负载特性。由本文所描述的AV系统所监测的每个计数器或比例将仅对工作负载表征进程添加少量工作。此外,阈值可以用于每个计数器,使得例如系统仅分析对特定计数器的每第百万次中断。
通过考虑当给定计数器达到其阈值时引起的中断的存储器地址,有可能确定哪个进程负责所述事件。然后有可能基于这种信息分析用于特定进程的特定计数器的时间序列,包括对引起这些事件的指令地址的分布的分析。有意义的CPU核计数器(在本文中也称为性能监测单元或PMU计数器)的示例包括:
·用于检测代码自修改和变化的工作负载状况的机器清除事件以及MACHINE_CLEARS.CYCLES(机器清除周期)与CPU_THREAD_UNHALTED(CPU线程未停止)的比例
·存储转发未命中率指令分布以及LD_BLOCKS.STORE_FORWARD(LD块存储转发)与INSTRUCTIONS_RETIRED(指令引退)的比例
·未对准存储器引用分布以及未对准存储器引用存储(MISALIGN_MEM_REF.STORES)与指令引退(INSTRUCTIONS_RETIRED)的比例。[恶意软件钩子可以被迫以与常规应用相比不寻常的方式来进行未对准存储器访问。]
·引退指令的ITLB转储清除(ITLB_FLUSH),这还可能由于代码修改而发生
·转换后备缓冲器(TLB)未命中引起指令的分布
·间接调用与直接调用的分布与比例以及条件分支与正常分支的比例。[钩入现有代码可以添加更多直接分支(例如当修补代码条目时)或者改变现有分支模式。]
·一般CPU前端/后端事件的分布以及使用IDQ_UOPS_NOT_DELIVERED.CORE(IDQ_UOPS_未被传递的核)、UOPS_ISSUED.ANY(UOPS_发出的任何)、UOPS_RETIRED.SLOTS(UOPS_引退的插槽)、INT_MISC_RECOVERY_CYCLES(INT_MISC_恢复周期)以及UOPS_RETIRED.RETIRE_SLOTS(UOPS_引退的引退插槽)的限制比例可以检测代码特性变化。
·指令的LLC未命中率,其可用于估计存储器带宽
·对环0和环!=0运行循环事件并且比较比例[内核恶意软件将可能增加环0时间。有效的僵尸网络将可能增加环3时间。]
·使用CPU核C状态驻留寄存器(自由运行计数器)的比例
·核执行时间与空闲时间的比例不同C状态的执行时间可用于估计不同休眠时间“段”
·在僵尸网络运行的情况下,系统的唤醒模式将可能是不同的,因为恶意软件必须唤醒以通信
·明显栈指针改变指令(MOV ESP、xxx;XCHG ESP等)
·陷阱
·上下文切换
·电源管理事件
·用于表征(在核之外的)恶意软件的非核计数器的示例
ο用于检测附加IO的MMIO和PCI与存储器带宽的比例
ο处于C状态的平均休眠模式
根据本文所描述的实施例,被认为适用于威胁检测的所述一组计数器和对应配置可以使用机器学习来定义。一旦被定义,就可以基于本地数据和/或来自多个客户端(如果可能的话)的数据来构造各种兴趣进程的行为模型以便定义“正常”或预期的(即,无恶意软件)行为。然后,一组合适的度量连同各种异常检测算法可用于测量所监测到的工作负载与模型“正常”工作负载的偏差,以便提供更具鲁棒性的恶意软件检测系统。
图1是图示100,根据一个实施例展示了随着时间推移使用事件计数器(例如,红点110、蓝点120以及绿点130表示由行为指纹识别系统所跟踪的三种不同类型的事件计数器)的特定子集来进行的行为指纹识别。图示100的水平轴线表示时间,并且垂直轴线表示特定进程的在特定时间点加载到系统存储器中的进程地址。如可以理解的,特定进程的随着时间推移的地址分布为分析图示100的人员或进程提供系统在指定时间间隔内的‘行为指纹’。为了允许进行在进程的不同实例之间的地址比较(包括对在不同计算机上运行的进程的比较),还可能有用的是,使用根据进程在存储器中的基础负载位置计算出的相对地址。
如上面暗示的,本文公开的实施例的区别特征之一是使用可用于事件计数器样本的地址信息。为诸位发明人所熟知的现有解决方案仅使用特定计数器的时间序列(即,随着时间推移的计数器变化率)。这种方式可以具有更易实现的优点,但其还具有显著的缺点,因为其将来自不同进程的事件混合。因此,只有在存在消耗系统计算资源的显著部分的单个工作负载时才可以有意义地应用这种方式。当许多进程在任何当代操作系统OS中并行运行时,能够发现每个特定进程的具体贡献变得非常有问题。可以应用各种其他技术,例如,期望最大化(EM)算法,但这些技术也将缺少关于特定进程的特定贡献的细节。
相比之下,本文所描述的解决方案依赖于专门设计的样本(例如,当计数器达到预定阈值(例如,每第百万个计数)时产生的中断)以及产生对应事件的指令的特定地址。存储器映射(即,随着时间推移,哪些进程具有访问与特定存储器位置的映射)对于OS是已知的并且因此允许容易选择由特定进程生成的计数器。通过分析地址分布的特定模式,人们可以建立特定进程的行为模型(本文中也称为“指纹”)并且稍后在实际行为与所述模型相匹配的情况下进行匹配。
转到图2,描绘了图示200,根据一个实施例展示了在同一时间帧中使用事件计数器的特定子集的‘相’空间来进行的行为指纹识别。图示200的水平轴线表示“前一次”发生特定进程的进程地址,并且垂直轴线表示“当前”发生特定进程的进程地址。如可以理解的,示出的‘相’空间针对多个单独计数器(例如,计数器210和计数器220),所述计数器表示在同一时间帧中发生的不同事件的样本地址。图示中通过线段连接的两个点表示进程的代码的“从-到”转换。因此,在图2中展示的例如在210和220之间的转换本质上是单向的。根据一些实施例,所监测到的转换次数至少部分地基于与被监测的特定硬件计数器相关联的事件类型。相比图1所示出的地址分布映射,使用如图2所展示的‘相’空间可以提供进程的典型行为模式的甚至更加细微的指纹。在相空间指纹已经建立之后,与所述图案的任何偏差(例如,特定地址之间的不寻常数量的转换或不应存在任何事物的地址之间的转换)可以指示系统内的潜在异常。
图3是框图,展示了可用于实现本文描述的技术中的一些或全部技术的计算机系统300。系统单元310提供了可以安装或以其他方式布置计算机系统300的部件的位置。系统单元310可以被制造为安装各种芯片组的母板,从而提供部件之间的电气连接以及贯穿系统单元310和(根据期望)在系统单元310外部的信号和功率分布。例如,计算机系统300可以包括输出设备(比如显示器395),所述输出设备提供显示警告和其他指示(即,反恶意软件系统已经通过检查硬化平台计数器检测到异常的可能性)的方式。
系统单元310的各种部件可以包括一个或多个处理器320,每个处理器通常是安装在安装插座(在图3中未示出)中以便提供处理器320与计算机300的其他部件之间的电气连通性的单个处理器芯片。虽然单个处理器320在图3中得以展示,但是可以使用任何期望数量的处理器,所述处理器中的每个处理器都可以是多核处理器。目前,可以在在市场上获得多种处理器芯片,并且可以使用任何期望的处理器芯片或芯片组。系统单元310可以被编用于执行根据本公开的方法,所述方法的示例在图5中得以展示。
处理器320通常使用用于信号传输的链路来连接至供处理器320使用的存储器330,所述链路可以是总线或任何其他类型的互连,包括点对点互连。存储器330可以包括一个或多个存储器模块并且包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可编程读写存储器以及固态存储器。处理器320还可以包括内部存储器,例如,高速缓存存储器。在处理器320上运行的操作系统总体上控制计算机系统300的运行,为服务、应用以及其他软件在计算机300上执行提供了操作系统环境。
如图3所展示的,处理器320还连接至为计算机系统300提供I/O、计时器以及其他有用能力的I/O子系统340。例如,I/O子系统340可以提供用于将可选显示器395和可选输入设备390(比如,键盘、鼠标、触摸屏幕)连接至系统单元310的I/O端口。端口可以是用于如显示器395等部件的专用端口中的一个或多个专用端口,也可以是如通用串行总线(USB)端口等用于连接键盘或鼠标390的多用途端口。I/O子系统340还可以是用于与存储设备(比如,存储设备380)通信的接口,可以通过音频接口360连接至音频设备,并且可以经由网络接口370连接至网络120。存储设备380表示任何形式的非易失性存储设备,包括但不限于:所有形式的光学或磁性存储元件(包括固态存储元件(包括可删除介质)),并且可以被包括在系统单元310内或者在系统单元310外部。存储设备380可以是用于存储用于控制计算机300的软件、供计算机300使用的数据(包括网络流量数据)或两者的程序存储设备。虽然在图3中为了清楚起见只展示了单个存储设备380,但是根据接口可用性,可以根据期望提供任何数量的存储设备380。I/O子系统340可以被实现为系统单元310内的一个或多个芯片。在一些实施例中,存储器330可以连接至I/O子系统340而不是连接至处理器320。
此外,一些实施例可以将I/O子系统340连接至可信平台模块350,所述可信平台模块提供用于存储密码密钥以保护信息的加密处理器。实施例可以将I/O子系统340的功能实现为系统310中的一个或多个单独芯片。
如图3所展示的,I/O子系统340为安全可信环境(TE)345提供硬件资源。TE 345提供不受控制计算机300的操作系统控制的安全环境。在其他实施例中,TE 345可以位于I/O子系统外部作为单独芯片,或者可以被结合在处理器320(比如,被限制于TE功能的单独核)中。TE 345包含安全处理功能,所述安全处理功能允许在恶意软件(甚至是可以在处理器320上作为bootkit或rootkit而运行的恶意软件)无法干扰的可信环境中执行本文描述的硬化事件计数器技术的安全环境侧。通常,提供TE 345的供应商使用专有或密码技术来确保对在TE 345中执行什么功能的控制,从而防止对除了将在TE345中运行的经认真审查的可信程序之外的任何程序的执行。可以提供特殊接口以允许运行在处理器320上的软件请求TE 345执行期望功能,比如,启动硬件保护计数器分析或者将来自TE 345的数据提供至处理器320以供分析。TE 345可以或者使用其自己的内部存储器,或者使用存储器330的一部分来进行数据和固件存储。可替代地,供在TE 345中执行的呈固件形式的指令可以在计算机300上电时从非易失性存储设备345(比如,闪存)中加载,然后可以被加载到存储器330的一部分中以供由TE 345执行。在一些实施例中,TE345可以根据期望而被禁用或启用。这些指令可以使TE 345执行硬化事件计数器分析以及本文中没有描述的其他功能。硬化事件计数器固件可以由安全环境供应商提供或者可以由入侵检测系统供应商提供,并且可以经过安全环境供应商的许可,结合对操作系统环境入侵检测软件的提供被存储为固件。可用于这些技术的可信环境的示例是在由公司提供的某些芯片组中的管理引擎(ME)。虽然本文总体上就基于硬件的TE 345而言对安全环境进行了描述,但是安全环境(例如,SGX型TE)可以根据期望而被实现在硬件、固件或软件或其任何组合中。
计算机系统300可以是任何类型的计算设备,如例如,智能电话、智能平板计算机、个人数字助理(PDA)、移动互联网设备(MID)、可转换平板计算机、笔记本计算机、台式计算机、服务器或智能电视。显示器395(如果存在的话)可以是用于向用户呈现接口的任何类型的设备,如例如,触摸屏幕或液晶显示器。图3所展示的元件是说明性的并且仅通过示例的方式给出。图3所示的元件可以根据期望而组合或者被分成多个元件。还可以根据期望提供其他元件,比如,由全球定位系统(GPS)收发器提供的地理定位逻辑以及用于处理使用标准(如例如,IEEE 802.11、IEEE 802.16和全球微波接入互操作性等)来进行的移动通信的逻辑。
现在转到图4,所述图是框图,根据另一个实施例展示了用于检测rootkit和其他异常的计算机系统400。计算机系统400可以包括:主机存储器410以及多个CPU(420、430等),所述多个CPU经由平台环境控制接口(PECI)440通信地耦合至融合式安全管理引擎(CSME)450,所述CSME进而可以经由网络控制器边带接口(NC-SI)460连接至网络接口卡(例如,以太网控制器)(NIC)470。NC-SI提供互连和协议,借此,在不与主机OS中断的情况下和/或当OS不存在时,CSME 450可以将NIC用于其自己的网络流量。根据一些实施例,使用在CSME 450上运行的基于TEE的代理,通过PECI 440进行对硬件计数器数据的收集。在其他实施例中,可以进行通过平台绑定密钥来进行的对计数器数据的签名,以便确保密钥确实已经来自可信源。在期望进一步安全性的实施方式中,计算机系统400可以使用NIC 470,仅经由可信通道(480)与企业威胁情报服务(490)通信,以便确保硬件计数器信息不受不可信进程的干扰或者不被其拦截。
可以由系统(比如,计算机系统400)检测到的基于规则的异常的示例包括:1.)在周末在交换服务器上的异常级别的活动;2.)未被虚拟化的突然播种(seeding)vm进入/vm退出事件的生产系统;3.)在系统上存在自修改代码;或者4.)当处于用户模式时,明显栈指针变化。
可以由系统(比如,计算机系统400)执行的分析操作的类型的示例包括:1.)例如通过执行流量分析来检测异常量的web流量进入数据中心,包括检测什么计算机与什么另一个计算机通信,和/或每个计算机与多少不同主机通信(这可以例如通过检测网络驱动器、OS内核等的进程行为变化来检测);以及2.)检测几个连续的失败登录尝试(例如,每天每个服务几次尝试),这可以指示某人正在进行低强度的字典式攻击(这将增大处理失败登录尝试的代码区域的样本数量——通常不是非常有效的代码区域)。
如现在将理解的,硬件事件计数器本身(除少数例外,像自修改代码或明显栈指针变化)将不会指示哪个进程负责可疑行为。也就是说,在没有进程信息的其他某个来源的情况下(例如,来自OS代理),完全异常检测方案是不可能的。然而,这种信息可以用于入侵检测,所述入侵检测将向管理员指示需要进一步调查某个事物。利用受保护硬件平台计数器的弹性的另一种可能的技术将是对从OS用户代理处接收到的数据执行‘完整性检验’。这种技术将对通过使用硬件资源来检测网络流量的不一致性从而对执行rootkit检测的尝试进行补充。尽管高级持续性攻击(APT)或rootkit可以能够阻碍OS用户代理,但是恶意进程将非常难以使得其统计数据与OS用户代理报告的统计数据相匹配。这本身可用于向系统管理员指示某个事物可能出了问题。例如,rootkit习惯性地隐藏其自身的CPU使用情况,这将会使得由OS用户代理报告的数据加起来不到硬件计数器所示出的数据,由此提醒系统管理员注意可能的异常。
用于基于硬件平台计数器执行分析查询的附加方式可以包括利用由企业威胁情报服务开发的简档/本体,即,安全协作客户端-云分析关系。
图5是流程图,展示了操作系统和安全环境硬件平台监测技术的各个实施例。在图5的框510中,CSME 450(或者给定实施方式中所使用的任何其他基于TEE的代理)监测一组期望的硬件平台计数器,从而收集地址分布数据(如图1的图表100所展示的)和/或‘相’空间数据(如图2中的图表200所展示的),以便建立期望在操作系统内监测的进程的‘指纹’。框510的过程因此可用于建立并且训练关于期望被监测以便发现异常存在的‘正常’系统进程的预期基于平台计数器的特性的‘神经网络’或其他基于机器学习的网络。用于监测和收集进程地址数据的技术是众所周知的,并且本领域的技术人员将不需要附加描述来实现CSME 450。可以根据任何期望的计数器存储协议来存储所收集的平台计数器数据。所收集的计数器数据可以存储在存储器330中、在存储设备380上或在系统单元310上或外的其他地方,包括从计算机300到外部设备的传输。
在框520中,操作系统环境异常检测系统或用于监测异常的其他软件可以收集相似的硬件平台计数器数据。为了便于比较这两个数据集合,软件通常使用与由CSME 450使用的格式和协议相同的格式和协议,但如果期望如此的话,可以使用不同的收集和存储技术。虽然恶意软件可以使数据躲避操作系统环境监测,但是所述躲避可以在框530中通过使用对硬件平台计数器的智能选择收集来检测,在所述框中,将在框520处来自硬件平台计数器的所监测到的数据与在框510处收集到的表示‘正常’行为的所存储‘指纹’进行比较。在另一个实施例中,这种‘正常’指纹可以在受控的‘干净’或‘测试’环境中获得并且然后被传递以供在框530处,在所监测到的平台上进行比较。
异常检测系统和CSME 450两者都可以连续地或在指定时期期间监测平台计数器。如果不是连续地监测,则可以在预定时间段内、在周期性或其他基础上、在请求监测平台计数器时、或者在已经记录了预定量的计数器事件之前监测平台计数器。类似地,可以以各种方式来执行比较,比如,周期性地、根据要求、或在填充被分配用于存储计数器事件信息的任何空间时。
对数据的差异比较对本领域是已知的,并且不需要在此进一步向本领域的普通技术人员进行描述。在当前情况下,比较是寻找基线‘指纹’模型与从操作系统环境数据中收集到的计数器数据之间的平台计数器特性/行为差异。
在框540中,如果可信(即,‘指纹’)数据与操作系统环境数据不相同,(例如,如果可信数据与基线‘指纹’模型相差预定阈值),则所述差异可以指示恶意软件或其他异常的存在。在框550中可以生成警告。警告可以或者在可信环境中或者在操作系统环境中生成,并且可以采用任何期望形式,比如,显示在计算机110上的消息、(例如,经由网络)发送至外部设施的警告信息或者从可信环境传输至基于主机的入侵检测系统的警告。虽然在此被称为消息,但是内容和传递技术可以是任何方便或期望的技术。在例如在框530的比较仅检测所监测到的数据的差异而不进行进一步分析的一些实施例中,警告可以伴随将这两个数据集合传输至可以位于计算机110上或其他地方的分析设施。如果位于计算机110上,则分析设施可以位于CSME 450或操作系统环境中。操作系统环境存在由恶意软件进行的进一步操纵的风险,但是可以比在CSME 450中更加容易实现。分析设施然后可以进行对差异的进一步分析以及对恶意软件或其他异常的可能识别。
分析设施可以或者同步地(实时或近实时),或者异步地(例如,在时间表或周期性的基础上)或者以两者的任何混合接收并比较这两个监测数据集。
在一些实施例中,在框560中,警告可以触发响应,从而响应于检测到恶意软件的存在而采取动作。恢复响应可以采取任何期望的形式,包括试图使用其他技术来识别恶意软件的性质、试图通过删除恶意软件来恢复计算机100、隔离计算机100或者试图对被识别为异常原因的外部施动者采取动作。除了可以在计算机100上、在外部系统上或两者上采取的行动之外,在此未描述这些恢复技术的性质。在根据警告采取响应的实施例中,分析设施可以既进行分析也采取动作,或者分析设施可以仅执行分析并且将响应动作留给另一个设施来实施,所述另一个设施可以与所述分析设施位于不同的位置中。响应于警告而采取的动作还可以涉及与CSME通信以及由CSME 450进行的动作。
下面的示例涉及进一步的实施例。
示例1是一种非暂态计算机可读介质,其上存储有指令,所述指令包括当被执行时使得计算机系统执行以下操作的指令:在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
示例2包括如示例1所述的主题,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例3包括如示例1所述的主题,其中,当被执行时使得所述计算机系统在第二时间段上监测所述计算机系统的所述第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第二时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例4包括如示例1至3中任一项所述的主题,其中,所述第一组硬件计数器包括与以下事件中的至少一个事件相对应的硬件计数器:机器清除、高速缓存未命中、分支未命中、自修改代码、调试事件、单步事件、存储转发未命中、未对准存储器引用、ITLB转储清除、TLB未命中、间接调用、条件分支、陷阱、上下文切换、电源管理事件以及明显栈指针改变指令。
示例5包括如示例1至3中任一项所述的主题,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令进一步包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
示例6包括如示例1至3中任一项所述的主题,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时进一步使得所述计算机系统进行以下操作的指令:在所述第一时间段上监测第二计算机系统的所述第一组硬件计数器;将所述第二计算机系统的所监测到的第一组硬件计数器与所述计算机系统的所监测到的第一组硬件计数器相组合;以及使用经组合的所述第二计算机的所述所监测到的第一组硬件计数器和所述计算机系统的所述所监测到的第一组硬件计数器来产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据。
示例7包括如示例1至3中任一项所述的主题,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
示例8包括如示例1所述的主题,其中,所述第一指纹数据是从受控测试环境中监测到的。
示例9包括如示例1所述的主题,其中,在所述第一组硬件计数器中的至少一个硬件计数器包括无法被重置的硬件计数器。
示例10是一种检测异常的方法,所述方法包括:在第一时间段上监测计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
示例11包括如示例10所述的主题,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:在所述第一时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例12包括如示例11所述的主题,其中,在第二时间段上监测所述计算机系统的第一组硬件计数器包括:在所述第二时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例13包括如示例10至12中任一项所述的主题,其中,所述第一组硬件计数器包括与以下事件中的至少一个事件相对应的硬件计数器:机器清除、高速缓存未命中、分支未命中、自修改代码、调试事件、单步事件、存储转发未命中、未对准存储器引用、ITLB转储清除、TLB未命中、间接调用、条件分支、陷阱、上下文切换、电源管理事件以及明显栈指针改变指令。
示例14包括如示例10至12中任一项所述的主题,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
示例15包括如示例10至12中任一项所述的主题,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器进一步包括:在所述第一时间段上监测第二计算机系统的所述第一组硬件计数器;将所述第二计算机系统的所监测到的第一组硬件计数器与所述计算机系统的所监测到的第一组硬件计数器相组合;以及使用经组合的所述第二计算机的所述所监测到的第一组硬件计数器和所述计算机系统的所述所监测到的第一组硬件计数器来产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据。
示例16包括如示例10至12中任一项所述的主题,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
示例17包括如示例10所述的主题,其中,所述第一指纹数据是从受控测试环境中监测到的。
示例18包括如示例10至12中任一项所述的主题,其中,在第二时间段上监测所述计算机系统的第一组硬件计数器包括:在所述第二时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
示例19包括如示例18所述的主题,其中,所监测到的所述转换次数至少部分地基于与所述第一组硬件计数器中的所述至少一个硬件计数器相关联的事件类型。
示例20是一种计算机系统,所述计算机系统包括:处理器;操作系统,所述操作系统包括当被所述处理器执行时执行以下操作的指令:控制所述处理器并且提供操作系统环境用于其他软件在所述处理器上执行;异常检测软件,所述异常检测软件包括当被所述处理器执行时使所述处理器执行以下操作的指令:在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
示例21包括如示例20所述的主题,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
示例22包括如示例20所述的主题,其中,所述第一指纹数据是从受控测试环境中监测到的。
示例23包括如示例20所述的主题,其中,当被执行时使得所述处理器在第二时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:在所述第二时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
示例24包括如示例23所述的主题,其中,所监测到的所述转换次数至少部分地基于与所述第一组硬件计数器中的所述至少一个硬件计数器相关联的事件类型。
示例25包括如示例20所述的主题,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
示例26包括如示例20所述的主题,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例27包括如示例26所述的主题,其中,当被执行时使得所述计算机系统在第二时间段上监测所述计算机系统的所述第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:在所述第二时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
示例28包括如示例21、26或27中任一项所述的主题,其中,所述第一组硬件计数器包括与以下事件中的至少一个事件相对应的硬件计数器:机器清除、高速缓存未命中、分支未命中、自修改代码、调试事件、单步事件、存储转发未命中、未对准存储器引用、ITLB转储清除、TLB未命中、间接调用、条件分支、陷阱、上下文切换、电源管理事件以及明显栈指针改变指令。
示例29包括如示例21、26或27中任一项所述的主题,其中,存储在异常检测软件中的所述指令进一步包括当被执行时使得所述计算机系统执行以下的操作的指令:在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
示例30包括如示例21、26或27中任一项所述的主题,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时进一步使得所述计算机系统进行以下操作的指令:在所述第一时间段上监测第二计算机系统的所述第一组硬件计数器;将所述第二计算机系统的所监测到的第一组硬件计数器与所述计算机系统的所监测到的第一组硬件计数器相组合;以及使用经组合的所述第二计算机的所述所监测到的第一组硬件计数器和所述计算机系统的所述所监测到的第一组硬件计数器来产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据。
示例31是一种计算机系统,所述计算机系统包括:用于执行如示例10至19中任一项所述的方法的装置。
示例32是一种计算机系统,所述计算机系统包括:处理器;操作系统,所述操作系统包括当被所述处理器执行时执行以下操作的指令:控制所述处理器并且提供操作系统环境用于其他软件在所述处理器上执行;异常检测软件,所述异常检测软件包括当被所述处理器执行时使所述处理器执行以下操作的指令:在第一时间段上监测与所述计算机系统的第一组硬件计数器相对应的存储器地址转换次数,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测与所述计算机系统的所述第一组硬件计数器相对应的存储器地址转换次数,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据一起显示了异常。
示例33包括如示例32所述的主题,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:生成地址分布图。
示例34包括如示例32所述的主题,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:生成相空间图。
示例35包括如示例32所述的主题,其中,当被执行时使得所述处理器在第二时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:生成地址分布图。
示例36包括如示例32所述的主题,其中,当被执行时使得所述处理器在第二时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:生成相空间图。
以上说明旨在是说明性而非限制性的。例如,上述实施例可以彼此组合地使用。对本领域技术人员而言,在阅读了以上说明之后,许多其他的实施例都将是明显的。因此,本发明的范围应当参照所附权利要求书以及这种权利要求书有权获得的等效物的全部范围来确定。
Claims (25)
1.一种非暂态计算机可读介质,其上存储有指令,所述指令包括当被执行时使得计算机系统执行以下操作的指令:
在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据;其中,所述一个或多个操作系统进程中的每个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;
在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;
将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及
指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
2.如权利要求1所述的非暂态计算机可读介质,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:
在所述第一时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
3.如权利要求2所述的非暂态计算机可读介质,其中,当被执行时使得所述计算机系统在第二时间段上监测所述计算机系统的所述第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:
在所述第二时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
4.如权利要求1所述的非暂态计算机可读介质,其中,所述第一组硬件计数器包括与以下事件中的至少一个事件相对应的硬件计数器:机器清除、高速缓存未命中、分支未命中、自修改代码、调试事件、单步事件、存储转发未命中、未对准存储器引用、指令转换后备缓冲器ITLB转储清除、转换后备缓冲器TLB未命中、间接调用、条件分支、陷阱、上下文切换、电源管理事件以及明显栈指针改变指令。
5.如权利要求1所述的非暂态计算机可读介质,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令进一步包括当被执行时使得所述计算机系统执行以下操作的指令:
在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
6.如权利要求1所述的非暂态计算机可读介质,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时进一步使得所述计算机系统进行以下操作的指令:
在所述第一时间段上监测第二计算机系统的所述第一组硬件计数器;
将所述第二计算机系统的所监测到的第一组硬件计数器与所述计算机系统的所监测到的第一组硬件计数器相组合;以及
使用经组合的所述第二计算机系统的所述所监测到的第一组硬件计数器和所述计算机系统的所述所监测到的第一组硬件计数器来产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据。
7.如权利要求1所述的非暂态计算机可读介质,其中,当被执行时使得所述计算机系统在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述计算机系统执行以下操作的指令:
在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
8.如权利要求1所述的非暂态计算机可读介质,其中,所述第一指纹数据是从受控测试环境中监测到的。
9.如权利要求1所述的非暂态计算机可读介质,其中,在所述第一组硬件计数器中的至少一个硬件计数器包括无法被重置的硬件计数器。
10.一种检测异常的方法,所述方法包括:
在第一时间段上监测计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据,其中,所述一个或多个操作系统进程中的每个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;
在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;
将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及
指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
11.如权利要求10所述的方法,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:
在所述第一时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
12.如权利要求11所述的方法,其中,在第二时间段上监测所述计算机系统的第一组硬件计数器包括:
在所述第二时间段期间监测与所述第一组硬件计数器相对应的存储器地址。
13.如权利要求10所述的方法,其中,所述第一组硬件计数器包括与以下事件中的至少一个事件相对应的硬件计数器:机器清除、高速缓存未命中、分支未命中、自修改代码、调试事件、单步事件、存储转发未命中、未对准存储器引用、指令转换后备缓冲器ITLB转储清除、转换后备缓冲器TLB未命中、间接调用、条件分支、陷阱、上下文切换、电源管理事件以及明显栈指针改变指令。
14.如权利要求10所述的方法,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:
在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
15.如权利要求10所述的方法,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器进一步包括:
在所述第一时间段上监测第二计算机系统的所述第一组硬件计数器;
将所述第二计算机系统的所监测到的第一组硬件计数器与所述计算机系统的所监测到的第一组硬件计数器相组合;以及
使用经组合的所述第二计算机系统的所述所监测到的第一组硬件计数器和所述计算机系统的所述所监测到的第一组硬件计数器来产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据。
16.如权利要求10所述的方法,其中,在第一时间段上监测所述计算机系统的第一组硬件计数器包括:
在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
17.如权利要求10所述的方法,其中,所述第一指纹数据是从受控测试环境中监测到的。
18.如权利要求10所述的方法,其中,在第二时间段上监测所述计算机系统的第一组硬件计数器包括:
在所述第二时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
19.如权利要求18所述的方法,其中,所监测到的所述转换次数至少部分地基于与所述第一组硬件计数器中的所述至少一个硬件计数器相关联的事件类型。
20.一种计算机系统,包括:
硬件处理器;
操作系统,所述操作系统包括当被所述处理器执行时执行以下操作的指令:控制所述处理器并且提供操作系统环境用于其他软件在所述处理器上执行;
异常检测软件,所述异常检测软件包括当被所述处理器执行时使所述处理器执行以下操作的指令:
在第一时间段上监测所述计算机系统的第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一指纹数据,其中,所述一个或多个操作系统进程中的每个操作系统进程的所述第一指纹数据包括所述第一组硬件计数器的相空间图,并且其中,每个相空间图包括与所述第一组硬件计数器相关联的存储器地址之间的多个单向转换;
在不受所述计算机系统的操作系统控制的安全环境中在第二时间段上监测所述计算机系统的所述第一组硬件计数器,从而产生一个或多个操作系统进程中的每个操作系统进程的第一运行时间数据;
将所述一个或多个操作系统进程中的每个操作系统进程的所述第一运行时间数据与对应的操作系统进程的所述第一指纹数据进行比较;以及
指示所述一个或多个操作系统进程中的任一操作系统进程的所述第一运行时间数据是否与所述对应的操作系统进程的所述第一指纹数据相差预定阈值。
21.如权利要求20所述的计算机系统,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:
在所述第一时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
22.如权利要求20所述的计算机系统,其中,所述第一指纹数据是从受控测试环境中监测到的。
23.如权利要求20所述的计算机系统,其中,当被执行时使得所述处理器在第二时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:
在所述第二时间段期间监测与所述第一组硬件计数器中的至少一个硬件计数器相对应的存储器地址转换次数。
24.如权利要求23所述的计算机系统,其中,所监测到的所述转换次数至少部分地基于与所述第一组硬件计数器中的所述至少一个硬件计数器相关联的事件类型。
25.如权利要求20所述的计算机系统,其中,当被执行时使得所述处理器在第一时间段上监测所述计算机系统的第一组硬件计数器的所述指令包括当被执行时使得所述处理器执行以下操作的指令:
在所述第一时间段期间监测与所述第一组硬件计数器相对应的相对存储器地址,其中,所述相对存储器地址是根据进程在存储器中的基础负载位置来计算的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/707,977 | 2015-05-08 | ||
US14/707,977 US9842209B2 (en) | 2015-05-08 | 2015-05-08 | Hardened event counters for anomaly detection |
PCT/US2016/026507 WO2016182650A1 (en) | 2015-05-08 | 2016-04-07 | Hardened event counters for anomaly detection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027860A CN108027860A (zh) | 2018-05-11 |
CN108027860B true CN108027860B (zh) | 2020-04-14 |
Family
ID=57222721
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680039540.8A Active CN108027860B (zh) | 2015-05-08 | 2016-04-07 | 用于进行异常检测的硬化事件计数器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9842209B2 (zh) |
EP (1) | EP3295361A4 (zh) |
CN (1) | CN108027860B (zh) |
WO (1) | WO2016182650A1 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10554505B2 (en) | 2012-09-28 | 2020-02-04 | Intel Corporation | Managing data center resources to achieve a quality of service |
US9213831B2 (en) * | 2013-10-03 | 2015-12-15 | Qualcomm Incorporated | Malware detection and prevention by monitoring and modifying a hardware pipeline |
US9135437B1 (en) * | 2014-03-24 | 2015-09-15 | Amazon Technologies, Inc. | Hypervisor enforcement of cryptographic policy |
US10387651B2 (en) * | 2014-09-23 | 2019-08-20 | Hewlett-Packard Development Company, L.P. | Detecting a change to system management mode bios code |
US9769169B2 (en) * | 2015-09-25 | 2017-09-19 | Intel Corporation | Secure sensor data transport and processing |
US10454889B2 (en) * | 2015-10-26 | 2019-10-22 | Oath Inc. | Automatic anomaly detection framework for grid resources |
US10735438B2 (en) * | 2016-01-06 | 2020-08-04 | New York University | System, method and computer-accessible medium for network intrusion detection |
WO2017147236A1 (en) * | 2016-02-23 | 2017-08-31 | Carbon Black, Inc. | Cybersecurity systems and techniques |
US10050982B1 (en) * | 2016-05-19 | 2018-08-14 | Symantec Corporation | Systems and methods for reverse-engineering malware protocols |
US10025687B2 (en) * | 2016-05-25 | 2018-07-17 | International Business Machines Corporation | Event rate change based hardware performance data collection |
US10395016B2 (en) * | 2017-01-24 | 2019-08-27 | International Business Machines Corporation | Communication pattern recognition |
US11256589B2 (en) | 2017-01-27 | 2022-02-22 | Hewlett-Packard Development Company, L.P. | Detecting a change to system management mode bios code |
US10496378B2 (en) | 2017-05-04 | 2019-12-03 | Microsoft Technology Licensing, Llc | Generating and executing multi-entry point functions |
CN107133130B (zh) * | 2017-05-19 | 2021-01-01 | 杭州新中大科技股份有限公司 | 计算机运行监测方法和装置 |
US10592383B2 (en) * | 2017-06-29 | 2020-03-17 | Intel Corporation | Technologies for monitoring health of a process on a compute device |
US10706180B2 (en) * | 2017-07-07 | 2020-07-07 | Endgame, Inc. | System and method for enabling a malware prevention module in response to a context switch within a certain process being executed by a processor |
US10997288B2 (en) * | 2018-03-23 | 2021-05-04 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Detecting a compromised system using an integrated management controller |
EP3588348A1 (en) * | 2018-06-29 | 2020-01-01 | AO Kaspersky Lab | Systems and methods for detecting malicious activity in a computer system |
FR3085498A1 (fr) * | 2018-09-05 | 2020-03-06 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Surveillance d’acces en memoire |
US11188643B2 (en) * | 2018-12-27 | 2021-11-30 | Intel Corporation | Methods and apparatus for detecting a side channel attack using hardware performance counters |
FR3103038B1 (fr) * | 2019-11-07 | 2021-11-19 | Thales Sa | Procede et dispositif electronique de surveillance d'une application logicielle avionique via des compteurs d'appel(s) systeme, programme d'ordinateur et systeme avionique associes |
KR20210117682A (ko) * | 2020-03-20 | 2021-09-29 | 라인 가부시키가이샤 | 메모리 맵을 활용한 멀웨어 탐지 방법 및 시스템 |
US11321157B2 (en) * | 2020-08-31 | 2022-05-03 | Northrop Grumman Systems Corporation | Method of operating a digital system operable in multiple operational states and digital system implementing such method |
CN112417449A (zh) * | 2020-11-12 | 2021-02-26 | 北京鸿腾智能科技有限公司 | 异常行为检测方法、设备、存储介质及装置 |
GB202103020D0 (en) | 2021-03-03 | 2021-04-14 | Zeroperil Ltd | Methods and systems for detecting and blocking malicious actions in an operating system |
CN113110946A (zh) * | 2021-04-12 | 2021-07-13 | 网经科技(苏州)有限公司 | 基于CSME私有协议的dsp通信系统及其方法 |
US11809562B1 (en) * | 2021-06-29 | 2023-11-07 | T-Mobile Innovations Llc | Operating system kernel analysis to detect a cyber attack |
US11983272B2 (en) * | 2021-07-14 | 2024-05-14 | Saudi Arabian Oil Company | Method and system for detecting and preventing application privilege escalation attacks |
US20230141142A1 (en) * | 2021-11-05 | 2023-05-11 | Blackberry Limited | Identifying application program interface use in a binary code |
US20230142345A1 (en) * | 2021-11-05 | 2023-05-11 | Blackberry Limited | Detecting software vulnerabilities in a binary code |
FR3131647B1 (fr) * | 2021-12-31 | 2024-01-26 | Thales Sa | Procédé de détection d'une anomalie dans un système électronique en fonctionnement |
US11928210B2 (en) * | 2022-03-02 | 2024-03-12 | Flexxon Pte. Ltd. | Module and method for monitoring systems of a host device for security exploitations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103258161A (zh) * | 2012-02-15 | 2013-08-21 | 捷讯研究有限公司 | 改变采样速率以对涉及分析硬件传感器输出的攻击进行阻止 |
US8850081B2 (en) * | 2007-12-20 | 2014-09-30 | Intel Corporation | Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6681331B1 (en) * | 1999-05-11 | 2004-01-20 | Cylant, Inc. | Dynamic software system intrusion detection |
US7421587B2 (en) * | 2001-07-26 | 2008-09-02 | Mcafee, Inc. | Detecting computer programs within packed computer files |
US8032875B2 (en) * | 2006-11-28 | 2011-10-04 | Oracle America, Inc. | Method and apparatus for computing user-specified cost metrics in a data space profiler |
US8312546B2 (en) * | 2007-04-23 | 2012-11-13 | Mcafee, Inc. | Systems, apparatus, and methods for detecting malware |
US7614084B2 (en) * | 2007-10-02 | 2009-11-03 | Kaspersky Lab Zao | System and method for detecting multi-component malware |
US8387139B2 (en) * | 2008-02-04 | 2013-02-26 | Microsoft Corporation | Thread scanning and patching to disable injected malware threats |
US8336099B2 (en) * | 2008-05-08 | 2012-12-18 | International Business Machines Corporation | Methods, hardware products, and computer program products for implementing introspection data comparison utilizing hypervisor guest introspection data |
US8407528B2 (en) * | 2009-06-30 | 2013-03-26 | Texas Instruments Incorporated | Circuits, systems, apparatus and processes for monitoring activity in multi-processing systems |
US8726383B2 (en) * | 2011-02-14 | 2014-05-13 | Ca, Inc. | Flow data for security intrusion detection |
US8813227B2 (en) * | 2011-03-29 | 2014-08-19 | Mcafee, Inc. | System and method for below-operating system regulation and control of self-modifying code |
US8839429B2 (en) * | 2011-11-07 | 2014-09-16 | Qualcomm Incorporated | Methods, devices, and systems for detecting return-oriented programming exploits |
US8776228B2 (en) * | 2011-11-22 | 2014-07-08 | Ca, Inc. | Transaction-based intrusion detection |
US9342348B2 (en) * | 2012-01-23 | 2016-05-17 | Brocade Communications Systems, Inc. | Transparent high availability for stateful services |
US9015838B1 (en) * | 2012-05-30 | 2015-04-21 | Google Inc. | Defensive techniques to increase computer security |
US9996694B2 (en) * | 2013-03-18 | 2018-06-12 | The Trustees Of Columbia University In The City Of New York | Unsupervised detection of anomalous processes using hardware features |
US9213831B2 (en) * | 2013-10-03 | 2015-12-15 | Qualcomm Incorporated | Malware detection and prevention by monitoring and modifying a hardware pipeline |
US9245123B1 (en) * | 2014-05-07 | 2016-01-26 | Symantec Corporation | Systems and methods for identifying malicious files |
US9509707B2 (en) * | 2014-06-24 | 2016-11-29 | Qualcomm Incorporated | Methods and systems for thwarting side channel attacks |
US9652615B1 (en) * | 2014-06-25 | 2017-05-16 | Symantec Corporation | Systems and methods for analyzing suspected malware |
-
2015
- 2015-05-08 US US14/707,977 patent/US9842209B2/en active Active
-
2016
- 2016-04-07 WO PCT/US2016/026507 patent/WO2016182650A1/en active Application Filing
- 2016-04-07 CN CN201680039540.8A patent/CN108027860B/zh active Active
- 2016-04-07 EP EP16793120.3A patent/EP3295361A4/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850081B2 (en) * | 2007-12-20 | 2014-09-30 | Intel Corporation | Method, system and apparatus for handling events for partitions in a socket with sub-socket partitioning |
CN103258161A (zh) * | 2012-02-15 | 2013-08-21 | 捷讯研究有限公司 | 改变采样速率以对涉及分析硬件传感器输出的攻击进行阻止 |
Also Published As
Publication number | Publication date |
---|---|
US20160328561A1 (en) | 2016-11-10 |
EP3295361A4 (en) | 2018-09-19 |
US9842209B2 (en) | 2017-12-12 |
EP3295361A1 (en) | 2018-03-21 |
WO2016182650A1 (en) | 2016-11-17 |
CN108027860A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027860B (zh) | 用于进行异常检测的硬化事件计数器 | |
US9680849B2 (en) | Rootkit detection by using hardware resources to detect inconsistencies in network traffic | |
US11063974B2 (en) | Application phenotyping | |
US10509906B2 (en) | Automated code lockdown to reduce attack surface for software | |
Zhang et al. | Hypercheck: A hardware-assistedintegrity monitor | |
US11797684B2 (en) | Methods and systems for hardware and firmware security monitoring | |
US9594881B2 (en) | System and method for passive threat detection using virtual memory inspection | |
US9563457B2 (en) | Enabling a secure environment through operating system switching | |
US8335931B2 (en) | Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments | |
US8966624B2 (en) | System and method for securing an input/output path of an application against malware with a below-operating system security agent | |
Korkin et al. | Applying memory forensics to rootkit detection | |
US20210281590A1 (en) | Device Anomaly Detection | |
US9652615B1 (en) | Systems and methods for analyzing suspected malware | |
Meng et al. | Security-first architecture: deploying physically isolated active security processors for safeguarding the future of computing | |
Wang et al. | TZ-MRAS: a remote attestation scheme for the mobile terminal based on ARM TrustZone | |
US9537738B2 (en) | Reporting platform information using a secure agent | |
US11126721B2 (en) | Methods, systems and apparatus to detect polymorphic malware | |
US10846405B1 (en) | Systems and methods for detecting and protecting against malicious software | |
EP3535681B1 (en) | System and method for detecting and for alerting of exploits in computerized systems | |
US11281772B2 (en) | Systems and methods to detect key loggers | |
Litty et al. | Computer Meteorology: Monitoring Compute Clouds. | |
Shi et al. | Design of a comprehensive virtual machine monitoring system | |
Sang et al. | A tool to analyze potential I/O attacks against PCs | |
Srivastava et al. | Secure observation of kernel behavior | |
Semal | Microarchitectural Covert Channels in Multitenant Computing Environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |