Authentification Windows
Link to : [Active Directory
Password VM AD Security : ParamountDefenses!
-
Download this free Active Directory Security Virtual Machine from here.
-
Download and install the free version of VMWare Workstation Player from here.
-
Unzip the VM to extract the "AD Security" folder
-
Create a "Virtual Machines" folder in "My Documents"
-
Move the unzipped "AD Security" folder into the "Virtual Machines" folder
-
Launch VM Workstation Player and select "Open a Virtual Machine"
-
Point it to the "AD Security.vmx" file in the "My Documents\Virtual Machines\AD Security" folder
-
Then select the "AD Security VM" and click the play button to start it.
-
At the logon screen, login as "CORP_Administrator_" (The password is provided below.)
-
Open a command-prompt, and enter "slmgr /rearm" to rearm the Windows license, then restart the VM.
https://blog.paramountdefenses.com/2020/06/active-directory-security-lab-virtual-machine.html
Lab

Processus d'authentification de base
- L'utilisateur saisit son nom d'utilisateur et son mot de passe sur son poste de travail.
- Le serveur génère un nombre aléatoire (défi) et le fourni au client
- La client dispose du mot de passe, génère le hash de son mot de passe et utilise le hash et le défi fourni par le serveur pour dégenrer une fonction de hachage
- Avec, il génère un nouveau hash qu'il fourni au serveur
- le serveur qui détient le hash et le mot de passe va générer la même fonction de hachage et calculer le hash qui en découle
- si le hash calculé correspond au hash du client, cela dis que chacun à le bon mot de passe sans divulgation de mot de passe sur le réseau
Ce type d'authentification repose sur 3 étapes:
- Négociation : utilisateur
- Challenge : defi
- Authentification : bon hash grace à la fonction hashage


- hash = empreinte numérique
- Permet de calculer l'emprunte numérique d'une donnée, en théorie unique (si pas unique = collision de hash)
NTLM
NTLM désigne le protocole d’authentification. LM (pour Lan Manager hash) et NTLM (pour NT Lan Manager) désignent eux le format du hash.
L’appellation « Hash NTLM » est un abus de langage puisque Microsoft l’appelle « NTHash ».
-
LMest le format historique. Les mots de passe sont limités à 14 caractères, sur un alphabet restreint.- Il repose sur un algorithme DES ancien et faible. Le calcul du hash ne se fait même pas sur toute la longueur du mot de passe.
- Ce dernier est décomposé en deux portions de 7 caractères (voire une portion plus courte pour les mots de passe qui ne font pas 14 caractères), ce qui facilite le travail d'un attaquant.
-
NTHashest un format plus récent.- Les mots de passe peuvent aller jusqu'à 255 caractères Unicode.
- L'algorithme sur lequel repose le calcul du hash NT est MD4 et il est plus robuste.
- L’algorithme de hachage complet : MD4(UTF-16-LE(password)) NTLM désigne donc à la fois un format de hash (par abus de langage) mais également un protocole d’authentification !
Filtre dans Wireshark pour voir le processus d'authentification : smb2

Authentification dans l'active directory
Dans un environnement Active Directory, le processus d'authentification se déroule en plusieurs étapes :
- L'utilisateur saisit son nom d'utilisateur et son mot de passe sur son poste de travail.
- Le poste de travail envoie une demande d'authentification au KDC (Key Distribution Center), qui est généralement le contrôleur de domaine.
- Le KDC vérifie les informations d'authentification et, si elles sont correctes, génère un ticket d'authentification (TGT) pour l'utilisateur. Ce ticket est chiffré avec le secret partagé entre le KDC et l'utilisateur (généralement basé sur le mot de passe de l'utilisateur).
- Le poste de travail reçoit le TGT et le stocke localement. L'utilisateur est maintenant authentificationentifié auprès du domaine.
- Lorsque l'utilisateur souhaite accéder à une ressource spécifique (par exemple, un partage de fichiers sur un serveur), le poste de travail envoie une demande de ticket de service (TGS) au KDC, en incluant le TGT précédemment obtenu.
- Le KDC vérifie le TGT et, s'il est valide, génère un ticket de service (TGS) pour la ressource demandée. Ce ticket est chiffré avec le secret partagé entre le KDC et la ressource (généralement basé sur le mot de passe du compte de la ressource).
- Le poste de travail reçoit le TGS et l'envoie à la ressource demandée.
- La ressource déchiffre le TGS à l'aide de son secret partagé, vérifie les informations contenues dans le ticket, et autorise ou refuse l'accès en conséquence.

Avec Kerberos
Protocole d'authentification au même titre que le NTLM mais protocole utilisé par l'AD. Permet de gérer les services d'annuaire type AD.
Ici on fait intervenir le KDC (DC), centre de distribution des clefs ==(Key Distribution Center)==, qui va garantir l'authentification de l'utilisateur auprès du serveur. Kerberos repose sur le principe de non divulgation de mot de passe.
Schéma : Client qui s'authentifie sur le KDC :
- -> KDC vérifie si l'authentification est OK
- -> SI OK, il fourni un jeton au client
- Le KDC renvoi ensuite au client une réponse sous la forme d’un paquet KRB_AS_REP, contenant la clé de session chiffrée avec le hash du mot de passe du compte spécifié par le ==client, ainsi qu’un jeton TGT qui contient le nom d’utilisateur, la période de validité, la clé de session et d’autres informations concernant des informations spécifiques du compte (son identifiant, les groupes auxquels il appartient… etc)==, qu’on appelle le ==PAC.==
- -> Le client redonne le jeton pour demander l'accès a une ressource (file ?)
- -> KDC renvoie un second jetons que le client va présenter au serveur de ressource
- -> le serveur ressource vérifie que le utilisateur à accès a la ressources (groupes, droits..)
- -> SI c'est le cas il fourni la ressource

Génération de ticket TGT via impacket :
python3 getTGT.py domain.local/Vincent -dc-ip 192.168.1.10
cat Vincent.ccache #non affichable
export KRB5CCNAME=vincent.ccache #Utilisation de -k pour utiliser cette variable
python3 psexec.py -k -no-pass srvdc.domain.local #Donc on use la variable d'ENV
# Nous sommes normalement identifié
- ANSSI recommande de changer le mot de passe du compte KRBTGT du domaine tout les 40 jours
- Le hash du mot de passe de se compte sert à chiffré et signer tout les jetons TGT
- Le mot de passe est généré àaléatoirement à la création d'un domaine
- WARNING : Changer le deux fois pour la synchro pour ne pas conserver d'historique valide
Silver Ticket
- Un attaquant qui dispose du hash du compte KRBTGT peut récupérer l'ensemble des hash des comptes du domaine, y compris des comptes machines, et grâce à ces comptes machines que l'ont peut créé des TGS.
- Quand un utilisateur veut accéder à une ressource, il demande TGT au KDC puis demande le TGS pour avoir le droit d'accéder à une ressource précise, le TGS contiendra aussi le PAC de l'utilisateur.
- Ce jetons TGS est chiffré avec le hash du compte machine du serveur qui contient la ressource
- Le serveur qui contient sa ressource peut donc déchiffrer le TGS et voir si les permissions ou groupes sont ok pour aller à la ressource.
- Si on dispose du hash du compte machine du serveur qui propose la ressource ALORS
- On peut forger notre propre jetons TGS avec toutes les information du PAC
- Donc on peux s'octroyer la totalité des droits des ressources proposé par le serveur si on dispose du hash de son compte machine
- Permet donc d'avoir tout les accès a la ressource
- Elle est appelé génération de Silver ticket ou Ticket d'argent

Golden Ticket
- Une "amélioration" du ticket d'argent est le Golden ticket
- Consiste à récupérer le hash du compte KRBTGT
- Les jetons TGT permettent de créer le PAC de départ qui contient les groupes du utilisateurs.
- Etant donné que nous avons le hash du compte KRBTGT
- Il est possible de créer nos propres jetons TGT avec nos PAC personnalisés.
- Comme par exemple créer un utilisateur qui n'existe pas dans l'annuaire, mais appartiens au Domain admin par exemple.
- De cette façon nous pouvons créer un jetons TGT universel, avec tout les droits sur toutes les ressources de tout les serveurs du domaine.
- Puis demander de façon légitime au KDC un jetons TGS pour cet utilisateur
- Le KDC ne nous le refusera pas, et donc on a un passe partout sur le domaine.
- ==Donc un ticket d'or==

cd /impacket/example
python3 lookupsid.py domaine.local/Administrateur:P@ss0rd@192.168.1.10
On récupère avec ceci le SID du domaine, de type :
Domain SID is: S-1-XXXXXXXXXXXXX-XXXXXX-XXXXXXXXXXXX
Puis pour récupérer le hash de KRBTGT :
cd /impacket/example
python3 secretsdump.py domaine.local/Administrateur:P@ss0rd@192.168.1.10
Récupération du hash LM et NT de KRBTGT, ici on récup le hash NT, puis :

cd /impacket/example
python3 ticketer.py -nthash XXXXXXXXXXXXXXXXXXX -domain-sid XXXXXXXXXXXXXXXXXXXXXX -domain domaine.local utilisateurhacker
Un ticket TGT à été créé pour cet utilisateur. Il n'éxiste pas dans l'annuaire.
export KRB5CCNAME=utilisateurhacker.ccache
python3 symclient.py -k -no-pass srv-dc.domain.local
On s'authentifie en tant que utilisateurhacker sur le serveur DC. Ce jetons passe partout s'appelle donc un ticket d'or ou golden ticket.
KRBTGT
Le hash du mot de passe krbtgt peut être obtenu en utilisant un dump des informations d’identification du système d’exploitation pour avoir un accès privilégié à un contrôleur de domaine. Cette capacité est à la fois extrêmement puissante et difficile à détecter.
Plusieurs outils peuvent être utilisés à la fois par des attaquants et les auditeurs de sécurité. Des outils développés spécifiquement mais non publics existent probablement également. Pour créer et utiliser un Golden Ticket, l’attaquant doit trouver un moyen d’accéder au réseau :
- Compromettre un ordinateur cible avec un malware qui lui permettra d’utiliser des comptes utilisateur pour accéder à d’autres ressources réseau (souvent à partir d’un e-mail de phishing et l’exploitation d’une vulnérabilité)
- Compromettre un utilisateur qui dispose des privilèges de réplication ou d’accès d’administrateurs à un contrôleur de domaine. Les membres des groupes Administrateurs, Administrateurs de Contrôleurs de domaine ont ces privilèges par défaut.
- Se connecter au DC et obtenir via un dump le hash du mot de passe du compte Krbtgt afin de créer le Golden Ticket.
L’attaquant peut utiliser mimikatz, Impacket ou un autre outil d’exploitation de vulnérabilités similaire afin d’extraire le hash du mot de passe à partir d’un dump.
Mimikatz de base est un outil de sécurité offensive incroyablement efficace développée par Benjamin Delpy, cet outil a été créé pour démontrer les vulnérabilités de l’Active Directory de Microsoft. Ses fonctionnalités offrent aux auditeurs et aux attaquants un moyen facile de récupérer les informations d’identification d’un réseau cible. Depuis quelques années Delpy à ajouter une nouvelle fonctionnalité dans Mimikatz pour forger les golden ticket Kerberos, ce qui a donné plus d’avantages aux attaquants.
En utilisant Mimikatz, il est possible d’exploiter les informations de mot de passe du compte krbtgt pour créer des tickets Kerberos falsifiés (TGT) qui peuvent être utilisés pour demander des tickets TGS pour n’importe quel service sur n’importe quel ordinateur du domaine.
Pour créer un TGT particulier du compte admin du domaine, l’attaquant doit spécifier certaines informations pour mimikatz kerberos::golden
Utilisateur : Le nom du compte utilisateur pour lequel le ticket sera créé. Cela peut être un vrai nom de compte.
ID : Le RID du compte qui sera emprunté. Il peut s’agir d’un véritable ID de compte, tel que l’ID administrateur par défaut de 500, ou un faux ID.
Rc4 : le hash NTLM du mot de passe
Groupes : Une liste de groupes auxquels appartiendra le compte du ticket. Cela inclura les administrateurs de domaine par défaut, de sorte que le ticket soit créé avec les privilèges maximum.
SID : le SID du domaine. Ceci est utile pour s’authentifier sur plusieurs domaines
Ptt (optionnel) : pour injecter immédiatement le faux ticket dans la session en cours
NB : Le golden ticket peut être généré depuis n’importe quelle machine, même hors du domaine
- Il ne reste qu’à charger le ticket Kerberos.
Source :
- https://beta.hackndo.com/ntlm-relay/
- https://processus.site/
- https://learn.microsoft.com/fr-fr/windows-server/identity/ad-ds/manage/how-to-configure-protected-accounts
- https://beta.hackndo.com/
- https://www.youtube.com/watch?v=Z32UhxE29LU
- https://www.conix.fr/kerberos-attaque-golden-ticket/
- https://beta.hackndo.com/kerberos-silver-golden-tickets/
- https://blog.gentilkiwi.com/tag/krbtgt
- https://blog.paramountdefenses.com/2020/05/active-directory-security-for-cyber-security-experts.html
- https://blog.paramountdefenses.com/2020/06/active-directory-security-lab-virtual-machine.html
- https://happycamper84.medium.com/generating-a-golden-ticket-in-the-lab-4740efa22f34
- https://shamsher-khan-404.medium.com/attacking-kerberos-tryhackme-writeup-97cec6b563d2
- https://cybergladius.com/ad-hardening-against-kerberos-golden-ticket-attack/
- https://happycamper84.medium.com/kerberoasting-over-an-open-fire-3b604e4c52f2

