你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
DNS 信息模型用于描述由 DNS 服务器或 DNS 安全系统报告的事件,并由Microsoft Sentinel用于启用与源无关的分析。
有关详细信息,请参阅 规范化和高级安全信息模型 (ASIM) 。
架构概述
ASIM DNS 架构表示 DNS 协议活动。 向 DNS 服务器发送 DNS 请求的 DNS 服务器和设备都记录了 DNS 活动。 DNS 协议活动包括 DNS 查询、DNS 服务器更新和 DNS 批量数据传输。 由于架构表示协议活动,因此它受 RFC 和正式分配的参数列表控制,本文在适当时会引用这些列表。 DNS 架构不表示 DNS 服务器审核事件。
DNS 服务器报告的最重要活动是 DNS 查询,其 EventType 字段设置为 Query。
DNS 事件中最重要的字段是:
DnsQuery,用于报告发出查询的域名。
SrcIpAddr (别名为 IpAddr) ,表示从中生成请求的 IP 地址。 DNS 服务器通常提供 SrcIpAddr 字段,但 DNS 客户端有时不提供此字段,仅提供 SrcHostname 字段。
EventResultDetails,它报告请求是否成功,如果不是,则报告原因。
如果可用, 则为 DnsResponseName,它保存服务器提供给查询的答案。 ASIM 不需要分析响应,其格式因源而异。
若要在与源无关的内容中使用此字段,请使用 或
contains运算符搜索内容has。
在客户端设备上收集的 DNS 事件可能还包括 用户 和 进程 信息。
收集 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 作为查询中的表名称。
有关 DNS 分析程序列表Microsoft Sentinel提供现成的,请参阅 ASIM 分析程序列表。
添加自己的规范化分析程序
为 Dns 信息模型实现自定义分析程序时,请使用格式 vimDns<vendor><Product>命名 KQL 函数。 请参阅 管理 ASIM 分析程序 一文,了解如何将自定义分析程序添加到 DNS 统一分析器。
筛选分析程序参数
DNS 分析程序支持 筛选参数。 虽然这些参数是可选的,但它们可以提高查询性能。
以下筛选参数可用:
| 名称 | 类型 | 说明 |
|---|---|---|
| starttime | datetime | 仅筛选在此时间或之后运行的 DNS 查询。 此参数筛选 TimeGenerated 字段,该字段是事件时间的标准指示符,而不考虑 EventStartTime 和 EventEndTime 字段的特定于分析器的映射。 |
| endtime | datetime | 仅筛选在此时间或之前完成运行的 DNS 查询。 此参数筛选 TimeGenerated 字段,该字段是事件时间的标准指示符,而不考虑 EventStartTime 和 EventEndTime 字段的特定于分析器的映射。 |
| srcipaddr | string | 仅筛选来自此源 IP 地址的 DNS 查询。 |
| domain_has_any | dynamic/string | 仅筛选 (或 query) 具有任何列出的域名(包括事件域的一部分)的 DNS 查询domain。 列表的长度限制为 10,000 个项目。 |
| responsecodename | string | 仅筛选响应代码名称与所提供的值匹配的 DNS 查询。 例如: NXDOMAIN |
| response_has_ipv4 | string | 仅筛选响应字段包含提供的 IP 地址或 IP 地址前缀的 DNS 查询。 如果要筛选单个 IP 地址或前缀,请使用此参数。 对于不提供响应的源,不会返回结果。 |
| response_has_any_prefix | 动态 | 仅筛选响应字段包含任何列出的 IP 地址或 IP 地址前缀的 DNS 查询。 前缀应以 .结尾,例如: 10.0.。 如果要筛选 IP 地址或前缀列表,请使用此参数。 对于不提供响应的源,不会返回结果。 列表的长度限制为 10,000 个项目。 |
| eventtype | string | 仅筛选指定类型的 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 事件特定准则的字段:
| Field | 类 | 类型 | 说明 |
|---|---|---|---|
| EventType | 强制 | 枚举 | 指示记录报告的操作。 对于 DNS 记录,此值为 DNS 操作代码。 例如: Query |
| EventSubType | 可选 | 枚举 |
request 或 response。 对于大多数源, 仅记录响应,因此值通常是 响应。 |
| EventResultDetails | 强制 | 枚举 | 对于 DNS 事件,此字段提供 DNS 响应代码。 注意: - IANA 不定义值大小写,因此分析必须规范化大小写。 - 如果源仅提供数字响应代码,而不提供响应代码名称,则分析程序必须包含查找表才能使用此值进行扩充。 - 如果此记录表示请求而不是响应,请将 设置为 NA。 例如: NXDOMAIN |
| EventSchemaVersion | 强制 | SchemaVersion (String) | 此处记录的架构版本为 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 | 别名 | String | 源设备的唯一标识符。 此字段可以为 SrcDvcId、 SrcHostname 或 SrcIpAddr 字段添加别名。 例如: 192.168.12.1 |
| SrcIpAddr | 建议 | IP 地址 | 发送 DNS 请求的客户端的 IP 地址。 对于递归 DNS 请求,此值通常是报告设备,并且在大多数情况下设置为 127.0.0.1。 例如: 192.168.12.1 |
| SrcPortNumber | 可选 | 整数 | DNS 查询的源端口。 例如: 54312 |
| IpAddr | 别名 | SrcIpAddr 的别名 | |
| SrcGeoCountry | 可选 | 国家/地区 | 与源 IP 地址关联的国家/地区。 例如: USA |
| SrcGeoRegion | 可选 | 地区 | 与源 IP 地址关联的区域。 例如: Vermont |
| SrcGeoCity | 可选 | 市/县 | 与源 IP 地址关联的城市。 例如: Burlington |
| SrcGeoLatitude | 可选 | Latitude | 与源 IP 地址关联的地理坐标的纬度。 例如: 44.475833 |
| SrcGeoLongitude | 可选 | Longitude | 与源 IP 地址关联的地理坐标的经度。 例如: 73.211944 |
| SrcRiskLevel | 可选 | 整数 | 与源关联的风险级别。 值应调整为 范围,0设置为 ,并0针对良性和100100高风险。例如: 90 |
| SrcOriginalRiskLevel | 可选 | String | 与源关联的风险级别,由报告设备报告。 例如: Suspicious |
| SrcHostname | 建议 | 主机名 (字符串) | 源设备主机名,不包括域信息。 例如: DESKTOP-1282V4D |
| 主机名 | 别名 | SrcHostname 的别名 | |
| SrcDomain | 建议 | 域 (字符串) | 源设备的域。 例如: Contoso |
| SrcDomainType | 条件 | 枚举 |
SrcDomain 的类型(如果已知)。 可能的值包括: - Windows (,例如: contoso)- FQDN (,例如: microsoft.com)如果使用 SrcDomain, 则是必需的。 |
| SrcFQDN | 可选 | FQDN (字符串) | 源设备主机名,包括域信息(如果有)。 注意:此字段支持传统的 FQDN 格式和 Windows 域\主机名格式。 SrcDomainType 字段反映所使用的格式。 例如: Contoso\DESKTOP-1282V4D |
| SrcDvcId | 可选 | String | 记录中报告的源设备的 ID。 例如: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
| SrcDvcScopeId | 可选 | String | 设备所属的云平台范围 ID。 SrcDvcScopeId 映射到 Azure 上的订阅 ID 和 AWS 上的帐户 ID。 |
| SrcDvcScope | 可选 | String | 设备所属的云平台范围。 SrcDvcScope 映射到 Azure 上的订阅 ID,以及 AWS 上的帐户 ID。 |
| SrcDvcIdType | 条件 | 枚举 |
SrcDvcId 的类型(如果已知)。 可能的值包括: - AzureResourceId- MDEid如果有多个 ID 可用,请使用列表中的第一个 ID,并将其他 ID 分别存储在 SrcDvcAzureResourceId 和 SrcDvcMDEid 中。 注意:如果使用 SrcDvcId ,则需要此字段。 |
| SrcDeviceType | 可选 | 枚举 | 源设备的类型。 可能的值包括: - Computer- Mobile Device- IOT Device- Other |
| SrcDescription | 可选 | String | 与设备关联的描述性文本。 例如:Primary Domain Controller。 |
源用户字段
| 字段 | 类 | 类型 | 说明 |
|---|---|---|---|
| SrcUserId | 可选 | String | 源用户的计算机可读字母数字唯一表示形式。 有关详细信息,以及有关其他 ID 的备用字段,请参阅 User 实体。 例如: S-1-12-1-4141952679-1282074057-627758481-2916039507 |
| SrcUserScope | 可选 | String | 定义 SrcUserId 和 SrcUsername 的范围(例如Microsoft Entra租户)。 有关详细信息和允许的值列表,请参阅架构概述一文中的 UserScope。 |
| SrcUserScopeId | 可选 | String | 定义 SrcUserId 和 SrcUsername 的范围 ID,例如 Microsoft Entra 目录 ID。 有关详细信息和允许的值列表,请参阅架构概述一文中的 UserScopeId。 |
| SrcUserIdType | 条件 | UserIdType | 存储在 SrcUserId 字段中的 ID 的类型。 有关详细信息和允许的值列表,请参阅架构概述一文中的 UserIdType。 |
| SrcUsername | 可选 | 用户名 (字符串) | 源用户名,包括域信息(如果可用)。 有关详细信息,请参阅 用户实体。 例如: AlbertE |
| SrcUsernameType | 条件 | UsernameType | 指定存储在 SrcUsername 字段中的用户名的类型。 有关详细信息和允许的值列表,请参阅架构概述一文中的 UsernameType。 例如: Windows |
| 用户 | 别名 | SrcUsername 的别名 | |
| SrcUserType | 可选 | UserType | 源用户的类型。 有关详细信息和允许的值列表,请参阅架构概述一文中的 UserType。 例如: Guest |
| SrcUserSessionId | 可选 | String | 执行组件登录会话的唯一 ID。 例如: 102pTUgC3p8RIqHvzxLCHnFlg |
| SrcOriginalUserType | 可选 | String | 原始源用户类型(如果由源提供)。 |
源进程字段
| 字段 | 类 | 类型 | 说明 |
|---|---|---|---|
| SrcProcessName | 可选 | String | 发起 DNS 请求的进程文件名。 此名称通常被视为进程名称。 例如: C:\Windows\explorer.exe |
| 过程 | 别名 |
SrcProcessName 的别名 例如: C:\Windows\System32\rundll32.exe |
|
| SrcProcessId | 可选 | String | 进程 ID (启动 DNS 请求的进程) PID。 例如: 48610176 注意:类型定义为字符串以支持不同的系统,但在 Windows 和 Linux此值必须是数值。 如果你使用的是 Windows 或 Linux 计算机,并且使用了其他类型,请确保转换值。 例如,如果使用了十六进制值,请将其转换为十进制值。 |
| SrcProcessGuid | 可选 | GUID (字符串) | 生成的唯一标识符 (发起 DNS 请求的进程) GUID。 例如: EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
目标系统字段
| 字段 | 类 | 类型 | 说明 |
|---|---|---|---|
| Dst | 别名 | String | 接收 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 | 可选 | Latitude | 与目标 IP 地址关联的地理坐标的纬度。 有关详细信息,请参阅 逻辑类型。 例如: 44.475833 |
| DstGeoLongitude | 可选 | Longitude | 与目标 IP 地址关联的地理坐标的经度。 有关详细信息,请参阅 逻辑类型。 例如: 73.211944 |
| DstRiskLevel | 可选 | 整数 | 与目标关联的风险级别。 值应调整为 0 到 100 的范围,其中 0 是良性的,100 是高风险。 例如: 90 |
| DstOriginalRiskLevel | 可选 | String | 与目标关联的风险级别,由报告设备报告。 例如: Malicious |
| DstPortNumber | 可选 | 整数 | 目标端口号。 例如: 53 |
| DstHostname | 可选 | 主机名 (字符串) | 目标设备主机名,不包括域信息。 如果没有可用的设备名称,请将相关的 IP 地址存储在此字段中。 例如: DESKTOP-1282V4D注意:如果指定 了 DstIpAddr ,则此值是必需的。 |
| DstDomain | 可选 | 域 (字符串) | 目标设备的域。 例如: Contoso |
| DstDomainType | 条件 | 枚举 |
DstDomain 的类型(如果已知)。 可能的值包括: - Windows (contoso\mypc)- FQDN (learn.microsoft.com)如果使用 DstDomain, 则是必需的。 |
| DstFQDN | 可选 | FQDN (字符串) | 目标设备主机名,包括域信息(如果可用)。 例如: 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 | 条件 | 枚举 |
DstDvcId 的类型(如果已知)。 可能的值包括: - AzureResourceId- MDEidIf如果有多个 ID 可用,请使用上面列表中的第一个 ID,并将其他 ID 分别存储在 DstDvcAzureResourceId 或 DstDvcMDEid 字段中。 如果使用 DstDeviceId ,则为必需。 |
| DstDeviceType | 可选 | 枚举 | 目标设备的类型。 可能的值包括: - Computer- Mobile Device- IOT Device- Other |
| DstDescription | 可选 | String | 与设备关联的描述性文本。 例如:Primary Domain Controller。 |
DNS 特定字段
| 字段 | 类 | 类型 | 说明 |
|---|---|---|---|
| DnsQuery | 强制 | String | 请求尝试解析的域。 注意: - 某些源以不同的格式发送有效的 FQDN 查询。 例如,在 DNS 协议本身中,查询在末尾包含一个点 (.) ,必须将其删除。 - 虽然 DNS 协议将此字段中的值类型限制为 FQDN,但大多数 DNS 服务器允许任何值,因此,此字段不仅限于 FQDN 值。 最值得注意的是,DNS 隧道攻击可能会在查询字段中使用无效的 FQDN 值。 - 虽然 DNS 协议允许在单个请求中执行多个查询,但这种情况很少见(如果已找到)。 如果请求有多个查询,请将第一个查询存储在此字段中,然后(可选)将其余查询保留在 “AdditionalFields” 字段中。 例如: www.malicious.com |
| 域 | 别名 | DnsQuery 的别名。 | |
| DnsQueryType | 可选 | 整数 |
DNS 资源记录类型代码。 例如: 28 |
| DnsQueryTypeName | 建议 | 枚举 |
DNS 资源记录类型名称。 注意: - IANA 不定义值大小写,因此分析必须根据需要规范化大小写。 - 响应代码 255 支持该值 ANY 。- 未映射的响应代码支持该值 TYPExxxx ,其中 xxxx 是响应代码的数值,由 BIND DNS 服务器报告。-如果源仅提供数字查询类型代码而不提供查询类型名称,则分析程序必须包含查找表才能使用此值进行扩充。 例如: AAAA |
| DnsResponseName | 可选 | String | 记录中包含的响应内容。 DNS 响应数据在报表设备之间不一致,分析很复杂,并且对与源无关的分析具有较低的价值。 因此,信息模型不需要分析和规范化,Microsoft Sentinel使用辅助函数来提供响应信息。 有关详细信息,请参阅 处理 DNS 响应。 |
| DnsResponseCodeName | 别名 | EventResultDetails 的别名 | |
| DnsResponseCode | 可选 | 整数 |
DNS 数字响应代码。 例如: 3 |
| TransactionIdHex | 建议 | 十六进制 (字符串) | DNS 客户端分配的 DNS 查询唯一 ID,采用十六进制格式。 请注意,此值是 DNS 协议的一部分,不同于通常由报告设备分配的网络层会话 ID DnsSessionId。 |
| NetworkProtocol | 可选 | 枚举 | 网络解析事件使用的传输协议。 该值可以是 UDP 或 TCP,并且最常设置为用于 DNS 的 UDP 。 例如: UDP |
| NetworkProtocolVersion | 可选 | 枚举 |
NetworkProtocol 的版本。 使用它来区分 IP 版本时,请使用 值 IPv4 和 IPv6。 |
| DnsQueryClass | 可选 | 整数 |
DNS 类 ID。 实际上,仅使用 IN 类 (ID 1) ,因此此字段价值较低。 |
| DnsQueryClassName | 建议 | DnsQueryClassName (String) |
DNS 类名称。 实际上,仅使用 IN 类 (ID 1) ,因此此字段价值较低。 例如: IN |
| DnsFlags | 可选 | String | 标志字段,由报告设备提供。 如果在多个字段中提供了标志信息,请使用逗号作为分隔符连接它们。 由于 DNS 标志分析很复杂,因此分析、分析和规范化不太常用。 Microsoft Sentinel可以使用辅助函数来提供标志信息。 有关详细信息,请参阅 处理 DNS 响应。 例如: ["DR"] |
| DnsNetworkDuration | 可选 | 整数 | 完成 DNS 请求的时间(以毫秒为单位)。 例如: 1500 |
| Duration | 别名 | DnsNetworkDuration 的别名 | |
| DnsFlagsAuthenticated | 可选 | 布尔值 | 与 DNSSEC 相关的 DNS AD 标志在响应中指示服务器根据该服务器的策略验证了响应的应答和颁发机构部分中包含的所有数据。 有关详细信息,请参阅 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 不同,TransactionIdHex 是 DNS 客户端分配的 DNS 查询唯一 ID。 例如: EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55 |
| SessionId | 别名 | DnsSessionId 的别名 | |
| DnsResponseIpCountry | 可选 | 国家/地区 | 与 DNS 响应中的某个 IP 地址关联的国家/地区。 有关详细信息,请参阅 逻辑类型。 例如: USA |
| DnsResponseIpRegion | 可选 | 地区 | 与 DNS 响应中的某个 IP 地址关联的区域或状态。 有关详细信息,请参阅 逻辑类型。 例如: Vermont |
| DnsResponseIpCity | 可选 | 市/县 | 与 DNS 响应中的其中一个 IP 地址关联的城市。 有关详细信息,请参阅 逻辑类型。 例如: Burlington |
| DnsResponseIpLatitude | 可选 | Latitude | 与 DNS 响应中的某个 IP 地址关联的地理坐标的纬度。 有关详细信息,请参阅 逻辑类型。 例如: 44.475833 |
| DnsResponseIpLongitude | 可选 | Longitude | 与 DNS 响应中的某个 IP 地址关联的地理坐标的经度。 有关详细信息,请参阅 逻辑类型。 例如: 73.211944 |
检查字段
以下字段用于表示 DNS 安全设备执行的检查。 与威胁相关的字段表示与源地址、目标地址、响应中的 IP 地址之一或 DNS 查询域关联的单个威胁。 如果多个威胁被标识为威胁,则可以在 字段中 AdditionalFields存储有关其他 IP 地址的信息。
| 字段 | 类 | 类型 | 说明 |
|---|---|---|---|
| UrlCategory | 可选 | String | DNS 事件源还可以查找所请求域的类别。 字段称为 UrlCategory,以与Microsoft Sentinel网络架构保持一致。 DomainCategory 添加为适合 DNS 的别名。 例如: Educational \\ Phishing |
| DomainCategory | 别名 | UrlCategory 的别名。 | |
| RuleName | 可选 | String | 标识威胁的规则的名称或 ID。 例如: AnyAnyDrop |
| RuleNumber | 可选 | 整数 | 标识威胁的规则编号。 例如: 23 |
| Rule | 别名 | String | RuleName 的值或 RuleNumber 的值。 如果使用 RuleNumber 的值,则类型应转换为字符串。 |
| RuleNumber | 可选 | int | 与警报关联的规则编号。 例如 123456 |
| RuleName | 可选 | string | 与警报关联的规则的名称或 ID。 例如 Server PSEXEC Execution via Remote Access |
| ThreatId | 可选 | String | 网络会话中标识的威胁或恶意软件的 ID。 例如: Tr.124 |
| ThreatCategory | 可选 | String | 如果 DNS 事件源还提供 DNS 安全性,则它还可能会评估 DNS 事件。 例如,它可以在威胁情报数据库中搜索 IP 地址或域,并使用威胁类别分配域或 IP 地址。 |
| ThreatIpAddr | 可选 | IP 地址 | 识别其威胁的 IP 地址。 字段 ThreatField 包含 ThreatIpAddr 表示的字段的名称。 如果在 “域” 字段中标识了威胁,则此字段应为空。 |
| ThreatField | 条件 | 枚举 | 已识别威胁的字段。 该值为 SrcIpAddr、、 DstIpAddrDomain或 DnsResponseName。 |
| ThreatName | 可选 | String | 已识别的威胁的名称,由报告设备报告。 |
| ThreatConfidence | 可选 | ConfidenceLevel (Integer) | 所识别的威胁的置信度,规范化为介于 0 和 100 之间的值。 |
| ThreatOriginalConfidence | 可选 | String | 已识别的威胁的原始置信度,由报告设备报告。 |
| ThreatRiskLevel | 可选 | RiskLevel (整数) | 与标识的威胁关联的风险级别,规范化为介于 0 和 100 之间的值。 |
| ThreatOriginalRiskLevel | 可选 | String | 与所识别的威胁关联的原始风险级别,由报告设备报告。 |
| ThreatIsActive | 可选 | 布尔值 | 如果确定的威胁被视为活动威胁,则为 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。 - 添加了专用标志字段,用于扩充合并的标志字段:
DnsFlagsAuthoritative、、DnsFlagsCheckingDisabled、DnsFlagsRecursionAvailableDnsFlagsRecursionDesired、DnsFlagsTruncated和DnsFlagsZ。
架构版本 0.1.3 中的更改如下:
- 架构现在显式记录
Src*、Dst*Process*和User*字段。 - 添加了更多
Dvc*字段,以匹配最新的通用字段定义。 - 将 和
Dst作为别名添加到Src源和目标系统的前导标识符。 - 添加了可选的
DnsNetworkDuration和Duration,一个别名。 - 添加了可选的“地理位置”和“风险级别”字段。
架构版本 0.1.4 中的更改如下:
- 添加了可选字段
ThreatIpAddr、、ThreatField、ThreatName、ThreatConfidenceThreatIsActiveThreatFirstReportedTimeThreatOriginalConfidenceThreatOriginalRiskLevel和 。ThreatLastReportedTime
架构版本 0.1.5 中的更改如下:
- 添加了字段
SrcUserScope、、SrcUserSessionId、SrcDvcScopeId、SrcDvcScopeDstDvcScopeIdDstDvcScope、DvcScopeId、 和DvcScope。
架构版本 0.1.6 中的更改如下:
- 添加了字段
DnsResponseIpCountry、DnsResponseIpRegion、DnsResponseIpCity、DnsResponseIpLatitude和DnsResponseIpLongitude。
架构版本 0.1.7 中的更改如下:
- 添加了字段
SrcDescription、、SrcOriginalRiskLevel、DstDescription、DstOriginalRiskLevel、SrcUserScopeIdNetworkProtocolVersionRuleNameRule、、RuleNumber和 。ThreatId
特定于源的差异
规范化的目标是确保所有源都提供一致的遥测数据。 无法规范化未提供所需遥测的源(如必需架构字段)。 但是,通常提供所有必需遥测数据的源(即使存在一些差异)也可以规范化。 差异可能会影响查询结果的完整性。
下表列出了已知差异:
| 源 | 差异 |
|---|---|
| Microsoft使用 DNS 连接器和 Log Analytics 代理收集的 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 标志
标志数据不需要分析和规范化。 而是将报告设备提供的标志数据存储在 “标志 ”字段中。 如果确定各个标志的值是直接的,则还可以使用专用标志字段。
还可以提供名为 的额外 _imDNS<vendor>Flags_KQL 函数,该函数将未分析的响应或专用标志字段作为输入并返回一个动态列表,其布尔值按以下顺序表示每个标志:
- 经过身份验证 (AD)
- 权威 (AA)
- 检查禁用 (CD)
- 递归可用 (RA)
- 递归所需 (RD)
- 截断 (TC)
- Z
后续步骤
有关更多信息,请参阅: