Compartilhar via


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

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.