Sicherheit: runHuntingQuery

Namespace: microsoft.graph.security

Wichtig

Die APIs unter der /beta Version in Microsoft Graph können sich ändern. Die Verwendung dieser APIs in Produktionsanwendungen wird nicht unterstützt. Um festzustellen, ob eine API in v1.0 verfügbar ist, verwenden Sie die Version Selektor.

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

Diese Methode ist für die erweiterte Suche in Microsoft Defender XDR 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 Defender-Portal finden Sie unter Proaktives Suchen nach Bedrohungen mit erweiterter Suche in Microsoft Defender XDR.

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.

Wichtig

Der angemeldete Benutzer benötigt außerdem eine der folgenden Rollen:

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 sie für den Content-Type-Header.

Anforderungstext

Geben Sie im Anforderungstext ein JSON-Objekt für den query Parameter an, und fügen Sie optional einen Parameter und einen timespanworkspaceId Parameter 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. Die Standardeinstellung beträgt 30 Tage. Wenn sowohl in der Abfrage als auch im Parameter timespan ein Zeitfilter angegeben ist, wird die kürzere Zeitspanne angewendet.
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:

  • 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/beta/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/beta/$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/beta/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"
        }
    ]
}

Beispiel 3: Abfragen für einen bestimmten Arbeitsbereich

Anforderung

Das folgende Beispiel gibt eine KQL-Abfrage an und zielt auf einen bestimmten Log Analytics-Arbeitsbereich ab, indem der optionale workspaceId-Parameter übergeben wird.

POST https://graph.microsoft.com/beta/security/runHuntingQuery
Content-Type: application/json

{
    "query": "DeviceProcessEvents | where InitiatingProcessFileName =~ \"powershell.exe\" | project Timestamp, FileName, InitiatingProcessFileName | order by Timestamp desc | limit 2",
    "timespan": "P1D",
    "workspaceId": "00000000-0000-0000-0000-000000000001"
}

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": "2026-03-10T06:38:35.766Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2026-03-10T06:38:30.516Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}