Справочник по схеме нормализации DNS с расширенной информационной безопасностью (ASIM)

Информационная модель DNS используется для описания событий, сообщаемых DNS-сервером или системой безопасности DNS, и используется Microsoft Sentinel для включения аналитики, не зависящей от источника.

Дополнительные сведения см. в разделе Нормализация и расширенная информационная модель безопасности (ASIM).

Обзор схемы

Схема DNS ASIM представляет действие протокола 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 не требует синтаксического анализа ответа, и его формат зависит от источника.

    Чтобы использовать это поле в содержимом, не зависящем от источника, выполните поиск в содержимом с помощью has операторов или contains .

События 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 в качестве имени таблицы в запросе.

Список средств синтаксического анализа DNS, Microsoft Sentinel предоставляет встроенные средства синтаксического анализа, см. в списке средств синтаксического анализа ASIM.

Добавление собственных нормализованных анализаторов

При реализации пользовательских средств синтаксического анализа для информационной модели Dns назовите свои функции KQL в формате vimDns<vendor><Product>. Сведения о том, как добавить пользовательские средства синтаксического анализа в средство синтаксического анализа DNS, см. в статье Управление средствами синтаксического анализа ASIM .

Фильтрация параметров средства синтаксического анализа

Средства синтаксического анализа DNS поддерживают параметры фильтрации. Хотя эти параметры являются необязательными, они могут повысить производительность запроса.

Доступны следующие параметры фильтрации:

Имя Тип Описание
Starttime datetime Отфильтруйте только DNS-запросы, которые были запущены в это время или позже. Этот параметр фильтрует TimeGenerated поле, которое является стандартным конструктором для времени события, независимо от сопоставления полей EventStartTime и EventEndTime специфичного для средства синтаксического анализа.
время окончания datetime Отфильтруйте только DNS-запросы, которые завершили выполнение в это время или раньше. Этот параметр фильтрует TimeGenerated поле, которое является стандартным конструктором для времени события, независимо от сопоставления полей EventStartTime и EventEndTime специфичного для средства синтаксического анализа.
srcipaddr string Отфильтруйте только DNS-запросы с этого исходного IP-адреса.
domain_has_any dynamic/string Фильтруйте только DNS-запросы, если domain (или query) содержит любое из перечисленных доменных имен, в том числе как часть домена события. Длина списка ограничена 10 000 элементов.
responsecodename string Фильтруйте только DNS-запросы, для которых имя кода ответа соответствует предоставленному значению.
Пример: NXDOMAIN
response_has_ipv4 string Фильтрация только DNS-запросов, в которых поле ответа содержит указанный IP-адрес или префикс IP-адреса. Используйте этот параметр, если требуется выполнить фильтрацию по одному IP-адресу или префиксу.

Результаты не возвращаются для источников, которые не предоставляют ответ.
response_has_any_prefix Динамический Фильтрация только DNS-запросов, в которых поле ответа содержит любой из перечисленных IP-адресов или префиксов IP-адресов. Префиксы должны заканчиваться .на , например: 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 согласована со схемой сущности DNS OSSEM.

Дополнительные сведения см. в справочнике по параметру DNS IANA.

Общие поля ASIM

Важно!

Поля, общие для всех схем, подробно описаны в статье Общие поля ASIM .

Общие поля с определенными рекомендациями

В следующем списке упоминаются поля с определенными рекомендациями по событиям DNS:

Field Class Тип Описание
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 .

Class 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
- Дополнительные поля
- DvcDescription
- DvcScopeId
- DvcScope

Поля исходной системы

Поле Класс Тип Описание
Src Alias String Уникальный идентификатор исходного устройства.

Это поле может быть псевдонимом полей SrcDvcId, SrcHostname или SrcIpAddr .

Пример: 192.168.12.1
SrcIpAddr Рекомендуемый IP-адрес IP-адрес клиента, отправив dns-запрос. Для рекурсивного DNS-запроса это значение обычно будет устройством отчетов, и в большинстве случаев имеет значение 127.0.0.1.

