Partager via


sécurité : runHuntingQuery

Espace de noms : microsoft.graph.security

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

Cette méthode est destinée à la chasse avancée dans Microsoft 365 Defender. Cette méthode inclut une requête en 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 redirigée d’opérateurs 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 la chasse aux 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 de la chasse avancée dans le portail Microsoft 365 Defender, consultez La chasse proactive aux menaces avec la chasse avancée dans Microsoft 365 Defender.

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

Service global Gouvernement des États-Unis L4 Us Government L5 (DOD) Chine gérée par 21Vianet

Autorisations

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

Type d’autorisation Autorisations avec privilèges minimum Autorisations privilégiées plus élevées
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 l’autorisation.
Content-Type application/json. Obligatoire.

Remarque

Si vous utilisez des caractères non-ANSI dans votre requête, par exemple pour interroger des sujets d’e-mail avec des caractères incorrects ou similaires, utilisez 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 pour le Query paramètre et incluez éventuellement un Timespan paramètre.

Paramètre Type Description Exemple
Requête Chaîne Obligatoire. Requête de repérage en langage de requête Kusto (KQL). Pour plus d’informations, consultez Référence rapide KQL.
Timespan 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 aucun startTime n’est spécifié, la requête retourne dans 30 jours. Si un filtre de temps est spécifié dans la requête et le paramètre startTime, l’intervalle de temps plus court est appliqué. Par exemple, si la requête a un filtre pour les sept derniers jours et que startTime est il y a 10 jours, la requête ne regarde que sept jours en arrière.

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

  • Date/Date : « 2024-02-01T08 :00 :00Z/2024-02-15T08 :00 :00Z » - Dates de début et de fin.
  • Duration/endDate : « P30D/2024-02-15T08 :00 :00Z » : période antérieure à la date de fin.
  • Début/durée : « 2024-02-01T08 :00 :00Z/P30D » - Date de début et durée.
  • ISO8601 durée : « P30D » : durée à partir de maintenant vers l’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

Si elle réussit, cette action renvoie 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 effectue les opérations suivantes :

  • Examine la table DeviceProcessEvents dans le schéma de repérage avancé.
  • Filtre à condition que le processus powershell.exe lance l’événement.
  • Spécifie la sortie de trois colonnes de la même table pour chaque ligne : Timestamp, FileName, InitiatingProcessFileName.
  • Trie la sortie par valeur Timestamp .
  • 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 timespan facultatif spécifié

Demande

Cet exemple spécifie une requête KQL et examine la table deviceProcessEvents dans le schéma de repérage avancé il y a 60 jours.

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"
        }
    ]
}