"Recebi um alerta, mas não sei por onde começar."
"Eu consigo escrever KQL, mas é difícil escrever do zero toda vez."
"Demora demais durante a investigação, e a ação inicial é atrasada."
KQL (Kusto Query Language) é uma linguagem para examinar logs dos produtos Microsoft Sentinel e Defender.
Se você conseguir usá-lo bem, a velocidade inicial vai mudar drasticamente.
Desta vez, vamos apresentar os "três modelos para acertar primeiro" que são realmente usados em campo.
1. Por que os modelos são importantes
Resposta a incidentes é uma corrida contra o tempo.
Se você pensar em "qual tabela olhar" e "quais itens filtrar" toda vez, o tempo importante da ação inicial vai derreter.
Se você preparar o modelo com antecedência:
- Redução do horário de início da pesquisa
- Redução de levantamentos perdidos
- Mesmo membros juniores podem conduzir um certo nível de pesquisa.
2. Modelo (1): Investigação a partir do Ponto de Entrada
É um modelo que desenvolve as ações antes e depois com base em logins suspeitos.
KQL
Histórico de login mais recente do usuário Target
SigninLogs
| onde TimeGenerated > atrás(7d)
| onde UserPrincipalName == "target@example.com"
| projeto TimeGenerated, NomePrincipalUsuário, IPAddress, Localização, NomeDisplayAplicativo,
ConditionalAccessStatus, RiskLevelDuringSignIn, ResultType
| ordem por timeGenerated desc
Aqui estão alguns pontos para verificar:
- IPAddress: É acessado de um país/região diferente do habitual?
- RiskLevelDuringLogIn: A IA da Microsoft está determinando risco?
- ConditionalAccessStatus: Você está pulando o acesso condicional?
- ResultadoTipo: Sucesso (0) ou fracasso (50126, etc.)?
Se você encontrar um login suspeito, verifique se há tentativas desse IP para outras contas também.
KQL
Tentativas de login para múltiplos usuários a partir do mesmo IP
SigninLogs
| onde TimeGenerated > atrás(24h)
| onde IPAddress == "suspicious.ip.here"
| resume count(), make_set(UserPrincipalName) por IPAddress
3. Modelo (2): Investigação a partir do Ponto Terminal
Quando um comportamento suspeito é detectado em um endpoint, ele é um modelo que captura a imagem geral do terminal.
KQL
Histórico mais recente de lançamento de processos do dispositivo Target
DeviceProcessEvents
| onde TimeGenerated > atrás(24h)
| onde Nomedo do Dispositivo == "nome-de-dispositivo-alvo"
| projeto TimeGenerated, NomeDeDispositivo, IniciaçãoNomeProcessoFicheiro,
NomeDeArquivo, LinhaDe ComandoProcesso, Nomeda da Conta
| ordem por timeGenerated desc
Além disso, verifique sua conexão de rede.
KQL
Histórico de comunicação externa do dispositivo alvo
DeviceNetworkEvents
| onde TimeGenerated > atrás(24h)
| onde Nomedo do Dispositivo == "nome-de-dispositivo-alvo"
| onde RemoteIPType != "Privado"
| projeto TimeGenerated, DeviceName, RemoteIP, RemoteUrl, RemotePort,
IniciandoNomeDeProcessoArquivo, Tipo de Ação
| ordem por timeGenerated desc
Pontos de confirmação:
- Execução suspeita de comandos no ProcessCommandLine:p owershell, cmd, wscript, etc.
- RemoteUrl: Comunicar com domínios C2 conhecidos e IPs suspeitos
- IniciandoNomeProcessoFicheiro: Arquivo executável disfarçado de processo legítimo
4. Modelo (3): Investigação de Início de E-mail
Este modelo é usado para investigar e-mails de phishing e anexos maliciosos.
KQL
Histórico de recebimento de e-mails de um domínio específico
E-mailEventos
| onde TimeGenerated > atrás(7d)
| onde SenderFromDomain == "suspicious-domain.com"
| projeto TimeGenerated, RemetenteDeDeEndereço, DestinatárioEmailEndereço,
Sujeito, AmeaçaTipos, AçãoDeEntrega, Local de Entrega
| ordem por timeGenerated desc
Também verifica se o usuário que recebeu o e-mail abriu o anexo.
KQL
Atividade do dispositivo após receber um e-mail (rastreamento após clicar)
EmailUrlInfo
| onde TimeGenerated > atrás(7d)
| join kind=inner (
DeviceProcessEvents
| onde TimeGenerated > atrás(7d)
) em $left. URL == $right. ProcessCommandLine
| projeto TimeGenerated, URL, NomeDeDispositivo, NomeDeArquivo, NomeConta
5. Como Compartilhar e Gerenciar Modelos com Sua Equipe
É realista gerenciar templates KQL como "Consultas Salvas" no Sentinel ou como arquivos Markdown em repositórios Git.
Métodos recomendados de manejo:
- Criar um repositório de coleta de consultas KQL no GitHub
- Dividir pastas por tipo de incidente (phishing/comprometimento de conta/etc.)
- Deixe um comentário sobre se ela foi eficaz após o uso e continue a melhorá-la.
6. Aproximação da Segurança da Colorkrew
A Colorkrew Security oferece suporte para o desenvolvimento de modelos de levantamento KQL e sua integração na equipe.
A **velocidade da resposta inicial determina a magnitude do dano. **
Desde a manutenção dos modelos até a padronização dos procedimentos de levantamento, tornaremos isso utilizável em campo.