使用系统调用序列的异常检测技术方案

技术编号:20929181 阅读:22 留言:0更新日期:2019-04-20 12:32
提供了在基于消息的操作系统中检测调用序列异常的系统和方法。可以接收指示调取操作系统的编程流程的消息。该消息可以包括编程流程标识符、发送方进程标识符和接收方进程标识符。可以基于该消息生成调取散列。可以将调取散列翻译为较小的调取标识符。调取标识符可以包括在已翻译的调用序列中,该已翻译的调用序列包括一系列调取的调取标识符。取决于已翻译的调用序列是否包括在先前生成的预定的调用序列中,该已翻译的调用序列可以被确定为异常或非异常。

Anomaly Detection Using System Call Sequences

The system and method of detecting abnormal call sequence in message-based operating system are provided. Messages indicating the programming process of the calling operating system can be received. The message may include a programming process identifier, a sender process identifier, and a receiver process identifier. Call hash can be generated based on this message. Call hashes can be translated into smaller call identifiers. The call identifier may be included in the translated call sequence, which includes a series of call identifiers. Depending on whether the translated call sequence is included in the predefined call sequence generated previously, the translated call sequence can be determined as an exception or non-exception.

【技术实现步骤摘要】
【国外来华专利技术】使用系统调用序列的异常检测
本申请涉及调用序列异常检测,具体涉及操作系统调用中的异常检测。
技术介绍
在基于消息的操作系统中,操作系统的大多数编程流程的调用(call)或调取(invocation)涉及消息传递系统。在基于消息的操作系统中,操作系统的编程流程的调取可导致对应的消息通过消息传递系统从发送方进程传递给接收方进程。在一些示例中,消息传递系统在微内核中实现。微内核可以提供实现操作系统所需的相对少量的服务。例如,微内核的服务可以包括低级地址空间管理、进程管理和进程间通信(IPC)。消息传递系统可以是进程间通信服务的一部分。进程是正在执行的计算机程序的实例。在一些操作系统中,进程可以由同时执行指令的多个执行线程组成。附图说明参考以下附图和描述可以更好地理解实施例。图中的组件不一定按比例绘制。此外,在附图中,相同的附图标记在不同视图中表示对应的部件。图1示出了在基于消息的操作系统中检测调用序列异常的系统的示例;图2示出了示例消息;图3示出了示例简档;图4示出了用于检测调用序列异常的系统的示例逻辑的流程图;以及图5示出了包括存储器和处理器的系统的示例。具体实施方式提供了用于检测基于消息的操作系统中的调用序列异常的方法和系统。可以通过本文描述的方法和系统来检测软件攻击或其它异常。甚至可以检测到对以前未知的软件漏洞(称为零日攻击)的攻击。其它检测到的异常可能包括例如软件缺陷或其它不常见的事件,诸如硬件故障和超时。图1示出了用于在基于消息的操作系统(OS)102中检测调用序列异常的系统100的示例。系统100可以包括在OS102内执行的异常检测器104,或者替代地,如图1中所示,作为在OS102外部执行的进程。OS102通过处理来自一个或多个进程106(图1中指定为P1、P2和P3)的对应消息来处理操作系统调用的调取。顺便提及,当异常检测器104作为OS102外部的进程运行时,OS102还处理由异常检测器104做出的操作系统调用的调取。OS102还可以通过类似机制处理进程间通信,通过软件总线108在进程106之间传递消息。在一些示例中,OS102可以包括微内核110,微内核110实现OS102的消息传递功能。除了进程间通信之外,OS102可以在一些实现方式中处理节点间通信。例如,OS102、进程106和异常检测器104可以包括在第一节点112上,而第二节点114可以包括操作系统和一个或多个进程。第一节点112上的任何一个或多个进程106可以通过将消息传递给第一节点112的OS102来与第二节点114上的目标进程通信,该第一节点将消息传递给第二节点114上的目标进程。节点112、114可以在同一设备上,或者替代地,在通过网络进行通信的单独物理设备上。每个节点可以是服务器的实例、虚拟机的实例、计算设备或网络上的任何其它设备,其中设备可以是真实的或虚拟的。异常检测器104可以包括训练器116、监视器118和处理机120。训练器116可以构建简档,简档提供对正常行为的指示。正常行为是已知行为和/或预定行为。监视器118可以处理从OS102接收的调取信息并检测任何异常。特别地,监视器118可以检测与简档中描述的预定行为的偏差。处理机120可以对任何检测到的异常做出反应。例如,处理机120可以响应于检测到异常而发出警报或以其它方式采取行动。训练器116构建简档122,简档122标识进程106在正常操作下做出的操作系统编程流程的调取序列。例如,图1示出了三个简档122,指定为P1简档、P2简档和P3简档,针对所示的三个进程106中的每一个进程示出一个简档(P1、P2和P3)。短系统调用序列是进程的正常行为和异常行为之间的良好区分器。短系统调用序列集可以是正常行为的相对稳定的识别标志(signature)。对于在进程中执行的非平凡(non-trivial)软件程序,完整的编程流程调取集合可能是巨大的。然而,调取的本地(紧凑)排序可以在该进程的较长操作期间非常一致。下面提供一个示例来示出训练器116的操作。例如,进程106中的一个进程可以按以下顺序调取以下操作系统编程流程:open(),read(),mmap(),mmap(),open(),getrlimit(),mmap()和close()。可以选择窗口大小L,其中窗口大小L指示要包括在窗口中的顺序调取的数量。在窗口中第一次调取之后的调取次数k(换句话说,k是先行(lookahead)大小)。窗口大小L等于先行大小k+1。下面的表1示出了当窗口滑过以下示例调用序列时的顺序调取集合(窗口大小为4(k=3)):open(),read(),mmap(),mmap(),open(),getrlimit(),mmap()和close()。表1表2示出了按窗口中的第一次调用排序的且紧凑的来自表1的调用(调取)。当紧凑时,相应位置(例如上一次调用,再上次调用或再再上一次调用)中的调取被合并为对于该相应位置是可接受的。例如,可以在表2中找到以下调用序列(从最近调取到最早调取排序):mmap(),read(),read(),open(),即使表1中未列出相同的序列。原因是在mmap()调用的再上一次调用位置认为read()是可接受的。表2可以通过在监视进程时对由进程做出的操作系统编程流程的顺序调取滑动相同大小的窗口来检测调用序列中的异常。例如,进程可以在被监视时按以下顺序调取以下操作系统编程流程:open,read,mmap,open,open,getrlimit,mmap,close。下面的表3示出了当与顺序调取集合进行比较时与表2的偏差,该顺序调取集合是在监视进程时窗口滑过由该进程做出的调用序列时形成的。偏差用大写形式表示。换句话说,在第1行的再上一次调用中,最后是“read”而不是“mmap”在“open”之前;在第1行的再再上一次调用中,最后是“open”而不是“read”在“open”之前;在第1行的上一次调用中,是“open”而不是“mmap”在“open”之前;并且在第3行的再上一次调用处,是“open”而不是“mmap”在“getrlimit”之前。表3在基于消息的OS102中,问题可能是大多数(如果不是全部)操作系统编程流程调取是通过操作系统102发送的对应消息做出的。这些消息中的每一个可以具有类似于图2中所示消息202的格式,这比上述简单的单进程方法调取更复杂。消息202可以包括编程流程标识符204、发送方进程标识符206、接收方进程标识符208、信道标识符210、接收方节点标识符212、和/或传递给编程流程的一个或多个参数214。消息202可以包括附加的、更少的或不同的组成部分。例如,消息202可以包括首部216,首部216包括编程流程标识符204、发送方进程标识符206、接收方进程标识符208、信道标识符210和/或接收方节点标识符212。在一些示例中,首部216可以包括对传递给编程流程的参数214的指示218。例如,对参数214的指示218可以是固定大小值,其包括参数214中的任何参数的前12个字节。如果没有传递参数和/或将小于12个字节的参数作为参数进行传递,则对参数214的指示218可以在该固定大小值的任何未使用部分中包括占位符,例如零。编程本文档来自技高网...

【技术保护点】
1.一种在基于消息的操作系统中检测调用序列异常的方法,所述方法包括:接收指示调取操作系统的编程流程的消息,所述消息包括编程流程标识符、发送方进程标识符和接收方进程标识符,其中所述编程流程的调取是在由所述发送方进程标识符标识的进程做出的一系列操作系统编程流程调取中的一个调取;至少基于所述编程流程标识符和所述接收方进程标识符生成调取散列;将所述调取散列翻译为调取标识符;将所述调取标识符包括在已翻译的调用序列中,所述已翻译的调用序列包括所述一系列调取的调取标识符;确定所述已翻译的调用序列是否包括在多个预定的调用序列中,每个所述预定的调用序列包括对应的调取标识符,其中每个所述对应的调取标识符被映射到调取散列;以及如果所述已翻译的调用序列不包括在所述预定的调用序列中,则将所述已翻译的调用序列识别为异常,否则确定所述已翻译的调用序列不异常。

【技术特征摘要】
【国外来华专利技术】2016.07.19 US 15/213,8741.一种在基于消息的操作系统中检测调用序列异常的方法,所述方法包括:接收指示调取操作系统的编程流程的消息,所述消息包括编程流程标识符、发送方进程标识符和接收方进程标识符,其中所述编程流程的调取是在由所述发送方进程标识符标识的进程做出的一系列操作系统编程流程调取中的一个调取;至少基于所述编程流程标识符和所述接收方进程标识符生成调取散列;将所述调取散列翻译为调取标识符;将所述调取标识符包括在已翻译的调用序列中,所述已翻译的调用序列包括所述一系列调取的调取标识符;确定所述已翻译的调用序列是否包括在多个预定的调用序列中,每个所述预定的调用序列包括对应的调取标识符,其中每个所述对应的调取标识符被映射到调取散列;以及如果所述已翻译的调用序列不包括在所述预定的调用序列中,则将所述已翻译的调用序列识别为异常,否则确定所述已翻译的调用序列不异常。2.根据权利要求1所述的方法,其中,调取散列还基于所述发送方进程标识符。3.根据权利要求1或权利要求2所述的方法,其中,所述消息包括对传递给所述编程流程的参数的指示,以及所述调取散列还基于所述对传递给所述编程流程的参数的指示。4.根据权利要求1至3中任一项所述的方法,其中,所述消息包括信道标识符,并且所述调取散列还基于所述信道标识符。5.根据权利要求1至4中任一项所述的方法,其中,所述消息包括接收方节点标识符,并且所述调取散列还基于所述接收方节点标识符。6.根据权利要求1至5中任一项所述的方法,其中,翻译所述调取散列包括在翻译表中搜索所述调取散列,所述翻译表包括与所述调取标识符相关联的调取散列。7.根据权利要求6所述的方法,其中,所述调取标识符是包括所述调取散列的翻译表中的行号。8.一种非暂时性计算机可读存储介质,包括计算机可执行指令,所述计算机可执行指令能够由处理器执行,所述计算机可执行指令包括可执行以进行以下操作的指令:接收指示调取操作系统的编程流程的消息,所述消息包括编程流程标识符、发送方进程标识符和接收方进程标识符,其中所述编程流程的调取是在由所述发送方进程标识符标识的进程做出的一系列操作系统编程流程调取中的一个调取;基于所述消息的至少一部分生成调取散列;将所述调取散列翻译为调取标识符;将所述调取标识符包括在已翻译的调用序列中,所述已翻译的调用序列包括所述一系列调取的调取标识符;确定所述已翻译的调用序列是否包括在多个预定的调用序列中,每个所述预定的调用序列包括对应的调取标识符,其中每个所述对应的调取标识符被映射到调取散列;以及如果所述已翻译的调用序列不包括在所述预定的调用序列中,则将所述已翻译的调用序列识别为异常,否则确定所述已翻译的调用序列不异常。9.根据权利要求8所述的非暂时性计算机可读存储介质,其中,确定所述已翻译的调用...

【专利技术属性】
技术研发人员:穆罕穆德·阿尔沙诺比
申请(专利权)人:二二三六零零八安大略有限公司
类型:发明
国别省市:加拿大,CA

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1