面向容器主机平台的轻量级攻击检测方法及装置制造方法及图纸

技术编号:36025615 阅读:15 留言:0更新日期:2022-12-21 10:23
本发明专利技术公开了一种面向容器主机平台的轻量级攻击检测方法及装置。所述方法包括获取被监控函数和需要监控的漏洞信息;根据所述漏洞信息的名称,通过创建vulner_info结构体,以使相应的private结构体中存储需要检查的系统调用参数;当内核在即将执行所述被监控函数时,调用回调函数,以使所述回调函数获取所述被监控函数在执行过程中产生的系统调用参数值;将private结构体的地址传递给回调函数,以使回调函数访问所述private结构体;将所述系统调用参数值与所述需要检查的系统调用参数进行比对,得到所述被监控函数的攻击检测结果。本发明专利技术实现了较小的性能开销的基础上,完成逃逸攻击的检测。攻击的检测。攻击的检测。

【技术实现步骤摘要】
面向容器主机平台的轻量级攻击检测方法及装置


[0001]本专利技术涉及计算机网络安全领域,用于对容器主机平台进行攻击检测,更具体地是一种面向容器主机平台的轻量级攻击检测方法及装置。

技术介绍

[0002]容器技术是一种操作系统级的虚拟化技术,其主要依托于操作系统内核提供的资源隔离和抽象机制。Linux内核的Namespace和Cgroup机制是容器技术的基石,前者用以实现资源的隔离,后者主要是为了限制资源的使用。相对于传统的虚拟化技术,容器技术以其启动快、运行效率高成为了当前云平台的首选。容器中的进程运行在一个隔离的环境中,其拥有独立的网络栈和文件系统视图,无法获取主机或者主机上其他容器中运行的进程信息。容器中的进程使用的物理资源可以被严格限制,例如:内存、CPU使用率、IO吞吐量等。
[0003]相较于虚拟机,容器拥有了较高的执行效率,但是虚拟机却拥有比容器更强的隔离性。容器中的进程虽然运行在不同的Namespace中,但是其底层仍然共享着同一个操作系统内核。正是由于容器共享内核的特性,利用Linux内核漏洞进行容器逃逸的攻击屡见不鲜。目前Linux内核已经达到了2700万行的量级,每年都会公开新的提权漏洞。容器中的进程可以利用内核漏洞逃逸出容器环境,进而获得所在主机的完整控制权。容器进程通过执行特定的系统调用,构造了内核的内存布局,并且触发漏洞函数的执行。容器进程在劫持了内核的控制流后,可以执行特定的内核函数切换进程所在的Namespaces,进而达到逃逸的目的。因此容器云供应商和其他租户的机密性和可用性会受到威胁。为了能够及时发现攻击行为,减少攻击者的攻击窗口,有必要在云平台上安装入侵检测系统。
[0004]主机的入侵检测系统主要用来监控主机的运行情况,并对潜在的攻击行为发出告警。其一般由事件发生器、事件分析器、响应单元和事件数据库组成。事件发生器从系统中获得事件,并将事件发送到事件分析器。事件分析器分析该事件并将事件和分析结果发送到响应单元和事件数据库。基于流量的主机入侵检测系统主要通过检测每个网络数据包,按照预先定义好的规则进行判断,如果发现异常就立即产生告警或者对数据包进行拦截。同时,也存在基于主机运行状态的入侵检测系统,其主要获取操作系统的运行指标进行判断。基于运行状态的入侵检测系统由于需要频繁拦截操作系统的事件,会对操作系统带来较大的性能开销。所以对于容器平台说来,更需要一种轻量级的入侵检测系统。

技术实现思路

[0005]为解决上述问题,本专利技术提出一种面向容器主机平台的轻量级攻击检测方法及装置,在较小性能开销的基础上,完成逃逸攻击的检测。其获取内核关键函数的执行情况,与预定义的规则进行匹配,匹配成功则产生告警信息。
[0006]为达到上述目的,本专利技术的技术方案包括:
[0007]一种面向容器主机平台的轻量级攻击检测方法,所述方法包括:
[0008]获取被监控函数和需要监控的漏洞信息;
[0009]根据所述漏洞信息的名称,创建所述漏洞信息相应的vulner_info结构体;其中,所述vulner_info结构体中的数据包括:所述漏洞信息的名称、系统调用号、所述漏洞信息的系统调用参数、所述系统调用参数的个数、掩码和创建的对应fops_node结构体的地址,所述掩码保存所述系统调用参数的待检查项。所述fops_node结构体中的数据包括:所述被监控函数的名称和ftrace_ops结构体的地址。所述ftrace_ops结构体中封装一个private结构体,所述private结构体中的数据包括:基于所述掩码和所述系统调用参数得到的需要检查的系统调用参数;
[0010]当内核在即将执行所述被监控函数时,调用回调函数,以使所述回调函数获取所述被监控函数在执行过程中产生的系统调用参数值;
[0011]将所述private结构体的地址传递给所述回调函数,以使所述回调函数访问所述private结构体;
[0012]将所述系统调用参数值与所述需要检查的系统调用参数进行比对,得到所述被监控函数的攻击检测结果。
[0013]进一步地,所述根据所述漏洞信息的名称,获取所述漏洞信息相应的vulner_info结构体,包括:
[0014]根据所述漏洞信息的名称,在漏洞链表的结点中查找该漏洞信息的名称的vulner_info结构体;其中,每一所述结点为一个vulner_info结构体,所述漏洞链表由至少一个所述结点组成;
[0015]在查找到所述漏洞信息相应的vulner_info结构体的情况下,将所述vulner_info结构体设置在面向容器主机平台的监控系统中;
[0016]在未查找到所述漏洞信息相应的vulner_info结构体相应的vulner_info结构体的情况下,则基于所述漏洞信息,创建一个vulner_info结构体,并将该vulner_info结构体分别加入到所述漏洞链表中,以及设置在面向容器主机平台的监控系统中。
[0017]进一步地,所述当内核在即将执行所述被监控函数时,调用回调函数,以使回调函数结合所述系统调用号,获取所述被监控函数在执行过程中产生的系统调用参数值,包括:
[0018]获取内核中系统调用表的地址;
[0019]基于所述系统调用号与所述系统调用表的地址,获取__x64_sys_(sycallname)内核函数的函数名,以使所述__x64_sys_(sycallname)内核函数作为所述的被监控函数,得到所述被监控函数在执行过程中产生的系统调用参数值;
[0020]所述回调函数通过所述_x64_sys_(sycallname)内核函数中的参数pt_regs与所述回调函数中的参数pt_regs,得到所述系统调用参数值。
[0021]进一步地,所述获取内核中系统调用表的地址,包括:
[0022]为kallsyms_lookup_name函数注册一个kprobe结构体;
[0023]在kprobe结构体中获取到所述kallsyms_lookup_name函数内核中的基址;
[0024]通过所述基址获取到系统调用表的地址。
[0025]进一步地,所述基于所述系统调用号与所述系统调用表的地址,获取
[0026]__x64_sys_(sycallname)内核函数的函数名,包括:
[0027]根据所述系统调用号,计算偏移;
[0028]基于所述系统调用表的地址与所述偏移,得到所述被监控函数的系统调用地址;
[0029]根据所述系统调用地址,得到__x64_sys_(sycallname)内核函数的系统调用名。
[0030]进一步地,所述将所述漏洞信息的系统调用参数与所述被监控函数在运行过程中需要检查的系统调用参数进行比对,得到所述被监控函数的攻击检测结果之后,还包括:
[0031]在所述面向容器主机平台中注册一个杂项设备,并实现一个读文件操作的函数;
[0032]在所述攻击检测结果为函数攻击的情况下,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向容器主机平台的轻量级攻击检测方法,其特征在于,所述方法包括:获取被监控函数和需要监控的漏洞信息;根据所述漏洞信息的名称,创建所述漏洞信息相应的vulner_info结构体;其中,所述vulner_info结构体中的数据包括:所述漏洞信息的名称、系统调用号、所述漏洞信息的系统调用参数、所述系统调用参数的个数、掩码和创建的对应fops_node结构体的地址,所述掩码保存所述系统调用参数的待检查项,所述fops_node结构体中的数据包括:所述被监控函数的名称和ftrace_ops结构体的地址,所述ftrace_ops结构体中封装一个private结构体,所述private结构体中的数据包括:基于所述掩码和所述系统调用参数得到的需要检查的系统调用参数;当内核在即将执行所述被监控函数时,调用回调函数,以使所述回调函数获取所述被监控函数在执行过程中产生的系统调用参数值;将所述private结构体的地址传递给所述回调函数,以使所述回调函数访问所述private结构体;将所述系统调用参数值与所述需要检查的系统调用参数进行比对,得到所述被监控函数的攻击检测结果。2.如权利要求1所述的方法,其特征在于,所述根据所述漏洞信息的名称,获取所述漏洞信息相应的vulner_info结构体,包括:根据所述漏洞信息的名称,在漏洞链表的结点中查找该漏洞信息的名称的vulner_info结构体;其中,每一所述结点为一个vulner_info结构体,所述漏洞链表由至少一个所述结点组成;在查找到所述漏洞信息相应的vulner_info结构体的情况下,将所述vulner_info结构体设置在面向容器主机平台的监控系统中;在未查找到所述漏洞信息相应的vulner_info结构体相应的vulner_info结构体的情况下,则基于所述漏洞信息,创建一个vulner_info结构体,并将该vulner_info结构体分别加入到所述漏洞链表中,以及设置在面向容器主机平台的监控系统中。3.如权利要求1所述的方法,其特征在于,所述当内核在即将执行所述被监控函数时,调用回调函数,以使回调函数结合所述系统调用号,获取所述被监控函数在执行过程中产生的系统调用参数值,包括:获取内核中系统调用表的地址;基于所述系统调用号与所述系统调用表的地址,获取__x64_sys_(sycallname)内核函数的函数名,以使所述__x64_sys_(sycallname)内核函数作为所述的被监控函数,得到所述被监控函数在执行过程中产生的系统调用参数值;所述回调函数通过所述_x64_sys_(sycallname)内核函数中的参数pt_regs与所述回调函数中的参数pt_regs,得到所述系统调用参数值。4.如权利要求3所述的方法...

【专利技术属性】
技术研发人员:宋振宇徐少文郭璇刘歌贾晓启黄庆佳杜海超周梦婷王睿怡唐静
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:

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

1