Udostępnij za pośrednictwem


Zaawansowane wyszukiwanie zagrożeń przy użyciu programu PowerShell

Dotyczy:

Chcesz poznać usługę ochrony punktu końcowego w usłudze Microsoft Defender? Utwórz konto, aby skorzystać z bezpłatnej wersji próbnej.

Uwaga

Jeśli jesteś klientem rządowym USA, użyj identyfikatorów URI wymienionych w usłudze Microsoft Defender for Endpoint dla klientów rządowych USA.

Porada

Aby uzyskać lepszą wydajność, możesz użyć serwera bliżej lokalizacji geograficznej:

  • 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
  • ina.api.security.microsoft.com

Uruchamianie zaawansowanych zapytań przy użyciu programu PowerShell. Aby uzyskać więcej informacji, zobacz Advanced Hunting API (Zaawansowany interfejs API wyszukiwania zagrożeń).

W tej sekcji udostępniamy przykłady programu PowerShell w celu pobrania tokenu i użycia go do uruchomienia zapytania.

Przed rozpoczęciem

Najpierw musisz utworzyć aplikację.

Instrukcje przygotowywania

  • Otwórz okno programu PowerShell.

  • Jeśli zasady nie zezwalają na uruchamianie poleceń programu PowerShell, możesz uruchomić następujące polecenie:

    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

Aby uzyskać więcej informacji, zobacz dokumentację programu PowerShell.

Uzyskiwanie tokenu

  • Uruchom następujące polecenie:
$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

Gdzie

  • $tenantId: identyfikator dzierżawy, w imieniu której chcesz uruchomić zapytanie (tj. zapytanie jest uruchamiane na danych tej dzierżawy)
  • $appId: identyfikator aplikacji Microsoft Entra (aplikacja musi mieć uprawnienie "Uruchom zaawansowane zapytania" do usługi Defender for Endpoint)
  • $appSecret: wpis tajny aplikacji Microsoft Entra

Uruchamianie zapytania

Uruchom następujące zapytanie:

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

$url = "https://api.securitycenter.microsoft.com/api/advancedqueries/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 zawierać wyniki zapytania
  • $schema zawiera schemat wyników zapytania

Złożone zapytania

Jeśli chcesz uruchamiać złożone zapytania (lub zapytania wielowierszowe), zapisz zapytanie w pliku i zamiast pierwszego wiersza w powyższym przykładzie uruchom następujące polecenie:

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

Praca z wynikami zapytań

Teraz możesz użyć wyników zapytania.

Aby wyświetlić wyniki zapytania w formacie CSV w pliku file1.csv, uruchom następujące polecenie:

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

Aby wyświetlić wyniki zapytania w formacie JSON w pliku file1.json, uruchom następujące polecenie:

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

Powiązany artykuł

Porada

Chcesz dowiedzieć się więcej? Skontaktuj się ze społecznością zabezpieczeń firmy Microsoft w naszej społeczności technicznej: Microsoft Defender for Endpoint Tech Community.