Microsoft Defender untuk Titik Akhir API menggunakan PowerShell

Important

Kemampuan berburu tingkat lanjut tidak disertakan dalam Microsoft Defender untuk Bisnis.

Note

Jika Anda adalah pelanggan Pemerintah AS, gunakan URI yang tercantum dalam Microsoft Defender untuk Titik Akhir untuk pelanggan Pemerintah AS.

Tip

Untuk performa yang lebih baik, alih-alih menggunakan api.security.microsoft.com, gunakan server yang lebih dekat dengan geolokasi Anda:

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

Skenario penuh menggunakan beberapa API dari Microsoft Defender untuk Titik Akhir.

Di bagian ini, kami berbagi sampel PowerShell ke:

  • Mengambil token.
  • Gunakan token untuk mengambil pemberitahuan terbaru di Microsoft Defender untuk Titik Akhir.
  • Untuk setiap pemberitahuan, jika pemberitahuan memiliki prioritas sedang atau tinggi dan masih berlangsung, periksa berapa kali perangkat tersambung ke URL yang mencurigakan.

Prasyarat: Anda harus terlebih dahulu membuat aplikasi.

Instruksi persiapan

  1. Buka jendela PowerShell.

  2. Jika kebijakan Anda tidak mengizinkan Anda menjalankan perintah PowerShell, Anda bisa menjalankan perintah berikut:

    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

Untuk informasi selengkapnya, lihat dokumentasi PowerShell.

Dapatkan token

Jalankan perintah berikut, menggunakan informasi Anda sebagai berikut:

  • $tenantId: ID penyewa atas nama yang ingin Anda jalankan kuerinya (yaitu, kueri dijalankan pada data penyewa ini).
  • $appId: ID aplikasi Microsoft Entra Anda (aplikasi harus memiliki izin 'Jalankan kueri tingkat lanjut' untuk Defender untuk Titik Akhir).
  • $appSecret: Rahasia aplikasi Microsoft Entra Anda.
  • $suspiciousUrl: URL.

Tip

Beberapa API Microsoft Defender untuk Titik Akhir masih memerlukan token akses yang dikeluarkan untuk sumber daya lama https://api.securitycenter.microsoft.com. Jika audiens token tidak cocok dengan sumber daya yang diharapkan oleh API, permintaan gagal dengan 403 Forbidden, bahkan jika titik akhir API menggunakan https://api.security.microsoft.com. Gunakan https://api.securitycenter.microsoft.com sebagai sumber daya atau cakupan saat memperoleh token.

$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://api.securitycenter.microsoft.com'
$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.security.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.security.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

Baca juga

Tip

Apakah Anda ingin mempelajari lebih lanjut? Libatkan dengan komunitas Microsoft Security di Komunitas Teknologi kami: Microsoft Defender untuk Titik Akhir Tech Community.