你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
高级安全信息模型 (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 不需要分析响应,其格式因源而异。
若要在源不可知内容中使用此字段,请使用
has
或contains
运算符搜索内容。
DNS 事件收集准则
DNS 是一种独特的协议,因为它可以跨越大量计算机。 此外,由于 DNS 使用 UDP,因此请求和响应是分离的,彼此之间没有直接关系。
下图显示了一个简化的 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 | request 或 response 。 对于大多数源,仅记录响应,因此该值通常为“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 | 字符串 | 目标设备的唯一标识符。 此字段的别名为 SrcDvcId、SrcHostname 或 SrcIpAddr 字段。 示例: 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 地址关联的国家/地区。 示例: USA |
SrcGeoRegion | 可选 | 区域 | 与源 IP 地址关联的区域。 示例: Vermont |
SrcGeoCity | 可选 | 城市 | 与源 IP 地址关联的城市。 示例: Burlington |
SrcGeoLatitude | 可选 | 纬度 | 与源 IP 地址关联的地理坐标的纬度。 示例: 44.475833 |
SrcGeoLongitude | 可选 | 经度 | 与源 IP 地址关联的地理坐标的经度。 示例: 73.211944 |
SrcRiskLevel | 可选 | 整数 | 与源关联的风险级别。 该值应调整为 0 到 100 的范围,其中 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 和 AWS 上的帐户 ID。 |
SrcDvcScope | 可选 | String | 设备所属的云平台范围。 SrcDvcScope 映射到 Azure 上的订阅 ID 和 AWS 上的帐户 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 | 可选 | 字符串 | 在其中定义了 SrcUserId 和 SrcUsername 的范围,例如 Microsoft Entra 租户。 有关详细信息和允许值的列表,请参阅架构概述文章中的 UserScope。 |
SrcUserScopeId | 可选 | 字符串 | 在其中定义了 SrcUserId 和 SrcUsername 的范围 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 请求的服务器的唯一标识符。 此字段又可称为 DstDvcId、DstHostname 或 DstIpAddr 字段。 示例: 192.168.12.1 |
DstIpAddr | 可选 | IP 地址 | 接收 DNS 请求的服务器的 IP 地址。 对于常规 DNS 请求,此值通常为报告设备,并且在大多数情况下设置为 127.0.0.1 。示例: 127.0.0.1 |
DstGeoCountry | 可选 | 国家/地区 | 与目标 IP 地址关联的国家/地区。 有关详细信息,请参阅逻辑类型。 示例: USA |
DstGeoRegion | 可选 | 区域 | 与目标 IP 地址关联的区域或省/自治区/直辖市。 有关详细信息,请参阅逻辑类型。 示例: Vermont |
DstGeoCity | 可选 | 城市 | 与目标 IP 地址关联的城市。 有关详细信息,请参阅逻辑类型。 示例: Burlington |
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 和 AWS 上的帐户 ID。 |
DstDvcScope | 可选 | String | 设备所属的云平台范围。 DstDvcScope 映射到 Azure 上的订阅 ID 和 AWS 上的帐户 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 版本时,使用值 IPv4 和 IPv6 。 |
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 地址关联的国家/地区。 有关详细信息,请参阅逻辑类型。 示例: USA |
DnsResponseIpRegion | 可选 | 区域 | 与 DNS 响应中的 IP 地址之一关联的区域或省/自治区/直辖市。 有关详细信息,请参阅逻辑类型。 示例: Vermont |
DnsResponseIpCity | 可选 | 城市 | 与 DNS 响应中的某个 IP 地址关联的城市。 有关详细信息,请参阅逻辑类型。 示例: Burlington |
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 | 已识别出威胁的字段。 该值为 SrcIpAddr 、DstIpAddr 、Domain 或 DnsResponseName 。 |
ThreatName | 可选 | 字符串 | 报告设备报告的已识别威胁的名称。 |
ThreatConfidence | 可选 | 整数 | 已识别威胁的可信度,规范化为 0 到 100 之间的值。 |
ThreatOriginalConfidence | 可选 | 字符串 | 报告设备报告的已识别威胁的原始可信度。 |
ThreatRiskLevel | 可选 | 整数 | 与已识别威胁关联的风险级别,规范化为 0 到 100 之间的值。 |
ThreatOriginalRiskLevel | 可选 | 字符串 | 由报告设备报告的、与已识别威胁相关联的原始风险级别。 |
ThreatIsActive | 可选 | Boolean | 如果已识别的威胁被视为活动威胁,则为 True。 |
ThreatFirstReportedTime | 可选 | datetime | IP 地址或域首次被识别为威胁的时间。 |
ThreatLastReportedTime | 可选 | datetime | 上次将 IP 地址或域识别为威胁的时间。 |
已弃用的别名和字段
以下字段是为了向后兼容而保留的别名。 它们已于 2021 年 12 月 31 日从架构中删除。
Query
(DnsQuery
的别名)QueryType
(DnsQueryType
的别名)QueryTypeName
(DnsQueryTypeName
的别名)ResponseName
(DnsResponseName
的别名)ResponseCodeName
(DnsResponseCodeName
的别名)ResponseCode
(DnsResponseCode
的别名)QueryClass
(DnsQueryClass
的别名)QueryClassName
(DnsQueryClassName
的别名)Flags
(DnsFlags
的别名)SrcUserDomain
架构更新
架构版本 0.1.2 中的更改包括:
- 添加了字段
EventSchema
。 - 添加了专用标志字段,用于扩充组合 Flags 字段:
DnsFlagsAuthoritative
、DnsFlagsCheckingDisabled
、DnsFlagsRecursionAvailable
、DnsFlagsRecursionDesired
、DnsFlagsTruncated
和DnsFlagsZ
。
架构版本 0.1.3 中的更改包括:
- 架构目前显式记录
Src*
、Dst*
、Process*
和User*
字段。 - 添加了更多
Dvc*
字段,以匹配最新的常用字段定义。 - 向源和目标系统的前导标识符添加了
Src
和Dst
作为别名。 - 添加了可选的
DnsNetworkDuration
和Duration
(其别名)。 - 添加了可选的“地理位置”和“风险级别”字段。
架构版本 0.1.4 中的更改包括:
- 添加了可选字段
ThreatIpAddr
、ThreatField
、ThreatName
、ThreatConfidence
、ThreatOriginalConfidence
、ThreatOriginalRiskLevel
、ThreatIsActive
、ThreatFirstReportedTime
和ThreatLastReportedTime
。
架构版本 0.1.5 中的更改包括:
- 添加了字段
SrcUserScope
、SrcUserSessionId
、SrcDvcScopeId
、SrcDvcScope
、DstDvcScopeId
、DstDvcScope
、DvcScopeId
和DvcScope
。
架构版本 0.1.6 中的更改包括:
- 添加了字段
DnsResponseIpCountry
、DnsResponseIpRegion
、DnsResponseIpCity
、DnsResponseIpLatitude
和DnsResponseIpLongitude
。
架构版本 0.1.7 中的更改包括:
- 添加了字段
SrcDescription
、SrcOriginalRiskLevel
、DstDescription
、DstOriginalRiskLevel
、SrcUserScopeId
、NetworkProtocolVersion
、Rule
、RuleName
、RuleNumber
和ThreatId
。
特定于源的差异
规范化的目标是确保所有源提供一致的遥测数据。 无法规范化未提供所需遥测数据(如必需的架构字段)的源。 但是,可以规范化通常提供所有必需遥测数据的源,即使存在一些差异也是如此。 差异可能会影响查询结果的完整性。
下表列出了已知的差异:
源 | 差异 |
---|---|
使用 DNS 连接器和 Log Analytics 代理收集的 Microsoft DNS 服务器 | 连接器不为原始事件 ID 264(对动态更新的响应)提供必需的 DnsQuery 字段。 源中提供该数据,但没有被连接器转发。 |
Corelight Zeek | Corelight Zeek 可能不提供必需的 DnsQuery 字段。 在 DNS 响应代码名称为 NXDOMAIN 的某些情况下,我们观察到此类行为。 |
处理 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
条目应包含 answer
、authority
或 additional
,以反映字典所属的响应部分。
提示
若要确保最佳性能,请仅在需要时调用 imDNS<vendor>Response
函数;若要在此基础上获得更好的性能,应仅在初始筛选后调用。
处理 DNS 标志
无需分析和规范化标志数据, 而应将报告设备提供的标志数据存储在 Flags 字段中。 如果可以直接确定各个标志的值,则还可以使用专用标志字段。
你还可以提供一个额外的名为 _imDNS<vendor>Flags_
的 KQL 函数,它将未分析的响应或专用标志字段作为输入并返回一个动态列表,其中包含按以下顺序表示每个标志的布尔值:
- 已通过身份验证 (AD)
- 权威 (AA)
- 已禁用检查 (CD)
- 递归可用 (RA)
- 需要递归 (RD)
- 已截断 (TC)
- Z
后续步骤
有关详细信息,请参阅: