واجهات برمجة التطبيقات Microsoft Defender لنقطة النهاية باستخدام PowerShell

ينطبق على:

هام

لا يتم تضمين قدرات التتبع المتقدمة في Defender for Business. راجع مقارنة Microsoft Defender for Business بالخطط Microsoft Defender لنقطة النهاية 1 و2.

هل تريد تجربة Defender لنقطة النهاية؟ التسجيل للحصول على إصدار تجريبي مجاني.

ملاحظة

إذا كنت أحد عملاء حكومة الولايات المتحدة، فالرجاء استخدام معرفات URI المدرجة في Microsoft Defender لنقطة النهاية لعملاء حكومة الولايات المتحدة.

تلميح

للحصول على أداء أفضل، يمكنك استخدام الخادم الأقرب إلى موقعك الجغرافي:

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

هل تريد تجربة Defender لنقطة النهاية؟ التسجيل للحصول على إصدار تجريبي مجاني.

سيناريو كامل باستخدام واجهات برمجة تطبيقات متعددة من Microsoft Defender لنقطة النهاية.

في هذا القسم، نشارك عينات PowerShell إلى

  • استرداد رمز مميز
  • استخدم الرمز المميز لاسترداد أحدث التنبيهات في Microsoft Defender لنقطة النهاية
  • لكل تنبيه، إذا كان التنبيه له أولوية متوسطة أو عالية ولا يزال قيد التقدم، فتحقق من عدد المرات التي يتصل فيها الجهاز بعنوان URL المشبوه.

المتطلبات الأساسية: تحتاج أولا إلى إنشاء تطبيق.

إرشادات التحضير

  • افتح نافذة PowerShell.
  • إذا كان نهجك لا يسمح لك بتشغيل أوامر PowerShell، يمكنك تشغيل الأمر أدناه:
    Set-ExecutionPolicy -ExecutionPolicy Bypass
    

لمزيد من المعلومات، راجع وثائق PowerShell

الحصول على الرمز المميز

قم بتشغيل ما يلي:

  • $tenantId: معرف المستأجر الذي تريد تشغيل الاستعلام نيابة عنه (أي، سيتم تشغيل الاستعلام على بيانات هذا المستأجر)

  • $appId: معرف تطبيق AAD (يجب أن يكون لدى التطبيق إذن "تشغيل الاستعلامات المتقدمة" إلى Defender لنقطة النهاية)

  • $appSecret: سر تطبيق Azure AD

  • $suspiciousUrl: عنوان 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

راجع أيضًا