DaemonAgent 是用户态程序,主要是处理各个插桩发送的规则模板采样数据,根据强大的Rule规则引擎,计算链路威胁度及收集清洗,通过远端下发的配置来控制其他插桩插件。
DaemonAgent 力争适用于生产环境的交互应用安全测试防护&主机及容器威胁风险监控防护于一体

功能蓝图

DaemonAgent 借鉴了开源的强大力量, 基本代码都靠借鉴了以下项目

项目及资料预览:







Collector组件

基础设施

  • Nacos注册发现
  • gRpc/Http接口开设

自身搜集能力

系统支撑情况

现支持: Linux(CentOS 6及以上、Debian 9及以上、Ubuntu 16及以上)、其他操作系统(suse、银河麒麟、统信uos)
后续支持: Windows(Win10[1507\1511\1703\1709\1803\1809\1903\19h2\20h2\21h1\21h2]、win11[22h2\21h2]、Win7[08R2\SP1]、Server08\Server08R2、Server12、Server16、Server19、Server22)、Macos

系统基线

基线能力 业务需要 能力具备 优先级
CPU信息 1 1 0
内存信息 1 1 1
磁盘加载 0 1 0
磁盘使用 1 1 0
内核信息 1 1 1
发行版信息 1 1 1
系统限制 0 1 0
系统信息(主机名之类) 1 1 1
系统控制配置 1 1 0
系统负载 0 1 0

供应链基线

基线能力 业务需要 能力具备 优先级
APT 0 1 0
yum 0 1 0
pip 0 0 0
npm 0 0 0

软件基线

基线能力 业务需要 能力具备 优先级
deb包 1 1 0
rpm包 1 1 0
emerge包(gentoo) 0 1 0
python包 0 1 0
npm包 0 0 0

配置基线

基线能力 业务需要 能力具备 优先级
主机列表 0 1 0
协议列表 0 1 0
服务端口列表 0 1 0
ld配置 0 0 0
登录配置 0 0 0
shell配置 0 0 0
fstab配置 0 0 0
web配置 0 0 0
DB配置 0 0 0
MQ配置 0 0 0

用户基线

基线能力 业务需要 能力具备 优先级
ssh配置 0 1 0
用户信息 1 1 0
组信息 0 1 0
当前登录用户 0 1 0
命令历史 0 1 1
sudo配置 0 1 0

网络基线

基线能力 业务需要 能力具备 优先级
网卡信息 1 1 0
地址信息 1 1 0
ARP信息 0 1 0
路由信息 1 1 0
DNS信息 0 1 0
防火墙信息 0 1 0

服务基线

基线能力 业务需要 能力具备 优先级
/etc/init.d 0 0 0
systemd 0 0 0
crontab 0 1 0
/etc/xdg/autostart/ 0 0 0

容器基线

基线能力 业务需要 能力具备 优先级
docker信息 0 1 0
docker镜像 0 1 0
docker卷 0 1 0
docker网络 0 1 0
docker容器 0 1 0
docker进程列表 0 1 1
docker容器文件变动 0 1 1

自身能力集成

账号

账号名、组名、状态(启用/禁用)、登录方式(key/密码)、最后登录时间、描述

端口

端口号、类型(对内/对外)、协议(tcp/tcp6/udp)、进程(进程名)、进程Id、进程路径、服务(是否有服务)、本地地址、远程地址

进程

进程名、Pid、进程分类(系统/非系统)、状态(僵尸、不可中断睡眠进程、运行、暂停、退出、睡眠)、进程版本(官方软件带版本)、进程路径、进程参数、进程用户、启动时间、父进程名、父进程Pid、父进程用户, 所属容器Id, 所属容器名称

服务

服务名、可执行文件路径、启动类型(手动/自动/禁用/自动延迟)、模块文件路径、状态(启动、停止、暂停)、描述

OsPackage(涛哥去实施)

软件名称、版本、大小、安装路径、安装时间、服务状态(启用/禁用/无服务关联)、漏洞情况、修复意见

内核模块

模块名称、模块描述、模块版本、模块路径、模块大小、被依赖模块数量(顺便展示依赖的模块)

计划任务

任务名称、用户名、执行周期、文件路径、命令行

启动项

启动项名称、用户、启动状态(启用/禁用)、命令行、描述

容器

容器名称、容器Id、镜像名、状态(开始/创建/暂停/运行/停止/删除)、镜像id、运行进程Pid(容器内外Pid)

用量

Node机器节点用量、容器用量

k8s集群业务侧

Pod、Service、Endpoint、Role、ClusterRole、Secrets、ServiceAccount

K8s集群设施侧

Kubelet配置合规、CNI配置情况、Docker配置情况






Scanner组件

基础设施

  • Nacos注册发现
  • gRpc/Http接口开设

端上检测能力

AV

可疑静态文件

OsPkg

扩展系统软件生态

操作系统 支撑版本 目标软件包 漏洞检测情况
Alpine Linux 2.2 - 2.7, 3.0 - 3.17, edge Installed by apk NO
Wolfi Linux (n/a) Installed by apk NO
Red Hat Universal Base Image1 7, 8, 9 Installed by yum/rpm NO
Red Hat Enterprise Linux 6, 7, 8 Installed by yum/rpm NO
CentOS 6, 7, 8 Installed by yum/rpm NO
AlmaLinux 8 Installed by yum/rpm NO
Rocky Linux 8 Installed by yum/rpm NO
Oracle Linux 5, 6, 7, 8 Installed by yum/rpm NO
CBL-Mariner 1.0, 2.0 Installed by yum/rpm NO
Amazon Linux 1, 2, 2022 Installed by yum/rpm NO
openSUSE Leap 42, 15 Installed by zypper/rpm NO
SUSE Enterprise Linux 11, 12, 15 Installed by zypper/rpm NO
Photon OS 1.0, 2.0, 3.0, 4.0 Installed by tdnf/yum/rpm NO
Debian GNU/Linux wheezy, jessie, stretch, buster, bullseye Installed by apt/apt-get/dpkg NO
Ubuntu All versions supported by Canonical Installed by apt/apt-get/dpkg NO
Distroless2 Any Installed by apt/apt-get/dpkg NO

LanguagePkg

扩展软件供应链生态

CIS

端上搜集能力

Container/Image

WalkDir/Filesystem

Repository(仓库)






Armor组件

基础设施

  • Nacos注册发现
  • gRpc/Http接口开设

监控维度

Audit审计

Linux系统层级