Пример: 192.168.12.1
SrcPortNumber Необязательный Integer Исходный порт DNS-запроса.

Пример: 54312
IpAddr Alias Псевдоним для SrcIpAddr
SrcGeoCountry Необязательный Страна Страна или регион, связанные с исходным IP-адресом.

Пример: USA
SrcGeoRegion Необязательный Region Регион, связанный с исходным IP-адресом.

Пример: Vermont
SrcGeoCity Необязательный Город Город, связанный с исходным IP-адресом.

Пример: Burlington
SrcGeoLatitude Необязательный Latitude Широта географической координаты, связанной с исходным IP-адресом.

Пример: 44.475833
SrcGeoLongitude Необязательный Longitude Долгота географической координаты, связанной с исходным IP-адресом.

Пример: 73.211944
SrcRiskLevel Необязательный Integer Уровень риска, связанный с источником. Значение должно быть скорректировано в диапазоне 0 до 100, с 0 для доброкачественных и 100 для высокого риска.

Пример: 90
SrcOriginalRiskLevel Необязательный String Уровень риска, связанный с источником, о чем сообщает устройство отчетности.

Пример: Suspicious
SrcHostname Рекомендуемый Hostname (String) Имя узла исходного устройства, за исключением сведений о домене.

Пример: DESKTOP-1282V4D
Hostname (Имя узла) Alias Псевдоним для SrcHostname
SrcDomain Рекомендуемый Домен (строка) Домен исходного устройства.

Пример: Contoso
SrcDomainType Условного Перечисленных Тип SrcDomain, если он известен. Возможные значения:
- Windows (например, : contoso)
- FQDN (например, : microsoft.com)

Требуется, если используется SrcDomain .
SrcFQDN Необязательный Полное доменное имя (строка) Имя узла исходного устройства, включая сведения о домене, если они доступны.

Примечание. Это поле поддерживает как традиционный формат полного доменного имени, так и формат домен\имя узла Windows. Поле SrcDomainType отражает используемый формат.

Пример: Contoso\DESKTOP-1282V4D
SrcDvcId Необязательный String Идентификатор исходного устройства, как указано в записи.

Пример: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3
SrcDvcScopeId Необязательный String Идентификатор область облачной платформы, к которому принадлежит устройство. SrcDvcScopeId сопоставляется с идентификатором подписки на Azure и идентификатором учетной записи в AWS.
SrcDvcScope Необязательный String Облачная платформа область, к которой принадлежит устройство. SrcDvcScope сопоставляется с идентификатором подписки на Azure и идентификатором учетной записи в AWS.
SrcDvcIdType Условного Перечисленных Тип SrcDvcId, если он известен. Возможные значения:
- AzureResourceId
- MDEid

Если доступно несколько идентификаторов, используйте первый из списка и сохраните остальные в SrcDvcAzureResourceId и SrcDvcMDEid соответственно.

Примечание. Это поле является обязательным, если используется SrcDvcId .
SrcDeviceType Необязательный Перечисленных Тип исходного устройства. Возможные значения:
- Computer
- Mobile Device
- IOT Device
- Other
SrcDescription Необязательный String Описательный текст, связанный с устройством. Пример: Primary Domain Controller.

Поля исходного пользователя

Поле Класс Тип Описание
SrcUserId Необязательный String Машиночитаемое, буквенно-цифровое, уникальное представление исходного пользователя. Дополнительные сведения и альтернативные поля для дополнительных идентификаторов см. в разделе Сущность пользователя.

Пример: S-1-12-1-4141952679-1282074057-627758481-2916039507
SrcUserScope Необязательный String Область, например клиент Microsoft Entra, в котором определены SrcUserId и SrcUsername. дополнительные сведения и список допустимых значений см. в статье UserScope в статье Общие сведения о схеме.
SrcUserScopeId Необязательный String Идентификатор область, например Microsoft Entra идентификатор каталога, в котором определены SrcUserId и SrcUsername. Дополнительные сведения и список допустимых значений см. в разделе UserScopeIdстатьи Общие сведения о схеме.
SrcUserIdType Условного UserIdType Тип идентификатора, хранящегося в поле SrcUserId . Дополнительные сведения и список допустимых значений см. в разделе UserIdTypeстатьи Общие сведения о схеме.
SrcUsername Необязательный Имя пользователя (строка) Имя пользователя источника, включая сведения о домене, если они доступны. Дополнительные сведения см. в разделе Сущность пользователя.

Пример: AlbertE
SrcUsernameType Условного UsernameType Указывает тип имени пользователя, хранящегося в поле SrcUsername . Дополнительные сведения и список допустимых значений см. в статье UsernameType статьи Общие сведения о схеме.

Пример: Windows
Пользователя Alias Псевдоним для SrcUsername
SrcUserType Необязательный UserType Тип исходного пользователя. Дополнительные сведения и список допустимых значений см. в статье UserType статьи Общие сведения о схеме.

Пример: Guest
SrcUserSessionId Необязательный String Уникальный идентификатор сеанса входа субъекта.

Пример: 102pTUgC3p8RIqHvzxLCHnFlg
SrcOriginalUserType Необязательный String Исходный тип пользователя источника, если он предоставлен источником.

Поля исходного процесса

Поле Класс Тип Описание
SrcProcessName Необязательный String Имя файла процесса, который инициировал DNS-запрос. Это имя обычно считается именем процесса.

Пример: C:\Windows\explorer.exe
Процесс Alias Псевдоним для SrcProcessName

Пример: C:\Windows\System32\rundll32.exe
SrcProcessId Необязательный String Идентификатор процесса (PID) процесса, который инициировал DNS-запрос.

Пример: 48610176

Примечание. Тип определяется как строка для поддержки различных систем, но в Windows и Linux это значение должно быть числовым.

Если вы используете компьютер с Windows или Linux и используете другой тип, обязательно преобразуйте значения. Например, если вы использовали шестнадцатеричное значение, преобразуйте его в десятичное значение.
SrcProcessGuid Необязательный GUID (строка) Созданный уникальный идентификатор (GUID) процесса, который инициировал DNS-запрос.

Пример: EF3BD0BD-2B74-60C5-AF5C-010000001E00

Поля системы назначения

Поле Класс Тип Описание
Dst Alias String Уникальный идентификатор сервера, который получил DNS-запрос.

Это поле может быть псевдонимом полей DstDvcId, DstHostname или DstIpAddr .

Пример: 192.168.12.1
DstIpAddr Необязательный IP-адрес IP-адрес сервера, который получил DNS-запрос. Для обычного DNS-запроса это значение, как правило, будет устройством отчетности, и в большинстве случаев имеет значение 127.0.0.1.

Пример: 127.0.0.1
DstGeoCountry Необязательный Страна Страна или регион, связанные с IP-адресом назначения. Дополнительные сведения см. в разделе Логические типы.

Пример: USA
DstGeoRegion Необязательный Region Регион или состояние, связанное с IP-адресом назначения. Дополнительные сведения см. в разделе Логические типы.

Пример: Vermont
DstGeoCity Необязательный Город Город, связанный с IP-адресом назначения. Дополнительные сведения см. в разделе Логические типы.

Пример: Burlington
DstGeoLatitude Необязательный Latitude Широта географической координаты, связанной с IP-адресом назначения. Дополнительные сведения см. в разделе Логические типы.

Пример: 44.475833
DstGeoLongitude Необязательный Longitude Долгота географической координаты, связанной с IP-адресом назначения. Дополнительные сведения см. в разделе Логические типы.

Пример: 73.211944
DstRiskLevel Необязательный Integer Уровень риска, связанный с назначением. Значение должно быть скорректировано в диапазоне от 0 до 100, который 0 является безопасным, а 100 — высоким риском.

