hacktricks/network-services-pentesting/pentesting-kerberos-88/harvesting-tickets-from-linux.md
2023-06-03 13:10:46 +00:00

6.3 KiB

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

Sur Linux, les tickets sont stockés dans des caches d'informations d'identification ou ccaches. Il existe 3 types principaux, qui indiquent où les tickets peuvent être trouvés :

  • Fichiers, par défaut sous le répertoire /tmp, sous la forme de krb5cc_%{uid}.
  • Keyrings du noyau, un espace spécial dans le noyau Linux fourni pour stocker les clés.
  • Mémoire de processus, utilisée lorsqu'un seul processus a besoin d'utiliser les tickets.

Pour vérifier le type de stockage utilisé dans une machine spécifique, la variable default_ccache_name** ** doit être vérifiée dans le fichier /etc/krb5.conf, qui a par défaut une permission de lecture pour n'importe quel utilisateur. Dans le cas où ce paramètre est manquant, sa valeur par défaut est FILE:/tmp/krb5cc_%{uid}.

Afin d'extraire les tickets des 2 autres sources (keyrings et processus), un excellent document, Kerberos Credential Thievery (GNU/Linux), publié en 2017, explique les moyens de récupérer les tickets à partir de ceux-ci.

Keyring - À partir du document

Le noyau Linux dispose d'une fonctionnalité appelée keyrings. Il s'agit d'une zone de mémoire résidant dans le noyau qui est utilisée pour gérer et conserver les clés.

L'appel système keyctl a été introduit dans la version du noyau 2.6.10 5. Cela fournit aux applications de l'espace utilisateur une API qui peut être utilisée pour interagir avec les keyrings du noyau.

Le nom du keyring en cours d'utilisation peut être analysé à partir du fichier de configuration Kerberos /etc/krb5.conf qui a une permission de lecture activée pour tout le monde (octal 644) par défaut. Un attaquant peut alors utiliser cette information pour rechercher un ticket 11 contenant des keyrings et extraire les tickets. Un script de preuve de concept qui implémente cette fonctionnalité peut être vu dans la section A.2 (hercules.sh). Dans un keyring, le ccache est stocké sous forme de composants. Comme on peut le voir sur la figure 2, un ccache de fichier est composé de 3 composants distincts : en-tête, principal par défaut et une séquence de justificatifs. Un keyring contient le principal par défaut et les justificatifs. Ce script va déverser ces composants dans des fichiers séparés. Ensuite, en utilisant un en-tête synthétisé par l'attaquant, ces pièces sont combinées dans le bon ordre pour reconstruire un ccache de fichier. Ce fichier reconstruit peut ensuite être exfiltré vers une machine d'attaquant et utilisé pour se faire passer pour un utilisateur Kerberos. Un programme simple pour générer un en-tête de ccache valide peut être vu dans la section A.3.

Basé sur le script heracles.sh (du document), un outil C que vous pouvez utiliser (créé par l'auteur de l'article complet) est tickey, et il extrait les tickets des keyrings :

/tmp/tickey -i

Cette information a été extraite de: https://www.tarlogic.com/en/blog/how-to-attack-kerberos/

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