Busca avançada usando Python
Aplica-se a:
Deseja experimentar o Microsoft Defender para Ponto de Extremidade? Inscreva-se para uma avaliação gratuita.
Observação
Se você for um cliente do governo dos EUA, use as URIs listadas em Microsoft Defender para Ponto de Extremidade para clientes do governo dos EUA.
Dica
Para obter um melhor desempenho, você pode usar o servidor mais próximo da localização geográfica:
- 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
Execute consultas avançadas usando Python, consulte API de Caça Avançada.
Nesta seção, compartilhamos exemplos do Python para recuperar um token e usá-lo para executar uma consulta.
Pré-requisito: primeiro você precisa criar um aplicativo.
Obter token
- Execute os seguintes comandos:
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"]
Em que
- tenantId: ID do locatário em nome do qual você deseja executar a consulta (ou seja, a consulta é executada nos dados desse locatário)
- appId: ID do aplicativo Microsoft Entra (o aplicativo deve ter permissão 'Executar consultas avançadas' para Microsoft Defender para Ponto de Extremidade)
- appSecret: Segredo do seu aplicativo Microsoft Entra
Executar consulta
Execute a seguinte consulta:
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"]
- o esquema contém o esquema dos resultados da consulta
- os resultados contêm os resultados de sua consulta
Consultas complexas
Se você quiser executar consultas complexas (ou consultas multiline), salve sua consulta em um arquivo e, em vez da primeira linha no exemplo acima, execute o comando abaixo:
queryFile = open("D:\\Temp\\myQuery.txt", 'r') # Replace with the path to your file
query = queryFile.read()
queryFile.close()
Trabalhar com os resultados da consulta
Agora você pode usar os resultados da consulta.
Para iterar sobre os resultados, use o seguinte comando:
for result in results:
print(result) # Prints the whole result
print(result["EventTime"]) # Prints only the property 'EventTime' from the result
Para gerar os resultados da consulta no formato CSV no arquivo file1.csv use o seguinte comando:
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()
Para gerar os resultados da consulta no formato JSON no arquivo file1.json use o seguinte comando:
outputFile = open("D:\\Temp\\file1.json", 'w')
json.dump(results, outputFile)
outputFile.close()
Tópico relacionado
- APIs Microsoft Defender para Ponto de Extremidade
- API de Caça Avançada
- Busca avançada usando o PowerShell
Dica
Você deseja aprender mais? Engage com a comunidade de Segurança da Microsoft em nossa Comunidade Tecnológica: Microsoft Defender para Ponto de Extremidade Tech Community.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de