Informations de référence sur le schéma de normalisation DNS ASIM (Advanced Security Information Model) (version préliminaire publique)
Le modèle CIM DNS est utilisé pour décrire les événements signalés par un serveur DNS ou un système de sécurité DNS, et il est utilisé par Microsoft Sentinel pour activer l’analyse indépendante de la source.
Pour plus d’informations, consultez Normalisation et modèle ASIM (Azure Sentinel Information Model).
Important
Le schéma de normalisation DNS est actuellement en PRÉVERSION. Cette fonctionnalité est fournie sans contrat de niveau de service et n’est pas recommandée pour des charges de travail de production.
Les Conditions d’utilisation supplémentaires des préversions Microsoft Azure incluent des conditions légales supplémentaires qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou pas encore disponibles dans la version en disponibilité générale.
Vue d’ensemble du schéma
Le schéma DNS ASIM représente l’activité du protocole DNS. Les serveurs DNS et les appareils qui envoient des requêtes DNS à un serveur DNS journalisent à la fois l’activité du protocole DNS. L’activité du protocole DNS comprend les requêtes DNS, les mises à jour du serveur DNS et les transferts de données en bloc du DNS. Étant donné que le schéma représente une activité de protocole, il est régi par des RFC et des listes de paramètres officiellement attribués, qui sont référencés dans cet article, le cas échéant. Le schéma DNS ne représente pas les événements d’audit du serveur DNS.
L’activité la plus importante signalée par les serveurs DNS est une requête DNS, pour laquelle le champ EventType
est défini sur Query
.
Les champs les plus importants d’un événement DNS sont les suivants :
DnsQuery, qui indique le nom de domaine pour lequel la requête a été émise.
SrcIpAddr (avec IpAddr comme alias), qui représente l’adresse IP à partir de laquelle la requête a été générée. Les serveurs DNS fournissent généralement le champ SrcIpAddr, mais il arrive que les clients DNS ne le fournissent pas et fournissent uniquement le champ SrcHostname.
EventResultDetails, qui indique si la requête a abouti et, dans le cas contraire, la raison de cet échec.
Si disponible, DnsResponseName, qui contient la réponse fournie par le serveur à la requête. L’ASIM n’a pas besoin d’analyser la réponse, et son format varie selon les sources.
Pour utiliser ce champ dans du contenu indépendant de la source, recherchez le contenu à l’aide des opérateurs
has
oucontains
.
Les événements DNS collectés sur l’appareil du client peuvent également inclure des informations sur l’utilisateur et le processus.
Instructions pour la collecte d’événements DNS
DNS est un protocole unique en ce qu’il peut croiser un grand nombre d’ordinateurs. En outre, étant donné que DNS utilise le protocole UDP, les requêtes et les réponses sont découplées et ne sont pas directement liées les unes aux autres.
L’illustration suivante montre un flux de requête DNS simplifié, y compris quatre segments. Une requête réelle peut être plus complexe, avec plus de segments impliqués.
Étant donné que les segments de requête et de réponse ne sont pas directement connectés les uns aux autres dans le flux de requête DNS, la journalisation complète peut entraîner une duplication importante.
Le segment le plus précieux à journaliser est la réponse au client. Cette réponse fournit les requêtes de nom de domaine, le résultat de la recherche et l’adresse IP du client. Alors que de nombreux systèmes DNS consignent uniquement ce segment, il existe une valeur dans la journalisation des autres parties. Par exemple, une attaque par empoisonnement du cache DNS tire souvent parti des réponses factices d’un serveur en amont.
Si votre source de données prend en charge la journalisation DNS complète et que vous avez choisi de consigner plusieurs segments, ajustez vos requêtes pour empêcher la duplication des données dans Microsoft Sentinel.
Par exemple, vous pouvez modifier votre requête avec la normalisation suivante :
_Im_Dns | where SrcIpAddr != "127.0.0.1" and EventSubType == "response"
Analyseurs
Pour plus d’informations sur les analyseurs ASIM, consultez Vue d’ensemble des analyseurs ASIM.
Analyseurs prêts à l’emploi
Pour utiliser les analyseurs qui unifient tous les analyseurs ASIM prêts à l’emploi et faire en sorte que votre analyse s’exécute sur toutes les sources configurées, utilisez l’analyseur d’unification _Im_Dns
comme nom de table dans votre requête.
Pour obtenir la liste des analyseurs DNS, Microsoft Sentinel fournit une référence prête à l’emploi à la liste des analyseurs ASIM.
Ajouter vos propres analyseurs normalisés
Lorsque vous implémentez des analyseurs personnalisés pour le modèle d’informations DNS, nommez vos fonctions KQL en utilisant le format vimDns<vendor><Product>
. Reportez-vous à l’article Gestion des analyseurs ASIM pour découvrir comment ajouter vos analyseurs personnalisés aux analyseurs d’unification DNS.
Paramètres de filtrage des analyseurs
Les analyseurs DNS prennent en charge les paramètres de filtrage. Bien que ces paramètres soient facultatifs, ils peuvent améliorer les performances de vos requêtes.
Les paramètres de filtrage suivants sont disponibles :
Nom | Type | Description |
---|---|---|
starttime | DATETIME | Filtrez uniquement les requêtes DNS qui ont été exécutées à ce moment-là ou après. |
endtime | DATETIME | Filtrez uniquement les requêtes DNS dont l’exécution s’est terminée à ce moment-là ou avant. |
srcipaddr | string | Filtrez uniquement les requêtes DNS à partir de cette adresse IP source. |
domain_has_any | dynamic/string | Filtrez uniquement les requêtes DNS où domain (ou query ) présente l’un des noms de domaine listés, notamment comme partie du domaine de l’événement. La longueur de la liste est limitée à 10 000 éléments. |
responsecodename | string | Filtrez uniquement les requêtes DNS pour lesquelles le nom du code de réponse correspond à la valeur fournie. Par exemple : NXDOMAIN |
response_has_ipv4 | string | Filtrez uniquement les requêtes DNS dans lesquelles le champ de réponse inclut l’adresse IP ou le préfixe d’adresse IP fourni. Utilisez ce paramètre lorsque vous souhaitez filtrer sur une seule adresse IP ou un seul préfixe. Les résultats ne sont pas retournés pour les sources qui ne fournissent pas de réponse. |
response_has_any_prefix | dynamique | Filtrez uniquement les requêtes DNS dans lesquelles le champ de réponse inclut l’une des adresses IP ou l’un des préfixes d’adresse IP listés. Les préfixes doivent se terminer par . (par exemple, 10.0. ). Utilisez ce paramètre lorsque vous souhaitez filtrer sur une liste d’adresses IP ou de préfixes. Les résultats ne sont pas retournés pour les sources qui ne fournissent pas de réponse. La longueur de la liste est limitée à 10 000 éléments. |
eventtype | string | Filtrez uniquement les requêtes DNS du type spécifié. Si aucune valeur n’est spécifiée, seules les requêtes de recherche sont retournées. |
Par exemple, pour filtrer uniquement les requêtes DNS à partir du dernier jour qui n’a pas réussi à résoudre le nom de domaine, utilisez :
_Im_Dns (responsecodename = 'NXDOMAIN', starttime = ago(1d), endtime=now())
Pour filtrer uniquement les requêtes DNS pour une liste spécifiée de noms de domaine, utilisez :
let torProxies=dynamic(["tor2web.org", "tor2web.com", "torlink.co"]);
_Im_Dns (domain_has_any = torProxies)
Certains paramètres peuvent accepter à la fois une liste de valeurs de type dynamic
ou une valeur de chaîne unique. Pour transmettre une liste de littéraux aux paramètres qui attendent une valeur dynamique, utilisez explicitement un littéral dynamique. Par exemple : dynamic(['192.168.','10.'])
Contenu normalisé
Pour obtenir la liste complète des règles analytiques qui utilisent des événements DNS normalisés, consultez Contenu de sécurité des requêtes DNS.
Détails du schéma
Le modèle d’informations DNS est aligné sur le schéma d’entité DNS OSSEM.
Pour plus d’informations, consultez les informations de référence sur les paramètres DNS IANA (Internet Assigned Numbers Authority).
Champs ASIM communs
Important
Les champs communs à tous les schémas sont décrits en détail dans l’article Champs communs ASIM.
Champs communs avec des instructions spécifiques
La liste suivante mentionne uniquement les champs qui ont des instructions spécifiques pour des événements DNS :
Champ | Classe | Type | Description |
---|---|---|---|
EventType | Obligatoire | Énuméré | Indique l’opération signalée par l’enregistrement. Pour les enregistrements DNS, cette valeur serait le code d’opération DNS. Exemple : Query |
EventSubType | Facultatif | Énuméré | request ou response . Pour la plupart des sources, seules les réponses sont consignées et par conséquent, la valeur est souvent response. |
EventResultDetails | Obligatoire | Énuméré | Pour les événements DNS, ce champ fournit le code de réponse DNS. Remarques: - IANA ne définit pas la casse des valeurs, donc l’analytique doit la normaliser. - Si la source fournit uniquement un code de réponse et non un nom de code de réponse, l’analyseur doit inclure une table de recherche pour enrichir cette valeur. - Si cet enregistrement représente une requête et non une réponse, affectez la valeur NA. Exemple : NXDOMAIN |
EventSchemaVersion | Obligatoire | Chaîne | La version du schéma documenté ici est 0.1.7. |
EventSchema | Obligatoire | Chaîne | Le nom du schéma documenté ici est Dns. |
Champs Dvc | - | - | Pour les événements DNS, les champs d’appareil font référence au système qui signale l’événement DNS. |
Tous les champs communs
Les champs qui apparaissent dans le tableau ci-dessous sont communs à tous les schémas ASIM. Toute instruction spécifiée ci-dessus remplace les instructions générales pour le champ. Par exemple, un champ peut être facultatif en général, mais obligatoire pour un schéma spécifique. Pour plus d’informations sur chaque champ, consultez l’article Champs communs ASIM.
Classe | Fields |
---|---|
Obligatoire | - EventCount - EventStartTime - EventEndTime - EventType - EventResult - EventProduct - EventVendor - EventSchema - EventSchemaVersion - Dvc |
Recommandé | - EventResultDetails - EventSeverity - EventUid - DvcIpAddr - DvcHostname - DvcDomain - DvcDomainType - DvcFQDN - DvcId - DvcIdType - DvcAction |
Facultatif | - EventMessage - EventSubType - EventOriginalUid - EventOriginalType - EventOriginalSubType - EventOriginalResultDetails - EventOriginalSeverity - EventProductVersion - EventReportUrl - EventOwner - DvcZone - DvcMacAddr - DvcOs - DvcOsVersion - DvcOriginalAction - DvcInterface - AdditionalFields - DvcDescription - DvcScopeId - DvcScope |
Champs Système source
Champ | Classe | Type | Description |
---|---|---|---|
Src | Alias | Chaîne | Identificateur unique de l’appareil source. Ce champ peut prendre l’alias des champs SrcDvcId, SrcHostname ou SrcIpAddr. Exemple : 192.168.12.1 |
SrcIpAddr | Recommandé | Adresse IP | Adresse IP du client qui a envoyé la requête DNS. Pour une requête DNS récursive, cette valeur correspond généralement à l’appareil de création de rapports et, dans la plupart des cas, à 127.0.0.1 . Exemple : 192.168.12.1 |
SrcPortNumber | Facultatif | Integer | Port source de la requête DNS. Exemple : 54312 |
IpAddr | Alias | Alias de SrcIpAddr | |
SrcGeoCountry | Facultatif | Pays ou région | Pays/région associé à l’adresse IP source. Exemple : USA |
SrcGeoRegion | Facultatif | Région | Région associée à l’adresse IP source. Exemple : Vermont |
SrcGeoCity | Facultatif | City | Ville associée à l’adresse IP source. Exemple : Burlington |
SrcGeoLatitude | Facultatif | Latitude | Latitude de la coordonnée géographique associée à l’adresse IP source. Exemple : 44.475833 |
SrcGeoLongitude | Facultatif | Longitude | Longitude de la coordonnée géographique associée à l’adresse IP source. Exemple : 73.211944 |
SrcRiskLevel | Facultatif | Integer | Niveau de risque associé à la source. La valeur doit être ajustée dans une plage allant de 0 à 100 , 0 étant un risque bénin et 100 étant un risque élevé.Exemple : 90 |
SrcOriginalRiskLevel | Facultatif | Integer | Niveau de risque associé à la source, comme indiqué par l’appareil de création de rapports. Exemple : Suspicious |
SrcHostname | Recommandé | Chaîne | Nom d’hôte de l’appareil source, à l’exception des informations de domaine. Exemple : DESKTOP-1282V4D |
Nom d’hôte | Alias | Alias de SrcHostname | |
SrcDomain | Recommandé | Chaîne | Domaine de l’appareil source. Exemple : Contoso |
SrcDomainType | Logique conditionnelle | Énuméré | Type de SrcDomain, s’il est connu. Les valeurs possibles incluent : - Windows (par exemple :contoso )- FQDN (par exemple :microsoft.com )Obligatoire si SrcDomain est utilisé. |
SrcFQDN | Facultatif | String | Nom d’hôte de l’appareil source, y compris les informations de domaine, le cas échéant. Remarque : ce champ prend en charge à la fois le format FQDN traditionnel et le format Windows domain\hostname. Le champ SrcDomainType reflète le format utilisé. Exemple : Contoso\DESKTOP-1282V4D |
SrcDvcId | Facultatif | Chaîne | ID de l’appareil source comme indiqué dans l’enregistrement. Par exemple : ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
SrcDvcScopeId | Facultatif | String | ID de l’étendue de la plateforme cloud à laquelle appartient l’appareil source. SrcDvcScopeId correspond à un ID d’abonnement sur Azure et à un ID de compte sur AWS. |
SrcDvcScope | Facultatif | String | Étendue de la plateforme cloud à laquelle appartient l’appareil source. DvcSubscription correspond à un ID d’abonnement sur Azure et à un ID de compte sur AWS. |
SrcDvcIdType | Logique conditionnelle | Énuméré | Type de SrcDvcId, s’il est connu. Les valeurs possibles incluent : - AzureResourceId - MDEid Si plusieurs ID sont disponibles, utilisez le premier de la liste, puis stockez les autres à l’aide des noms de champ SrcDvcAzureResourceId et SrcDvcMDEid, respectivement. Remarque: ce champ est obligatoire si le champ SrcDvcld est utilisé. |
SrcDeviceType | Facultatif | Énuméré | Type de l’appareil source. Les valeurs possibles incluent : - Computer - Mobile Device - IOT Device - Other |
SrcDescription | Facultatif | String | Obtient le texte descriptif associé à l’appareil. Par exemple : Primary Domain Controller . |
Champs de l’utilisateur source
Champ | Classe | Type | Description |
---|---|---|---|
SrcUserId | Facultatif | String | Représentation unique, alphanumérique et lisible par l’ordinateur de l’utilisateur source. Pour plus d’informations et pour obtenir d’autres champs d’ID supplémentaires, consultez L’entité Utilisateur. Exemple : S-1-12-1-4141952679-1282074057-627758481-2916039507 |
SrcUserScope | Facultatif | String | Étendue, par exemple le locataire Microsoft Entra, dans laquelle SrcUserId et SrcUsername sont définis. Pour plus d’informations et pour obtenir la liste des valeurs autorisées, consultez UserScope dans l’article Vue d’ensemble du schéma. |
SrcUserScopeId | Facultatif | String | L’ID d’étendue, par exemple l’ID d’annuaire Microsoft Entra, dans laquelle SrcUserId et SrcUsername sont définis. Pour plus d’informations et pour obtenir la liste des valeurs autorisées, consultez UserScopeId dans l’article Vue d’ensemble du schéma. |
SrcUserIdType | Logique conditionnelle | UserIdType | Type de l’ID stocké dans le champ SrcUserId. Pour plus d’informations et pour obtenir la liste des valeurs autorisées, consultez UserIdType dans l'article Vue d’ensemble du schéma. |
SrcUsername | Facultatif | Nom d’utilisateur | Nom de l’utilisateur source, y compris les informations de domaine, le cas échéant. Pour plus d’informations, consultez L’entité utilisateur. Exemple : AlbertE |
SrcUsernameType | Logique conditionnelle | UsernameType | Spécifie le type du nom d’utilisateur stocké dans le champ SrcUsername. Pour plus d’informations et pour obtenir la liste des valeurs autorisées, consultez UsernameType dans l'article Vue d’ensemble du schéma. Exemple : Windows |
Utilisateur | Alias | Alias de SrcUsername | |
SrcUserType | Facultatif | UserType | Type de l’utilisateur source Pour plus d’informations et pour obtenir la liste des valeurs autorisées, consultez UserIdType dans l'article Vue d’ensemble du schéma. Par exemple : Guest |
SrcUserSessionId | Facultatif | Chaîne | ID unique de la session de connexion de l’intervenant. Exemple : 102pTUgC3p8RIqHvzxLCHnFlg |
SrcOriginalUserType | Facultatif | String | Le type d'utilisateur source original, s'il est fourni par la source. |
Champs de processus source
Champ | Classe | Type | Description |
---|---|---|---|
SrcProcessName | Facultatif | String | Nom de fichier du processus qui a lancé la requête DNS. Ce nom est généralement considéré comme le nom du processus. Exemple : C:\Windows\explorer.exe |
Processus | Alias | Alias de SrcProcessName Exemple : C:\Windows\System32\rundll32.exe |
|
SrcProcessId | Facultatif | String | ID de processus (PID) du processus qui a lancé la requête DNS. Exemple : 48610176 Remarque : Le type est défini en tant que chaîne pour la prise en charge de différents systèmes. Cependant, sur Windows et Linux cette valeur doit être numérique. Si vous utilisez un ordinateur Windows ou Linux et avez utilisé un type différent, assurez-vous de convertir les valeurs. Par exemple, si vous avez utilisé une valeur hexadécimale, convertissez-la en valeur décimale. |
SrcProcessGuid | Facultatif | String | Identificateur unique généré (GUID) du processus qui a lancé la requête DNS. Exemple : EF3BD0BD-2B74-60C5-AF5C-010000001E00 |
Champs du système de destination
Champ | Classe | Type | Description |
---|---|---|---|
Dst | Alias | Chaîne | Identificateur unique du serveur qui a reçu la requête DNS. Ce champ peut prendre l’alias des champs DstDvcId, DstHostname ou DstIpAddr. Exemple : 192.168.12.1 |
DstIpAddr | Facultatif | Adresse IP | Adresse IP du serveur qui a reçu la requête DNS. Pour une requête DNS régulière, cette valeur correspond généralement à l’appareil de création de rapports et, dans la plupart des cas, à 127.0.0.1 .Exemple : 127.0.0.1 |
DstGeoCountry | Facultatif | Pays ou région | Pays/région associé à l’adresse IP de destination. Pour plus d’informations, consultez Types logiques. Exemple : USA |
DstGeoRegion | Facultatif | Région | Région, ou État, associé à l’adresse IP de destination. Pour plus d’informations, consultez Types logiques. Exemple : Vermont |
DstGeoCity | Facultatif | City | Ville associée à l’adresse IP de destination. Pour plus d’informations, consultez Types logiques. Exemple : Burlington |
DstGeoLatitude | Facultatif | Latitude | Latitude de la coordonnée géographique associée à l’adresse IP de destination. Pour plus d’informations, consultez Types logiques. Exemple : 44.475833 |
DstGeoLongitude | Facultatif | Longitude | Longitude de la coordonnée géographique associée à l’adresse IP de destination. Pour plus d’informations, consultez Types logiques. Exemple : 73.211944 |
DstRiskLevel | Facultatif | Integer | Niveau de risque associé à la destination. La valeur doit être ajustée dans une plage de 0 à 100, 0 étant un risque bénin et 100 étant un risque élevé. Exemple : 90 |
DstOriginalRiskLevel | Facultatif | Integer | Niveau de risque associé à la destination, comme indiqué par l’appareil de création de rapports. Exemple : Malicious |
DstPortNumber | Facultatif | Integer | Numéro du port de destination. Exemple : 53 |
DstHostname | Facultatif | Chaîne | Nom d’hôte de l’appareil de destination, à l’exception des informations de domaine. Si aucun nom de périphérique n’est disponible, stockez l’adresse IP pertinente dans ce champ. Exemple : DESKTOP-1282V4D Remarque: cette valeur est obligatoire si DstIpAddr est spécifié. |
DstDomain | Facultatif | Chaîne | Domaine de l’appareil de destination. Exemple : Contoso |
DstDomainType | Logique conditionnelle | Énuméré | Type de DstDomain, s’il est connu. Les valeurs possibles incluent : - Windows (contoso\mypc) - FQDN (learn.microsoft.com) Obligatoire si DstDomain est utilisé. |
DstFQDN | Facultatif | String | Nom d’hôte de l’appareil de destination, y compris les informations de domaine, le cas échéant. Exemple : Contoso\DESKTOP-1282V4D Remarque : ce champ prend en charge à la fois le format FQDN traditionnel et le format Windows domain\hostname. Le champ DstDomainType reflète le format utilisé. |
DstDvcId | Facultatif | String | ID de l’appareil de destination comme indiqué dans l’enregistrement. Exemple : ac7e9755-8eae-4ffc-8a02-50ed7a2216c3 |
DstDvcScopeId | Facultatif | String | ID de l’étendue de la plateforme cloud à laquelle appartient l’appareil source. DstDvcScopeId correspond à un ID d’abonnement sur Azure et à un ID de compte sur AWS. |
DstDvcScope | Facultatif | String | Étendue de la plateforme cloud à laquelle appartient l’appareil source. DstDvcScope correspond à un ID d’abonnement sur Azure et à un ID de compte sur AWS. |
DstDvcIdType | Logique conditionnelle | Énuméré | Type de DstDvcId, s’il est connu. Les valeurs possibles incluent : - AzureResourceId - MDEidIf Si plusieurs ID sont disponibles, utilisez le premier de la liste ci-dessus, et stockez les autres à l’aide des noms de champ DvcAzureResourceId et DvcMDEid, respectivement. Obligatoire si DstDeviceId est utilisé. |
DstDeviceType | Facultatif | Énuméré | Type de l’appareil de destination. Les valeurs possibles incluent : - Computer - Mobile Device - IOT Device - Other |
DstDescription | Facultatif | String | Obtient le texte descriptif associé à l’appareil. Par exemple : Primary Domain Controller . |
Champs spécifiques à DNS
Champ | Classe | Type | Description |
---|---|---|---|
DnsQuery | Obligatoire | String | Domaine que la requête tente de résoudre. Remarques: - Certaines sources envoient des requêtes FQDN valides dans un autre format. Par exemple, dans le protocole DNS lui-même, la requête comprend un point (.) à la fin, qui doit être supprimé. - Bien que le protocole DNS limite le type de valeur dans ce champ à un nom de domaine complet, la plupart des serveurs DNS autorisent n’importe quelle valeur, et ce champ n’est donc pas limité aux valeurs de nom de domaine complet uniquement. Plus particulièrement, les attaques de tunneling DNS peuvent utiliser des valeurs FQDN non valides dans le champ de requête. - Bien que le protocole DNS autorise plusieurs requêtes dans une seule requête, ce scénario est rare, voire même inexistant. Si la requête comporte plusieurs requêtes, stockez la première dans ce champ, puis conservez éventuellement le reste dans le champ AdditionalFields. Exemple : www.malicious.com |
Domain | Alias | Alias de DnsQuery. | |
DnsQueryType | Facultatif | Integer | Codes des types d’enregistrements de ressources DNS. Exemple : 28 |
DnsQueryTypeName | Recommandé | Énuméré | Noms des types d’enregistrements de ressources DNS. Remarques: - IANA ne définit pas la casse des valeurs, l’analytique doit donc la normaliser en fonction des besoins. - La valeur ANY est prise en charge pour le code de réponse 255.- La valeur TYPExxxx est prise en charge pour les codes de réponse non mappés, où xxxx est la valeur numérique du code de réponse, comme indiqué par le serveur DNS BIND.- Si la source fournit uniquement un code de type de requête numérique et non un nom de type de requête, l’analyseur doit inclure une table de recherche pour enrichir cette valeur. Exemple : AAAA |
DnsResponseName | Facultatif | Chaîne | Contenu de la réponse, tel qu’il est inclus dans l’enregistrement. Les données de réponse DNS sont incohérentes entre les appareils, sont complexes à analyser et ont moins de valeur pour les analyses indépendantes de la source. Par conséquent, le modèle CIM ne nécessite pas d’analyse ni de normalisation, et Microsoft Sentinel utilise une fonction auxiliaire pour fournir des informations de réponse. Pour plus d’informations, consultez Gestion des réponses DNS. |
DnsResponseCodeName | Alias | Alias d’EventResultDetails | |
DnsResponseCode | Facultatif | Integer | Le code de réponse numérique DNS. Exemple : 3 |
TransactionIdHex | Recommandé | Chaîne | ID unique de requête DNS attribué par le client DNS, au format hexadécimal. Notez que cette valeur fait partie du protocole DNS et diffère de DnsSessionId, l’ID de session de la couche réseau qui est généralement affecté par le périphérique de reporting. |
NetworkProtocol | Facultatif | Énuméré | Protocole de transport utilisé par l’événement de résolution de réseau. La valeur peut être UDP ou TCP, et est couramment définie sur UDP pour DNS. Exemple : UDP |
NetworkProtocolVersion | Facultatif | Énuméré | Version de NetworkProtocol. Lorsque vous l’utilisez pour faire la distinction avec la version d’IP, utilisez les valeurs IPv4 et IPv6 . |
DnsQueryClass | Facultatif | Integer | L’ID de classe DNS. En pratique, seule la classe IN (ID 1) est utilisée, réduisant ainsi la valeur de ce champ. |
DnsQueryClassName | Facultatif | Chaîne | Le nom de la classe DNS. En pratique, seule la classe IN (ID 1) est utilisée, réduisant ainsi la valeur de ce champ. Exemple : IN |
DnsFlags | Facultatif | String | Le champ d’indicateurs, tel que fourni par l’appareil de création de rapports. Si les informations d’indicateur sont fournies dans plusieurs champs, concaténez-les avec une virgule comme séparateur. Étant donné que les indicateurs DNS sont complexes à analyser et sont moins souvent utilisés par l’analytique, l’analyse et la normalisation ne sont pas nécessaires. Microsoft Sentinel peut utiliser une fonction auxiliaire pour fournir les informations sur les indicateurs. Pour plus d’informations, consultez Gestion des réponses DNS. Exemple : ["DR"] |
DnsNetworkDuration | Facultatif | Integer | Durée, en millisecondes, pour que la requête DNS s’achève. Exemple : 1500 |
Durée | Alias | Alias DnsNetworkDuration | |
DnsFlagsAuthenticated | Facultatif | Booléen | L’indicateur DNS AD , qui est lié à DNSSEC, signale dans une réponse que toutes les données incluses dans les sections de réponse et d’autorité de la réponse ont été vérifiées par le serveur en fonction des stratégies de ce serveur. Pour plus d’informations, consultez RFC 3655 Section 6.1. |
DnsFlagsAuthoritative | Facultatif | Booléen | L’indicateur DNS AA signale si la réponse du serveur faisait autorité |
DnsFlagsCheckingDisabled | Facultatif | Booléen | L’indicateur DNS CD , qui est lié à DNSSEC, signale dans une requête que les données non vérifiées sont acceptables pour le système qui envoie la requête. Pour plus d’informations, consultez RFC 3655 Section 6.1. |
DnsFlagsRecursionAvailable | Facultatif | Booléen | L’indicateur DNS RA signale dans une réponse que ce serveur prend en charge les requêtes récursives. |
DnsFlagsRecursionDesired | Facultatif | Booléen | L’indicateur DNS RD signale dans une demande que ce client souhaite que le serveur utilise des requêtes récursives. |
DnsFlagsTruncated | Facultatif | Booléen | L’indicateur DNS TC signale qu’une réponse a été tronquée, car elle a dépassé la taille de réponse maximale. |
DnsFlagsZ | Facultatif | Booléen | L’indicateur DNS Z est déprécié, ce qui peut être signalé par des systèmes DNS plus anciens. |
DnsSessionId | Facultatif | string | Identificateur de session DNS signalé par le périphérique de création de rapport. Cette valeur est différente de TransactionIdHex, l’ID unique de requête DNS attribué par le client DNS. Exemple : EB4BFA28-2EAD-4EF7-BC8A-51DF4FDF5B55 |
SessionId | Alias | Alias DnsSessionId | |
DnsResponseIpCountry | Facultatif | Pays ou région | Pays/région associé à l’une des adresses IP dans la réponse DNS. Pour plus d’informations, consultez Types logiques. Exemple : USA |
DnsResponseIpRegion | Facultatif | Région | Région, ou État, associé à l’une des adresses IP dans la réponse DNS. Pour plus d’informations, consultez Types logiques. Exemple : Vermont |
DnsResponseIpCity | Facultatif | City | Ville associée à l’une des adresses IP dans la réponse DNS. Pour plus d’informations, consultez Types logiques. Exemple : Burlington |
DnsResponseIpLatitude | Facultatif | Latitude | Latitude de la coordonnée géographique associée à l’une des adresses IP dans la réponse DNS. Pour plus d’informations, consultez Types logiques. Exemple : 44.475833 |
DnsResponseIpLongitude | Facultatif | Longitude | Longitude de la coordonnée géographique associée à l’une des adresses IP dans la réponse DNS. Pour plus d’informations, consultez Types logiques. Exemple : 73.211944 |
Champs d’inspection
Les champs suivants permettent de représenter une inspection effectuée par un appareil de sécurité DNS. Les champs associés aux menaces représentent une menace unique associée à l’adresse source, à l’adresse de destination, à l’une des adresses IP de la réponse ou au domaine de requête DNS. Si plusieurs menaces ont été identifiées, des informations concernant d’autres adresses IP peuvent être stockées dans le champ AdditionalFields
.
Champ | Classe | Type | Description |
---|---|---|---|
UrlCategory | Facultatif | Chaîne | Une source d’événement DNS peut également rechercher la catégorie des domaines demandés. Ce champ est appelé UrlCategory pour s’aligner sur le schéma de réseau de Microsoft Sentinel. DomainCategory est ajouté en tant qu’alias qui s’adapte à DNS. Exemple : Educational \\ Phishing |
DomainCategory | Alias | Alias pour UrlCategory. | |
NetworkRuleName | Facultatif | String | Nom ou ID de la règle qui a identifié la menace. Exemple : AnyAnyDrop |
NetworkRuleNumber | Facultatif | Integer | Numéro de la règle qui a identifié la menace. Exemple : 23 |
Règle | Alias | String | Valeur de NetworkRuleName ou de NetworkRuleNumber. Si la valeur de NetworkRuleNumber est utilisée, le type doit être converti en chaîne. |
ThreatId | Facultatif | String | ID de la menace ou programme malveillant identifié dans la session réseau. Exemple : Tr.124 |
ThreatCategory | Facultatif | Chaîne | Si une source d’événement DNS fournit également la sécurité DNS, elle peut également évaluer l’événement DNS. Par exemple, elle peut rechercher l’adresse IP ou le domaine dans une base de données de renseignement sur les menaces et peut affecter le domaine ou l’adresse IP avec une catégorie de menace. |
ThreatIpAddr | Facultatif | Adresse IP | Adresse IP pour laquelle une menace a été identifiée. Le champ ThreatField contient le nom du champ que ThreatIpAddr représente. Si une menace est identifiée dans le champ Domaine, ce champ doit être vide. |
ThreatField | Logique conditionnelle | Énuméré | Champ pour lequel une menace a été identifiée. La valeur est SrcIpAddr , DstIpAddr , Domain ou DnsResponseName . |
ThreatName | Facultatif | String | Nom de la menace identifiée, comme indiqué par l’appareil de création de rapports. |
ThreatConfidence | Facultatif | Integer | Niveau de confiance de la menace identifiée, normalisé à une valeur comprise entre 0 et 100. |
ThreatOriginalConfidence | Facultatif | String | Niveau de confiance d’origine de la menace identifiée, comme indiqué par l’appareil de création de rapports. |
ThreatRiskLevel | Facultatif | Entier | Niveau de risque associé à la menace identifiée, normalisée à une valeur comprise entre 0 et 100. |
ThreatOriginalRiskLevel | Facultatif | String | Niveau de risque d’origine associé à la menace identifiée, comme indiqué par l’appareil de création de rapports. |
ThreatIsActive | Facultatif | Booléen | True si la menace identifiée est considérée comme une menace active. |
ThreatFirstReportedTime | Facultatif | DATETIME | Indique la première fois que l’adresse IP ou le domaine ont été identifiés comme une menace. |
ThreatLastReportedTime | Facultatif | DATETIME | La dernière fois que l’adresse IP ou le domaine ont été identifiés comme une menace. |
Alias et champs dépréciés
Les champs suivants sont des alias conservés à des fins de compatibilité descendante. Ils ont été supprimés du schéma le 31 décembre 2021.
Query
(alias deDnsQuery
)QueryType
(alias deDnsQueryType
)QueryTypeName
(alias deDnsQueryTypeName
)ResponseName
(alias deDnsReasponseName
)ResponseCodeName
(alias deDnsResponseCodeName
)ResponseCode
(alias deDnsResponseCode
)QueryClass
(alias deDnsQueryClass
)QueryClassName
(alias deDnsQueryClassName
)Flags
(alias deDnsFlags
)SrcUserDomain
Mises à jour du schéma
Les modifications apportées à la version 0.1.2 du schéma sont les suivantes :
- Ajout du champ
EventSchema
. - Ajout d’un champ dédié aux indicateurs qui complète le champ combiné Indicateurs :
DnsFlagsAuthoritative
,DnsFlagsCheckingDisabled
,DnsFlagsRecursionAvailable
,DnsFlagsRecursionDesired
,DnsFlagsTruncated
etDnsFlagsZ
.
Les modifications apportées à la version 0.1.3 du schéma sont les suivantes :
- Le schéma documente désormais explicitement les champs
Src*
,Dst*
,Process*
etUser*
. - Ajout de champs
Dvc*
supplémentaires pour correspondre à la définition la plus récente des champs communs. - Ajout de
Src
etDst
en tant qu’alias d’un identifiant principal pour les systèmes source et de destination. - Ajout du champ facultatif
DnsNetworkDuration
et deDuration
, son alias. - Ajout des champs facultatifs Geo Location et Risk Level.
Voici les modifications apportées à la version 0.1.4 du schéma :
- Ajout des champs facultatifs
ThreatIpAddr
,ThreatField
,ThreatName
,ThreatConfidence
,ThreatOriginalConfidence
,ThreatOriginalRiskLevel
,ThreatIsActive
,ThreatFirstReportedTime
etThreatLastReportedTime
.
Voici les modifications apportées à la version 0.1.5 du schéma :
- Ajout des champs
SrcUserScope
,SrcUserSessionId
,SrcDvcScopeId
,SrcDvcScope
,DstDvcScopeId
,DstDvcScope
,DvcScopeId
etDvcScope
.
Voici les modifications apportées à la version 0.1.6 du schéma :
- Ajout des champs
DnsResponseIpCountry
,DnsResponseIpRegion
,DnsResponseIpCity
,DnsResponseIpLatitude
etDnsResponseIpLongitude
.
Voici les modifications apportées à la version 0.1.7 du schéma :
- Ajout des champs
SrcDescription
,SrcOriginalRiskLevel
,DstDescription
,DstOriginalRiskLevel
,SrcUserScopeId
,NetworkProtocolVersion
,Rule
,RuleName
,RuleNumber
etThreatId
.
Disparités propres aux sources
L’objectif de la normalisation est de veiller à ce que toutes les sources fournissent des données de télémétrie cohérentes. Une source qui ne fournit pas les données de télémétrie obligatoires, comme les champs de schéma obligatoires, ne peut pas être normalisée. En revanche, les sources qui fournissent généralement toutes les données de télémétrie obligatoires, même s’il existe des disparités, peuvent être normalisées. Les disparités peuvent affecter l’exhaustivité des résultats de requête.
Le tableau suivant liste les disparités connues :
Source | Disparités |
---|---|
Serveur DNS Microsoft collecté à l’aide du connecteur DNS et de l’agent Log Analytics | Le connecteur ne fournit pas le champ DnsQuery obligatoire pour l’ID d’événement d’origine 264 (réponse à une mise à jour dynamique). Les données sont disponibles à la source, mais elles ne sont pas transférées par le connecteur. |
Corelight Zeek | Corelight Zeek risque de ne pas fournir le champ DnsQuery obligatoire. Nous avons observé un tel comportement dans certains cas où le nom du code de réponse DNS est NXDOMAIN . |
Gestion de la réponse DNS
Dans la plupart des cas, les événements DNS consignés n’incluent pas les informations de réponse, qui peuvent être volumineuses et détaillées. Si votre enregistrement inclut plus d’informations de réponse, stockez-les dans le champ ResponseName comme elles apparaissent dans l’enregistrement.
Vous pouvez également fournir une fonction KQL supplémentaire appelée _imDNS<vendor>Response_
, qui prend la réponse non analysée comme entrée et retourne une valeur dynamique avec la structure suivante :
[
{
"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"
}
...
]
Les champs de chaque dictionnaire dans la valeur dynamique correspondent aux champs de chaque réponse DNS. L’entrée part
doit inclure answer
, authority
ou additional
pour refléter la partie dans la réponse à laquelle le dictionnaire appartient.
Conseil
Pour garantir des performances optimales, appelez la fonction imDNS<vendor>Response
uniquement lorsque cela est nécessaire, et uniquement après un filtrage initial pour garantir de meilleures performances.
Gestion des indicateurs DNS
L’analyse et la normalisation ne sont pas obligatoires pour les données d’indicateur. À la place, stockez les données d’indicateur fournies par l’appareil dans le champ Indicateurs. Si la détermination de la valeur des indicateurs individuels est directe, vous pouvez également utiliser les champs d’indicateurs dédiés.
Vous pouvez également fournir une fonction KQL supplémentaire appelée _imDNS<vendor>Flags_
, qui prend la réponse non analysée, ou des champs d’indicateurs dédiés, comme entrée et retourne une liste dynamique, avec des valeurs booléennes qui représentent chaque indicateur dans l’ordre suivant :
- Authentifié (AD)
- Faisant autorité (AA)
- Vérification désactivée (CD)
- Récurrence disponible (RA)
- Récurrence souhaitée (RD)
- Tronqué (TC)
- Z
Étapes suivantes
Pour plus d'informations, consultez les pages suivantes :