CN115576649A - 一种基于行为监控的容器运行时安全检测方法 - Google Patents

一种基于行为监控的容器运行时安全检测方法 Download PDF

Info

Publication number
CN115576649A
CN115576649A CN202211301948.1A CN202211301948A CN115576649A CN 115576649 A CN115576649 A CN 115576649A CN 202211301948 A CN202211301948 A CN 202211301948A CN 115576649 A CN115576649 A CN 115576649A
Authority
CN
China
Prior art keywords
container
data
monitoring
kernel
function
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.)
Pending
Application number
CN202211301948.1A
Other languages
English (en)
Inventor
杨川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Qiruike Technology Co Ltd
Original Assignee
Sichuan Qiruike Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sichuan Qiruike Technology Co Ltd filed Critical Sichuan Qiruike Technology Co Ltd
Priority to CN202211301948.1A priority Critical patent/CN115576649A/zh
Publication of CN115576649A publication Critical patent/CN115576649A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于行为监控的容器运行时安全检测方法,通过采用在系统内核中植入内核行为监控模块监控内核行为,同时根据行为所属用户组判断行为的真实来源,基于容器内部实时行为分析实现了容器运行安全监控,可以保证容器运行过程中的安全性,可应用于绝大多数需要对容器安全进行保护和监控的场景。

Description

一种基于行为监控的容器运行时安全检测方法
技术领域
本发明涉及容器安全检测技术领域,尤其涉及一种基于行为监控的容器运行时安全检测方法。
背景技术
随着容器化的重要甚至核心业务越来越多,容器安全的重要性也在不断提高。在CNCF2020年度的调研报告中,已经有83%的组织在生产环境中选择Kubernetes,容器已经成为应用交付的标准,也是云原生时代计算资源和配套设施的交付单元,然而,由于在隔离和安全性方面存在的天然缺陷,安全一直是企业进行容器改造化进程中关注的核心问题之一。
目前主流的容器安全方案主要的关注点包括:
容器环境基础设施的安全性:比如主机上的安全配置是否会影响到其上面运行的容器,主机上的安全漏洞是否会影响到容器,主机上的恶意进程是否会影响到容器,容器内的进程是否可以利用到主机上的安全漏洞等。
镜像安全:容器从一层层的文件创建而来。容器社区通常将这些文件称为"容器镜像"。对安全而言,基础镜像至关重要,因为它要用做创建衍生镜像的起点。容器安全从寻找基础镜像的可信来源开始。不过,即使是使用受信任的镜像,添加应用和更改配置也会带来新的变数。在引入外部内容以构建应用时,需要预先考虑内容管理。
容器的运行时安全:比如运行的容器间隔离是否充分,容器间的通信是否是安全的,容器内的恶意程序是否会影响到主机或者其它容器,容器的资源使用情况是否是安全的等。
容器生态的安全性,比如Docker/Kubernetes自身的安全性如何,ServiceMesh/Serverless对容器安全有什么影响,容器中安全密钥的管理和传统环境有什么不同,容器化后的数据隐私保护跟传统的数据隐私保护是否一致等。
现有技术在对容器运行安全方面主要关注在于容器与宿主机的隔离和容器间通信,以及容器内部是否存在恶意程序,忽略了对容器的行为监控,在容器内部不存在漏洞或恶意程序的情况下,可能由于创建者的配置错误导致容器存在权限管理问题,导致攻击者操作容器在内部进行一系列危险行为,从而导致容器逃逸;现有技术的方案缺少对容器内部行为的动态跟踪,是容器保护方案中的一个盲区。
发明内容
本发明的目的就在于为了提供一种基于行为监控的容器运行时安全检测方法,本发明采用系统内核调用监控和行为归属判断的方式,解决容器运行过程中缺乏容器内部行为实时跟踪监控的问题。
本发明通过以下技术方案来实现上述目的:
一种基于行为监控的容器运行时安全检测方法,包括以下步骤:
步骤1,采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的进程监控;
采用文件描述符监控的方式实现对容器内文件增删改查行为的监控;
采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的网络行为监控;
采用伪终端监控技术实现容器内命令执行的实时监控;
步骤2,添加数据处理模块;
步骤3,采集数据完成后,将数据回传到用户空间,在用户空间中对数据进行格式化,并上传至server端进行分析处理;server端收到数据后,对采集的进程数据、文件数据、网络数据进行实时分析,判断是否存在异常行为并实时告警;
步骤4,将上述逻辑代码编译封装为二进制可执行文件,并置于待监控容器的宿主机上,赋予相关权限运行。
进一步方案为,所述步骤1中,kprobes用于跟踪到Linux内核中的函数入口或返回点,进程监控用于跟踪内核函数中的execve的函数调用,execve是内核级系统调用,所有进程的创建都需要调用它。
在execve函数入口添加一个bpf程序挂钩提取出创建进程的命令以及参数,在execve函数返回的时候再添加一个挂钩提取出进程创建后的pid,ppid,以及创建进程的结果信息。
进一步方案为,所述步骤1中,基于linux系统的内核特性,使用Inotify监控文件系统,添加需要监控的敏感文件目录的文件描述符,inotify基于监控目标生成watch描述符跟踪事件触发,实现对文件操作的动态监控,比如删除、读、写和卸载操作。
进一步方案为,所述步骤1中,跟踪内核函数中的tcp_v4_connect的函数调用,在tcp_v4_connect函数入口和返回都添加一个bpf程序挂钩提取出创建tcp/ipv4连接的目的IP,源IP,目的端口,源端口,创建的进程PID等信息。
进一步方案为,所述步骤1中,对于每个终端或者容器创建的shell进程,TTYdriver都会建立一个TTY设备与它对应,无论是使用本地终端直连的方式还是ssh远程连接的方式,shell命令执行的输入输出都是经过tty/pts,所以采用bpf跟踪技术实现对内核事件中的tty_write系统函数进行动态跟踪,监控所有的容器进程的tty/pts伪终端的输入与输出。
进一步方案为,所述步骤2中,探针收集数据后,不能立即将数据上报,需要判断数据来源是否是容器而非容器宿主机:在收集数据时同时收集产生数据的进程/系统调用所属的用户组,判断是否属于容器用户组,只提取主机上与正在运行的容器进程的数据,避免与宿主机数据混淆导致检测结果不准确。
本发明的有益效果在于:
本发明的一种基于行为监控的容器运行时安全检测方法,通过采用在系统内核中植入内核行为监控模块监控内核行为,同时根据行为所属用户组判断行为的真实来源,基于容器内部实时行为分析实现了容器运行安全监控,可以保证容器运行过程中的安全性,可应用于绝大多数需要对容器安全进行保护和监控的场景。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
实现容器动态行为监控的安全方案为:设计一个安全探针程序,运行在容器运行的主机上或注入到各个启动运行的容器中去实时采集容器中的进程创建,网络连接,文件变动等信息;同时设计一个server端用于接收探针程序的上报数据,对采集到的行为进行实时分析,实现容器行为的实时运行监控。
探针基于BPF技术,探针分为用户空间程序和内核程序两部分;用户空间程序负责加载BPF字节码至内核,如需要也会负责读取内核回传的统计信息或者事件详情;内核中的BPF字节码负责在内核中执行特定事件,如需要也会将执行的结果通过maps或者perf-event事件发送至用户空间;其中用户空间程序与内核BPF字节码程序可以使用map结构实现双向通信,为内核中运行的BPF字节码程序提供了更加灵活的控制。
在任一实施例中,如图1所示,本发明的一种基于行为监控的容器运行时安全检测方法,包括:
容器动态行为监控的具体实现方案如下:
采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的进程监控:kprobes可以跟踪到Linux内核中的函数入口或返回点,进程监控主要跟踪的是内核函数中的execve的函数调用,execve是内核级系统调用,所有进程的创建都需要调用它。
在execve函数入口添加一个bpf程序挂钩提取出创建进程的命令以及参数等,在execve函数返回的时候再添加一个挂钩提取出进程创建后的pid,ppid,以及创建进程的结果等信息。
采用文件描述符监控的方式实现对容器内文件增删改查行为的监控:基于linux系统的内核特性,使用Inotify监控文件系统,添加需要监控的敏感文件目录的文件描述符,inotify基于监控目标生成watch描述符跟踪事件触发,实现对文件操作的动态监控,比如删除、读、写和卸载操作等。
采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的网络行为监控:跟踪内核函数中的tcp_v4_connect的函数调用,在tcp_v4_connect函数入口和返回都添加一个bpf程序挂钩提取出创建tcp/ipv4连接的目的IP,源IP,目的端口,源端口,创建的进程PID等信息。
采用伪终端监控技术实现容器内命令执行的实时监控:对于每个终端或者容器创建的shell进程,TTY driver都会建立一个TTY设备与它对应,无论是使用本地终端直连的方式还是ssh远程连接的方式,shell命令执行的输入输出都是经过tty/pts,所以采用bpf跟踪技术实现对内核事件中的tty_write系统函数进行动态跟踪,监控所有的容器进程的tty/pts伪终端的输入与输出。
添加数据处理模块:探针收集数据后,不能立即将数据上报,需要判断数据来源是否是容器而非容器宿主机:在收集数据时同时收集产生数据的进程/系统调用所属的用户组,判断是否属于容器用户组,只提取主机上与正在运行的容器进程的数据,避免与宿主机数据混淆导致检测结果不准确。
采集数据完成后,将数据回传到用户空间,在用户空间中对数据进行格式化,并上传至server端进行分析处理;server端收到数据后,对采集的进程数据、文件数据、网络数据进行实时分析,判断是否存在异常行为并实时告警。
将上述逻辑代码编译封装为二进制可执行文件,并置于待监控容器的宿主机上,赋予相关权限运行。
在一个具体实施例中,如图1所示,本发明的一种基于行为监控的容器运行时安全检测方法,包括:
监控探针的实现可利用BCC基于BPF的Linux IO分析,网络,监控等工具集合,来实现对主机上容器进程的进程创建,网络链接,文件篡改等事件信息进行采集与监控;可以使用LLVM或者GCC工具将编写的BPF代码程序编译成BPF字节码;然后使用加载程序Loader将字节码加载至内核;内核使用验证器(verfier)组件保证执行字节码的安全性,以避免对内核造成灾难,在确认字节码安全后将其加载对应的内核模块执行。
BPF相关的程序程序类型可能是kprobes/uprobes/tracepoint/perf_events中的一个或多个,其中:
kprobes:实现内核中动态跟踪。kprobes可以跟踪到Linux内核中的函数入口或返回点,但它不是稳定ABI接口,可能会因为内核版本变化导致跟踪失效。理论上可以跟踪到所有导出的符号/proc/kallsyms;
uprobes:用户级别的动态跟踪。与kprobes类似,只是跟踪的函数为用户程序中的函数;
tracepoints:内核中静态跟踪。tracepoints是内核开发人员维护的跟踪点,能够提供稳定的ABI接口,但是由于是研发人员维护,数量和场景可能受限;
perf_events:定时采样和PMC。
内核中运行的BPF字节码程序可以使用两种方式将测量数据回传至用户空间:maps方式可用于将内核中实现的统计摘要信息(比如测量延迟、堆栈信息)等回传至用户空间;perf-event用于将内核采集的事件实时发送至用户空间,用户空间程序实时读取分析。
探针用户态的数据可以采用消息队列的方式发送至server端进行分析处理,如采用kafka、es等实现采集信息的实时收发。
监控探针可以选择运行在宿主机上或直接运行在容器环境中;主机中运行的优点在于一个探针即可监控当前环境下所有容器集群的安全状态;缺点在于需要区分采集的信息来自主机还是容器,同时需要区分不同容器间的数据;探针在容器中运行的优点在于无需进行数据过滤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

Claims (6)

1.一种基于行为监控的容器运行时安全检测方法,其特征在于,包括以下步骤:
步骤1,采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的进程监控;
采用文件描述符监控的方式实现对容器内文件增删改查行为的监控;
采用bpf跟踪技术实现对内核事件中的kprobes进行动态跟踪实现容器内的网络行为监控;
采用伪终端监控技术实现容器内命令执行的实时监控;
步骤2,添加数据处理模块;
步骤3,采集数据完成后,将数据回传到用户空间,在用户空间中对数据进行格式化,并上传至server端进行分析处理;server端收到数据后,对采集的进程数据、文件数据、网络数据进行实时分析,判断是否存在异常行为并实时告警;
步骤4,将上述逻辑代码编译封装为二进制可执行文件,并置于待监控容器的宿主机上,赋予相关权限运行。
2.如权利要求1所述的一种基于行为监控的容器运行时安全检测方法,其特征在于,所述步骤1中,kprobes用于跟踪到Linux内核中的函数入口或返回点,进程监控用于跟踪内核函数中的execve的函数调用;
在execve函数入口添加一个bpf程序挂钩提取出创建进程的命令以及参数,在execve函数返回的时候再添加一个挂钩提取出进程创建后的pid,ppid,以及创建进程的结果信息。
3.如权利要求1所述的一种基于行为监控的容器运行时安全检测方法,其特征在于,所述步骤1中,基于linux系统的内核特性,使用Inotify监控文件系统,添加需要监控的敏感文件目录的文件描述符,inotify基于监控目标生成watch描述符跟踪事件触发,实现对文件操作的动态监控。
4.如权利要求1所述的一种基于行为监控的容器运行时安全检测方法,其特征在于,所述步骤1中,跟踪内核函数中的tcp_v4_connect的函数调用,在tcp_v4_connect函数入口和返回都添加一个bpf程序挂钩提取出创建tcp/ipv4连接的目的IP,源IP,目的端口,源端口,创建的进程PID信息。
5.如权利要求1所述的一种基于行为监控的容器运行时安全检测方法,其特征在于,所述步骤1中,对于每个终端或者容器创建的shell进程,TTY driver建立一个TTY设备与其对应,shell命令执行的输入输出需经过tty/pts,采用bpf跟踪技术实现对内核事件中的tty_write系统函数进行动态跟踪,监控所有的容器进程的tty/pts伪终端的输入与输出。
6.如权利要求1所述的一种基于行为监控的容器运行时安全检测方法,其特征在于,所述步骤2中,探针收集数据后,不能立即将数据上报,需要判断数据来源是否是容器而非容器宿主机:在收集数据时同时收集产生数据的进程/系统调用所属的用户组,判断是否属于容器用户组,只提取主机上与正在运行的容器进程的数据。
CN202211301948.1A 2022-10-24 2022-10-24 一种基于行为监控的容器运行时安全检测方法 Pending CN115576649A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211301948.1A CN115576649A (zh) 2022-10-24 2022-10-24 一种基于行为监控的容器运行时安全检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211301948.1A CN115576649A (zh) 2022-10-24 2022-10-24 一种基于行为监控的容器运行时安全检测方法

Publications (1)

Publication Number Publication Date
CN115576649A true CN115576649A (zh) 2023-01-06

Family

ID=84587107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211301948.1A Pending CN115576649A (zh) 2022-10-24 2022-10-24 一种基于行为监控的容器运行时安全检测方法

Country Status (1)

Country Link
CN (1) CN115576649A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116644423A (zh) * 2023-07-25 2023-08-25 山东捷讯通信技术有限公司 一种容器攻击的监控的方法及装置
CN117290857A (zh) * 2023-11-27 2023-12-26 中孚安全技术有限公司 基于eBPF实现云原生安全的系统、方法、设备及介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116644423A (zh) * 2023-07-25 2023-08-25 山东捷讯通信技术有限公司 一种容器攻击的监控的方法及装置
CN117290857A (zh) * 2023-11-27 2023-12-26 中孚安全技术有限公司 基于eBPF实现云原生安全的系统、方法、设备及介质
CN117290857B (zh) * 2023-11-27 2024-03-26 中孚安全技术有限公司 基于eBPF实现云原生安全的系统、方法、设备及介质

Similar Documents

Publication Publication Date Title
Kil et al. Remote attestation to dynamic system properties: Towards providing complete system integrity evidence
CN115576649A (zh) 一种基于行为监控的容器运行时安全检测方法
TWI575397B (zh) 利用運行期代理器及動態安全分析之應用程式逐點保護技術
EP3232359B1 (en) Identification device, identification method, and identification program
CN111400757B (zh) 防止安卓第三方库中native代码泄露用户隐私的方法
CN110489310B (zh) 一种记录用户操作的方法、装置、存储介质及计算机设备
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
CN114254304A (zh) 容器安全入侵检测方法、装置、计算机设备及存储介质
CN104102878A (zh) 一种Linux平台下的恶意代码分析方法及系统
CN110162979A (zh) 一种Web API的安全测试方法、装置、电子设备及存储介质
Tabrizi et al. Design-level and code-level security analysis of IoT devices
US20240143739A1 (en) Intelligent obfuscation of mobile applications
US20230376610A1 (en) Non-Intrusive Method of Detecting Security Flaws of a Computer Program
CN112883369A (zh) 一种可信虚拟化系统
CN117032894A (zh) 容器安全状态检测方法、装置、电子设备及存储介质
Reeves Autoscopy Jr.: Intrusion detection for embedded control systems
Ruan et al. Analyzing android application in real-time at kernel level
Fetzer et al. Switchblade: enforcing dynamic personalized system call models
CN113434217B (zh) 漏洞扫描方法、装置、计算机设备及介质
CN111897789B (zh) 一种日志生成方法及装置
CN114969760A (zh) 漏洞检测方法及装置、计算机可读介质和电子设备
KR20230156129A (ko) 블록체인 기반의 책임 있는 분산 컴퓨팅 시스템
CN113032785A (zh) 一种文档检测方法、装置、设备及存储介质
Chen et al. Testing approach of component security based on dynamic monitoring
Cornelius et al. Recommended practice: Creating cyber forensics plans for control systems

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