高级安全信息模型 (ASIM) DNS 规范化架构参考(公共预览版)

DNS 信息模型用于描述 DNS 服务器或 DNS 安全系统报告的事件,Microsoft Sentinel 用它来启用与源无关的分析。

有关详细信息,请参阅规范化和高级安全信息模型 (ASIM)

重要

DNS 规范化架构目前为预览版。 此功能不附带服务级别协议,不建议将其用于生产工作负荷。

Azure 预览版补充条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。

架构概述

ASIM DNS 架构表示 DNS 协议活动。 DNS 服务器和向 DNS 服务器发送 DNS 请求的设备都会记录 DNS 活动。 DNS 协议活动包括 DNS 查询、DNS 服务器更新和 DNS 批量数据传输。 由于架构表示协议活动,因此它受 RFC 和官方指定的参数列表(本文在适当时会引用这些 RFC 和列表)管制。 DNS 架构不表示 DNS 服务器审核事件。

DNS 服务器报告的最重要的活动是 DNS 查询,其 EventType 字段设置为 Query

DNS 事件最重要的字段包括:

  • DnsQuery,它报告发出查询的域名。

  • SrcIpAddr(别名为 IpAddr),表示从其生成请求的 IP 地址。 DNS 服务器通常提供 SrcIpAddr 字段,但 DNS 客户端有时不提供该字段,仅提供 SrcHostname 字段。

  • EventResultDetails,用于报告请求是否成功,如果不成功,则报告原因。

  • DnsResponseName(如果可用),它保存服务器提供给查询的答案。 ASIM 不需要分析响应,其格式因源而异。

    若要在源不可知内容中使用此字段,请使用 hascontains 运算符搜索内容。

在客户端设备上收集的 DNS 事件还可包括用户进程信息。

DNS 事件收集准则

DNS 是一种独特的协议,因为它可以跨越大量计算机。 此外,由于 DNS 使用 UDP,因此请求和响应是分离的,彼此之间没有直接关系。

下图显示了一个简化的 DNS 请求流,其中包括四个段。 现实中的请求可能更复杂,涉及的段也更多。

简化的 DNS 请求流。

由于请求和响应段在 DNS 请求流中没有直接相互连接,因此,完整日志记录可能会导致大量重复。

要记录的最有价值的段是对客户端的响应。 响应提供域名查询、查找结果和客户端的 IP 地址。 虽然许多 DNS 系统只记录此段,但记录其他部分也是有价值的。 例如,DNS 缓存中毒攻击通常利用来自上游服务器的虚假响应。

如果数据源支持完整 DNS 日志记录,并且你已经选择记录多个段,请调整查询,以防止 Microsoft Sentinel 中的数据重复。

例如,你可以使用以下规范化规则修改查询:

_Im_Dns | where SrcIpAddr != "127.0.0.1" and EventSubType == "response"

分析器

有关 ASIM 分析程序的详细信息,请参阅 ASIM 分析程序概述

现成的分析程序

若要使用统一了所有 ASIM 现成分析程序的分析程序,并确保跨所有配置的源运行分析,请在查询中使用统一分析程序 _Im_Dns 作为表名称。

有关 Microsoft Sentinel 直接提供的 DNS 分析程序列表,请参考 ASIM 分析程序列表

添加自己的规范化分析器

为 Dns 信息模型实现自定义分析程序时,请使用 vimDns<vendor><Product> 格式来命名 KQL 函数。 若要了解如何将自定义分析程序添加到 DNS 统一分析程序,请参阅管理 ASIM 分析程序一文。

筛选分析程序参数

DNS 分析程序支持筛选参数。 尽管这些参数是可选的,但它们可以提高查询性能。

可使用以下筛选参数:

名称 Type 说明
starttime datetime 仅筛选在此时间或之后运行的 DNS 查询。
endtime datetime 仅筛选在此时间或之前完成运行的 DNS 查询。
srcipaddr 字符串 仅筛选来自此源 IP 地址的 DNS 查询。
domain_has_any 动态/字符串 仅筛选 domain(或 query)具有任何列出的域名(包括作为事件域的一部分)的 DNS 查询。 列表的长度限制为 10,000 项。
responsecodename 字符串 仅筛选响应代码名称与提供的值匹配的 DNS 查询。
例如: NXDOMAIN
response_has_ipv4 字符串 仅筛选其中的响应字段包含提供的 IP 地址或 IP 地址前缀的 DNS 查询。 若要根据单个 IP 地址或前缀进行筛选,请使用此参数。

对于不提供响应的源,不会返回结果。
response_has_any_prefix 动态 仅筛选其中的响应字段包含任何列出的 IP 地址或 IP 地址前缀的 DNS 查询。 前缀应以 . 结尾,例如 10.0.

若要根据 IP 地址或前缀列表进行筛选,请使用此参数。

对于不提供响应的源,不会返回结果。 列表的长度限制为 10,000 项。
eventtype 字符串 仅筛选指定类型的 DNS 查询。 如果未指定值,则仅返回查找查询。

例如,若要仅筛选最后一天未能解析域名的 DNS 查询,请使用:

_Im_Dns (responsecodename = 'NXDOMAIN', starttime = ago(1d), endtime=now())

若要仅筛选指定域名列表的 DNS 查询,请使用:

let torProxies=dynamic(["tor2web.org", "tor2web.com", "torlink.co"]);
_Im_Dns (domain_has_any = torProxies)

某些参数可以接受 dynamic 类型的值列表或单个字符串值。 若要将文本列表传递到需要动态值的参数,请显式使用动态文本。 例如:dynamic(['192.168.','10.'])

规范化内容

有关使用规范化 DNS 事件的分析规则的完整列表,请参阅 DNS 查询安全内容

架构详细信息

DNS 信息模型与 OSSEM DNS 实体架构保持一致。

有关详细信息,请参阅 Internet 编号分配机构 (IANA) DNS 参数参考

通用 ASIM 字段

重要

ASIM 通用字段一文详细介绍了所有架构的通用字段。

符合特定准则的通用字段

以下列表提到了具有特定 DNS 事件准则的字段:

字段 类型 说明
EventType 必需 Enumerated 指示记录报告的操作。

对于 DNS 记录,此值将为 DNS 操作代码

示例:Query
EventSubType 可选 Enumerated requestresponse

对于大多数源,仅记录响应,因此该值通常为“response”。
EventResultDetails 必需 Enumerated 对于 DNS 事件,此字段提供 DNS 响应代码

注释
- IANA 未定义值的大小写,因此,分析功能必须规范化大小写。
- 如果源仅提供数值响应代码,而不提供响应代码名称,则分析程序必须包含要使用此值来扩充的查找表。
- 如果此记录表示请求而不是响应,则设置为 NA。

示例: NXDOMAIN
EventSchemaVersion 必需 字符串 此处所述的架构版本为 0.1.7。
EventSchema 必需 字符串 此处所述的架构名称为 Dns。
Dvc 字段 - - 对于 DNS 事件,设备字段是指报告 DNS 事件的系统。

所有通用字段

下表中显示的字段是所有 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

源系统字段

字段 类型 说明
Src Alias 字符串 目标设备的唯一标识符。

此字段的别名为 SrcDvcIdSrcHostnameSrcIpAddr 字段。

示例:192.168.12.1
SrcIpAddr 建议 IP 地址 发送 DNS 请求的客户端的 IP 地址。 对于递归 DNS 请求,此值通常为报告设备,并且在大多数情况下设置为 127.0.0.1

示例:192.168.12.1
SrcPortNumber 可选 整数 DNS 查询的源端口。

示例: 54312
IpAddr Alias SrcIpAddr 的别名
SrcGeoCountry 可选 国家/地区 与源 IP 地址关联的国家/地区。
SrcGeoRegion 可选 区域 与源 IP 地址关联的区域。
SrcGeoCity 可选 城市 与源 IP 地址关联的城市。
SrcGeoLatitude 可选 纬度 与源 IP 地址关联的地理坐标的纬度。

示例:44.475833
SrcGeoLongitude 可选 经度 与源 IP 地址关联的地理坐标的经度。

示例:73.211944
SrcRiskLevel 可选 整数 与源关联的风险级别。 该值应调整为 0100 的范围,其中 0 表示良性,100 表示高风险。

