Découvrir le langage de requête de repérage avancé

Remarque

Vous voulez découvrir Microsoft Defender XDR ? En savoir plus sur la façon dont vous pouvez évaluer et piloter Microsoft Defender XDR.

S’applique à :

  • Microsoft Defender XDR

Le repérage avancé est basé sur le langage de requête Kusto. Vous pouvez utiliser des opérateurs et des instructions Kusto pour construire des requêtes qui localisent des informations dans un schéma spécialisé.

Regardez cette courte vidéo pour découvrir quelques notions pratiques du langage de requête Kusto.

Pour mieux comprendre ces concepts, exécutez votre première requête.

Essayez votre première requête

Dans le portail Microsoft Defender, accédez à Chasse pour exécuter votre première requête. Consultez l’exemple qui suit :

// Finds PowerShell execution events that could involve a download
union DeviceProcessEvents, DeviceNetworkEvents
| where Timestamp > ago(7d)
// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")
// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
 "DownloadFile",
 "DownloadData",
 "DownloadString",
"WebRequest",
"Shellcode",
"http",
"https")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

Exécuter cette requête dans la chasse avancée

Un bref commentaire a été ajouté au début de la requête pour décrire à quoi elle sert. Ce commentaire permet de choisir ultérieurement d’enregistrer la requête et de la partager avec d’autres dans votre organisation.

// Finds PowerShell execution events that could involve a download

La requête elle-même commence généralement par un nom de table suivi de plusieurs éléments qui commencent par un canal (|). Dans cet exemple, nous commençons par créer une union de deux tables, DeviceProcessEvents et DeviceNetworkEvents, et nous ajoutons des éléments redirigés en fonction des besoins.

union DeviceProcessEvents, DeviceNetworkEvents

Définir l’intervalle de temps

Le premier élément redirigé est un filtre de temps limité aux sept jours précédents. La limitation d’un intervalle de temps permet de s’assurer que les requêtes fonctionnent bien, renvoient des résultats gérables et n’expirent pas.

| where Timestamp > ago(7d)

Remarque

Les filtres d’heure Kusto sont au format UTC, quel que soit le fuseau horaire que vous avez spécifié dans vos paramètres.

Vérifier des processus spécifiques

L’intervalle de temps est immédiatement suivi d’une recherche de noms de fichiers de processus représentant l’application PowerShell.

// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")

Rechercher des chaînes de commandes spécifiques

Ensuite, la requête recherche des chaînes dans les lignes de commande qui sont généralement utilisées pour télécharger des fichiers à l’aide de PowerShell.

// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
    "DownloadFile",
    "DownloadData",
    "DownloadString",
    "WebRequest",
    "Shellcode",
    "http",
    "https")

Personnaliser les colonnes de résultats et la longueur

Maintenant que votre requête identifie clairement les données que vous recherchez, vous pouvez définir l’apparence des résultats. project retourne des colonnes spécifiques et top limite le nombre de résultats. Ces opérateurs permettent de s’assurer que les résultats sont bien formatés, raisonnablement volumineux et faciles à traiter.

| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

Sélectionnez Exécuter la requête pour afficher les résultats.

Conseil

Vous pouvez afficher les résultats de la requête sous forme de graphiques et ajuster rapidement les filtres. Pour obtenir de l’aide, découvrez comment utiliser les résultats de requête

Découvrir les opérateurs de requête courants

Vous venez d’exécuter votre première requête et vous avez une idée générale de ses composants. Il est temps de revenir légèrement en arrière et d’apprendre quelques notions de base. Le langage de requête Kusto utilisé par le repérage avancé prend en charge divers opérateurs, notamment les opérateurs communs suivants.

Opérateur Description et utilisation
where Filtre une table sur le sous-ensemble de lignes qui répondent à un prédicat.
summarize Produit une table qui agrège le contenu de la table d’entrée.
join Fusionne les lignes de deux tables pour former une nouvelle table en faisant correspondre les valeurs des colonnes spécifiées de chaque table. Regardez Joindre des tables dans KQL pour savoir comment procéder.
count Renvoie le nombre d’enregistrements dans le groupe d’enregistrements d’entrée.
top Renvoie les N premiers enregistrements triés par les colonnes spécifiées.
limit Renvoie jusqu’au nombre de lignes spécifié.
project Sélectionne les colonnes à inclure, renommer ou déplacer et insère de nouvelles colonnes calculées.
extend Crée des colonnes calculées et les ajoute au jeu de résultats.
makeset Renvoie un tableau dynamique (JSON) de l’ensemble de valeurs distinctes prise par Expr dans le groupe.
find Recherche des lignes qui correspondent à un prédicat dans un ensemble de tables.

