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 umfasst eine Abfrage in der Kusto-Abfragesprache (KQL). Sie gibt eine Datentabelle im erweiterten Suchschema und eine weitergeleitete Sequenz von Operatoren an, um diese Daten zu filtern oder zu durchsuchen und die Abfrageausgabe auf bestimmte Weise zu formatieren.

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

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

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

Weltweiter Service US Government L4 US Government L5 (DOD) China, betrieben von 21Vianet

Berechtigungen

Wählen Sie die Berechtigungen aus, die für diese API als am wenigsten privilegiert markiert sind. Verwenden Sie eine höhere Berechtigung oder Berechtigungen nur, wenn Ihre App dies erfordert. 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
Application ThreatHunting.Read.All Nicht verfügbar.

HTTP-Anforderung

POST /security/runHuntingQuery

Anforderungsheader

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

Hinweis

Wenn Sie in Ihrer Abfrage Nicht-ANSI-Zeichen verwenden, z. B. um E-Mail-Betreffzeilen mit falsch formatierten oder ähnlichen Zeichen abzufragen, verwenden Sie application/json; charset=utf-8 diese für den Content-Type-Header.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt mit der Query Eigenschaft an, und schließen Sie optional die workspaceIdTimespan und-Eigenschaften ein.

Parameter Typ Beschreibung Beispiel
Abfrage Zeichenfolge Erforderlich. Die Suchabfrage in Kusto-Abfragesprache (KQL). Weitere Informationen finden Sie unter KQL-Kurzübersicht.
Zeitraum Zeichenfolge Optional. Das Zeitintervall für die Abfragen von Daten im ISO 8601-Format. Der Standardwert ist 30 Tage. Wenn keine startTime angegeben ist, blickt die Abfrage 30 Tage zurück. 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 startTime 10 Tage zurückliegt, blickt die Abfrage nur sieben Tage zurück.
workspaceId GUID Optional. Die GUID eines bestimmten Log Analytics-Arbeitsbereichs, auf den abgezielt werden soll. Wenn diese Angabe weggelassen wird, verwendet der Dienst den primären Arbeitsbereich des Aufrufers. Wenn der Arbeitsbereich nicht gefunden wird oder nicht zugänglich ist, greift der Dienst auf den primären Arbeitsbereich des Aufrufers zurück. 00000000-0000-0000-0000-000000000001

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

  • Datum/Datum: "2024-02-01T08:00:00Z/2024-02-15T08:00:00Z" – Start- und Enddatum.
  • Dauer/Enddatum: "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 von jetzt an rückwärts.
  • Einzeldatum/-uhrzeit: "2024-02-01T08:00:00Z" – Startzeit, wobei die Endzeit standardmäßig auf die aktuelle Uhrzeit festgelegt ist.

Antwort

Bei erfolgreicher Ausführung gibt diese Aktion einen 200 OK Antwortcode und ein huntingQueryResults im Antworttext zurück.

Beispiele

Beispiel 1: Abfrage mit Standardzeitraum

Anforderung

Das folgende Beispiel gibt eine KQL-Abfrage an und bewirkt Folgendes:

  • Untersucht die DeviceProcessEvents-Tabelle im erweiterten Suchschema.
  • Filter 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 optional angegebenem timespan-Parameter

Anforderung

Dieses Beispiel gibt eine KQL-Abfrage an und untersucht die deviceProcessEvents-Tabelle im erweiterten Suchschema von vor 60 Tagen.

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