示例: 90
SrcOriginalRiskLevel 可选 整数 与源关联的风险级别,由报告设备报告。

示例: Suspicious
SrcHostname 建议 字符串 源设备主机名,不包括域信息。

示例:DESKTOP-1282V4D
主机名 Alias SrcHostname 的别名
SrcDomain 建议 字符串 源设备的域。

示例: Contoso
SrcDomainType 条件逻辑 Enumerated SrcDomain 的类型(如果已知)。 可能的值包括:
- Windows(例如:contoso
- FQDN(例如:microsoft.com

如果使用了 SrcDomain,则该字段是必填的。
SrcFQDN 可选 String 源设备主机名,包括域信息(如果可用)。

注意:此字段支持传统的 FQDN 格式和 Windows 域\主机名格式。 SrcDomainType 字段反映使用的格式。

示例: Contoso\DESKTOP-1282V4D
SrcDvcId 可选 字符串 记录中报告的源设备的 ID。

例如: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3
SrcDvcScopeId 可选 String 设备所属的云平台范围 ID。 SrcDvcScopeId 映射到 Azure 上的订阅 ID。
SrcDvcScope 可选 String 设备所属的云平台范围。 SrcDvcScope 映射到 Azure 上的订阅 ID。
SrcDvcIdType 条件逻辑 Enumerated SrcDvcId 的类型(如果已知)。 可能的值包括:
- AzureResourceId
- MDEid

如果有多个可用 ID,请使用列表中的第一个 ID,并分别在 SrcDvcAzureResourceId 和 SrcDvcMDEid 中存储其他 ID。

注意:如果使用了 SrcDvcId,则此字段是必填的。
SrcDeviceType 可选 Enumerated 源设备的类型。 可能的值包括:
- Computer
- Mobile Device
- IOT Device
- Other
SrcDescription 可选 字符串 与设备关联的描述性文本。 例如:Primary Domain Controller

源用户字段

字段 类型 说明
SrcUserId 可选 String 源用户的计算机可读的唯一字母数字表示形式。 有关详细信息,以及其他 ID 的替代字段,请参阅 User 实体

示例: S-1-12-1-4141952679-1282074057-627758481-2916039507
SrcUserScope 可选 字符串 在其中定义了 SrcUserIdSrcUsername 的范围,例如 Microsoft Entra 租户。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserScope
SrcUserScopeId 可选 字符串 在其中定义了 SrcUserIdSrcUsername 的范围 ID,例如 Microsoft Entra Directory ID。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserScopeId
SrcUserIdType 条件逻辑 UserIdType SrcUserId 字段中存储的 ID 的类型。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserIdType
SrcUsername 可选 用户名 源用户名,包括域信息(如果可用)。 有关详细信息,请参阅用户实体

示例: AlbertE
SrcUsernameType 条件逻辑 UsernameType 指定 SrcUsername 字段中存储的用户名的类型。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UsernameType

示例: Windows
User Alias SrcUsername 的别名
SrcUserType 可选 UserType 源用户的类型。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserType

例如:Guest
SrcUserSessionId 可选 字符串 参与者登录会话的唯一 ID。

示例: 102pTUgC3p8RIqHvzxLCHnFlg
SrcOriginalUserType 可选 String 原始源用户类型(如果源已提供)。

源进程字段

字段 类型 说明
SrcProcessName 可选 String 发起 DNS 请求的进程的文件名。 此名称通常被视为进程名称。

示例: C:\Windows\explorer.exe
处理 Alias SrcProcessName 的别名

示例: C:\Windows\System32\rundll32.exe
SrcProcessId 可选 String 发起 DNS 请求的进程的进程 ID (PID)。

示例: 48610176

注意:类型定义为“字符串”以支持不同的系统,但在 Windows 和 Linux 上,此值必须是数字。

如果使用的是 Windows 或 Linux 计算机并使用了其他类型,请务必转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。
SrcProcessGuid 可选 String 为发起 DNS 请求的进程生成的唯一标识符 (GUID)。

示例:EF3BD0BD-2B74-60C5-AF5C-010000001E00

目标系统字段

字段 类型 说明
Dst Alias 字符串 接收 DNS 请求的服务器的唯一标识符。

此字段又可称为 DstDvcIdDstHostnameDstIpAddr 字段。

示例: 192.168.12.1
DstIpAddr 可选 IP 地址 接收 DNS 请求的服务器的 IP 地址。 对于常规 DNS 请求,此值通常为报告设备,并且在大多数情况下设置为 127.0.0.1

示例:127.0.0.1
DstGeoCountry 可选 国家/地区 与目标 IP 地址关联的国家/地区。 有关详细信息,请参阅逻辑类型
DstGeoRegion 可选 区域 与目标 IP 地址关联的区域或省/自治区/直辖市。 有关详细信息,请参阅逻辑类型
DstGeoCity 可选 城市 与目标 IP 地址关联的城市。 有关详细信息,请参阅逻辑类型
DstGeoLatitude 可选 纬度 与目标 IP 地址关联的地理坐标的纬度。 有关详细信息,请参阅逻辑类型

示例:44.475833
DstGeoLongitude 可选 经度 与目标 IP 地址关联的地理坐标的经度。 有关详细信息,请参阅逻辑类型

示例:73.211944
DstRiskLevel 可选 整数 与目标关联的风险级别。 应将此值的范围调整为 0-100,0 表示无危险,100 表示高风险。

示例:90
DstOriginalRiskLevel 可选 整数 与目标关联的风险级别,由报告设备报告。

示例:Malicious
DstPortNumber 可选 整数 目标端口号。

示例:53
DstHostname 可选 字符串 目标设备主机名,不包括域信息。 如果没有可用的设备名称,请在此字段中存储相关的 IP 地址。

示例:DESKTOP-1282V4D

注意:如果指定了 DstIpAddr,则此值是必需的。
DstDomain 可选 字符串 目标设备的域。

示例:Contoso
DstDomainType 条件逻辑 Enumerated DstDomain 的类型(如果已知)。 可能的值包括:
- Windows (contoso\mypc)
- FQDN (learn.microsoft.com)

如果使用了 DstDomain,则该字段是必填的。
DstFQDN 可选 String 目标设备主机名,包括域信息(如果可用)。

示例:Contoso\DESKTOP-1282V4D

注意:此字段支持传统的 FQDN 格式和 Windows 域\主机名格式。 DstDomainType 反映使用的格式。
DstDvcId 可选 String 记录中报告的目标设备的 ID。

示例:ac7e9755-8eae-4ffc-8a02-50ed7a2216c3
DstDvcScopeId 可选 String 设备所属的云平台范围 ID。 DstDvcScopeId 映射到 Azure 上的订阅 ID。
DstDvcScope 可选 String 设备所属的云平台范围。 DstDvcScope 映射到 Azure 上的订阅 ID。
DstDvcIdType 条件逻辑 Enumerated DstDvcId 的类型(如果已知)。 可能的值包括:
- AzureResourceId
- MDEidIf

如果有多个可用 ID,请使用上述列表中的第一个 ID,并分别在 DstDvcAzureResourceId 或 DstDvcMDEid 字段中存储其他 ID。

如果使用了 DstDeviceId,则该字段是必填的。
DstDeviceType 可选 Enumerated 目标设备的类型。 可能的值包括:
- Computer
- Mobile Device
- IOT Device
- Other
DstDescription 可选 字符串 与设备关联的描述性文本。 例如:Primary Domain Controller

特定于 DNS 的字段

字段 类型 说明
DnsQuery 必需 字符串 请求尝试解析的域。

注释
- 某些源以不同的格式发送有效的 FQDN 查询。 例如,在 DNS 协议本身中,查询在末尾包含一个点 (.),必须将其删除。
- 虽然 DNS 协议将此字段中的值类型限制为 FQDN,但大多数 DNS 服务器都允许任何值,因此此字段不限于 FQDN 值。 最值得注意的是,DNS 隧道攻击可能会在查询字段中使用无效的 FQDN 值。
- 虽然 DNS 协议允许单个请求中存在多个查询,但这种情况很少见(即便有)。 如果请求有多个查询,则将第一个查询存储在此字段中,然后根据需要将其余查询保留在 AdditionalFields 字段中。

示例:www.malicious.com
Domain Alias DnsQuery 的别名。
DnsQueryType 可选 整数 DNS 资源记录类型代码

示例:28
DnsQueryTypeName 建议 Enumerated DNS 资源记录类型名称。

注释
- IANA 未定义值的大小写,因此,分析功能必须根据需要规范化大小写。
- 响应代码 255 支持值 ANY
- 未映射的响应代码支持值 TYPExxxx,其中 xxxx 是响应代码的数值,由 BIND DNS 服务器报告。
- 如果源仅提供数值查询类型代码,而不提供查询类型名称,则分析程序必须包含要使用此值来扩充的查找表。

示例:AAAA
DnsResponseName 可选 字符串 响应的内容,包含在记录中。

DNS 响应数据在报告设备之间不一致,分析起来很复杂,并且对于与源无关的分析的价值较小。 因此,信息模型不需要分析和规范化,Microsoft Sentinel 会使用辅助函数来提供响应信息。 有关详细信息,请参阅处理 DNS 响应
DnsResponseCodeName Alias EventResultDetails 的别名
DnsResponseCode 可选 整数 DNS 数值响应代码

示例:3
TransactionIdHex 建议 字符串 由 DNS 客户端分配的 DNS 查询唯一 ID,采用十六进制格式。 请注意,此值是 DNS 协议的一部分,不同于通常由报告设备分配的网络层会话 ID DnsSessionId
NetworkProtocol 可选 Enumerated 网络解析事件使用的传输协议。 其值可以是 UDP 或 TCP;对于 DNS,最常设置为 UDP。

示例:UDP
NetworkProtocolVersion 可选 Enumerated NetworkProtocol 的版本。 使用它区分 IP 版本时,使用值 IPv4IPv6
DnsQueryClass 可选 整数 DNS 类 ID

在实践中,仅使用 IN 类 (ID 1),因此该字段并不重要。
DnsQueryClassName 可选 字符串 DNS 类名

在实践中,仅使用 IN 类 (ID 1),因此该字段并不重要。

示例:IN
DnsFlags 可选 String 标志字段,由报告设备提供。 如果在多个字段中提供标志信息,请使用逗号作为分隔符将它们连接起来。

由于 DNS 标志分析起来很复杂,而且很少被分析功能使用,因此无需分析和规范化。 Microsoft Sentinel 可以使用辅助函数来提供标志信息。 有关详细信息,请参阅处理 DNS 响应

示例:["DR"]
DnsNetworkDuration 可选 整数 完成 DNS 请求所花费的时间,以毫秒为单位。

示例: 1500
持续时间 Alias DnsNetworkDuration 的别名
DnsFlagsAuthenticated 可选 布尔 DNS AD 标志与 DNSSEC 相关,指示响应中包含响应的答案和颁发机构部分中包含的所有数据都已根据该服务器的策略进行了验证。 有关详细信息,请参阅 RFC 3655 第 6.1 节
DnsFlagsAuthoritative 可选 布尔 DNS AA 标志指示来自服务器的响应是否权威
DnsFlagsCheckingDisabled 可选 布尔 与 DNSSEC 相关的 DNS CD 标志指示在查询中,发送查询的系统可以接受未经验证的数据。 有关详细信息,请参阅 RFC 3655 第 6.1 节
DnsFlagsRecursionAvailable 可选 布尔 DNS RA 标志在响应中指示该服务器支持递归查询。
DnsFlagsRecursionDesired 可选 布尔 DNS RD 标志在请求中指示该客户端希望服务器使用递归查询。
DnsFlagsTruncated 可选 布尔 DNS TC 标志指示响应在超出最大响应大小时被截断。
DnsFlagsZ 可选 布尔 DNS Z 标志是一个已弃用的 DNS 标志,可能由较旧的 DNS 系统报告。
DnsSessionId 可选 string 报告设备报告的 DNS 会话标识符。 此值不同于 TransactionIdHex,后者是由 DNS 客户端分配的 DNS 查询唯一 ID。

示例:EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55
SessionId Alias DnsSessionId 的别名
DnsResponseIpCountry 可选 国家/地区 与 DNS 响应中的某个 IP 地址关联的国家/地区。 有关详细信息,请参阅逻辑类型
DnsResponseIpRegion 可选 区域 与 DNS 响应中的 IP 地址之一关联的区域或省/自治区/直辖市。 有关详细信息,请参阅逻辑类型
DnsResponseIpCity 可选 城市 与 DNS 响应中的某个 IP 地址关联的城市。 有关详细信息,请参阅逻辑类型
DnsResponseIpLatitude 可选 纬度 与 DNS 响应中的某个 IP 地址关联的地理坐标的纬度。 有关详细信息,请参阅逻辑类型

示例:44.475833
DnsResponseIpLongitude 可选 经度 与 DNS 响应中的某个 IP 地址关联的地理坐标的经度。 有关详细信息,请参阅逻辑类型

示例:73.211944

检查字段

以下字段用于表示 DNS 安全设备执行的检查。 威胁相关字段表示与源地址、目标地址、响应中的一个 IP 地址或 DNS 查询域相关联的单个威胁。 如果不止一个威胁被识别为威胁,则有关其他 IP 地址的信息可以存储在字段 AdditionalFields 中。

字段 类型 说明
UrlCategory 可选 字符串 DNS 事件源还可以查找所请求域的类别。 该字段被称为“UrlCategory”,以与 Microsoft Sentinel 网络架构保持一致。

添加 DomainCategory 作为适合 DNS 的别名。

示例:Educational \\ Phishing
DomainCategory Alias UrlCategory 的别名。
NetworkRuleName 可选 字符串 识别到威胁的规则的名称或 ID。

示例:AnyAnyDrop
NetworkRuleNumber 可选 整数 识别到威胁的规则的编号。

示例:23
规则 Alias 字符串 NetworkRuleName 的值或 NetworkRuleNumber 的值。 如果使用 NetworkRuleNumber 的值,则类型应转换为字符串。
ThreatId 可选 String 在网络会话中识别到的威胁或恶意软件的 ID。

示例:Tr.124
ThreatCategory 可选 字符串 如果 DNS 事件源还提供 DNS 安全性,它还可以评估 DNS 事件。 例如,它可以在威胁情报数据库中搜索 IP 地址或域,并为域或 IP 地址分配威胁类别。
ThreatIpAddr 可选 IP 地址 已识别出威胁的 IP 地址。 字段 ThreatField 包含 ThreatIpAddr 表示的字段的名称。 如果在 Domain 字段中识别出威胁,则此字段应为空。
ThreatField 条件逻辑 Enumerated 已识别出威胁的字段。 该值为 SrcIpAddrDstIpAddrDomainDnsResponseName
ThreatName 可选 字符串 报告设备报告的已识别威胁的名称。
ThreatConfidence 可选 整数 已识别威胁的可信度,规范化为 0 到 100 之间的值。
ThreatOriginalConfidence 可选 字符串 报告设备报告的已识别威胁的原始可信度。
ThreatRiskLevel 可选 整数 与已识别威胁关联的风险级别,规范化为 0 到 100 之间的值。
ThreatOriginalRiskLevel 可选 字符串 由报告设备报告的、与已识别威胁相关联的原始风险级别。
ThreatIsActive 可选 Boolean 如果已识别的威胁被视为活动威胁,则为 True。
ThreatFirstReportedTime 可选 datetime IP 地址或域首次被识别为威胁的时间。
ThreatLastReportedTime 可选 datetime 上次将 IP 地址或域识别为威胁的时间。

已弃用的别名和字段

以下字段是为了向后兼容而保留的别名。 它们已于 2021 年 12 月 31 日从架构中删除。

  • QueryDnsQuery 的别名)
  • QueryTypeDnsQueryType 的别名)
  • QueryTypeNameDnsQueryTypeName 的别名)
  • ResponseNameDnsReasponseName 的别名)
  • ResponseCodeNameDnsResponseCodeName 的别名)
  • ResponseCodeDnsResponseCode 的别名)
  • QueryClassDnsQueryClass 的别名)
  • QueryClassNameDnsQueryClassName 的别名)
  • FlagsDnsFlags 的别名)
  • SrcUserDomain

架构更新

架构版本 0.1.2 中的更改包括:

  • 添加了字段 EventSchema
  • 添加了专用标志字段,用于扩充组合 Flags 字段:DnsFlagsAuthoritativeDnsFlagsCheckingDisabledDnsFlagsRecursionAvailableDnsFlagsRecursionDesiredDnsFlagsTruncatedDnsFlagsZ

架构版本 0.1.3 中的更改包括:

  • 架构目前显式记录 Src*Dst*Process*User* 字段。
  • 添加了更多 Dvc* 字段,以匹配最新的常用字段定义。
  • 向源和目标系统的前导标识符添加了 SrcDst 作为别名。
  • 添加了可选的 DnsNetworkDurationDuration(其别名)。
  • 添加了可选的“地理位置”和“风险级别”字段。

架构版本 0.1.4 中的更改包括:

  • 添加了可选字段 ThreatIpAddrThreatFieldThreatNameThreatConfidenceThreatOriginalConfidenceThreatOriginalRiskLevelThreatIsActiveThreatFirstReportedTimeThreatLastReportedTime

架构版本 0.1.5 中的更改包括:

  • 添加了字段 SrcUserScopeSrcUserSessionIdSrcDvcScopeIdSrcDvcScopeDstDvcScopeIdDstDvcScopeDvcScopeIdDvcScope

架构版本 0.1.6 中的更改包括:

  • 添加了字段 DnsResponseIpCountryDnsResponseIpRegionDnsResponseIpCityDnsResponseIpLatitudeDnsResponseIpLongitude

架构版本 0.1.7 中的更改包括:

  • 添加了字段 SrcDescriptionSrcOriginalRiskLevelDstDescriptionDstOriginalRiskLevelSrcUserScopeIdNetworkProtocolVersionRuleRuleNameRuleNumberThreatId

特定于源的差异

规范化的目标是确保所有源提供一致的遥测数据。 无法规范化未提供所需遥测数据(如必需的架构字段)的源。 但是,可以规范化通常提供所有必需遥测数据的源,即使存在一些差异也是如此。 差异可能会影响查询结果的完整性。

下表列出了已知的差异:

差异
使用 DNS 连接器和 Log Analytics 代理收集的 Microsoft DNS 服务器 连接器不为原始事件 ID 264(对动态更新的响应)提供必需的 DnsQuery 字段。 源中提供该数据,但没有被连接器转发。

处理 DNS 响应

在大多数情况下,记录的 DNS 事件不包括响应信息,这些信息的量可能很大而且很详细。 如果记录中包含较多响应信息,请将显示在记录中的响应信息存储在 ResponseName 字段中。

