Erweiterte Bedrohungssuche mit PowerShell

Gilt für:

Möchten Sie Microsoft Defender für Endpunkt ausprobieren? Registrieren Sie sich für eine kostenlose Testversion.

Hinweis

Wenn Sie ein US Government-Kunde sind, verwenden Sie bitte die URIs, die in Microsoft Defender for Endpoint für US Government-Kunden aufgeführt sind.

Tipp

Um die Leistung zu verbessern, können Sie den Server näher an Ihrem geografischen Standort verwenden:

  • us.api.security.microsoft.com
  • eu.api.security.microsoft.com
  • uk.api.security.microsoft.com
  • au.api.security.microsoft.com
  • swa.api.security.microsoft.com

Führen Sie erweiterte Abfragen mithilfe von PowerShell aus. Weitere Informationen finden Sie unter Erweiterte Hunting-API.

In diesem Abschnitt werden PowerShell-Beispiele zum Abrufen eines Tokens und zum Ausführen einer Abfrage freigegeben.

Bevor Sie beginnen:

Sie müssen zunächst eine App erstellen.

Vorbereitungsanweisungen

  • Öffnen Sie ein PowerShell-Fenster.

  • Wenn Ihre Richtlinie das Ausführen der PowerShell-Befehle nicht zulässt, können Sie den folgenden Befehl ausführen:

    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

Weitere Informationen finden Sie in der PowerShell-Dokumentation.

Token abrufen

  • Führen Sie den folgenden Befehl aus:
$tenantId = '00000000-0000-0000-0000-000000000000' # Paste your own tenant ID here
$appId = '11111111-1111-1111-1111-111111111111' # Paste your own app ID here
$appSecret = '22222222-2222-2222-2222-222222222222' # Paste your own app secret here

$resourceAppIdUri = 'https://api.securitycenter.microsoft.com'
$oAuthUri = "https://login.microsoftonline.com/$TenantId/oauth2/token"
$body = [Ordered] @{
    resource = "$resourceAppIdUri"
    client_id = "$appId"
    client_secret = "$appSecret"
    grant_type = 'client_credentials'
}
$response = Invoke-RestMethod -Method Post -Uri $oAuthUri -Body $body -ErrorAction Stop
$aadToken = $response.access_token

Dabei gilt:

  • $tenantId: ID des Mandanten, in dessen Namen Sie die Abfrage ausführen möchten (d. a. die Abfrage wird für die Daten dieses Mandanten ausgeführt).
  • $appId: ID Ihrer Microsoft Entra-App (die App muss über die Berechtigung "Erweiterte Abfragen ausführen" für Defender für Endpunkt verfügen)
  • $appSecret: Geheimnis Ihrer Microsoft Entra-App

Abfrage ausführen

Führen Sie die folgende Abfrage aus:

$token = $aadToken
$query = 'DeviceRegistryEvents | limit 10' # Paste your own query here

$url = "https://api.securitycenter.microsoft.com/api/advancedhunting/run"
$headers = @{ 
    'Content-Type' = 'application/json'
    Accept = 'application/json'
    Authorization = "Bearer $aadToken" 
}
$body = ConvertTo-Json -InputObject @{ 'Query' = $query }
$webResponse = Invoke-WebRequest -Method Post -Uri $url -Headers $headers -Body $body -ErrorAction Stop
$response =  $webResponse | ConvertFrom-Json
$results = $response.Results
$schema = $response.Schema
  • $results die Ergebnisse Ihrer Abfrage enthalten
  • $schema enthält das Schema der Ergebnisse Ihrer Abfrage.

Komplexe Abfragen

Wenn Sie komplexe Abfragen (oder mehrzeilige Abfragen) ausführen möchten, speichern Sie die Abfrage in einer Datei, und führen Sie anstelle der ersten Zeile im obigen Beispiel den folgenden Befehl aus:

$query = [IO.File]::ReadAllText("C:\myQuery.txt"); # Replace with the path to your file

Arbeiten mit Abfrageergebnissen

Sie können jetzt die Abfrageergebnisse verwenden.

Führen Sie den folgenden Befehl aus, um die Ergebnisse der Abfrage im CSV-Format in datei file1.csv auszugeben:

$results | ConvertTo-Csv -NoTypeInformation | Set-Content C:\file1.csv

Führen Sie den folgenden Befehl aus, um die Ergebnisse der Abfrage im JSON-Format in datei file1.json auszugeben:

$results | ConvertTo-Json | Set-Content file1.json

Verwandter Artikel

Tipp

Möchten Sie mehr erfahren? Engage mit der Microsoft-Sicherheitscommunity in unserer Tech Community: Microsoft Defender for Endpoint Tech Community.