进程字段

编辑

这些字段包含有关进程的信息。

这些字段可以帮助您将指标信息与日志消息中的进程 ID/名称关联起来。process.pid 通常保留在指标本身中,并复制到全局字段以进行关联。

进程字段详情

编辑
字段 描述 级别

process.args

进程参数数组,从可执行文件的绝对路径开始。

可以进行过滤以保护敏感信息。

类型:keyword

注意:此字段应包含一个值数组。

示例:["/usr/bin/ssh", "-l", "user", "10.0.0.16"]

扩展

process.args_count

process.args 数组的长度。

此字段可用于查询或对启动进程时提供的参数数量执行桶分析。更多参数可能表示可疑活动。

类型:long

示例:4

扩展

process.command_line

启动进程的完整命令行,包括可执行文件的绝对路径和所有参数。

某些参数可能会被过滤以保护敏感信息。

类型:wildcard

多字段

  • process.command_line.text (类型:match_only_text)

示例:/usr/bin/ssh -l user 10.0.0.16

扩展

process.end

进程结束的时间。

类型:date

示例:2016-05-23T08:05:34.853Z

扩展

process.entity_id

进程的唯一标识符。

此标识符的实现由数据源指定,但此处可以使用的一些示例包括进程生成的 UUID、Sysmon 进程 GUID 或进程某些唯一标识组件的哈希值。

构建全局唯一标识符是一种常见的做法,可以减轻 PID 重用问题,并可以跨多个受监控主机随时间推移识别特定进程。

类型:keyword

示例:c2c455d9f99375d

扩展

process.entry_meta.type

条目会话领导者的条目类型。值包括:init(例如 systemd)、sshd、ssm、kubelet、teleport、terminal、console

注意:此字段仅在 process.session_leader 中设置。

类型:keyword

扩展

process.env_vars

环境变量绑定的数组。从执行时的环境快照中捕获。

可以进行过滤以保护敏感信息。

类型:keyword

注意:此字段应包含一个值数组。

示例:["PATH=/usr/local/bin:/usr/bin", "USER=ubuntu"]

扩展

process.executable

进程可执行文件的绝对路径。

类型:keyword

多字段

  • process.executable.text (类型:match_only_text)

示例:/usr/bin/ssh

扩展

process.exit_code

如果这是一个终止事件,则为进程的退出代码。

如果事件没有退出代码(例如进程启动),则此字段应不存在。

类型:long

示例:137

扩展

process.interactive

进程是否连接到交互式 shell。

进程交互性是从进程的文件描述符推断出来的。如果控制 tty 的字符设备与进程的 stdin 和 stderr 相同,则该进程被认为是交互式的。

注意:非交互式进程可以属于交互式会话,它只是在 FD 0(stdin)上没有打开文件描述符读取控制 TTY 或在 FD 2(stderr)上写入控制 TTY 的进程。如果 stdin 和 stderr 连接到控制 TTY,则后台进程仍被认为是交互式的。

类型:boolean

示例:True

扩展

process.io

来自单个进程的输入或输出 (IO) 块。

此字段仅出现在顶级进程对象上,该对象是写入输出或读取输入的进程。

类型:object

扩展

process.io.bytes_skipped

表示跳过 IO 数据的字节偏移量和长度的数组。

类型:object

注意:此字段应包含一个值数组。

扩展

process.io.bytes_skipped.length

跳过的字节长度。

类型:long

扩展

process.io.bytes_skipped.offset

此事件的 io.text(或未来的 io.bytes)中的字节偏移量,其中跳过了 length 字节。

类型:long

扩展

process.io.max_bytes_per_process_exceeded

如果为 true,则生成输出的进程已超过 max_kilobytes_per_process 配置设置。

类型:boolean

扩展

process.io.text

清理为 UTF-8 的输出或输入块。