事件类型 解释 业务解析 业务优先级
ADD_GROUP 添加用户空间组时触发。 0 0
ADD_USER 添加用户空间用户帐户时触发。 0 0
ANOM_ABEND 当进程异常结束时触发(带有可能导致核心转储的信号,如果启用)。 0 0
ANOM_ACCESS_FS 当文件或目录访问异常结束时触发。 0 0
ANOM_ADD_ACCT 当用户空间帐户添加异常结束时触发。 0 0
ANOM_AMTU_FAIL 当检测到抽象机器测试实用程序 (AMTU) 失败时触发。 0 0
ANOM_CRYPTO_FAIL 当检测到密码系统出现故障时触发。 0 0
ANOM_DEL_ACCT 当用户空间帐户删除异常结束时触发。 0 0
ANOM_EXEC 当文件的执行异常结束时触发。 0 0
ANOM_LOGIN_ACCT 当帐户登录尝试异常结束时触发。 0 0
ANOM_LOGIN_FAILURES 当达到失败登录尝试的限制时触发。 0 0
ANOM_LOGIN_LOCATION 当从禁止位置进行登录尝试时触发。 0 0
ANOM_LOGIN_SESSIONS 当登录尝试达到最大并发会话数时触发。 0 0
ANOM_LOGIN_TIME 当登录尝试被阻止时触发,例如pam_time. 0 0
ANOM_MAX_DAC 当达到最大自主访问控制 (DAC) 失败次数时触发。 0 0
ANOM_MAX_MAC 当达到最大强制访问控制 (MAC) 失败次数时触发。 0 0
ANOM_MK_EXEC 当文件可执行时触发。 0 0
ANOM_MOD_ACCT 当用户空间账户修改异常结束时触发。 0 0
ANOM_PROMISCUOUS 当设备启用或禁用混杂模式时触发。 0 0
ANOM_RBAC_FAIL 当检测到基于角色的访问控制 (RBAC) 自检失败时触发。 0 0
ANOM_RBAC_INTEGRITY_FAIL 当检测到基于角色的访问控制 (RBAC) 文件完整性测试失败时触发。 0 0
ANOM_ROOT_TRANS 当用户成为 root 用户时触发。 0 0
AVC 触发以记录 SELinux 权限检查。 0 0
AVC_PATH 当发生 SELinux 权限检查时触发以记录dentry和vfsmount配对。 0 0
BPRM_FCAPS 当用户执行具有文件系统功能的程序时触发。 0 0
CAPSET 触发以记录基于流程的功能的任何更改。 0 0
CHGRP_ID 当用户空间组 ID 更改时触发。 0 0
CHUSER_ID 当用户空间用户 ID 更改时触发。 0 0
CONFIG_CHANGE 修改审计系统配置时触发。 0 0
CRED_ACQ 当用户获取用户空间凭证时触发。 0 0
CRED_DISP 当用户处理用户空间凭据时触发。 0 0
CRED_REFR 当用户刷新他们的用户空间凭证时触发。 0 0
CRYPTO_FAILURE_USER 当解密、加密或随机化加密操作失败时触发。 0 0
CRYPTO_KEY_USER 触发以记录用于加密目的的加密密钥标识符。 0 0
CRYPTO_LOGIN 当检测到密码官登录尝试时触发。 0 0
CRYPTO_LOGOUT 当检测到密码官注销尝试时触发。 0 0
CRYPTO_PARAM_CHANGE_USER 当检测到密码参数发生变化时触发。 0 0
CRYPTO_REPLAY_USER 当检测到重放攻击时触发。 0 0
CRYPTO_SESSION 触发以记录 TLS 会话建立期间设置的参数。 0 0
CRYPTO_TEST_USER 根据 FIPS-140 标准的要求,触发以记录加密测试结果。 0 0
CWD 触发记录当前工作目录。 0 0
DAC_CHECK 触发记录 DAC 检查结果。 0 0
DAEMON_ABORT 当守护进程因错误而停止时触发。 0 0
DAEMON_ACCEPT auditd当守护进程接受远程连接时触发。 0 0
DAEMON_CLOSE auditd当守护程序关闭远程连接时触发。 0 0
DAEMON_CONFIG 当检测到守护程序配置更改时触发。 0 0
DAEMON_END 当守护进程成功停止时触发。 0 0
DAEMON_RESUME auditd当守护进程恢复日志记录时触发。 0 0
DAEMON_ROTATE auditd当守护程序轮换审计日志文件时触发。 0 0
DAEMON_START auditd守护进程启动时触发。 0 0
DEL_GROUP 删除用户空间组时触发 0 0
DEL_USER 删除用户空间用户时触发 0 0
DEV_ALLOC 分配设备时触发。 0 0
DEV_DEALLOC 当设备被解除分配时触发。 0 0
EOE 触发以记录多记录事件的结束。 0 0
EXECVE 触发以记录execve(2)系统调用的参数。 0 0
FD_PAIR 触发记录pipe和socketpair系统调用的使用。 0 0
FS_RELABEL 当检测到文件系统重新标记操作时触发。 0 0
GRP_AUTH 当使用组密码对用户空间组进行身份验证时触发。 0 0
INTEGRITY_DATA 触发以记录内核运行的数据完整性验证事件。 0 0
INTEGRITY_HASH 触发记录内核运行的哈希类型完整性验证事件。 0 0
INTEGRITY_METADATA 触发以记录内核运行的元数据完整性验证事件。 0 0
INTEGRITY_PCR 触发以记录平台配置注册 (PCR) 失效消息。 0 0
INTEGRITY_RULE 触发记录策略规则。 0 0
INTEGRITY_STATUS 被触发以记录完整性验证的状态。 0 0
IPC 被触发以记录有关系统调用引用的进程间通信对象的信息。 0 0
IPC_SET_PERM 触发以记录有关由IPC_SETIPC 对象上的控制操作设置的新值的信息。 0 0
KERNEL 触发记录审计系统的初始化。 0 0
KERNEL_OTHER 被触发以记录来自第三方内核模块的信息。 0 0
LABEL_LEVEL_CHANGE 当对象的级别标签被修改时触发。 0 0
LABEL_OVERRIDE 当管理员覆盖对象的级别标签时触发。 0 0
LOGIN 当用户登录访问系统时触发,记录相关登录信息。 0 0
MAC_CIPSOV4_ADD 当商业互联网协议安全选项 (CIPSO) 用户添加新的解释域 (DOI) 时触发。添加 DOI 是 NetLabel 提供的内核包标记功能的一部分。 0 0
MAC_CIPSOV4_DEL 当 CIPSO 用户删除现有的 DOI 时触发。添加 DOI 是 NetLabel 提供的内核包标记功能的一部分。 0 0
MAC_CONFIG_CHANGE 当 SELinux 布尔值更改时触发。 0 0
MAC_IPSEC_EVENT 当检测到 IPSec 事件或 IPSec 配置更改时触发以记录有关 IPSec 事件的信息。 0 0
MAC_MAP_ADD 添加新的 Linux 安全模块 (LSM) 域映射时触发。LSM域映射是NetLabel提供的内核包标签功能的一部分。 0 0
MAC_MAP_DEL 添加现有 LSM 域映射时触发。LSM域映射是NetLabel提供的内核包标签功能的一部分。 0 0
MAC_POLICY_LOAD 加载 SELinux 策略文件时触发。 0 0
MAC_STATUS 当 SELinux 模式(强制、许可、关闭)更改时触发。 0 0
MAC_UNLBL_ALLOW 当使用 NetLabel 提供的内核的数据包标记功能时允许未标记的流量时触发。 0 0
MAC_UNLBL_STCADD 当使用 NetLabel 提供的内核的数据包标签功能时添加静态标签时触发。 0 0
MAC_UNLBL_STCDEL 当使用 NetLabel 提供的内核的数据包标记功能时删除静态标签时触发。 0 0
MMAP mmap(2)触发以记录系统调用的文件描述符和标志。 0 0
MQ_GETSETATTR 触发记录mq_getattr(3)和mq_setattr(3)消息队列属性。 0 0
MQ_NOTIFY 触发以记录mq_notify(3)系统调用的参数。 0 0
MQ_OPEN 触发以记录mq_open(3)系统调用的参数。 0 0
MQ_SENDRECV 触发以记录mq_send(3)和mq_receive(3)系统调用的参数。 0 0
NETFILTER_CFG 当检测到 Netfilter 链修改时触发。 0 0
NETFILTER_PKT 触发以记录穿越 Netfilter 链的数据包。 0 0
OBJ_PID 被触发以记录有关信号发送到的进程的信息。 0 0
PATH 触发记录文件名路径信息。 0 0
RESP_ACCT_LOCK 当用户帐户被锁定时触发。 0 0
RESP_ACCT_LOCK_TIMED 当用户帐户被锁定指定时间段时触发。 0 0
RESP_ACCT_REMOTE 当用户帐户被远程会话锁定时触发。 0 0
RESP_ACCT_UNLOCK_TIMED 在配置的时间段后解锁用户帐户时触发。 0 0
RESP_ALERT 发送警报电子邮件时触发。 0 0
RESP_ANOMALY 当未对异常采取行动时触发。 0 0
RESP_EXEC 当入侵检测程序响应源自程序执行的威胁时触发。 0 0
RESP_HALT 系统关闭时触发。 0 0
RESP_KILL_PROC 当进程终止时触发。 0 0
RESP_SEBOOL 设置 SELinux 布尔值时触发。 0 0
RESP_SINGLE 当系统进入单用户模式时触发。 0 0
RESP_TERM_ACCESS 会话终止时触发。 0 0
RESP_TERM_LOCK 当终端被锁定时触发。 0 0
ROLE_ASSIGN 当管理员将用户分配给 SELinux 角色时触发。 0 0
ROLE_MODIFY 当管理员修改 SELinux 角色时触发。 0 0
ROLE_REMOVE 当管理员从 SELinux 角色中删除用户时触发。 0 0
SELINUX_ERR 当检测到内部 SELinux 错误时触发。 0 0
SERVICE_START 服务启动时触发。 0 0
SERVICE_STOP 当服务停止时触发。 0 0
SOCKADDR 触发记录套接字地址。 0 0
SOCKETCALL 触发以记录sys_socketcall系统调用的参数(用于多路复用许多与套接字相关的系统调用)。 0 0
SYSCALL 触发以记录对内核的系统调用。 0 0
SYSTEM_BOOT 系统启动时触发。 0 0
SYSTEM_RUNLEVEL 当系统的运行级别更改时触发。 0 0
SYSTEM_SHUTDOWN 系统关闭时触发。 0 0
TEST 触发以记录测试消息的成功值。 0 0
TRUSTED_APP 这种类型的记录可以被需要审计的第三方应用程序使用。 0 0
TTY 当 TTY 输入发送到管理进程时触发。 0 0
USER_ACCT 修改用户空间用户帐户时触发。 0 0
USER_AUTH 当检测到用户空间身份验证尝试时触发。 0 0
USER_AVC 当生成用户空间 AVC 消息时触发。 0 0
USER_CHAUTHTOK 修改用户帐户属性时触发。 0 0
USER_CMD 当执行用户空间 shell 命令时触发。 0 0
USER_END 当用户空间会话终止时触发。 0 0
USER_ERR 当检测到用户帐户状态错误时触发。 0 0
USER_LABELED_EXPORT 当使用 SELinux 标签导出对象时触发。 0 0
USER_LOGIN 当用户登录时触发。 0 0
USER_LOGOUT 当用户注销时触发。 0 0
USER_MAC_POLICY_LOAD 当用户空间守护进程加载 SELinux 策略时触发。 0 0
USER_MGMT 触发记录用户空间管理数据。 0 0
USER_ROLE_CHANGE 当用户的 SELinux 角色更改时触发。 0 0
USER_SELINUX_ERR 当检测到用户空间 SELinux 错误时触发。 0 0
USER_START 当用户空间会话开始时触发。 0 0
USER_TTY 当从用户空间向管理进程发送有关 TTY 输入的解释性消息时触发。 0 0
USER_UNLABELED_EXPORT 在没有 SELinux 标签的情况下导出对象时触发。 0 0
USYS_CONFIG 当检测到用户空间系统配置更改时触发。 0 0
VIRT_CONTROL 当虚拟机启动、暂停或停止时触发。 0 0
VIRT_MACHINE_ID 被触发以记录标签与虚拟机的绑定。 0 0
VIRT_RESOURCE 被触发以记录虚拟机的资源分配。 0 0

K8s集群层级

完成K8s的事件源源与字段提取功能

名称 类型 参数 描述
ka.auditid string None 审计事件的唯一标识
ka.stage string None 请求的阶段(例如 RequestReceived、ResponseComplete 等)
ka.auth.decision string None 授权决定
ka.auth.reason string None 授权理由
ka.user.name string None 执行请求的用户名
ka.user.groups string (list) None 用户所属的组
ka.impuser.name string None 模拟的用户名
ka.verb string None 正在执行的动作
ka.uri string None 从客户端发送到服务器的请求 URI
ka.uri.param string Key, Required uri 中给定查询参数的值(例如,当 uri=/foo?key=val 时,ka.uri.param[key] 为 val)。
ka.target.name string None 目标对象名称
ka.target.namespace string None 目标对象命名空间
ka.target.resource string None 目标对象资源
ka.target.subresource string None 目标对象子资源
ka.req.binding.subjects string (list) None 当请求对象引用集群角色绑定时,绑定链接的主题(例如帐户/用户)
ka.req.binding.role string None 当请求对象引用集群角色绑定时,角色被绑定链接
ka.req.binding.subject.has_name string Key, Required 已弃用,始终返回“N/A”。仅为向后兼容而提供
ka.req.configmap.name string None 如果请求对象引用 configmap,则 configmap 名称
ka.req.configmap.obj string None 如果请求对象引用一个 configmap,则整个 configmap 对象
ka.req.pod.containers.image string (list) Index 当请求对象引用 pod 时,容器的Image。
ka.req.container.image string None 由 ka.req.pod.containers.image 弃用。仅返回第一个容器的Image
ka.req.pod.containers.image.repository string (list) Index 与 req.container.image 相同,但只有存储库部分(例如 falcosecurity/falco)。
ka.req.container.image.repository string None 由 ka.req.pod.containers.image.repository 弃用。仅返回第一个容器的存储库
ka.req.pod.host_ipc string None 当请求对象引用 pod 时,hostIPC 标志的值。
ka.req.pod.host_network string None 当请求对象引用 pod 时,hostNetwork 标志的值。
ka.req.container.host_network string None ka.req.pod.host_network 的弃用别名
ka.req.pod.host_pid string None 当请求对象引用 pod 时,hostPID 标志的值。
ka.req.pod.containers.host_port string (list) Index 当请求对象引用一个 pod 时,所有容器的 hostPort 值。
ka.req.pod.containers.privileged string (list) Index 当请求对象引用一个 pod 时,所有容器的特权标志的值。
ka.req.container.privileged string None 由 ka.req.pod.containers.privileged 弃用。如果任何容器具有 privileged=true 则返回 true
ka.req.pod.containers.allow_privilege_escalation string (list) Index 当请求对象引用一个 pod 时,所有容器的 allowPrivilegeEscalation 标志的值
ka.req.pod.containers.read_only_fs string (list) Index 当请求对象引用一个 pod 时,所有容器的 readOnlyRootFilesystem 标志的值
ka.req.pod.run_as_user string None 当请求对象引用 pod 时,在 pod 的安全上下文中指定的 runAsUser uid。请参阅 ….containers.run_as_user 了解各个容器的 runAsUser
ka.req.pod.containers.run_as_user string (list) Index 当请求对象引用一个 pod 时,所有容器的 runAsUser uid
ka.req.pod.containers.eff_run_as_user string (list) Index 当请求对象引用 pod 时,将用于所有容器的初始 uid。这结合了来自 pod 和容器安全上下文的信息,如果未指定 uid,则使用 0
ka.req.pod.run_as_group string None 当请求对象引用 pod 时,在 pod 的安全上下文中指定的 runAsGroup gid。请参阅 ….containers.run_as_group 了解各个容器的 runAsGroup
ka.req.pod.containers.run_as_group string (list) Index 当请求对象引用一个 pod 时,所有容器的 runAsGroup gid
ka.req.pod.containers.eff_run_as_group string (list) Index 当请求对象引用 pod 时,将用于所有容器的初始 gid。这结合了来自 pod 和容器安全上下文的信息,如果没有指定 gid,则使用 0
ka.req.pod.containers.proc_mount string (list) Index 当请求对象引用一个 pod 时,所有容器的 procMount 类型
ka.req.role.rules string (list) None 当请求对象引用角色/集群角色时,与角色关联的规则
ka.req.role.rules.apiGroups string (list) Index 当请求对象引用角色/集群角色时,与角色规则关联的 api 组
ka.req.role.rules.nonResourceURLs string (list) Index 当请求对象引用角色/集群角色时,与角色规则关联的非资源 url
ka.req.role.rules.verbs string (list) Index 当请求对象引用角色/集群角色时,与角色规则关联的动词
ka.req.role.rules.resources string (list) Index 当请求对象引用角色/集群角色时,与角色规则关联的资源
ka.req.pod.fs_group string None 当请求对象引用 pod 时,安全上下文指定的 fsGroup gid。
ka.req.pod.supplemental_groups string (list) None 当请求对象引用 pod 时,由安全上下文指定的 supplementalGroup gid。
ka.req.pod.containers.add_capabilities string (list) Index 当请求对象引用 pod 时,运行容器时添加的所有功能。
ka.req.service.type string None 当请求对象引用服务时,服务类型
ka.req.service.ports string (list) Index 当请求对象引用服务时,服务的端口
ka.req.pod.volumes.hostpath string (list) Index 当请求对象引用一个 pod 时,为所有卷指定的所有 hostPath 路径
ka.req.volume.hostpath string Key, Required 由 ka.req.pod.volumes.hostpath 弃用。如果提供的(主机)路径前缀被任何卷使用,则返回 true
ka.req.pod.volumes.flexvolume_driver string (list) Index 当请求对象引用一个 pod 时,为所有卷指定所有 flexvolume 驱动程序
ka.req.pod.volumes.volume_type string (list) Index 当请求对象引用一个 pod 时,所有卷的所有卷类型
ka.resp.name string None 响应对象名称
ka.response.code string None 响应码
ka.response.reason string None 响应原因(通常仅在失败时出现)
ka.useragent string None 向 apiserver 发出请求的客户端的用户代理
ka.sourceips string (list) Index 向 apiserver 发出请求的客户端的 IP 地址

