Aracılığıyla paylaş


Python ile Gelişmiş Avcılık

Not

ABD Kamu müşterisiyseniz US Government müşterileri için Uç Nokta için Microsoft Defender'da listelenen URI'leri kullanın.

İpucu

Daha iyi performans için api.security.microsoft.com kullanmak yerine coğrafi konumunuza daha yakın bir sunucu kullanın:

  • 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 kullanarak gelişmiş sorgular çalıştırma, bkz. Gelişmiş Tehdit Avcılığı API'si.

Bu bölümde python örneklerini paylaşarak bir belirteci alıp sorgu çalıştırmak için kullanacağız.

Önkoşul: Önce bir uygulama oluşturmanız gerekir.

Belirteci alma

  • Aşağıdaki komutları çalıştırın:

İpucu

Bazı Uç Nokta için Microsoft Defender API'ler, eski kaynak https://api.securitycenter.microsoft.comiçin erişim belirteçleri verilmesini gerektirmeye devam eder. Belirteç hedef kitlesi API tarafından beklenen kaynakla eşleşmiyorsa, API uç noktası kullansa https://api.security.microsoft.combile istekler ile 403 Forbiddenbaşarısız olur.

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.securitycenter.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"]

Konum:

  • tenantId: Sorguyu çalıştırmak istediğiniz kiracının kimliği (yani, sorgu bu kiracının verileri üzerinde çalıştırılır)
  • appId: Microsoft Entra uygulamanızın kimliği (uygulamanın Uç Nokta için Microsoft Defender için 'Gelişmiş sorguları çalıştırma' izni olmalıdır)
  • appSecret: Microsoft Entra uygulamanızın gizli dizisi

Sorguyu çalıştırma

Aşağıdaki sorguyu çalıştırın:

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"]
  • schema, sorgunuzun sonuçlarının şemasını içerir
  • sonuçlar sorgunuzun sonuçlarını içerir

Karmaşık sorgular

Karmaşık sorgular (veya çok satırlı sorgular) çalıştırmak istiyorsanız, sorgunuzu bir dosyaya kaydedin ve önceki örnekteki ilk satır yerine aşağıdaki komutu çalıştırın:

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

Sorgu sonuçlarıyla çalışın

Artık sorgu sonuçlarını kullanabilirsiniz.

Sonuçlar üzerinde yineleme yapmak için aşağıdaki komutu kullanın:

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

Sorgu sonuçlarını dosya file1.csv CSV biçiminde çıkarmak için aşağıdaki komutu kullanın:

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()

Sorgunun sonuçlarını dosya file1.json JSON biçiminde çıkarmak için aşağıdaki komutu kullanın:

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

İpucu

Daha fazla bilgi edinmek mi istiyorsunuz? Teknoloji Topluluğumuzdaki Microsoft Güvenlik topluluğuyla Engage: Uç Nokta için Microsoft Defender Teknoloji Topluluğu.