Пример: 90
DstOriginalRiskLevel Необязательный String Уровень риска, связанный с назначением, о чем сообщает устройство отчетности.

Пример: Malicious
DstPortNumber Необязательный Integer Номер порта назначения.

Пример: 53
DstHostname Необязательный Hostname (String) Имя узла конечного устройства, за исключением сведений о домене. Если имя устройства недоступно, сохраните соответствующий IP-адрес в этом поле.

Пример: DESKTOP-1282V4D

Примечание. Это значение является обязательным, если указано значение DstIpAddr .
DstDomain Необязательный Домен (строка) Домен целевого устройства.

Пример: Contoso
DstDomainType Условного Перечисленных Тип DstDomain, если он известен. Возможные значения:
- Windows (contoso\mypc)
- FQDN (learn.microsoft.com)

Требуется, если используется DstDomain .
DstFQDN Необязательный Полное доменное имя (строка) Имя узла конечного устройства, включая сведения о домене, если они доступны.

Пример: Contoso\DESKTOP-1282V4D

Примечание. Это поле поддерживает как традиционный формат полного доменного имени, так и формат домен\имя узла Windows. DstDomainType отражает используемый формат.
DstDvcId Необязательный String Идентификатор целевого устройства, как указано в записи.

Пример: ac7e9755-8eae-4ffc-8a02-50ed7a2216c3
DstDvcScopeId Необязательный String Идентификатор область облачной платформы, к которому принадлежит устройство. DstDvcScopeId сопоставляется с идентификатором подписки на Azure и идентификатором учетной записи в AWS.
DstDvcScope Необязательный String Облачная платформа область, к которой принадлежит устройство. Сопоставление DstDvcScope с идентификатором подписки на Azure и идентификатором учетной записи в AWS.
DstDvcIdType Условного Перечисленных Тип DstDvcId, если он известен. Возможные значения:
- AzureResourceId
- MDEidIf

Если доступно несколько идентификаторов, используйте первый из приведенного выше списка, а остальные сохраните в полях DstDvcAzureResourceId или DstDvcMDEid соответственно.

Требуется, если используется DstDeviceId .
DstDeviceType Необязательный Перечисленных Тип целевого устройства. Возможные значения:
- Computer
- Mobile Device
- IOT Device
- Other
DstDescription Необязательный String Описательный текст, связанный с устройством. Пример: Primary Domain Controller.

Поля, относящиеся к DNS

Поле Класс Тип Описание
DnsQuery Обязательный String Домен, который пытается разрешить запрос.

Примечания.
— Некоторые источники отправляют допустимые запросы на полное доменное имя в другом формате. Например, в самом протоколе DNS запрос содержит точку (.) в конце, которую необходимо удалить.
— Хотя протокол DNS ограничивает тип значения в этом поле полным доменным именем, большинство DNS-серверов разрешают любое значение, поэтому это поле не ограничивается только значениями полного доменного имени. В частности, атаки туннелирования DNS могут использовать недопустимые значения полного доменного имени в поле запроса.
— Хотя протокол DNS позволяет выполнять несколько запросов в одном запросе, этот сценарий встречается редко, если он вообще найден. Если запрос содержит несколько запросов, сохраните первый из них в этом поле, а затем при необходимости сохраните остальные в поле Дополнительные поля .

Пример: www.malicious.com
Домена Alias Псевдоним dnsQuery.
DnsQueryType Необязательный Integer Коды типов записей ресурсов DNS.

Пример: 28
DnsQueryTypeName Рекомендуемый Перечисленных Имена типов записей ресурсов DNS .

Примечания.
— IANA не определяет регистр значений, поэтому аналитика должна нормализовать регистр по мере необходимости.
— Значение ANY поддерживается для кода ответа 255.
— Значение TYPExxxx поддерживается для несопоставленных кодов ответа, где xxxx — числовое значение кода ответа, о котором сообщает DNS-сервер BIND.
—Если источник предоставляет только код числового типа запроса, а не имя типа запроса, средство синтаксического анализа должно включать таблицу подстановки для обогащения этим значением.

Пример: AAAA
DnsResponseName Необязательный String Содержимое ответа, включенного в запись.

Данные ответа DNS несогласованы на разных устройствах отчетности, сложны для анализа и имеют меньшее значение для аналитики, не зависящей от источника. Таким образом, информационная модель не требует синтаксического анализа и нормализации, и Microsoft Sentinel использует вспомогательную функцию для предоставления сведений об ответе. Дополнительные сведения см. в разделе Обработка ответа DNS.
DnsResponseCodeName Alias Псевдоним eventResultDetails
DnsResponseCode Необязательный Integer Код числового ответа DNS.

Пример: 3
TransactionIdHex Рекомендуемый Шестнадцатеричный (string) Уникальный идентификатор DNS-запроса, назначенный DNS-клиентом в шестнадцатеричном формате. Обратите внимание, что это значение является частью протокола DNS и отличается от DnsSessionId, идентификатора сеанса сетевого уровня, обычно присваиваемого устройством отчетов.
NetworkProtocol Необязательный Перечисленных Транспортный протокол, используемый событием разрешения сети. Значение может быть UDP или TCP, и чаще всего для DNS задается значение UDP .

Пример: UDP
NetworkProtocolVersion Необязательный Перечисленных Версия NetworkProtocol. При его использовании для различения ip-версии используйте значения IPv4 и IPv6.
DnsQueryClass Необязательный Integer Идентификатор класса DNS.

На практике используется только класс IN (идентификатор 1), поэтому это поле менее полезно.
DnsQueryClassName Рекомендуемый DnsQueryClassName (String) Имя класса DNS.

На практике используется только класс IN (идентификатор 1), поэтому это поле менее полезно.

Пример: IN
DnsFlags Необязательный String Поле флагов, предоставленное устройством отчетов. Если сведения о флаге предоставляются в нескольких полях, сцепить их с помощью запятой в качестве разделителя.

Так как флаги DNS сложны для анализа и реже используются аналитикой, синтаксический анализ и нормализация не требуются. Microsoft Sentinel может использовать вспомогательную функцию для предоставления сведений о флагах. Дополнительные сведения см. в разделе Обработка ответа DNS.

Пример: ["DR"]
DnsNetworkDuration Необязательный Integer Количество времени (в миллисекундах) для выполнения ЗАПРОСА DNS.

Пример: 1500
Duration Alias Псевдоним dnsNetworkDuration
DnsFlagsAuthenticated Необязательный Логический Флаг DNS AD , связанный с DNSSEC, указывает в ответе, что все данные, включенные в разделы ответа и центра ответа, были проверены сервером в соответствии с политиками этого сервера. Дополнительные сведения см. в разделе RFC 3655, раздел 6.1 .
DnsFlagsAuthoritative Необязательный Логический Флаг DNS AA указывает, является ли ответ с сервера полномочным.
DnsFlagsCheckingDisabled Необязательный Логический Флаг DNS CD , связанный с DNSSEC, указывает в запросе, что непроверенные данные приемлемы для системы, отправляющей запрос. Дополнительные сведения см. в разделе RFC 3655, раздел 6.1 .
DnsFlagsRecursionAvailable Необязательный Логический Флаг DNS RA указывает в ответе, что этот сервер поддерживает рекурсивные запросы.
DnsFlagsRecursionDesired Необязательный Логический Флаг DNS RD указывает в запросе, что этот клиент хотел бы, чтобы сервер использовал рекурсивные запросы.
DnsFlagsTruncated Необязательный Логический Флаг DNS TC указывает, что ответ был усечен, так как он превысил максимальный размер ответа.
DnsFlagsZ Необязательный Логический Флаг DNS Z является устаревшим флагом DNS, о котором могут сообщать старые системы DNS.
DnsSessionId Необязательный string Идентификатор сеанса DNS, сообщаемый устройством отчетов. Это значение отличается от TransactionIdHex, уникального идентификатора ЗАПРОСА DNS, присвоенного DNS-клиентом.

Пример: EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55
Sessionid Alias Псевдоним dnsSessionId
DnsResponseIpCountry Необязательный Страна Страна или регион, связанные с одним из IP-адресов в ответе DNS. Дополнительные сведения см. в разделе Логические типы.

Пример: USA
DnsResponseIpRegion Необязательный Region Регион или состояние, связанное с одним из IP-адресов в ответе DNS. Дополнительные сведения см. в разделе Логические типы.

Пример: Vermont
DnsResponseIpCity Необязательный Город Город, связанный с одним из IP-адресов в ответе DNS. Дополнительные сведения см. в разделе Логические типы.

Пример: Burlington
DnsResponseIpLatitude Необязательный Latitude Широта географической координаты, связанной с одним из IP-адресов в ответе DNS. Дополнительные сведения см. в разделе Логические типы.

Пример: 44.475833
DnsResponseIpLongitude Необязательный Longitude Долгота географической координаты, связанной с одним из IP-адресов в ответе DNS. Дополнительные сведения см. в разделе Логические типы.

Пример: 73.211944

Поля проверки

Следующие поля используются для представления проверки, выполненной устройством безопасности DNS. Поля, связанные с угрозами, представляют собой одну угрозу, связанную либо с исходным адресом, адресом назначения, одним из IP-адресов в ответе или доменом ЗАПРОСА DNS. Если в качестве угрозы было определено несколько угроз, сведения о других IP-адресах могут храниться в поле AdditionalFields.

Поле Класс Тип Описание
UrlCategory Необязательный String Источник событий DNS также может искать категорию запрошенных доменов. Поле называется UrlCategory для выравнивания с Microsoft Sentinel схемой сети.

DomainCategory добавляется в качестве псевдонима, подходящего для DNS.

Пример: Educational \\ Phishing
DomainCategory Alias Псевдоним urlCategory.
RuleName Необязательный String Имя или идентификатор правила, которое идентифицировало угрозу.

Пример: AnyAnyDrop
RuleNumber Необязательный Integer Номер правила, которое идентифицировало угрозу.

Пример: 23
Rule Alias String Значение RuleName или значение RuleNumber. Если используется значение RuleNumber , тип следует преобразовать в строку.
RuleNumber Необязательный int Номер правила, связанного с оповещением.

Например. 123456
RuleName Необязательный string Имя или идентификатор правила, связанного с оповещением.

Например. Server PSEXEC Execution via Remote Access
ThreatId Необязательный String Идентификатор угрозы или вредоносных программ, определенных в сетевом сеансе.

Пример: Tr.124
ThreatCategory Необязательный String Если источник событий DNS также обеспечивает безопасность DNS, он также может оценить событие DNS. Например, он может найти IP-адрес или домен в базе данных аналитики угроз и назначить домен или IP-адрес с помощью категории угроз.
ThreatIpAddr Необязательный IP-адрес IP-адрес, для которого была обнаружена угроза. Поле ThreatField содержит имя поля ThreatIpAddr , представляющего . Если угроза определена в поле Домен , это поле должно быть пустым.
ThreatField Условного Перечисленных Поле, для которого была обнаружена угроза. Значение равно SrcIpAddr, , DstIpAddrDomainили DnsResponseName.
ThreatName Необязательный String Имя обнаруженной угрозы, сообщаемое устройством отчетности.
ThreatConfidence Необязательный ConfidenceLevel (Целое число) Уровень достоверности обнаруженной угрозы, нормализованный до значения от 0 до 100.
ThreatOriginalConfidence Необязательный String Исходный уровень достоверности обнаруженной угрозы, о чем сообщает устройство отчетности.
ThreatRiskLevel Необязательный RiskLevel (целое число) Уровень риска, связанный с обнаруженной угрозой, нормализованный до значения от 0 до 100.
ThreatOriginalRiskLevel Необязательный String Исходный уровень риска, связанный с обнаруженной угрозой, о чем сообщает устройство отчетности.
ThreatIsActive Необязательный Логический Значение true, если обнаруженная угроза считается активной угрозой.
ThreatFirstReportedTime Необязательный datetime При первом обнаружении IP-адреса или домена как угрозы.
ThreatLastReportedTime Необязательный datetime В последний раз IP-адрес или домен были определены как угроза.

Устаревшие псевдонимы и поля

Следующие поля представляют собой псевдонимы, которые поддерживаются для обеспечения обратной совместимости. Они были удалены из схемы 31 декабря 2021 г.

  • 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, DnsFlagsRecursionAvailable, DnsFlagsRecursionDesiredDnsFlagsTruncated, и 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.

  • Добавлены поля , , , , , DstDvcScopeId, DstDvcScope, DvcScopeIdи DvcScope. SrcDvcScopeSrcDvcScopeIdSrcUserSessionIdSrcUserScope

Изменения в схеме версии 0.1.6:

  • Добавлены поля DnsResponseIpCountry, DnsResponseIpRegion, DnsResponseIpCity, DnsResponseIpLatitudeи DnsResponseIpLongitude.

Изменения в схеме версии 0.1.7:

  • Добавлены поля SrcDescription, , SrcOriginalRiskLevelDstDescription, DstOriginalRiskLevel, , SrcUserScopeId, , NetworkProtocolVersion, Rule, RuleName, RuleNumberи ThreatId.

Расхождения в источнике

Целью нормализации является обеспечение согласованности данных телеметрии во всех источниках. Источник, не предоставляющий необходимые данные телеметрии, например обязательные поля схемы, не может быть нормализован. Однако источники, которые обычно предоставляют все необходимые данные телеметрии, даже если есть некоторые расхождения, можно нормализовать. Несоответствия могут повлиять на полноту результатов запроса.

В следующей таблице перечислены известные расхождения.

Source Расхождения
Microsoft DNS-сервер, собираемый с помощью соединителя DNS и агента Log Analytics Соединитель не предоставляет обязательное поле DnsQuery для исходного события с идентификатором 264 (ответ на динамическое обновление). Данные доступны в источнике, но не пересылаются соединителем.
Corelight Zeek Corelight Zeek может не предоставлять обязательное поле DnsQuery. Мы наблюдали такое поведение в некоторых случаях, когда кодовое имя ответа DNS — NXDOMAIN.

Обработка ответа DNS

В большинстве случаев зарегистрированные события DNS не включают в себя сведения об ответе, которые могут быть большими и подробными. Если запись содержит дополнительные сведения об ответе, сохраните ее в поле ResponseName , как оно отображается в записи.

Можно также предоставить дополнительную функцию KQL с именем _imDNS<vendor>Response_, которая принимает непараный ответ в качестве входных данных и возвращает динамическое значение со следующей структурой:

[
    {
        "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

Для данных флага не требуется синтаксический анализ и нормализация. Вместо этого сохраните данные флагов, предоставляемые устройством отчетов, в поле Флаги . Если определить значение отдельных флагов можно напрямую, можно также использовать выделенные поля флагов.

Можно также предоставить дополнительную функцию KQL с именем _imDNS<vendor>Flags_, которая принимает в качестве входных данных необследованный ответ или выделенные поля флагов и возвращает динамический список с логическими значениями, представляющими каждый флаг в следующем порядке.

  • Проверка подлинности (AD)
  • Полномочный (AA)
  • Проверка отключена (CD)
  • Рекурсия доступна (RA)
  • Рекурсия требуется (RD)
  • Усечение (TC)
  • Z