Pour voir un exemple parlant de ces opérateurs, exécutez-les à partir de la section Prise en main du repérage avancé.

Comprendre les types de données

La chasse avancée prend en charge les types de données Kusto, y compris les types courants suivants :

Type de données Description et implications dans les requêtes
datetime Informations sur les données et les heures représentant généralement les timestamps d’événement. Voir les formats dateheure pris en charge
string Chaîne de caractères en UTF-8 entre guillemets simples (') ou guillemets doubles ("). En savoir plus sur les chaînes
bool Ce type de données prend en charge true ou false indique. Voir les littéraux et les opérateurs pris en charge
int Valeur entière 32 bits.
long Valeur entière 64 bits.

Pour en savoir plus sur ces types de données, consultez Types de données scalaires Kusto.

Obtenez de l’aide lorsque vous rédigez des requêtes

Tirez parti des fonctionnalités suivantes pour rédiger des requêtes plus rapidement :

  • Suggestion automatique : à mesure que vous écrivez des requêtes, la chasse avancée fournit des suggestions d’IntelliSense.
  • Arborescence de schéma : une représentation de schéma qui inclut la liste des tables et leurs colonnes est fournie en regard de votre zone de travail. Si vous souhaitez en savoir plus, veuillez placer le pointeur sur un élément. Double-cliquez sur un élément pour l’insérer dans l’éditeur de requête.
  • Référence de schéma : référence dans le portail avec des descriptions de table et de colonne, ainsi que des types d’événements pris en charge (ActionType valeurs) et des exemples de requêtes

Utiliser plusieurs requêtes dans l’éditeur

Vous pouvez utiliser l’éditeur de requête pour expérimenter plusieurs requêtes. Pour utiliser plusieurs requêtes :

  • Séparez chaque requête par une ligne vide.
  • Placez le curseur sur n’importe quelle partie d’une requête pour sélectionner cette requête avant de l’exécuter. Cette opération exécute uniquement la requête sélectionnée. Pour exécuter une autre requête, déplacez le curseur en conséquence et sélectionnez Exécuter la requête.

Exemple d’exécution de plusieurs requêtes dans la page **Nouvelle requête** du portail Microsoft Defender

Pour un espace de travail plus efficace, vous pouvez également utiliser plusieurs onglets dans la même page de chasse. Sélectionnez Nouvelle requête pour ouvrir un onglet pour votre nouvelle requête.

Ouvrir un nouvel onglet en sélectionnant Créer dans la chasse avancée dans le portail Microsoft Defender

Vous pouvez ensuite exécuter différentes requêtes sans jamais ouvrir un nouvel onglet de navigateur.

Exécuter différentes requêtes sans jamais quitter la page de repérage avancé dans le portail Microsoft Defender

Remarque

L’utilisation de plusieurs onglets de navigateur avec la chasse avancée peut vous faire perdre vos requêtes non enregistrées. Pour éviter cela, utilisez la fonctionnalité d’onglet dans la chasse avancée au lieu d’onglets de navigateur distincts.

Utiliser des exemples de requêtes

La section Prise en main fournit quelques requêtes simples utilisant des opérateurs fréquemment utilisés. Essayez d’exécuter ces requêtes et de leur apporter de légères modifications.

La section **Prise en main** de la page **Repérage avancé** du portail Microsoft Defender

Remarque

Hormis les exemples de requête de base, vous pouvez également accéder à des requêtes partagées pour des scénarios de repérage de menace spécifiques. Explorez les requêtes partagées sur le côté gauche de la page ou le référentiel de requêtes GitHub.

Documentation sur le langage de requête Access

Pour plus d’informations sur le langage de requête Kusto et les opérateurs pris en charge, voir documentation sur le langage de requête Kusto.

Remarque

Certaines tables de cet article peuvent ne pas être disponibles dans Microsoft Defender pour point de terminaison. Activez Microsoft Defender XDR pour rechercher les menaces à l’aide de sources de données supplémentaires. Vous pouvez déplacer vos flux de travail de chasse avancés de Microsoft Defender pour point de terminaison vers Microsoft Defender XDR en suivant les étapes décrites dans Migrer des requêtes de chasse avancées à partir de Microsoft Defender pour point de terminaison.

Conseil

Voulez-vous en savoir plus ? Engage avec la communauté Microsoft Security dans notre communauté technique : Microsoft Defender XDR Tech Community.