首页 / 终端威胁检测与响应方法及引擎

终端威胁检测与响应方法及引擎有效专利 发明

技术领域

[0001] 本发明涉及终端威胁检测技术领域,具体涉及终端威胁检测与响应方法及引擎。

相关背景技术

[0002] 终端侦测与响应(Endpoint Detection and Response)是未知威胁以及APT检测领域的一个关键趋势,在终端检测威胁行为需要依托于规则,而在传统的检测手段中使用正则表达式、YARA、程序内置硬编码等方式比较多。但无论是正则、YARA还是硬编码的方式都显得过于死板不灵活,修改某一个规则之后都甚至需要对程序进行重新编译才能生效,而YARA和正则表达式虽然比较灵活,但是对于动态数据的检测就显得有点力不从心。

具体实施方式

[0023] 以下实施例用于说明本发明,但不用来限制本发明的范围。
[0024] 实施例1
[0025] 参考图1,本实施例公开的终端威胁检测与响应引擎包括:动作检测模块01、基础信息模块02、行为分析模块03、威胁报警模块04和自动处置模块05;其中,动作检测模块01用于获取系统发生事件的数据以及附加信息,检测所述事件行为规则包含的所有动作规则,对可疑行为规则包含的每个动作规则的进程PID形成动作检测标志;基础信息模块02用于存储标识动作规则的进程是否存在威胁的进程属性并以存储的进程属性形成关于进程是否存在威胁的黑白名单列表;行为分析模块03用于对每个可疑行为规则所包含的所有动作检测标志进行行为匹配分析,如果所述可疑行为规则所包含的所有动作检测标志全部与至少一个标志位匹配,所述可疑行为规则确定存在威胁;威胁报警模块04用于在确定所述可疑行为规则存在威胁后发出威胁报警并将所述行为规则对应的所述事件的数据以及附加信息上传至服务器;及自动处置模块05用于在确定所述可疑行为规则存在威胁后自动调用行为规则的自动响应脚本进行响应处理,针对所述行为规则相关的文件、注册表、网络、模块/动态库、进程进行微粒度控制,防止威胁攻击行为的达成。
[0026] 参考图2,本实施例公开的终端威胁检测与响应方法包括:动作检测模块01获取系统发生事件的数据以及附加信息,将接收到的原始数据收集之后进行二次处理为引擎需要的格式;动作检测模块01检测所述事件行为规则包含的所有动作规则,利用进程属性标示所述动作规则的进程是否存在威胁;动作检测模块01针对被标示的可疑行为规则包含的所有动作规则形成至少一个动作检测标志;当动作检测模块01检测之后形成的动作检测标志传给行为分析模块03进行多种动作的组合判断,行为分析模块03对每个可疑行为规则所包含的所有动作检测标志进行行为匹配分析;如果所述可疑行为规则所包含的所有动作检测标志全部与至少一个标志位匹配,所述可疑行为规则确定存在威胁;多种动作规则的组合判断可以根据规则中定义的某种动作规则先后顺序、达标条件等情况实际做出调整,当所有的动作规则都被行为分析模块03判定为“匹配”的情况下,将由自动处置模块05自动调用行为规则中的自动响应脚本,并且传给威胁报警模块04进行报警,以此循环。其中,每个动作检测标志为由每个动作规则的所有的进程PID作为元素形成的一个可疑进程PID列表,所述标志位为所述可疑进程PID列表中的某个进程PID元素。
[0027] 进一步地,利用进程属性标示所述动作规则的进程是否有确定的威胁之后,所述方法还包括:实时判断获取的系统发生事件的数据以及附加信息的去向,其包括:判断所述事件的行为规则是否包含多个动作规则;若所述行为规则包含多个动作规则,判断所述多个动作规则之间是否存在时序性;若所述行为规则的所有动作规的进程均未被标示,则丢弃所述行为规则对应的所述事件的数据以及附加信息;若所述行为规则包含一个动作规则并所述动作规则被标示,则直接确定所述行为规则存在威胁;若所述行为规则包含彼此之间存在时序性的多个动作规则并所述多个动作规则被标示,则缓存所述行为规则对应的所述事件的数据以及附加信息并进行行为匹配分析;若所述行为规则包含彼此之间不存在时序性的多个动作规则并所述多个动作规则被标示,则对所述行为规则对应的所述事件的数据以及附加信息进行行为匹配分析。
[0028] 进一步地,引擎集成到系统中之后是运行与操作系统的Ring3级别连接,所以最底层的数据是由处于Ring0级的驱动程序进行主动/被动获取,并且通过接口返回给Ring3的程序之后,将数据按照一定的格式组织好之后交给动作检测模块01,引擎在启动的时候会向Ring3的服务程序中要求注册进程信息、网络通信、文件访问、动态库加载、注册表访问(Windows系统)这五个基础的回调通知。当发生这些事件的时候Ring3主动将发生这些事件的数据以及附加信息传递给引擎的动作检测模块01,由动作检测模块01对数据进行二次加工以及必要的丢弃或者是缓存。
[0029] 每个进程都有些自己独特的一些属性,比如:MD5、SHA-1、SHA-256、创建/修改/访问时间、签名信息、文件尺寸、文件头、文件类型、图标、可见字符串等信息。利用这些信息可以用来标示某一个进程是否有确定的威胁,当这样的数据足够多的时候就可以得到一个关于进程是否存在威胁的黑白名单列表,通过这些信息就可以快速的判断某一个文件是否含有威胁,并且通过这个进程在各种痕迹中找到与之相关的任何可用信息,以便于预判潜在威胁。上述进程属性以及关于进程是否存在威胁的黑白名单列表均作为基础信息存储在基础信息模块02中,如果某一种已知/未知的行为需要用到基础信息,则引擎会调用基础信息模块02中的基础信息进行判断。
[0030] 参考图3,本发明实施例中以树形的方式保存每一个所述可疑行为规则的所有动作规则以及每个所述动作规则的所有进程PID。通过图3可以看到,每一个Rule(即行为规则)在引擎中以树形的方式保存了有关的所有Action(动作规则),当将这些动作规则匹配之前,会记录其进程信息(图中利用进程PID表示)。从Rule1来解释的话,即:进程PID1同时匹配了Action1、Action2、Action3这三个动作规则,而这三个动作规则又组成了Rule1这个行为规则,所以Rule1这个行为规则被触发存在威胁,当触发行为规则之后,行为分析模块03调用威胁报警模块04向服务器发起报警。
[0031] 由于在行为分析模块03中保存了每一个触发可疑动作的进程信息,当这些信息被动作检测模块01捕获之后,会随之记录其进程信息、网络通信、文件访问、注册表、动态库加载列表等一系列相关的所有信息。如果行为分析模块03中关于某个行为规则的所有动作规则全部匹配之后,威胁报警模块04将会认为这个行为规则被触发(所有动作规则匹配),这个时候引擎会调用威胁报警模块04的上报威胁的功能将记录的所有信息一并上报到服务器,并调用自动处置模块05对发生该威胁之后的后续进行处理,如图4所示。
[0032] 在每一个可疑行为规则中,被划分成了三个大的部分,其中第一个部分是对行为规则的描述,第二部分为匹配数据,第三部分为自动响应脚本。在所有动作规则都成功匹配的情况下,自动处置模块05会自动的调用对应行为规则的自动响应脚本进行响应处理,而在处理的时候脚本可以针对文件、注册表、网络、模块/动态库、进程进行微粒度的控制,从而用最低的开销以及对系统最小的影响达到防止威胁攻击行为的达成。
[0033] 本实施例中公开的终端威胁检测与响应方法中的所述对每个可疑行为规则所包含的所有动作检测标志进行行为匹配分析的行为匹配算法包括:利用所述可疑行为规则所包含的所有动作规则的可疑进程PID列表组合匹配计算交集,参考图5,其包括:对每个可疑行为规则所包含的所有动作规则进行编号;根据编号顺序选取前两个动作规则的可疑进程PID列表进行组合计算交集;若前两个动作规则的可疑进程PID列表不存在交集,则停止计算,所述可疑行为规则确定暂时不存在威胁;若前两个动作规则的可疑进程PID列表存在交集,利用前次计算得出的可疑进程PID交集列表与下一个编号的动作规则的可疑进程PID列表组合计算交集;若前次计算得出的可疑进程PID交集列表与下一个编号的动作规则的可疑进程PID列表不存在交集,则停止计算,所述可疑行为规则确定暂时不存在威胁;若前次计算得出的可疑进程PID交集列表与下一个编号的动作规则的可疑进程PID列表存在交集,继续计算直到所述可疑行为规则所包含的所有动作规则的可疑进程PID列表组合计算完毕;若存在交集,则所述可疑行为规则确定存在威胁。
[0034] 要实现报警会面临一个比较棘手的问题,那就是如果动作、规则过多,数据结构过于复杂,那么用平时的方式的话,只能是从第一个行为规则的第一个匹配标记一直到最后一个行为规则的最后一个动作规则进行遍历,最难以接受的是这种遍历的动作规则会在实际应用中每一个操作系统动作规则都会进行一次遍历,例如:某个进程发生了五次文件操作事件(读取、写入、打开、关闭、删除都各算一次),而当前系统中有10条行为规则,每条规则有20个动作规则,而每个动作规则记录了10个进程信息,那么要这五次文件操作所需要付出的引擎开销则是10×20×10×5=10000次,这意味着引擎需要在内存中查找1万次才能将这五次文件操作消化掉。而操作系统在实际工作的时候,各种动作的总和可能会达到每秒上万次,在这种数量级的压力下,引擎中保存的数据会爆炸性增长,而且遍历速度异常缓慢,从而造成系统卡顿、引擎丢失数据、处理队列过快等一系列的问题。
[0035] 所以,为了节约系统的开销,提高引擎的运行速度,操作系统报告的每一个事件不可能做到每一项都要保存,在引擎中只是用动作检测模块01为行为规则的某一个项打上一个“已匹配”的标志,与此同时需要一个合适的行为匹配算法进行行为动作的匹配,而不降低速度。经过研究,本实施例先给每一种动作规则进行编号(实际应用中“动作”的数量并不多,为动作规则打标志其实属于顺手一做的事情),当每一个“标志”被打上之后,数据就有了规律,利用这些规律,我们就可以在行为分析模块03中使用比较科学的方式对行为规则进行判断。
[0036] 参考图6,本发明实施例公开的所述动作规则的可疑进程PID列表与所述动作规则的可疑进程PID列表或所述前次计算得出的可疑进程PID交集列表组合计算交集的方法包括:将两个动作规则的可疑进程PID列表分别定义为第一可疑进程PID匹配列表和第二可疑进程PID匹配列表,或将所述动作规则的可疑进程PID列表和所述前次计算得出的可疑进程PID交集列表分别定义为第一可疑进程PID匹配列表和第二可疑进程PID匹配列表,优选地,从所述两个动作规则的可疑进程PID列表或所述动作规则的可疑进程PID列表与所述动作规则的可疑进程PID列表中选取列表长度较短的一个作为第一可疑进程PID匹配列表,及选取列表长度较长的另一个作为第二可疑进程PID匹配列表;从第一可疑进程PID匹配列表中从前至后依次选取尚未匹配的进程PID元素L1(i);用选出的进程PID元素L1(i)与所述第二可疑进程PID匹配列表中的尚未匹配的进程PID元素L2(i)从前至后依次进行比较,其中,0≤i≤第一可疑进程PID匹配列表的长度或第二可疑进程PID匹配列表的长度;若从第二可疑进程PID匹配列表中尚未匹配的进程PID元素L2(i)中找到了一个与选出的进程PID元素L1(i)相同的进程PID元素L2(j),则在所述第二可疑进程PID匹配列表中将进程PID元素L2(j)与进程PID元素L2(i)交换位置,及i=i+1,进行下次迭代,其中,i≤j≤第二可疑进程PID匹配列表的长度;若从第二可疑进程PID匹配列表中尚未匹配的进程PID元素L2(i)中直到结尾也未找到与选出的进程PID元素L1(i)相同的元素,则在所述第一可疑进程PID匹配列表中将选出的进程PID元素L1(i)与尚未匹配的最后一个进程PID元素L1(k)交换位置,及将进程PID元素L1(k)交换位置后的作为新选出的进程PID元素L1(i),其中,k=第二可疑进程PID匹配列表的长度;用新选出的进程PID元素L1(i)与所述第二可疑进程PID匹配列表中的尚未匹配的进程PID元素L2(i)从前至后依次进行比较;若从第二可疑进程PID匹配列表中尚未匹配的进程PID元素L2(i)中找到了一个与新选出的进程PID元素L1(i)相同的进程PID元素L2(j),则在所述第二可疑进程PID匹配列表中将进程PID元素L2(j)与进程PID元素L2(i)交换位置,及将i=i+1,进行下次迭代,其中,i≤j≤第二可疑进程PID匹配列表的长度;若从第二可疑进程PID匹配列表中尚未匹配的进程PID元素L2(i)中直到结尾也未找到与新选出的进程PID元素L1(i)相同的元素,则将k=k-n,1≤n≤k-1,从小至大依次取值进行迭代;直到i=k-n时,迭代完成,此时,计算出的所述第一可疑进程PID匹配列表和所述第二可疑进程PID匹配列表的交集为{L1(0)、L1(1)、…L1(k-n-1)}或{L2(0)、L2(1)、…L2(k-n-1)}。
[0037] 参考图7,采用数组说明本发明实施例公开的动作规则的可疑进程PID列表与动作规则的可疑进程PID列表或前次计算得出的可疑进程PID交集列表组合计算交集的方法,图中使用1-9数字代表可疑行为规则中包含的动作规则的进程PID元素,利用由1-9数字形成的数组表示可疑进程PID列表以及可疑进程PID交集列表。图7中举例的两个数组分别代表定义后的第一可疑进程PID匹配列表和第二可疑进程PID匹配列表,首先从代表第一可疑进程PID匹配列表的第一个数组中选取第一个尚未匹配的数字7;用选出的数字7与代表第二可疑进程PID匹配列表的第二个数组中的尚未匹配的数字从前至后依次进行比较,此时,第二个数组中没有与数字7与相同的元素,因此,将7与第一个数组的最后一个数字6交换,用交换后的数字6与第二个数组中的尚未匹配的数字从前至后依次进行比较,在第二个数组中第17个数字也为6,这样,在第二个数组中将第17个数字6与第1个数字8进行交换,之后,将从第一个数组中依次选取下一个数字进行下次迭代;若第二个数组中存在与数字7与相同的元素,便直接第一个数组中依次选取下一个数字进行下次迭代;若第二个数组中不存在与数字6与相同的元素,便第一个数组的最后一个数字6依次向前选取数字交换与数字6进行交换进行下次迭代;直到所有的数字交换完毕,若第一个数组和第二个数组存在交集,便计算出第一个数组和第二个数组的交集。
[0038] 本实施例中公开的上述行为匹配算法仅需要两个可疑进程PID列表便可实现行为匹配分析,而不需要另外两个进程PID列表来存储每次迭代对比计算的结果,另外,也进一步优化了迭代对比计算,本实施例公开的上述行为匹配算法,一旦第二可疑进程PID匹配列表中的进程PID元素被对比后与第一可疑进程PID匹配列表中的进程PID元素相同,在下次迭代计算中将会被排除,这样,将不用重复对其计算,优化了迭代计算过程,节省了迭代计算的时间,使行为匹配算法更快。
[0039] 本发明实施例中上述描述的动作规则用于描述一个“威胁”的最低单位,是组成行为规则的一些最微观的描述,这些动作规则使用规则表述语言对操作系统、网络、文件等系统行为进行描述,并进行记录,以此作为依据提供给行为分析模块使用。本发明实施例中上述描述的行为规则为由一个或者多个动作规则组成的一套规则,这个规则中将没有任何业务逻辑的动作规则组合,并且限定(或不限定)每个动作规则的发生时序、次数,并且将动作规则组合之后,用于描述一个“威胁行为”。
[0040] 虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

当前第1页 第1页 第2页 第3页