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()
İlgili konu
- Uç Nokta için Microsoft Defender API'leri
- Gelişmiş Tehdit Avcılığı API'si
- PowerShell ile Gelişmiş Av
İ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.