你还可以提供一个额外的名为 _imDNS<vendor>Response_ 的 KQL 函数,它将未分析的响应作为输入并返回具有以下结构的动态值:

[
    {
        "part": "answer"
        "query": "yahoo.com."
        "TTL": 1782
        "Class": "IN"
        "Type": "A"
        "Response": "74.6.231.21"
    }
    {
        "part": "authority"
        "query": "yahoo.com."
        "TTL": 113066
        "Class": "IN"
        "Type": "NS"
        "Response": "ns5.yahoo.com"
    }
    ...
]

动态值中每个字典中的字段对应于每个 DNS 响应中的字段。 part 条目应包含 answerauthorityadditional,以反映字典所属的响应部分。

提示

若要确保最佳性能,请仅在需要时调用 imDNS<vendor>Response 函数;若要在此基础上获得更好的性能,应仅在初始筛选后调用。

处理 DNS 标志

无需分析和规范化标志数据, 而应将报告设备提供的标志数据存储在 Flags 字段中。 如果可以直接确定各个标志的值,则还可以使用专用标志字段。

你还可以提供一个额外的名为 _imDNS<vendor>Flags_ 的 KQL 函数,它将未分析的响应或专用标志字段作为输入并返回一个动态列表,其中包含按以下顺序表示每个标志的布尔值:

  • 已通过身份验证 (AD)
  • 权威 (AA)
  • 已禁用检查 (CD)
  • 递归可用 (RA)
  • 需要递归 (RD)
  • 已截断 (TC)
  • Z

后续步骤

有关详细信息,请参阅: