hacktricks/network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-linux.md
2023-06-06 18:56:34 +00:00

4.5 KiB

No Linux, os tickets são armazenados em caches de credenciais ou ccaches. Existem 3 tipos principais, que indicam onde os tickets podem ser encontrados:

  • Arquivos, por padrão no diretório /tmp, na forma de krb5cc_%{uid}.
  • Kernel Keyrings, um espaço especial no kernel do Linux fornecido para armazenar chaves.
  • Memória do processo, usada quando apenas um processo precisa usar os tickets.

Para verificar qual tipo de armazenamento é usado em uma máquina específica, a variável default_ccache_name deve ser verificada no arquivo /etc/krb5.conf, que por padrão tem permissão de leitura para qualquer usuário. Caso esse parâmetro esteja faltando, seu valor padrão é FILE:/tmp/krb5cc_%{uid}.

Para extrair tickets das outras 2 fontes (keyrings e processos), um ótimo artigo, Kerberos Credential Thievery (GNU/Linux), lançado em 2017, explica maneiras de recuperar os tickets deles.

Keyring - Do artigo

O kernel do Linux possui um recurso chamado keyrings. Esta é uma área de memória que reside dentro do kernel e é usada para gerenciar e reter chaves.

A chamada do sistema keyctl foi introduzida na versão do kernel 2.6.10 5. Isso fornece às aplicações do espaço do usuário uma API que pode ser usada para interagir com keyrings do kernel.

O nome do keyring em uso pode ser analisado a partir do arquivo de configuração do Kerberos /etc/krb5.conf, que tem permissão de leitura habilitada para qualquer pessoa (octal 644) por padrão. Um invasor pode então aproveitar essa informação para procurar por tickets 11 contendo keyrings e extrair os tickets. Um script de prova de conceito que implementa essa funcionalidade pode ser visto na Seção A.2 (hercules.sh). Em um keyring, o ccache é armazenado como componentes. Como visto na Figura 2, um ccache de arquivo é composto por 3 componentes distintos: cabeçalho, principal padrão e uma sequência de credenciais. Um keyring contém o principal padrão e as credenciais. Este script irá despejar esses componentes em arquivos separados. Em seguida, usando um cabeçalho sintetizado pelo invasor, esses pedaços são combinados na ordem correta para reconstruir um ccache de arquivo. Este arquivo reconstruído pode então ser exfiltrado para uma máquina invasora e depois usado para se passar por um usuário Kerberos. Um programa simples para gerar um cabeçalho ccache válido pode ser visto na Seção A.3.

Com base no script heracles.sh (do artigo), uma ferramenta em C que você pode usar (criada pelo autor do post completo) é tickey, e ela extrai tickets de keyrings:

/tmp/tickey -i

Esta informação foi retirada de: https://www.tarlogic.com/en/blog/how-to-attack-kerberos/

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