segurança: runHuntingQuery

Namespace: microsoft.graph.security

Importante

As APIs na versão /beta no Microsoft Graph estão sujeitas a alterações. Não há suporte para o uso dessas APIs em aplicativos de produção. Para determinar se uma API está disponível na v1.0, use o seletor Versão.

Consulte um conjunto especificado de dados de eventos, atividades ou entidades com suporte do Microsoft Defender XDR para procurar proativamente ameaças específicas em seu ambiente.

Esse método é para busca avançada no Microsoft Defender XDR. Esse método inclui uma consulta na Linguagem de Consulta Kusto (KQL). Ele especifica uma tabela de dados no esquema de busca avançada e uma sequência canalizada de operadores para filtrar ou pesquisar esses dados e formatar a saída da consulta de maneiras específicas.

Saiba mais sobre como buscar ameaças em dispositivos, emails, aplicativos e identidades. Saiba mais sobre KQL.

Para obter informações sobre como usar a busca avançada no portal do Microsoft Defender, consulte Buscar proativamente ameaças com a busca avançada no Microsoft Defender XDR.

Essa API está disponível nas seguintes implantações de nuvem nacional.

Serviço global Governo dos EUA L4 US Government L5 (DOD) China operada pela 21Vianet
✅ ✅ ✅ ❌

Permissões

Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.

Tipo de permissão Permissões menos privilegiadas Permissões com privilégios mais elevados
Delegado (conta corporativa ou de estudante) ThreatHunting.Read.All Indisponível.
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Application ThreatHunting.Read.All Indisponível.

Importante

O usuário conectado também precisa de uma das seguintes funções:

Solicitação HTTP

POST /security/runHuntingQuery

Cabeçalhos de solicitação

Nome Descrição
Autorização {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização.
Content-Type application/json. Obrigatório.

Observação

Se você estiver usando caracteres não ANSI em sua consulta, por exemplo, para consultar assuntos de email com caracteres malformados ou semelhantes, use application/json; charset=utf-8 para o cabeçalho Content-Type.

Corpo da solicitação

No corpo da solicitação, forneça um objeto JSON para o query parâmetro e, opcionalmente, inclua um timespan parâmetro e um workspaceId parâmetro.

Parâmetro Tipo Descrição Exemplo
consulta Cadeia de caracteres Obrigatório. A consulta de busca na Linguagem de Consulta Kusto (KQL). Para obter mais informações, consulte a referência rápida de KQL.
Intervalo de tempo String Opcional. O intervalo de tempo sobre o qual consultar dados, no formato ISO 8601. O valor padrão é de 30 dias. Se um filtro de tempo for especificado na consulta e no parâmetro timespan , o intervalo de tempo mais curto será aplicado.
workspaceId Guid Opcional. O GUID de um workspace específico do Log Analytics a ser direcionado. Se omitido, o serviço usará o espaço de trabalho principal do chamador. Se o espaço de trabalho não for encontrado ou não estiver acessível, o serviço retornará ao espaço de trabalho principal do chamador. 00000000-0000-0000-0000-000000000001

Os exemplos a seguir mostram os formatos possíveis para o timespan parâmetro:

  • Data/Data: "2024-02-01T08:00:00Z/2024-02-15T08:00:00Z" – Datas de início e término.
  • Duration/endDate: "P30D/2024-02-15T08:00:00Z" - Um período antes da data de término.
  • Início/duração: "2024-02-01T08:00:00Z/P30D" - Data de início e duração.
  • ISO8601 duração: "P30D" - Duração de agora para trás.
  • Data/hora única: "2024-02-01T08:00:00Z" - Hora de início com hora de término padronizada para a hora atual.

Resposta

Se for bem-sucedida, essa ação retornará um código de 200 OK resposta e um huntingQueryResults no corpo da resposta.

Exemplos

Exemplo 1: Consulta com intervalo de tempo padrão

Solicitação

O exemplo a seguir especifica uma consulta KQL e:

  • Examina a tabela DeviceProcessEvents no esquema de busca avançada.
  • Filtros com a condição de que o processo powershell.exe inicie o evento.
  • Especifica a saída de três colunas da mesma tabela para cada linha: Timestamp, FileName, InitiatingProcessFileName.
  • Classifica a saída pelo Timestamp valor.
  • Limita a saída a dois registros (duas linhas).
POST https://graph.microsoft.com/beta/security/runHuntingQuery

{
    "query": "DeviceProcessEvents | where InitiatingProcessFileName =~ \"powershell.exe\" | project Timestamp, FileName, InitiatingProcessFileName | order by Timestamp desc | limit 2"
}

Resposta

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.security.huntingQueryResults",
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "Timestamp": "2024-03-26T09:39:50.7688641Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2024-03-26T09:39:49.4353788Z",
            "FileName": "cmd.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}

Exemplo 2: Consulta com opcional o parâmetro timespan especificado

Solicitação

Este exemplo especifica uma consulta KQL e examina a tabela deviceProcessEvents no esquema de busca avançada 60 dias atrás.

POST https://graph.microsoft.com/beta/security/runHuntingQuery

{
    "query": "DeviceProcessEvents",
    "timespan": "P90D"
}

Resposta

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
    "schema": [
        {
            "Name": "Timestamp",
            "Type": "DateTime"
        },
        {
            "Name": "FileName",
            "Type": "String"
        },
        {
            "Name": "InitiatingProcessFileName",
            "Type": "String"
        }
    ],
    "results": [
        {
            "Timestamp": "2020-08-30T06:38:35.7664356Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2020-08-30T06:38:30.5163363Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}

Exemplo 3: Consulta em um espaço de trabalho específico

Solicitação

O exemplo a seguir especifica uma consulta KQL e se destina a um workspace específico do Log Analytics passando o parâmetro workspaceId opcional.

POST https://graph.microsoft.com/beta/security/runHuntingQuery
Content-Type: application/json

{
    "query": "DeviceProcessEvents | where InitiatingProcessFileName =~ \"powershell.exe\" | project Timestamp, FileName, InitiatingProcessFileName | order by Timestamp desc | limit 2",
    "timespan": "P1D",
    "workspaceId": "00000000-0000-0000-0000-000000000001"
}

Resposta

Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.

HTTP/1.1 200 OK
Content-type: application/json

{
    "schema": [
        {
            "name": "Timestamp",
            "type": "DateTime"
        },
        {
            "name": "FileName",
            "type": "String"
        },
        {
            "name": "InitiatingProcessFileName",
            "type": "String"
        }
    ],
    "results": [
        {
            "Timestamp": "2026-03-10T06:38:35.766Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        },
        {
            "Timestamp": "2026-03-10T06:38:30.516Z",
            "FileName": "conhost.exe",
            "InitiatingProcessFileName": "powershell.exe"
        }
    ]
}