联动业务场景-事件监控

云工作负载维度

进程维度

谁启动进程:进程树,检测进程隐藏,so注入,提权行为, 监控进程启动

通过Audit监控进程启动及行为, 联动Collector插件进行进程树分析

某个进程退出:监控进程异常退出

通过Audit监控进程异常退出

哪个进程插入内核模块:检测rootkit/bootkit

通过Audit监控Syscall过滤loadmodule操作

哪个进程操作某个文件:检测恶意篡改,痕迹隐藏,恶意授权

通过Audit监控Syscall是否有篡改文件,Scanner检测静态威胁文件

哪个进程启动socket:检测高危端口和外连行为

通过Collector搜集资产态势感知是否现有高危端口外连, 通过Audit审计当前是否有高危端口外连创建

哪个进程操作某个进程:检测动态注入

通过Audit审计当前是否有shellcode注入及远程线程启动操作

是否恶意挖矿

Scanner的ClamAV组件会匹配静态程序的同时Collector组件搜集用量是否有恶意挖矿程序

云原生集群维度

创建了Deployment【常规监控】、删除了Deployment【常规监控】、创建了Service【常规监控】、删除了Service【常规监控】、创建了ConfigMap【常规监控】、删除了ConfigMap【常规监控】

忽略不计

……省略常规监控

