sécurité : runHuntingQuery

Espace de noms : microsoft.graph.security

Interroger un ensemble spécifié de données d’événements, d’activités ou d’entités pris en charge par Microsoft 365 Defender pour rechercher de manière proactive des menaces spécifiques dans votre environnement.

Cette méthode concerne le repérage avancé dans Microsoft 365 Defender. Cette méthode inclut une requête dans le langage de requête Kusto (KQL). Il spécifie une table de données dans le schéma de repérage avancé et une séquence d’opérateurs redirigée pour filtrer ou rechercher ces données, et mettre en forme la sortie de la requête de manière spécifique.

En savoir plus sur le repérage de menaces sur les appareils, les e-mails, les applications et les identités. En savoir plus sur KQL.

Pour plus d’informations sur l’utilisation du repérage avancé dans le portail Microsoft 365 Defender, consultez Repérer les menaces de manière proactive avec le repérage avancé dans Microsoft 365 Defender.

Cette API est disponible dans les déploiements cloud nationaux suivants.

Service global Gouvernement américain L4 Gouvernement américain L5 (DOD) Chine exploitée par 21Vianet

Autorisations

Choisissez l’autorisation ou les autorisations marquées comme étant les moins privilégiées pour cette API. Utilisez une ou plusieurs autorisations privilégiées uniquement si votre application en a besoin. Pour plus d’informations sur les autorisations déléguées et d’application, voir Types d’autorisations. Pour en savoir plus sur ces autorisations, consultez la référence des autorisations.

Type d’autorisation Autorisations les moins privilégiées Autorisations à privilèges plus élevés
Déléguée (compte professionnel ou scolaire) ThreatHouting.Read.All Non disponible.
Déléguée (compte Microsoft personnel) Non prise en charge. Non prise en charge.
Application ThreatHouting.Read.All Non disponible.

Requête HTTP

POST /security/runHuntingQuery

En-têtes de demande

Nom Description
Autorisation Porteur {token}. Obligatoire. En savoir plus sur l’authentification et les autorisations.
Content-Type application/json. Obligatoire.

Remarque

Si vous utilisez des caractères non-ANSI dans votre requête, par exemple pour interroger des objets de courrier contenant des caractères incorrects ou similaires, utilisez cette option application/json; charset=utf-8 pour l’en-tête Content-Type.

Corps de la demande

Dans le corps de la demande, fournissez un objet JSON avec la Query propriété et incluez éventuellement les Timespan propriétés et workspaceId .

Paramètre Type Description Exemple
Requête String Obligatoire. Requête de repérage dans le langage de requête Kusto (KQL). Pour plus d’informations, consultez Référence rapide KQL.
Intervalle de temps String Facultatif. Intervalle de temps pendant lequel interroger les données, au format ISO 8601. La valeur par défaut est 30 jours, ce qui signifie que si aucune startTime n’est spécifiée, la requête effectue un suivi dans les 30 jours précédents. Si un filtre de temps est spécifié à la fois dans la requête et dans le paramètre startTime, la période la plus courte est appliquée. Par exemple, si la requête comporte un filtre pour les sept derniers jours et que startTime est il y a 10 jours, la requête recherche uniquement sur les sept derniers jours.
workspaceId Guid Facultatif. GUID d’un espace de travail Log Analytics spécifique à cibler. Si cette option est omise, le service utilise l’espace de travail principal de l’appelant. Si l’espace de travail est introuvable ou inaccessible, le service revient à l’espace de travail principal de l’appelant. 00000000-0000-0000-0000-000000000001

Les exemples suivants montrent les formats possibles pour le Timespan paramètre :

  • Date/Date : « 2024-02-01T08:00:00Z/2024-02-15T08:00:00Z » - Dates de début et de fin.
  • Durée/DateFin : « P30D/2024-02-15T08:00:00Z » : une période avant la date de fin.
  • Début/durée : « 2024-02-01T08:00:00Z/P30D » : date de début et durée.
  • ISO8601 duration : « P30D » - Durée à partir de maintenant en arrière.
  • Date/heure unique : « 2024-02-01T08:00:00Z » : heure de début avec l’heure de fin définie par défaut sur l’heure actuelle.

Réponse

En cas de succès, cette action retourne un 200 OK code de réponse et un huntingQueryResults dans le corps de la réponse.

Exemples

Exemple 1 : requête avec intervalle de temps par défaut

Demande

L’exemple suivant spécifie une requête KQL et procède comme suit :

  • Recherche dans la table DeviceProcessEvents dans le schéma de repérage avancé.
  • Filtre à condition que le processus powershell.exe initie l’événement.
  • Spécifie la sortie de trois colonnes de la même table pour chaque ligne : Timestamp, FileName, InitiatingProcessFileName.
  • Trie la sortie en fonction de la Timestamp valeur.
  • Limite la sortie à deux enregistrements (deux lignes).
POST https://graph.microsoft.com/v1.0/security/runHuntingQuery

{
    "Query": "DeviceProcessEvents | where InitiatingProcessFileName =~ \"powershell.exe\" | project Timestamp, FileName, InitiatingProcessFileName | order by Timestamp desc | limit 2"
}

Réponse

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.security.huntingQueryResults",
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "Timestamp": "2024-03-26T09:39:50.7688641Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2024-03-26T09:39:49.4353788Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}

Exemple 2 : requête avec le paramètre facultatif d’intervalle de temps spécifié

Demande

Cet exemple spécifie une requête KQL et examine la table deviceProcessEvents dans le schéma de repérage avancé 60 jours en arrière.

POST https://graph.microsoft.com/v1.0/security/runHuntingQuery

{
    "Query": "DeviceProcessEvents",
    "Timespan": "P90D"
}

Réponse

Remarque : l’objet de réponse affiché ci-après peut être raccourci pour plus de lisibilité.

HTTP/1.1 200 OK
Content-type: application/json

{
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "timestamp": "2020-08-30T06:38:35.7664356Z",
            "fileName": "conhost.exe",
            "initiatingProcessFileName": "powershell.exe"
        },
        {
            "timestamp": "2020-08-30T06:38:30.5163363Z",
            "fileName": "conhost.exe",
            "initiatingProcessFileName": "powershell.exe"
        }
    ]
}