Découvrir le langage de requête de repérage avancé
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
Décrire la requête et spécifier les tables à rechercher
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 (
ActionType
valeurs) pris en charge 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.
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.
Vous pouvez ensuite exécuter différentes requêtes sans jamais ouvrir un nouvel onglet de navigateur.
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.
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.
Voir aussi
- Vue d’ensemble du repérage avancé
- Utiliser les résultats d’une requête
- Utiliser des requêtes partagées
- Repérer des menaces sur les appareils, les e-mails, les applications et les identités
- Comprendre le schéma
- Appliquer les meilleures pratiques de requête
Conseil
Voulez-vous en savoir plus ? Collaborez avec la communauté Microsoft Security dans notre communauté technique : communauté technique Microsoft Defender XDR.