禁止非审计k8s用户提交的请求

ka.user.name 隶属于 “minikube”, “minikube-user”, “kubelet”, “kops”, “admin”, “kube”, “kube-proxy”, “kube-apiserver-healthcheck”,”kubernetes-admin”,vertical_pod_autoscaler_users,cluster-autoscaler,”system:addon-manager”,”cloud-controller-manager”,”system:kube-controller-manager”

检测尝试使用主机网络启动 pod

检测当前stages已Complete 且 ka.req.pod.host_network存在网络

启动镜像仓库之外的Pod

检测ka.req.pod.containers.image.repository 是否是当前公司集群的百分之80%镜像前缀

检测是否创建了主机Pid的Pod

检测当前stages已Complete 且 ka.req.pod.host_pid 存在Pid

检测创建/修改 Configmap中包含私有凭证

通过Collector搜集到的secret + 固定list字符串匹配,access_key、password、passphrase

检测有匿名的用户发出请求

ka.user.name=system:anonymous 并且 ka.auth.decision=”allow”

检测有 Attach/Exec Pod行为

ka.target.subresource存在exec,attach行为列别 且 当前Pod还未放置忽略Attach/Exec列表

检测有临时容器创建

ka.target.subresource 存在 ephemeralcontainers

创建了写入权限的 ClusterRole

ka.req.role.rules.verbs 存在 (create, update, patch, delete, deletecollection)

创建特权容器Pod

ka.req.pod.containers.privileged 为true

有异常挂载

ka.req.pod.volumes.hostpath 存在以下挂在位置 (/proc, /var/run/docker.sock, /, /etc, /root, /var/run/crio/crio.sock, /run/containerd/containerd, /home/admin, /var/lib/kubelet, /var/lib/kubelet/pki, /etc/kubernetes, /etc/kubernetes/manifests)

恶意镜像匹配[恶意脚本、挖矿程序]

ka.req.pod.containers.image 当Audit审计组件拿到镜像, 联动Scanner扫描器查看当前镜像是否是恶意脚本或挖矿程序