Sicherheit: runHuntingQuery

Namespace: microsoft.graph.security

Fragt einen angegebenen Satz von Ereignis-, Aktivitäts- oder Entitätsdaten ab, die von Microsoft 365 Defender unterstützt werden, um proaktiv nach bestimmten Bedrohungen in Ihrer Umgebung zu suchen.

Diese Methode ist für die erweiterte Suche in Microsoft 365 Defender vorgesehen. Diese Methode enthält eine Abfrage in der Kusto-Abfragesprache (KQL). Sie gibt eine Datentabelle im schema der erweiterten Suche und eine Sequenz von Operatoren zum Filtern oder Durchsuchen dieser Daten sowie zum Formatieren der Abfrageausgabe auf bestimmte Weise an.

Erfahren Sie mehr über die Suche nach Bedrohungen auf Geräten, E-Mails, Apps und Identitäten. Erfahren Sie mehr über KQL.

Informationen zur Verwendung der erweiterten Suche im Microsoft 365 Defender-Portal finden Sie unter Proaktives Suchen nach Bedrohungen mit erweiterter Suche in Microsoft 365 Defender.

Diese API ist in den folgenden nationalen Cloudbereitstellungen verfügbar.

Globaler Dienst US Government L4 US Government L5 (DOD) China, betrieben von 21Vianet

Berechtigungen

Wählen Sie für diese API die Als am wenigsten privilegierten Berechtigungen gekennzeichneten Berechtigungen aus. Verwenden Sie nur dann eine Berechtigung mit höheren Berechtigungen , wenn dies für Ihre App erforderlich ist. Ausführliche Informationen zu delegierten Berechtigungen und Anwendungsberechtigungen finden Sie unter Berechtigungstypen. Weitere Informationen zu diesen Berechtigungen finden Sie in der Berechtigungsreferenz.

Berechtigungstyp Berechtigungen mit den geringsten Berechtigungen Berechtigungen mit höheren Berechtigungen
Delegiert (Geschäfts-, Schul- oder Unikonto) ThreatHunting.Read.All Nicht verfügbar.
Delegiert (persönliches Microsoft-Konto) Nicht unterstützt Nicht unterstützt
Anwendung ThreatHunting.Read.All Nicht verfügbar.

HTTP-Anforderung

POST /security/runHuntingQuery

Anforderungsheader

Name Beschreibung
Authorization Bearer {token}. Erforderlich. Erfahren Sie mehr über die Authentifizierung und Autorisierung.
Content-Type application/json. Erforderlich.

Hinweis

Wenn Sie in Ihrer Abfrage Nicht-ANSI-Zeichen verwenden, z. B. zum Abfragen von E-Mail-Betreffs mit falsch formatierten oder aussehenden Zeichen, verwenden Sie application/json; charset=utf-8 für den Content-Type-Header.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt für den Query Parameter an, und schließen Sie optional einen Parameter ein Timespan .

Parameter Typ Beschreibung Beispiel
Abfrage Zeichenfolge Erforderlich. Die Huntingabfrage in der Kusto-Abfragesprache (KQL). Weitere Informationen finden Sie unter KQL-Kurzübersicht.
Timespan Zeichenfolge Optional. Das Zeitintervall zum Abfragen von Daten im ISO 8601-Format. Der Standardwert ist 30 Tage, d. h., wenn kein startTime-Wert angegeben ist, wird die Abfrage in 30 Tagen zurückschauen. Wenn sowohl in der Abfrage als auch im startTime-Parameter ein Zeitfilter angegeben ist, wird die kürzere Zeitspanne angewendet. Wenn die Abfrage beispielsweise über einen Filter für die letzten sieben Tage verfügt und die startTime 10 Tage zurückliegt, sieht die Abfrage nur sieben Tage zurück.

Die folgenden Beispiele zeigen die möglichen Formate für den Timepsan Parameter:

  • Datum/Datum: "2024-02-01T08:00:00Z/2024-02-15T08:00:00Z" - Start- und Enddatum.
  • Duration/endDate: "P30D/2024-02-15T08:00:00Z" – Ein Zeitraum vor dem Enddatum.
  • Start/Dauer: "2024-02-01T08:00:00Z/P30D" - Startdatum und Dauer.
  • ISO8601 Dauer: "P30D" – Dauer ab jetzt rückwärts.
  • Einzelnes Datum/Uhrzeit: "2024-02-01T08:00:00Z" – Startzeit, wobei die Endzeit standardmäßig auf die aktuelle Uhrzeit festgelegt ist.

Antwort

Wenn die Aktion erfolgreich verläuft, werden der 200 OK Antwortcode und huntingQueryResults im Antworttext zurückgegeben.

Beispiele

Beispiel 1: Abfrage mit Standardzeitbereich

Anforderung

Das folgende Beispiel gibt eine KQL-Abfrage an und führt Folgendes aus:

  • Untersucht die Tabelle DeviceProcessEvents im schema der erweiterten Suche.
  • Filtert nach der Bedingung, dass der powershell.exe Prozess das Ereignis initiiert.
  • Gibt die Ausgabe von drei Spalten aus derselben Tabelle für jede Zeile an: Timestamp, FileName, InitiatingProcessFileName.
  • Sortiert die Ausgabe nach dem Timestamp Wert.
  • Beschränkt die Ausgabe auf zwei Datensätze (zwei Zeilen).
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"
}

Antwort

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

Beispiel 2: Abfrage mit optionalem angegebenen timespan-Parameter

Anforderung

In diesem Beispiel wird eine KQL-Abfrage angegeben und die Tabelle deviceProcessEvents im erweiterten Huntingschema vor 60 Tagen untersucht.

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

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

Antwort

Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.

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