KQL

Uma visão geral sobre KQL (Kusto Query Language)

Nível: Iniciante | Tempo de leitura: 10 minutos

Você conhece a linguagem de consulta KQL – Kusto Query Language? Ela é usada para realizar análises em dados e também para fazer pesquisas (Hunting) no Azure Sentinel, na criação de Analytics e Workbooks, para fazer hunting também no Defender for Endpoint e outras soluções. Nesse post, vou fazer um overview sobre o que você deve saber para começar a usar essa poderosa ferramenta. Além disso, o KQL também é cobrado no exame de certificação SC-200 – Microsoft Security Operations Analyst.

Um ótimo ponto de partida é usar o site Microsoft Learn para aprender mais profundamente sobre o KQL, você pode acessar nesse link.

O que é o KQL?

O KQL, ou Kusto Query Langague, como comentei acima, é uma poderosa linguagem usada nas buscas (hunting) em produtos como o SIEM de nuvem da Microsoft, o Sentinel e na parte de endoint security usando o Microsoft Defender for Endpoint. No MDE (Microsoft Defender for Endpoint), você pode usar a busca avançada, que é uma ferramenta de busca de ameaças baseada em KQL que permite explorar até 30 dias de dados brutos (raw data).

Então, podemos resumir o KQL nesse primeiro momento como uma linguagem que permite que você faça consultas de dados rapidamente, processe e retorne os resultados desse processamento sem modificar os dados ou metadados, ou seja, ele faz a consulta de somente leitura.

Então podemos dizer que o KQL é uma solicitação somente leitura para processar dados e retornar resultados. A solicitação é feita em texto sem formatação e usa um modelo de fluxo de dados que é feito para facilitar a criação, leitura e a automatização da sintaxe. As consultas são organizadas em uma hierarquia bem parecida à do SQL: usando bancos de dados, tabelas e colunas.

No exemplo abaixo, estou acessando a parte de consulta de logs do Azure sentinel no portal.azure.com.

Para a parte do Defender for Endpoint que comentei, pode ser acessado via portal security.microsoft.com, na página inicial, no menu de Hunting.

Se você quiser testar isso na prática, faça o login com qualquer conta Microsoft ou crie um trial e acesse o site de laboratório que foi criado justamente para que você teste as consultas na prática – https://aka.ms/lademo.

Abaixo, a imagem mostra a estrutura de KQL no Azure Sentinel:

Casos de uso

Vamos fazer um caso de uso inicial para que você possa visualizar o resultado de um cenário prático.

Nesse exemplo, eu quero encontar todos os eventos de logon do Windows de 2 semanas atrás até 1 semana atrás que ocorreram em um computador com nome que começa com “App”.

Com a pesquisa abaixo, estou buscando dados dentro de uma tabela chamada SecurityEvents. Essa tabela contém eventos de segurança coletados de computadores Windows pela Central de Segurança do Azure ou através do Azure Sentinel.

Isso é possível nesse lab, porque temos conectado máquinas Windows ao espaço de trabalho (Workspace) do Log Analytics que está sendo usado pelo Azure Sentinel, então os eventos de segurança do log de eventos do Windows são encaminhados para esta tabela.

Vamos executar o comando abaixo para testar:

SecurityEvent | limit 100 // Busca pelos campos: Activity, EventID, Computer

Posso também sumarizar por atividade:

SecurityEvent | summarize by Activity // find the Event signaling login

Agora, vamos buscar os eventos entre 14 e 7 dias atrás e filtrando pelo event ID “4624” (Evento: uma conta foi registrada com êxito) no computador iniciando com “App”.

SecurityEvent
| where TimeGenerated between (ago(14d)..ago(7d)) // start with the time filter
| where EventID == "4624"
| where Computer startswith "App" // case insensitive
// This is the solution, but there are so many results

Por fim, vamos sumarizar e fazer a pesquisa pela contagem de número de computadores:

SecurityEvent
| where TimeGenerated between (ago(14d)..ago(7d))
| where EventID == "4624"
| where Computer startswith "App"
| summarize count() by Computer
// so let’s count per computer

Esses exemplos e muitos outros podem ser aprendidos também no site do Azure Sentinel Ninja: Treinamento completo nível 400. Recomendo fortemente!

Conclusão

Nesse artigo, vocês aprenderam a dar os primeiros passos no aprendizado das pesquisas de KQL.

Tiago Souza

Tiago Souza

Security Technical Specialist
Cyber Security Technical Specialist at Microsoft | Cloud Security & Threat Protection | Blog content creator at CyberGeeks.Cloud - https://linktr.ee/tiagovf