尽最大努力确保在此类事件中捕获完整的行。不应假设多行将出现在同一事件中。TTY 输出可能包含终端控制代码(例如光标移动),因此某些字符串查询可能由于字符之间插入的终端代码而无法匹配。

类型:wildcard

扩展

process.io.total_bytes_captured

在此事件中捕获的总字节数。

类型:long

扩展

process.io.total_bytes_skipped

由于实现限制(例如缓冲区大小限制)而未捕获的总字节数。实现者应努力确保此值始终为零。

类型:long

扩展

process.io.type

执行 IO 操作(读取或写入)的对象类型。

目前仅支持 _tty_。将来可能会为 _file_ 和 _socket_ 支持添加其他类型。

类型:keyword

扩展

process.name

进程名称。

有时称为程序名称或类似名称。

类型:keyword

多字段

  • process.name.text (类型:match_only_text)

示例:ssh

扩展

process.pgid

将在下一个主要版本发布中弃用并移除。此字段已被 process.group_leader.pid 取代。

进程所属的进程组的标识符。

类型:long

扩展

process.pid

进程 ID。

类型:long

示例:4242

核心

process.same_as_process

此布尔值用于标识领导者进程是否与顶级进程相同。

例如,如果 process.group_leader.same_as_process = true,则表示相关进程事件是其进程组的领导者。 process.* 下的详细信息(如 pid)在 process.group_leader.* 下将相同。这同样适用于 process.session_leaderprocess.entry_leader

此字段的存在是为了 EQL 和其他规则引擎的利益,因为无法在一个文档中比较两个字段之间的相等性。例如 process.entity_id = process.group_leader.entity_id(顶级进程是进程组领导者)或 process.entity_id = process.entry_leader.entity_id(顶级进程是条目会话领导者)

相反,这些规则可以这样编写:process.group_leader.same_as_process: trueprocess.entry_leader.same_as_process: true

注意:此字段仅在 process.entry_leaderprocess.session_leaderprocess.group_leader 中设置。

类型:boolean

示例:True

扩展

process.start

进程启动的时间。

类型:date

示例:2016-05-23T08:05:34.853Z

扩展

process.thread.capabilities.effective

这是内核用于对线程执行权限检查的功能集。

类型:keyword

注意:此字段应包含一个值数组。

示例:["CAP_BPF", "CAP_SYS_ADMIN"]

扩展

process.thread.capabilities.permitted

这是线程可能承担的有效功能的限制性超集。

类型:keyword

注意:此字段应包含一个值数组。

示例:["CAP_BPF", "CAP_SYS_ADMIN"]

扩展

process.thread.id

线程 ID。

类型:long

示例:4242

扩展

process.thread.name

线程名称。

类型:keyword

示例:thread-0

扩展

process.title

进程标题。

进程标题,有时与进程名称相同。也可能不同:例如,浏览器将其标题设置为当前打开的网页。

类型:keyword

多字段

  • process.title.text (类型:match_only_text)

扩展

process.tty

有关控制 TTY 设备的信息。如果设置,则进程属于交互式会话。

类型:object

扩展

process.tty.char_device.major

主编号标识与设备关联的驱动程序。字符设备的主编号和次编号可以以算法方式组合以生成更熟悉的终端标识符,例如“ttyS0”和“pts/0”。有关更多详细信息,请参阅 Linux 内核文档。

类型:long

示例:4

扩展

process.tty.char_device.minor

次编号仅由主编号指定的驱动程序使用;内核的其他部分不使用它,只是将其传递给驱动程序。驱动程序通常控制多个设备;次编号为驱动程序提供了区分它们的方法。

类型:long

示例:1

扩展

process.tty.columns

每行字符列数。例如终端宽度

终端大小可能会发生变化,因此此值反映给定 IO 事件的最大值。即 event.action = _text_output_

类型:long

示例:80

扩展

process.tty.rows

终端中的字符行数。例如终端高度

终端大小可能会发生变化,因此此值反映给定 IO 事件的最大值。即 event.action = _text_output_

类型:long

示例:24

扩展

process.uptime

进程已运行的秒数。

类型:long

示例:1325

扩展

process.vpid

虚拟进程 ID。

pid 命名空间中的进程 ID。这在主机上的所有进程中不一定是唯一的,但在进程存在的进程命名空间中是唯一的。

类型:long

示例:4242

核心

process.working_directory

进程的工作目录。

类型:keyword

多字段

  • process.working_directory.text(类型:match_only_text)

示例:/home/alice

扩展

字段重用

编辑

预期process字段嵌套在以下位置:

  • process.entry_leader
  • process.entry_leader.parent
  • process.entry_leader.parent.session_leader
  • process.group_leader
  • process.parent
  • process.parent.group_leader
  • process.previous
  • process.responsible
  • process.session_leader
  • process.session_leader.parent
  • process.session_leader.parent.session_leader

另请注意,process字段可以直接用于事件的根目录。

可以嵌套在Process下的字段集
编辑
位置 字段集 描述

process.attested_groups.*

group

[beta] 此位置重用group字段目前处于测试阶段。

基于外部来源(例如Kube API)的外部证明组。

注意:此重用应包含一个group字段集对象的数组。

process.attested_user.*

user

[beta] 此位置重用user字段目前处于测试阶段。

基于外部来源(例如Kube API)的外部证明用户。

process.code_signature.*

code_signature

这些字段包含有关二进制代码签名的信息。

process.elf.*

elf

[beta] 此字段重用处于测试阶段,可能会有所更改。

这些字段包含Linux可执行链接格式(ELF)元数据。

process.entry_leader.*

process

通过SSH、SSM等终端或远程访问的第一个进程,或由init进程直接启动的服务。

process.entry_leader.parent.*

process

有关入口领导者父进程的信息。仅设置pid、start和entity_id字段。

process.entry_leader.parent.session_leader.*

process

有关入口领导者的父会话的信息。仅设置pid、start和entity_id字段。

process.entry_meta.source.*

source

远程客户端信息,例如IP、端口和地理位置。

process.group.*

group

有效组(egid)。

process.group_leader.*

process

关于进程组领导者的信息。在某些情况下,这可能与顶级进程相同。

process.hash.*

hash

哈希值,通常是文件哈希值。

process.macho.*

macho

[beta] 此字段重用处于测试阶段,可能会有所更改。

这些字段包含Mac OS Mach对象文件格式(Mach-O)元数据。

process.parent.*

process

关于父进程的信息。

process.parent.group_leader.*

process

关于父进程的进程组领导者的信息。仅设置pid、start和entity_id字段。

process.pe.*

pe

这些字段包含Windows可移植执行文件(PE)元数据。

process.previous.*

process

进程先前执行的数组,包括初始fork。仅设置可执行文件和参数。

注意:此重用应包含一个process字段集对象的数组。

process.real_group.*

group

真实组(rgid)。

process.real_user.*

user

真实用户(ruid)。标识进程的真实所有者。

process.responsible.*

process

[beta] 此字段处于测试阶段,可能会有所更改。

macOS中的责任进程跟踪应用程序的起始进程,对于理解权限和层次结构至关重要。

process.saved_group.*

group

保存的组(sgid)。

process.saved_user.*

user

保存的用户(suid)。

process.session_leader.*

process

通常与entry_leader相同。当它们不同时,它表示在另一个会话中启动的会话,例如使用tmux。

process.session_leader.parent.*

process

有关会话领导者父进程的信息。仅设置pid、start和entity_id字段。

process.session_leader.parent.session_leader.*

process

有关会话领导者的父会话的信息。仅设置pid、start和entity_id字段。

process.supplemental_groups.*

group

补充组的数组。

注意:此重用应包含一个group字段集对象的数组。

process.user.*

user

有效用户(euid)。