Aracılığıyla paylaş


Python ile Gelişmiş Avcılık

Şunlar için geçerlidir:

Uç Nokta için Microsoft Defender'ı deneyimlemek ister misiniz? Ücretsiz deneme için kaydolun.

Not

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

İpucu

Daha iyi performans için coğrafi konumunuza daha yakın olan sunucuyu kullanabilirsiniz:

  • 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

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:
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"]

Nerede

  • tenantId: Sorguyu çalıştırmak istediğiniz kiracının kimliği (yani, sorgu bu kiracının verilerinde çalıştırılır)
  • appId: Microsoft Entra uygulamanızın kimliği (uygulamanın Uç Nokta için Microsoft Defender'da '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.securitycenter.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 yukarıdaki ö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 etkileşime geçin: Uç Nokta için Microsoft Defender Teknoloji Topluluğu.