高级安全信息模型 (ASIM) 进程事件规范化架构参考(公共预览版)
进程事件规范化架构用于描述运行和终止进程的操作系统活动。 此类事件由操作系统和安全系统报告,例如 EDR(终结点检测和响应)系统。
由 OSSEM 定义的进程是表示程序的运行实例的包含和管理对象。 虽然进程自身不运行,但会管理运行和执行代码的线程。
有关 Microsoft Sentinel 中规范化的详细信息,请参阅规范化和高级安全信息模型 (ASIM)。
重要
进程事件规范化架构目前以预览版提供。 此功能不附带服务级别协议,不建议将其用于生产工作负荷。
Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
分析器
若要使用统一所有列出的分析程序的统一分析程序,并确保针对所有配置的源进行分析,请在查询中使用以下表名称:
- “imProcessCreate”,用于需要进程创建信息的查询。 这些查询是最常见的案例。
- “imProcessTerminate”,用于需要进程终止信息的查询。
有关 Microsoft Sentinel 直接提供的进程事件分析程序列表,请参考 ASIM 分析程序列表。
从 Microsoft Sentinel GitHub 存储库部署身份验证分析程序。
有关详细信息,请参阅 ASIM 分析程序概述。
添加自己的规范化分析器
实现自定义进程事件分析程序时,请使用以下语法命名你的 KQL 函数:imProcessCreate<vendor><Product>
和 imProcessTerminate<vendor><Product>
。 对于无参数版本,将 im
替换为 ASim
。
按管理 ASIM 分析程序中所述,将 KQL 函数添加到统一分析程序。
筛选分析程序参数
im
和 vim*
分析程序支持筛选参数。 尽管这些分析程序是可选的,但可使用它们来提高查询性能。
可使用以下筛选参数:
名称 | Type | 说明 |
---|---|---|
starttime | datetime | 仅筛选在此时间或之后发生的进程事件。 |
endtime | datetime | 仅筛选在此时间或之前发生的进程事件查询。 |
commandline_has_any | 动态 | 仅筛选已执行的命令行包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
commandline_has_all | 动态 | 仅筛选已执行的命令行包含全部所列值的进程事件。 列表的长度限制为 10,000 项。 |
commandline_has_any_ip_prefix | 动态 | 仅筛选已执行的命令行包含全部所列 IP 地址或 IP 地址前缀的进程事件。 前缀应以 . 结尾,例如:10.0. 。 列表的长度限制为 10,000 项。 |
actingprocess_has_any | 动态 | 仅筛选操作进程名称(包括整个进程路径)包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
targetprocess_has_any | 动态 | 仅筛选目标进程名称(包括整个进程路径)包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
parentprocess_has_any | 动态 | 仅筛选目标进程名称(包括整个进程路径)包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
targetusername_has 或 actorusername_has | 字符串 | 仅筛选目标用户名(用于进程创建事件)或操作者用户名(用于进程终止事件)包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
dvcipaddr_has_any_prefix | 动态 | 仅筛选设备 IP 地址与任何所列 IP 地址或 IP 地址前缀匹配的进程事件。 前缀应以 . 结尾,例如:10.0. 。 列表的长度限制为 10,000 项。 |
dvchostname_has_any | 动态 | 仅筛选设备主机名或设备 FQDN(如果有)包含任何所列值的进程事件。 列表的长度限制为 10,000 项。 |
eventtype | 字符串 | 仅筛选指定类型的进程事件。 |
例如,若要仅筛选特定用户从过去一天开始的身份验证事件,请使用:
imProcessCreate (targetusername_has = 'johndoe', starttime = ago(1d), endtime=now())
提示
若要将文本列表传递到需要动态值的参数,请显式使用动态文本。 例如:dynamic(['192.168.','10.'])
。
规范化内容
有关使用规范化进程事件的分析规则的完整列表,请参阅进程事件安全内容。
架构详细信息
进程事件信息模型与 OSSEM 进程实体架构相一致。
通用 ASIM 字段
重要
ASIM 通用字段一文详细介绍了所有架构的通用字段。
符合特定准则的通用字段
以下列表提及了符合进程活动事件特定准则的字段:
字段 | 类 | 类型 | 说明 |
---|---|---|---|
EventType | 必需 | Enumerated | 描述记录报告的操作。 对于进程记录,支持的值包括: - ProcessCreated - ProcessTerminated |
EventSchemaVersion | 必需 | 字符串 | 架构的版本。 此处记录的架构版本为 0.1.4 |
EventSchema | 可选 | 字符串 | 此处所述的架构名称为 ProcessEvent 。 |
Dvc 字段 | 对于进程活动事件,设备字段是指在其中执行进程的系统。 |
重要
EventSchema
字段目前为可选项,但将于 2022 年 9 月 1 日成为必需项。
所有通用字段
下表中显示的字段是所有 ASIM 架构通用的。 上面指定的任何准则都将替代字段的一般准则。 例如,字段通常情况下可能是可选项,但可能是特定架构的必需项。 有关每个字段的更多详细信息,请参阅 ASIM 通用字段一文。
类 | Fields |
---|---|
必需 | - EventCount - EventStartTime - EventEndTime - EventType - EventResult - “EventProduct” - EventVendor - EventSchema - EventSchemaVersion - Dvc |
建议 | - EventResultDetails - EventSeverity - EventUid - DvcIpAddr - DvcHostname - DvcDomain - DvcDomainType - DvcFQDN - DvcId - DvcIdType- - DvcAction |
可选 | - EventMessage - EventSubType - EventOriginalUid - EventOriginalType - EventOriginalSubType - EventOriginalResultDetails - EventOriginalSeverity - EventProductVersion - EventReportUrl - EventOwner - DvcZone - DvcMacAddr - DvcOs - DvcOsVersion - DvcOriginalAction - DvcInterface - AdditionalFields - DvcDescription - DvcScopeId - DvcScope |
特定于进程事件的字段
下表中列出的字段特定于进程事件,但类似于其他架构中的字段,并遵循类似的命名约定。
进程事件架构引用以下实体,这些实体是进程创建和终止活动的中心:
- Actor - 启动进程创建或终止的用户。
- ActingProcess - Actor 用来启动进程创建或终止的进程。
- TargetProcess - 新进程。
- TargetUser - 其凭据用于创建新进程的用户。
- ParentProcess - 启动 Actor 进程的进程。
别名
字段 | 类 | 类型 | 说明 |
---|---|---|---|
用户 | Alias | TargetUsername 的别名。 示例: CONTOSO\dadmin |
|
处理 | Alias | TargetProcessName 的别名 示例: C:\Windows\System32\rundll32.exe |
|
CommandLine | Alias | TargetProcessCommandLine 的别名 | |
哈希 | Alias | 目标进程的最佳可用哈希的别名。 |
参与者字段
字段 | 类 | 类型 | 说明 |
---|---|---|---|
ActorUserId | 建议 | 字符串 | 参与者的计算机可读的唯一字母数字表示形式。 有关不同 ID 类型的受支持格式,请参阅用户实体。 示例: S-1-12 |
ActorUserIdType | 条件逻辑 | 字符串 | ActorUserId 字段中存储的 ID 的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UserIdType。 |
ActorScope | 可选 | 字符串 | 在其中定义了 ActorUserId 和 ActorUsername 的范围(例如 Microsoft Entra 租户)。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserScope。 |
ActorUsername | 必需 | 字符串 | 参与者的用户名,包括域信息(如果可用)。 有关不同 ID 类型的受支持格式,请参阅用户实体。 仅当未提供域信息时才使用简单格式。 将用户名类型存储在 ActorUsernameType 字段中。 如果其他用户名格式可用,请将其存储在字段 ActorUsername<UsernameType> 中。示例: AlbertE |
ActorUsernameType | 条件逻辑 | Enumerated | 指定 ActorUsername 字段中存储的用户名的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UsernameType。 示例: Windows |
“ActorSessionId” | 可选 | 字符串 | Actor 登录会话的唯一 ID。 示例: 999 注意:类型定义为“字符串”以支持不同的系统,但在 Windows 上,此值必须是数字。 如果使用的是 Windows 计算机并使用了其他类型,请务必转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。 |
ActorUserType | 可选 | UserType | 操作者的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UserType。 注意:可以在源记录中使用不同字词提供该值,这些字词应规范化为上述值。 将原始值存储在 ActorOriginalUserType 字段中。 |
ActorOriginalUserType | 可选 | String | 原始目标用户类型(如果报告设备已提供)。 |
操作进程字段
字段 | 类 | 类型 | 说明 |
---|---|---|---|
ActingProcessCommandLine | 可选 | 字符串 | 用于运行操作进程的命令行。 示例: "choco.exe" -v |
“ActingProcessName” | 可选 | string | 操作进程的名称。 此名称通常是从映像或可执行文件派生的,该映像或可执行文件用于定义映射到进程虚拟地址空间的初始代码和数据。 示例: C:\Windows\explorer.exe |
“ActingProcessFileCompany” | 可选 | 字符串 | 创建了操作进程映像文件的公司。 示例: Microsoft |
“ActingProcessFileDescription” | 可选 | 字符串 | 嵌入在操作进程映像文件的版本信息中的说明。 示例: Notepad++ : a free (GPL) source code editor |
“ActingProcessFileProduct” | 可选 | 字符串 | 操作进程映像文件中的版本信息中的产品名称。 示例: Notepad++ |
“ActingProcessFileVersion” | 可选 | 字符串 | 操作进程映像文件的版本信息中的产品版本。 示例: 7.9.5.0 |
“ActingProcessFileInternalName” | 可选 | 字符串 | 操作进程映像文件的版本信息中的产品内部文件名。 |
“ActingProcessFileOriginalName” | 可选 | 字符串 | 操作进程映像文件的版本信息中的产品原始文件名。 示例: Notepad++.exe |
“ActingProcessIsHidden” | 可选 | Boolean | 指示操作进程是否处于隐藏模式。 |
“ActingProcessInjectedAddress” | 可选 | 字符串 | 在其中存储负责的操作进程的内存地址。 |
“ActingProcessId” | 必需 | 字符串 | 操作进程的进程 ID (PID)。 示例: 48610176 注意:类型定义为“字符串”以支持不同的系统,但在 Windows 和 Linux 上,此值必须是数字。 如果使用的是 Windows 或 Linux 计算机并使用了其他类型,请务必转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。 |
“ActingProcessGuid” | 可选 | string | 操作进程的生成的唯一标识符 (GUID)。 可用于跨系统标识进程。 示例: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
“ActingProcessIntegrityLevel” | 可选 | 字符串 | 每个进程都有一个在其令牌中表示的完整性级别。 完整性级别确定保护或访问的进程级别。 Windows 定义了以下完整性级别:“低”、“中”、“高”和“系统”。 标准用户接收“中”完整性级别,提升的用户接收“高”完整性级别。 有关详细信息,请参阅必需完整性控制 - Win32 应用。 |
“ActingProcessMD5” | 可选 | 字符串 | 操作进程映像文件的 MD5 哈希。 示例: 75a599802f1fa166cdadb360960b1dd0 |
“ActingProcessSHA1” | 可选 | SHA1 | 操作进程映像文件的 SHA-1 哈希。 示例: d55c5a4df19b46db8c54c801c4665d3338acdab0 |
“ActingProcessSHA256” | 可选 | SHA256 | 操作进程映像文件的 SHA-256 哈希。 示例: e81bb824c4a09a811af17deae22f22dd 2e1ec8cbb00b22629d2899f7c68da274 |
“ActingProcessSHA512” | 可选 | SHA521 | 操作进程映像文件的 SHA-512 哈希。 |
“ActingProcessIMPHASH” | 可选 | 字符串 | 操作进程使用的所有库 DLL 的导入哈希。 |
“ActingProcessCreationTime” | 可选 | DateTime | 操作进程的开始日期和时间。 |
“ActingProcessTokenElevation” | 可选 | 字符串 | 指示是否存在应用于操作进程的用户访问控制 (UAC) 特权提升的令牌。 示例: None |
“ActingProcessFileSize” | 可选 | Long | 运行操作进程的文件的大小。 |
父进程字段
字段 | 类 | 类型 | 说明 |
---|---|---|---|
“ParentProcessName” | 可选 | string | 父进程的名称。 此名称通常是从映像或可执行文件派生的,该映像或可执行文件用于定义映射到进程虚拟地址空间的初始代码和数据。 示例: C:\Windows\explorer.exe |
“ParentProcessFileCompany” | 可选 | 字符串 | 创建了父进程映像文件的公司的名称。 示例: Microsoft |
“ParentProcessFileDescription” | 可选 | 字符串 | 父进程映像文件中的版本信息中的说明。 示例: Notepad++ : a free (GPL) source code editor |
“ParentProcessFileProduct” | 可选 | 字符串 | 父进程映像文件中的版本信息中的产品名称。 示例: Notepad++ |
“ParentProcessFileVersion” | 可选 | 字符串 | 父进程映像文件中的版本信息中的产品版本。 示例: 7.9.5.0 |
“ParentProcessIsHidden” | 可选 | Boolean | 指示父进程是否处于隐藏模式。 |
“ParentProcessInjectedAddress” | 可选 | 字符串 | 在其中存储负责的父进程的内存地址。 |
“ParentProcessId” | 建议 | 字符串 | 父进程的进程 ID (PID)。 示例: 48610176 |
“ParentProcessGuid” | 可选 | 字符串 | 父进程的生成的唯一标识符 (GUID)。 可用于跨系统标识进程。 示例: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
“ParentProcessIntegrityLevel” | 可选 | 字符串 | 每个进程都有一个在其令牌中表示的完整性级别。 完整性级别确定保护或访问的进程级别。 Windows 定义了以下完整性级别:“低”、“中”、“高”和“系统”。 标准用户接收“中”完整性级别,提升的用户接收“高”完整性级别。 有关详细信息,请参阅必需完整性控制 - Win32 应用。 |
“ParentProcessMD5” | 可选 | MD5 | 父进程映像文件的 MD5 哈希。 示例: 75a599802f1fa166cdadb360960b1dd0 |
“ParentProcessSHA1” | 可选 | SHA1 | 父进程映像文件的 SHA-1 哈希。 示例: d55c5a4df19b46db8c54c801c4665d3338acdab0 |
“ParentProcessSHA256” | 可选 | SHA256 | 父进程映像文件的 SHA-256 哈希。 示例: e81bb824c4a09a811af17deae22f22dd 2e1ec8cbb00b22629d2899f7c68da274 |
“ParentProcessSHA512” | 可选 | SHA512 | 父进程映像文件的 SHA-512 哈希。 |
“ParentProcessIMPHASH” | 可选 | 字符串 | 父进程使用的所有库 DLL 的导入哈希。 |
“ParentProcessTokenElevation” | 可选 | 字符串 | 指示是否存在应用于父进程的用户访问控制 (UAC) 特权提升的令牌。 示例: None |
“ParentProcessCreationTime” | 可选 | DateTime | 父进程的开始日期和时间。 |
目标用户字段
字段 | 类 | 类型 | 说明 |
---|---|---|---|
“TargetUserName” | 进程创建事件所必需。 | 字符串 | 目标用户名,包括域信息(如果可用)。 有关不同 ID 类型的受支持格式,请参阅用户实体。 仅当未提供域信息时才使用简单格式。 将用户名类型存储在 TargetUsernameType 字段中。 如果其他用户名格式可用,请将其存储在字段 TargetUsername<UsernameType> 中。示例: AlbertE |
TargetUsernameType | 条件逻辑 | Enumerated | 指定 TargetUsername 字段中存储的用户名的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UsernameType。 示例: Windows |
“TargetUserId” | 建议 | 字符串 | 目标用户的计算机可读的唯一字母数字表示形式。 有关不同 ID 类型的受支持格式,请参阅用户实体。 示例: S-1-12 |
TargetUserIdType | 条件逻辑 | 字符串 | TargetUserId 字段中存储的 ID 的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UserIdType。 |
“TargetUserSessionId” | 可选 | 字符串 | 目标用户的登录会话的唯一 ID。 示例: 999 注意:类型定义为“字符串”以支持不同的系统,但在 Windows 上,此值必须是数字。 如果使用的是 Windows 或 Linux 计算机并使用了其他类型,请务必转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。 |
TargetUserType | 可选 | UserType | 操作者的类型。 有关允许值的列表和更多信息,请参阅架构概述文章中的 UserType。 注意:可以在源记录中使用不同字词提供该值,这些字词应规范化为上述值。 将原始值存储在 TargetOriginalUserType 字段中。 |
TargetOriginalUserType | 可选 | String | 原始目标用户类型(如果报告设备已提供)。 |
目标进程字段
字段 | 类 | 类型 | 说明 |
---|---|---|---|
“TargetProcessName” | 必需 | 字符串 | 目标进程的名称。 此名称通常是从映像或可执行文件派生的,该映像或可执行文件用于定义映射到进程虚拟地址空间的初始代码和数据。 示例: C:\Windows\explorer.exe |
“TargetProcessFileCompany” | 可选 | 字符串 | 创建了目标进程映像文件的公司的名称。 示例: Microsoft |
“TargetProcessFileDescription” | 可选 | 字符串 | 目标进程映像文件中的版本信息中的说明。 示例: Notepad++ : a free (GPL) source code editor |
“TargetProcessFileProduct” | 可选 | 字符串 | 目标进程映像文件中的版本信息中的产品名称。 示例: Notepad++ |
“TargetProcessFileSize” | 可选 | 字符串 | 运行负责事件的进程的文件的大小。 |
“TargetProcessFileVersion” | 可选 | 字符串 | 目标进程映像文件中的版本信息中的产品版本。 示例: 7.9.5.0 |
“TargetProcessFileInternalName” | 可选 | 字符串 | 目标进程的映像文件的版本信息中的产品内部文件名。 |
“TargetProcessFileOriginalName” | 可选 | 字符串 | 目标进程的映像文件的版本信息中的产品原始文件名。 |
“TargetProcessIsHidden” | 可选 | 布尔 | 指示目标进程是否处于隐藏模式。 |
“TargetProcessInjectedAddress” | 可选 | 字符串 | 在其中存储负责的目标进程的内存地址。 |
“TargetProcessMD5” | 可选 | MD5 | 目标进程映像文件的 MD5 哈希。 示例: 75a599802f1fa166cdadb360960b1dd0 |
“TargetProcessSHA1” | 可选 | SHA1 | 目标进程映像文件的 SHA-1 哈希。 示例: d55c5a4df19b46db8c54c801c4665d3338acdab0 |
“TargetProcessSHA256” | 可选 | SHA256 | 目标进程映像文件的 SHA-256 哈希。 示例: e81bb824c4a09a811af17deae22f22dd 2e1ec8cbb00b22629d2899f7c68da274 |
TargetProcessSHA512 | 可选 | SHA512 | 目标进程映像文件的 SHA-512 哈希。 |
“TargetProcessIMPHASH” | 可选 | 字符串 | 目标进程使用的所有库 DLL 的导入哈希。 |
HashType | 建议 | 字符串 | 哈希别名字段中存储的哈希的类型,允许的值为 MD5 、SHA 、SHA256 、SHA512 和 IMPHASH 。 |
“TargetProcessCommandLine” | 必需 | 字符串 | 用于运行目标进程的命令行。 示例: "choco.exe" -v |
“TargetProcessCurrentDirectory” | 可选 | 字符串 | 在其中执行目标进程的当前目录。 示例: c:\windows\system32 |
“TargetProcessCreationTime” | 建议 | DateTime | 目标进程映像文件的版本信息中的产品版本。 |
“TargetProcessId” | 必需 | 字符串 | 目标进程的进程 ID (PID)。 示例: 48610176 注意:类型定义为“字符串”以支持不同的系统,但在 Windows 和 Linux 上,此值必须是数字。 如果使用的是 Windows 或 Linux 计算机并使用了其他类型,请务必转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。 |
“TargetProcessGuid” | 可选 | 字符串 | 目标进程的生成的唯一标识符 (GUID)。 可用于跨系统标识进程。 示例: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
“TargetProcessIntegrityLevel” | 可选 | 字符串 | 每个进程都有一个在其令牌中表示的完整性级别。 完整性级别确定保护或访问的进程级别。 Windows 定义了以下完整性级别:“低”、“中”、“高”和“系统”。 标准用户接收“中”完整性级别,提升的用户接收“高”完整性级别。 有关详细信息,请参阅必需完整性控制 - Win32 应用。 |
“TargetProcessTokenElevation” | 可选 | 字符串 | 指示是否存在应用于所创建或终止的进程的用户访问控制 (UAC) 特权提升的令牌类型。 示例: None |
TargetProcessStatusCode | 可选 | String | 目标进程在终止时返回的退出代码。 此字段仅适用于进程终止事件。 为实现一致性,字段类型为字符串,即使操作系统提供的值是数字值也一样。 |
架构更新
下面是架构版本 0.1.1 中的更改:
- 添加了字段
EventSchema
。
下面是架构版本 0.1.2 中的更改
- 添加了字段
ActorUserType
、ActorOriginalUserType
、TargetUserType
、TargetOriginalUserType
和HashType
。
下面是架构版本 0.1.3 中的更改
- 将字段
ParentProcessId
和TargetProcessCreationTime
从必填字段更改为推荐字段。
下面是架构版本 0.1.4 中的更改
- 添加了字段
ActorScope
、DvcScopeId
和DvcScope
。
后续步骤
有关详细信息,请参阅: