Get-WinEvent 4625 password spray

Get-WinEvent -FilterHashtable @{LogName='Security';ID=4625;StartTime=(Get-Date).AddHours(-1)} | Group-Object {$_.Properties[5].Value}

Agrupe os logons com falha (Evento 4625) da última hora por usuário para detectar password spraying no domínio.

Execute-o quando quiser detectar password spraying: o atacante tenta uma ou duas senhas contra muitos usuários para não bloquear contas. A assinatura é o padrão inverso do brute force: poucas falhas por usuário, muitos usuários distintos, mesma senha. Agrupar os 4625 por usuário (Properties[5] no evento) e olhar o volume total dá a visão: se em uma hora há falhas em 40 contas distintas a partir do mesmo IP de origem, é spray. É a primeira query que um analista de nível 1 roda diante de um alerta de logons com falha em massa.

Não use como detecção definitiva: o 4625 não inclui a senha testada, então agrupar por usuário só dá o volume, não a prova de que é a mesma senha. Para confirmar o spray, você precisa do IP de origem (Properties[13]) e da correlação temporal. E cuidado com o ruído: em redes com aplicações que usam credenciais expiradas (serviços com contas rotacionadas incorretamente), há falhas constantes que sujam o sinal. Filtre por tipo de logon (Properties[8]: 3 rede, 8/10 para serviços) e por IP antes de alertar. Também escapam os sprays contra Kerberos se o atacante usar AS-REP ou brute force sobre 4768.