مشاركة عبر


"الصيد المتقدم" باستخدام Python

ملاحظة

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

تلميح

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

  • 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

قم بتشغيل الاستعلامات المتقدمة باستخدام Python، راجع واجهة برمجة تطبيقات التتبع المتقدمة.

في هذا القسم، نشارك عينات Python لاسترداد رمز مميز واستخدامه لتشغيل استعلام.

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

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

  • قم بتنفيذ الأوامر التالية:
import json
import urllib.request
import urllib.parse

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

url = "https://login.microsoftonline.com/%s/oauth2/token" % (tenantId)

resourceAppIdUri = 'https://api.security.microsoft.com'

body = {
    'resource' : resourceAppIdUri,
    'client_id' : appId,
    'client_secret' : appSecret,
    'grant_type' : 'client_credentials'
}

data = urllib.parse.urlencode(body).encode("utf-8")

req = urllib.request.Request(url, data)
response = urllib.request.urlopen(req)
jsonResponse = json.loads(response.read())
aadToken = jsonResponse["access_token"]

المكان:

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

تشغيل الاستعلام

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

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

url = "https://api.security.microsoft.com/api/advancedqueries/run"
headers = {
    'Content-Type' : 'application/json',
    'Accept' : 'application/json',
    'Authorization' : "Bearer " + aadToken
}

data = json.dumps({ 'Query' : query }).encode("utf-8")

req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
jsonResponse = json.loads(response.read())
schema = jsonResponse["Schema"]
results = jsonResponse["Results"]
  • يحتوي المخطط على مخطط نتائج الاستعلام الخاص بك
  • تحتوي النتائج على نتائج الاستعلام الخاص بك

الاستعلامات المعقدة

إذا كنت تريد تشغيل استعلامات معقدة (أو استعلامات متعددة الأسطر)، فاحفظ الاستعلام في ملف، وبدلا من السطر الأول في المثال السابق، قم بتشغيل الأمر التالي:

queryFile = open("D:\\Temp\\myQuery.txt", 'r') # Replace with the path to your file
query = queryFile.read()
queryFile.close()

استخدام نتائج الاستعلام

يمكنك الآن استخدام نتائج الاستعلام.

للتكرار عبر النتائج، استخدم الأمر التالي:

for result in results:
    print(result) # Prints the whole result
    print(result["EventTime"]) # Prints only the property 'EventTime' from the result

لإخراج نتائج الاستعلام بتنسيق CSV في file1.csv الملف، استخدم الأمر التالي:

import csv

outputFile = open("D:\\Temp\\file1.csv", 'w')
output = csv.writer(outputFile)
output.writerow(results[0].keys())
for result in results:
    output.writerow(result.values())

outputFile.close()

لإخراج نتائج الاستعلام بتنسيق JSON في file1.json الملف، استخدم الأمر التالي:

outputFile = open("D:\\Temp\\file1.json", 'w')
json.dump(results, outputFile)
outputFile.close()

تلميح

هل تريد معرفة المزيد؟ تواصل مع مجتمع الأمان من Microsoft في مجتمعنا التقني: مجتمع Microsoft Defender لنقطة النهاية التقني.