Repérage avancé à l’aide de Python
S’applique à :
Vous voulez découvrir Microsoft Defender pour point de terminaison ? Inscrivez-vous pour bénéficier d’un essai gratuit.
Remarque
Si vous êtes un client du gouvernement des États-Unis, utilisez les URI répertoriés dans Microsoft Defender pour point de terminaison pour les clients du gouvernement des États-Unis.
Conseil
Pour de meilleures performances, vous pouvez utiliser le serveur plus près de votre emplacement géographique :
- 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
Exécutez des requêtes avancées à l’aide de Python. Consultez API de chasse avancée.
Dans cette section, nous partageons des exemples Python pour récupérer un jeton et l’utiliser pour exécuter une requête.
Prérequis : vous devez d’abord créer une application.
Obtenir un jeton
- Exécutez les commandes suivantes :
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"]
Où
- tenantId : ID du locataire pour le compte duquel vous souhaitez exécuter la requête (autrement dit, la requête est exécutée sur les données de ce locataire)
- appId : ID de votre application Microsoft Entra (l’application doit avoir l’autorisation « Exécuter des requêtes avancées » sur Microsoft Defender pour point de terminaison)
- appSecret : secret de votre application Microsoft Entra
Exécuter la requête
Exécutez la requête suivante :
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 contient le schéma des résultats de votre requête
- les résultats contiennent les résultats de votre requête
Requêtes complexes
Si vous souhaitez exécuter des requêtes complexes (ou des requêtes multilignes), enregistrez votre requête dans un fichier et, au lieu de la première ligne de l’exemple ci-dessus, exécutez la commande ci-dessous :
queryFile = open("D:\\Temp\\myQuery.txt", 'r') # Replace with the path to your file
query = queryFile.read()
queryFile.close()
Travailler avec les résultats de la requête
Vous pouvez maintenant utiliser les résultats de la requête.
Pour itérer sur les résultats, utilisez la commande suivante :
for result in results:
print(result) # Prints the whole result
print(result["EventTime"]) # Prints only the property 'EventTime' from the result
Pour générer les résultats de la requête au format CSV dans un fichier file1.csv utilisez la commande suivante :
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()
Pour générer les résultats de la requête au format JSON dans un fichier file1.json utilisez la commande suivante :
outputFile = open("D:\\Temp\\file1.json", 'w')
json.dump(results, outputFile)
outputFile.close()
Rubrique connexe
- API Microsoft Defender pour point de terminaison
- API de chasse avancée
- Repérage avancé à l’aide de PowerShell
Conseil
Voulez-vous en savoir plus ? Collaborez avec la communauté Microsoft Security dans notre communauté technique : Microsoft Defender pour point de terminaison Tech Community.