Rilevazione avanzata con PowerShell

Si applica a:

Se si desidera provare Microsoft Defender per endpoint, iscriversi a una versione di valutazione gratuita.

Nota

Se si è un cliente del governo degli Stati Uniti, usare gli URI elencati in Microsoft Defender per endpoint per i clienti del governo degli Stati Uniti.

Suggerimento

Per ottenere prestazioni migliori, è possibile usare il server più vicino alla posizione geografica:

  • 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

Eseguire query avanzate con PowerShell. Per altre informazioni, vedere API ricerca avanzata.

In questa sezione vengono condivisi gli esempi di PowerShell per recuperare un token e usarlo per eseguire una query.

Prima di iniziare

È prima di tutto necessario creare un'app.

Istruzioni di preparazione

  • Aprire una finestra di PowerShell.

  • Se i criteri non consentono di eseguire i comandi di PowerShell, è possibile eseguire il comando seguente:

    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

Per altre informazioni, vedere la documentazione di PowerShell.

Ottenere il token

  • Eseguire il comando seguente:
$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

Dove:

  • $tenantId: ID del tenant per conto del quale si vuole eseguire la query, ovvero la query viene eseguita sui dati di questo tenant
  • $appId: ID dell'app Microsoft Entra (l'app deve disporre dell'autorizzazione "Esegui query avanzate" per Defender per endpoint)
  • $appSecret: Segreto dell'app Microsoft Entra

Esegui query

Eseguire la query seguente:

$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 contengono i risultati della query
  • $schema contiene lo schema dei risultati della query

Query complesse

Se si desidera eseguire query complesse (o query multiriga), salvare la query in un file e, anziché la prima riga nell'esempio precedente, eseguire il comando seguente:

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

Usare i risultati delle query

È ora possibile usare i risultati della query.

Per restituire i risultati della query in formato CSV nel file file1.csv, eseguire il comando seguente:

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

Per restituire i risultati della query in formato JSON nel file file1.json, eseguire il comando seguente:

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

Articolo correlato

Suggerimento

Per saperne di più, Collaborare con la community di Microsoft Security nella community tech: Microsoft Defender per endpoint Tech Community.