恶意软件标识的制作方法

    专利查询2022-07-06  172


    恶意的软件(也称为恶意软件)可能对企业和个人有毁灭性的影响。复杂的恶意软件攻击可能导致大规模数据泄露。数据泄露可能使得数百万用户暴露给攻击者。这可能严重损害企业的声誉。不幸的是,恶意软件攻击可能标识起来具有挑战性。恶意软件可能隐藏得很好,并且一旦已经标识出恶意软件,就可能难以采取适当的补救动作来移除它。在一些情况下,恶意软件以计算系统架构的低级操作。在这些情况下,恶意软件能够利用简单的方法逃避检测。

    附图说明

    图1是示出了根据示例的计算系统的示意图。

    图2是示出了标识计算系统上的恶意活动的方法的框图。

    图3示出了与存储器相关联的处理器,该存储器包括用于标识计算系统上的恶意活动的指令。

    具体实施方式

    在以下描述中,出于解释的目的,阐述了某些示例的许多具体细节。说明书中对“示例”或类似语言的引用意味着结合该示例描述的特定特征、结构或特性被包括在至少该一个示例中,但不一定被包括在其他示例中。

    现代计算系统处于来自恶意的软件(也称为恶意软件)攻击的持续威胁下。恶意软件有许多不同的形式。一些恶意软件以计算系统中的特定操作为目标,目的是从用户获得特定种类的数据。其他恶意软件使得系统在攻击者的控制下连接到远程服务器。诸如勒索软件的一些类型的恶意软件可以在计算系统上执行不合期望的操作,诸如加密磁盘以拒绝用户访问,或者用读取/写入操作淹没存储器以使计算系统不可用。

    计算系统可以在操作系统(OS)中运行反病毒软件。一些反病毒软件程序被布置来监视系统并保护系统免受恶意活动影响。响应于对恶意软件的肯定检测,反病毒软件可以采取补救动作来移除恶意软件并将系统恢复到安全操作状态。某些反病毒软件程序使用触发器来标识恶意活动。这些程序使用在OS中运行的代理来监视对存储器的调用和对磁盘的读取/写入操作。当计算系统上正在发生异常活动时,可以在软件中引发触发器。

    复杂恶意软件可以通过以OS中的特权组件(诸如内核)为目标来绕过反病毒软件。例如,rootkit可能攻击代码、诸如启动加载程序,其是在系统首次启动时由计算系统执行的。在该情况下,rootkit可以在系统上激活任何反病毒软件之前占领对系统的控制。rootkit还可以采用伪装技术来破坏检测。

    对于在OS中执行的软件而言,可靠地检测深度受损系统中的恶意软件变得困难。特别地,以与OS相同或更低的特权级操作的反病毒软件在检测攻击以更高特权级操作的组件的恶意软件(诸如rootkit)方面可能具有固有的限制。此外,如果使能采取补救动作的控制机制也在攻击者的控制之下,则在内核级受损的系统可能无法采取补救动作。

    联网计算系统也可以实现入侵检测系统(IDS)。IDS可以完全在它们保护的计算平台外部运行。IDS监视进出平台的网络流量,并且在通过网络发送的数据分组的基础上检测恶意活动。IDS可能相对于在计算系统中被监视的操作而受限。特别地,IDS一般而言不被设计成观察平台内发生的某些输入/输出操作。IDS不太适合检测深度受损系统中的恶意软件。

    本文描述的方法和系统解决了在复杂恶意软件攻击以计算系统中的特权组件为目标的情况下出现的检测问题。本文描述的示例用于基于在计算系统的中央处理单元(CPU)和CPU外部的硬件组件之间传送的数据来标识和推断计算系统上的恶意活动。

    在一些现代计算架构中,硬件组件经由由主板上的中央集线器控制的串行连接网络而互连。

    数据在组件和CPU之间以类似于数据如何在基于分组的计算网络中传送的方式进行传送。数据从组件被传送到桥接器,在那里它被打包成数据分组。数据分组包含报头部分和主体部分,报头部分包括目标硬件组件的地址,主体部分包括要传送到目标组件的数据。当数据分组到达组件时,它被解包,使得目标设备可以从分组中读取主体部分。

    在本文描述的方法和系统的示例中,探针被插入到计算系统的主板上。探针被布置成监视在CPU和CPU外部的组件之间传送的数据分组。数据分组在探针处被拦截,并被转发给检查模块。探针可以被配置为基于数据的类型、来源或目的地过滤通信数据并将分组转发给检查模块。

    在本文描述的示例中,当检查模块从探针接收通信数据时,运行在CPU上的进程的假设状态根据该数据重建。

    检查模块被布置成将模型应用于状态以推断CPU的行为。根据示例,该模型可以描述有限状态机的状态转移的一组规则,其中状态对应于进程的预期状态。该模型用于推断CPU上是否正在发生恶意活动。如果在CPU上检测到恶意活动,那么检查模块可以采取补救动作。补救动作的示例包括将计算系统恢复到已知的安全状态,或者使用探针对分组执行过滤和修改。

    本文描述的方法和系统是在硬件级实现的,并且是平台本地的。使用硬件分离将检测模块与CPU隔离。在一些情况下,使用现场可编程门阵列(FPGA)、微控制器或专门的专用集成电路(ASIC)来实现检查模块。检查模块可以在平台的其余部分不可访问的安全模块中实现。

    图1是示出根据示例的计算系统100的示意图。图1中所示的系统100可以与本文描述的其他方法和系统结合使用。

    计算系统100包括负责在计算系统100上执行程序的中央处理单元(CPU) 110。在本文描述的示例中,在CPU 110上执行的进程可以依据其状态来描述。进程的状态指代在CPU 110上执行进程期间临时存储在存储器中的数据。这包括由程序代码作为变量和常量存储在存储器中的数据。CPU 110的状态包括在任何给定时间点运行在CPU 110和存储器上的进程的完整状态。

    CPU 110通信耦合到总线接口120。总线接口120是提供逻辑以允许硬件组件与CPU 110通信的数据接口。总线接口120与设备130通信。在图1中,与设备130相关的术语“设备”被宽松地使用——总线接口120可以是用于将计算系统100的内部组件连接到主板的内部总线。在另一个示例中,总线接口120将诸如鼠标、屏幕或键盘的外部外围输入/输出设备连接到计算系统100。

    计算系统100包括存储器控制器140。存储器控制器140通信耦合到主存储器150。存储器控制器140包括管理CPU 110和主存储器150之间的数据流的逻辑。这包括基于来自CPU 110的指令对主存储器150执行读取和写入操作的逻辑。在计算系统110的一些示例中,存储器控制器140可以包括执行数据的打包和解包的逻辑。

    在图1中所示的示例中,CPU、总线接口120和存储器控制器140集成在片上系统160设计中。在其他示例中,总线接口120和存储器控制器140可以是在物理上与CPU 110分离的芯片。

    图1中所示的计算系统100进一步包括两个探针170A和170B。探针170A被插入在总线接口120和设备130之间的计算系统100的主板上。探针170B被插入在存储器控制器140和主存储器150之间。探针170被布置成拦截在CPU 110、设备130和主存储器150之间传送的通信数据。

    计算系统100包括检查模块180。检查模块180可以是主板上的独立芯片,其在物理上与CPU 110分离。在另一个示例中,检查模块180在硬件设备(诸如在物理上与CPU 110分离的专用安全硬件模块)中的逻辑中实现。

    检查模块180通信耦合到探针170。检查模块180被布置成访问在探针170处拦截的通信数据,该通信数据涉及硬件组件(设备130或存储器150)与CPU 110之间的通信。根据示例,探针170被布置成将拦截的通信数据转发给检查模块180,使得检查模块180能够访问通信数据。

    检查模块180被布置成在探针170处接收的通信数据的基础上来确定在CPU 110上执行的进程的状态。由检查模块180确定的状态是在通信数据聚集的基础上构建的。

    检查模块180被布置成应用模型190来在状态的基础上推断CPU上是否正在发生恶意活动。根据示例,模型190包括对进程建模的有限状态机的一组状态转移规则。检查模块使用模型190在来自通信数据的输入状态的基础上确定下一个状态,如状态转移规则所确定的。可以将下一个状态比照预期状态进行比较,以推断CPU 110上是否可能正在发生恶意活动。

    在第二示例中,计算系统110的概率或启发式状态模型用于基于从拦截的通信数据确定的状态来确定后续状态。

    在另外的示例中,检查模块180可以实现神经网络或其他基于学习的算法,以推断关于CPU 110上的进程执行的信息。特别地,检查模块180可以在一组训练数据上被训练以构建分类器。可以将分类器应用于从通信数据确定的新状态,以推断该进程是否是恶意进程。

    根据本文描述的示例,检查模块180被布置成在模型190的输出的基础上向计算系统应用补救动作。在一种情况下,补救动作可以包括记录模型190的输出。在其他示例中,补救动作包括将进程或计算系统100恢复到先前的安全状态或重启计算系统100。

    在另外的示例中,检查模块180被布置成修改计算系统100的操作。在示例中,检查模块180可以经由探针170应用补救动作。特别地,检查模块180可以被布置成控制探针170来阻止、修改、重写和/或重新路由存储器150或设备130与CPU 110之间的通信数据。

    在一些示例中,检查模块180被布置成在策略195的基础上将探针170配置为将通信数据转发给检查模块180。策略195被实现为一组过滤规则,当在探针170处被实现时,该组过滤规则使得探针170过滤通信数据以转发给检查模块180。

    在一些情况下,在数据分组的来源或目的地的基础上过滤通信数据。在其他情况下,可以基于在探针170处拦截的所拦截通信数据的方向或类型来过滤通信数据。

    图2是示出了标识计算系统上的恶意活动的方法200的框图。图2中所示的方法200可以在图1中所示的计算系统100上实现。特别地,方法200可以由检查模块180结合探针170来实现。

    在框210处,方法200包括监视在计算系统中的硬件组件和中央处理单元(CPU)之间传输的数据分组。根据示例,可以在探针170处执行监视。数据分组可以包括报头和主体部分。主体部分对应于在例如设备130与总线接口120和/或主存储器150与存储器控制器140之间传输的数据。

    在框220处,方法200包括在数据分组的基础上在计算系统上应用进程的执行模型。如结合计算系统100所描述的,检查模块180应用模型190。

    该模型可以是包括用于被监视进程的一组状态转移规则的状态模型。根据示例,在数据分组的基础上应用模型可以包括根据接收到的数据分组构建计算系统上的进程的假设或聚集状态,并将模型应用于聚集状态。

    在框230处,方法200包括在模型的输出的基础上确定该进程是否是恶意的。根据本文描述的示例,确定进程是否是恶意进程包括基于进程的当前状态确定后续状态不遵循进程的预期执行模式。这可以指示该进程是恶意进程或该进程已被损坏的事实。

    根据示例,方法200可以进一步包括在该确定的基础上应用补救动作。当方法200由图1中所示的计算系统100执行时,检查模块180可以被布置成在进程被标识为恶意进程时应用补救动作。在其他示例中,单独的逻辑实体可以执行补救动作。例如,补救动作可以由耦合到CPU 110的专用硬件组件来采取。

    在一些情况下,应用补救包括向CPU发出命令,并在该命令的基础上在CPU处执行补救动作。这可以由图1中所示的检查模块180来执行。根据某些示例,该命令是将计算恢复到先前状态、重启计算系统或关闭计算系统的命令。

    在另外的示例中,方法200包括修改硬件组件和CPU之间的数据分组传送。在本文描述的示例中,修改硬件组件和CPU之间的数据分组传送包括:访问为硬件组件和CPU之间的数据分组传送指定配置规则的策略,并且在配置规则的基础上重新配置数据分组传送。

    分组的修改可以由检查模块180和探针170来执行。在方法200的其他示例中,在与检查模块180和探针170分离的逻辑实体处执行数据分组传送的修改。

    在一些示例中,过滤规则被应用于数据分组。过滤规则可以用于限制哪些数据分组被用作对进程建模和标识恶意行为的输入。可以基于分组的来源或目的地来过滤分组。在其他情况下,可以基于数据分组的方向或类型来过滤数据分组。

    本文描述的方法和系统克服了网络入侵检测系统处反病毒软件的缺点。

    方法和系统在计算系统内实现,但与主CPU保持分离。与基于网络的入侵检测方法形成对照,检查模块具有对关于CPU上运行的软件状态的大量上下文信息的访问权。这意味着检查模块能够更准确地分析CPU行为,并正确地诊断问题。

    另一方面,与在CPU内操作的基于反病毒软件的系统形成对照,由于硬件级的分离,检查模块对CPU上的受损OS免疫。即使在OS完全处于攻击者控制之下的情况下,检查模块仍然可以检测到威胁。特别地,方法和系统可以用于检测威胁,诸如rootkit和其他种类的复杂恶意软件,它们保持隐藏得很好,并且从OS的视角来看是不可检测的。此外,即使在CPU完全受损的情况下,本文描述的方法和系统也可以采取补救动作。

    本文所描述的方法和系统还提供了强大的新方式来控制攻击后受损组件之间的数据分组流。组件之间的通信数据流的修改也在CPU外部执行。因此,本文描述的方法和系统还提供了在系统上检测到恶意软件后进行补救的更灵活的方法。

    本公开中的示例可以作为方法、系统或机器可读指令来提供,诸如软件、硬件、固件等的任何组合。这样的机器可读指令可以被包括在其中或其上具有计算机可读程序代码的计算机可读存储介质(包括但不限于盘存储装置、CD-ROM、光存储装置等)上。

    参考根据本公开的示例的方法、设备和系统的流程图和/或框图来描述本公开。尽管上述流程图示出了特定的执行顺序,但是执行顺序可以不同于所描绘的顺序。关于一个流程图描述的框可以与另一个流程图的框相组合。在一些示例中,流程图的一些框可能不是必需的和/或可以添加附加的框。应理解,流程图和/或框图中的每个流程和/或框,以及流程图和/或框图中的流程和/或图的组合可以通过机器可读指令来实现。

    机器可读指令可以例如由通用计算机、专用计算机、嵌入式处理器或其他可编程数据处理设备的处理器来执行,以实现说明书和图中描述的功能。特别地,处理器或处理装置可以执行机器可读指令。因此,装置的模块可以由执行存储在存储器中的机器可读指令的处理器或者根据嵌入逻辑电路中的指令操作的处理器来实现。术语“处理器”将被广义地解释为包括CPU、处理单元、逻辑单元或可编程门阵列等。这些方法和模块可以全部由单个处理器执行,或者在几个处理器之间划分。

    这样的机器可读指令也可以存储在计算机可读存储装置中,其可以引导计算机或其他可编程数据处理设备在特定模式下操作。

    例如,可以在编码有可由处理器执行的指令的非暂时性计算机可读存储介质上提供指令。图3示出了与存储器320相关联的处理器310的示例。存储器320包括可由处理器310执行的计算机可读指令330。根据示例,实现检查模块的诸如安全硬件模块的设备可以包括处理器和存储器,诸如处理器310和存储器320。

    指令330包括用于以下各项的指令:拦截在计算系统中的第一和第二硬件组件之间传输的数据,聚集该数据以确定在第一组件上执行的进程的状态,并将状态模型应用于该状态以推断该进程是否是恶意进程。

    这样的机器可读指令也可以被加载到计算机或其他可编程数据处理设备上,使得计算机或其他可编程数据处理设备执行一系列操作以产生计算机实现的处理,因此在计算机或其他可编程设备上执行的指令提供了用于实现由流程图中的(一个或多个)流程和/或框图中的(一个或多个)框指定的功能的操作。

    此外,本文的教导可以以计算机软件产品的形式实现,该计算机软件产品存储在存储介质中,并且包括用于使计算机设备实现本公开的示例中所记载的方法的多个指令。

    虽然已经参考某些示例描述了方法、装置和相关方面,但是在不脱离本公开的情况下,可以进行各种修改、改变、省略和替换。特别地,来自一个示例的特征或框可以与另一个示例的特征/框相组合或被另一个示例的特征/框替换。

    词语“包括”不排除权利要求中列出的元素之外的元素的存在,“一”或“一个”不排除多个,并且单个处理器或其他单元可以实现权利要求中记载的几个单元的功能。

    任何从属权利要求的特征可以与任何独立权利要求或其他从属权利要求的特征相组合。

    转载请注明原文地址:https://tc.8miu.com/read-30.html

    最新回复(0)