Microsoft Defender para APIs de ponto de extremidade usando o PowerShellMicrosoft Defender for Endpoint APIs using PowerShell

Aplica-se a: Microsoft Defender para Ponto de ExtremidadeApplies to: Microsoft Defender for Endpoint

Deseja experimentar o Microsoft Defender para Ponto de Extremidade?Want to experience Microsoft Defender for Endpoint? Inscreva-se para uma avaliação gratuita.Sign up for a free trial.

Observação

Se você for um cliente do Governo dos EUA, use os URIs listados no Microsoft Defender for Endpoint para clientes do Governo dos EUA.If you are a US Government customer, please use the URIs listed in Microsoft Defender for Endpoint for US Government customers.

Dica

Para melhorar o desempenho, você pode usar o servidor mais próximo de sua localização geográfica:For better performance, you can use server closer to your geo location:

  • api-us.securitycenter.microsoft.comapi-us.securitycenter.microsoft.com
  • api-eu.securitycenter.microsoft.comapi-eu.securitycenter.microsoft.com
  • api-uk.securitycenter.microsoft.comapi-uk.securitycenter.microsoft.com

Deseja experimentar o Microsoft Defender para Ponto de Extremidade?Want to experience Microsoft Defender for Endpoint? Inscreva-se para uma avaliação gratuita.Sign up for a free trial.

Cenário completo usando várias APIs do Microsoft Defender para Ponto de Extremidade.Full scenario using multiple APIs from Microsoft Defender for Endpoint.

Nesta seção, compartilharemos exemplos do PowerShell paraIn this section, we share PowerShell samples to

  • Recuperar um tokenRetrieve a token
  • Usar token para recuperar os alertas mais recentes no Microsoft Defender para Ponto de ExtremidadeUse token to retrieve the latest alerts in Microsoft Defender for Endpoint
  • Para cada alerta, se o alerta tiver prioridade média ou alta e ainda estiver em andamento, verifique quantas vezes o dispositivo se conectou a URL suspeita.For each alert, if the alert has medium or high priority and is still in progress, check how many times the device has connected to suspicious URL.

Pré-requisito: primeiro você precisa criar um aplicativo.Prerequisite: You first need to create an app.

Instruções de preparaçãoPreparation instructions

  • Abra uma janela do PowerShell.Open a PowerShell window.
  • Se sua política não permitir que você execute os comandos do PowerShell, você poderá executar o comando abaixo:If your policy does not allow you to run the PowerShell commands, you can run the below command:
    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

Para obter mais informações, consulte Documentação do PowerShellFor more information, see PowerShell documentation

Obter tokenGet token

Execute o abaixo:Run the below:

  • $tenantId: ID do locatário em nome do qual você deseja executar a consulta (ou seja, a consulta será executado nos dados desse locatário)$tenantId: ID of the tenant on behalf of which you want to run the query (i.e., the query will be run on the data of this tenant)

  • $appId: ID do seu aplicativo AAD (o aplicativo deve ter permissão 'Executar consultas avançadas' para o Defender para o Ponto de Extremidade)$appId: ID of your AAD app (the app must have 'Run advanced queries' permission to Defender for Endpoint)

  • $appSecret: Segredo do seu aplicativo do Azure AD$appSecret: Secret of your Azure AD app

  • $suspiciousUrl: a URL$suspiciousUrl: The URL

$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
$suspiciousUrl = 'www.suspiciousUrl.com' # Paste your own URL here

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


#Get latest alert
$alertUrl = "https://api.securitycenter.microsoft.com/api/alerts?`$top=10"
$headers = @{ 
    'Content-Type' = 'application/json'
    Accept = 'application/json'
    Authorization = "Bearer $aadToken" 
}
$alertResponse = Invoke-WebRequest -Method Get -Uri $alertUrl -Headers $headers -ErrorAction Stop
$alerts =  ($alertResponse | ConvertFrom-Json).value

$machinesToInvestigate = New-Object System.Collections.ArrayList

Foreach($alert in $alerts)
{
    #echo $alert.id $alert.machineId    $alert.severity $alert.status

    $isSevereAlert = $alert.severity -in 'Medium', 'High'
    $isOpenAlert = $alert.status -in 'InProgress', 'New'
    if($isOpenAlert -and $isSevereAlert)
    {
        if (-not $machinesToInvestigate.Contains($alert.machineId))
        {
            $machinesToInvestigate.Add($alert.machineId) > $null
        }
    }
}

$commaSeparatedMachines = '"{0}"' -f ($machinesToInvestigate -join '","')

$query = "NetworkCommunicationEvents
| where MachineId in ($commaSeparatedMachines)
| where RemoteUrl  == `"$suspiciousUrl`"
| summarize ConnectionsCount = count() by MachineId"

$queryUrl = "https://api.securitycenter.microsoft.com/api/advancedqueries/run"

$queryBody = ConvertTo-Json -InputObject @{ 'Query' = $query }
$queryResponse = Invoke-WebRequest -Method Post -Uri $queryUrl -Headers $headers -Body $queryBody -ErrorAction Stop
$response =  ($queryResponse | ConvertFrom-Json).Results
$response

Confira tambémSee also