TP AttaquesSurAD-V2
TP AttaquesSurAD-V2
TP AttaquesSurAD-V2
Opérations
Objectif de l’attaque : extraire le mot de passe des comptes locaux d’un poste Windows Seven.
Récupérer le mot de passe d’un compte administrateur.
Matériel : Poste Windows 7 et Contrôleur de Domaine
Outil : Mimikatz dans c:\outils
Le formateur va se connecter avec le compte administrateur local « admin » dont vous ne connaissez
pas le mot de passe. On simule la connexion d’un administrateur qui laisse sa session ouverte mais
verrouillée.
Vous aller utiliser le compte « stage » qui est maintenant « administrateur »du poste
Se connecter avec le compte local « stage » (mot de passe P@ssw0rd). (Prérequis : être administrateur
du poste, le compte doit être administrateur local depuis le TP précédent.
Lancer l’utilitaire mimikatz en tant qu’administrateur, la fonctionnalité « Sekurlsa » de l’utilitaire
mimikatz fournit la fonctionnalité d'extraction de mots de passe, de hachages et de tickets en abusant
de la mémoire de LSASS.exe (Local Security Authority Subsystem Service)
À l’aide de Mimikatz, et plus particulièrement du module sekurlsa, nous pouvons extraire les mots de
passe en clair de tous les utilisateurs locaux ou de domaines (et services) ayant une session ouverte
Vérifier que les mots de passe et les hash apparaissent bien pour les algorithmes LM, NTLM et SHA1
Nous sommes à présent en possession des mots de passe en clair stockés dans le service LSASS.
Question : Qu’est-ce que le processus LSASS dans un système Windows ? Que permet -il de faire ?
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
Question : Qu’est-ce qu’un privilège ?
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
Extraction du hash du mot de passe d’un compte administrateur de domaine connecté
à un poste Windows 10
L’utilitaire Mimikatz est un outil bien connu et détecté par les antivirus et système de détection.
Microsoft a implémenté sur ces systèmes d’exploitation récents des protections pour éviter comme
pour le cas de Windows l’extraction en direct des mots de passe et des « hashes » de mot de passe.
On peut contourner cela avec d’autres outils et utiliser mimikatz pour analyser le fichier dump
généré par l’outil powershell.
Important : pour effectuer ce TP il est nécessaire, que l’administrateur de votre domaine (le
formateur) se connecte sur votre poste et laisse la session en cours mais verrouillée. On peut faire
sans problème du multi utilisateurs dans Windows.
1. Connecter vous avec le compte « admin » local. On suppose que vous avez récupéré le mot
de passe « admin » de la précédente manipulation sur le poste W7. Par chance le même mot
de passe fonctionne pour le compte « admin » sur le poste W10 . Malheureusement cela
peut arriver surtout pour les postes d’une même version d’OS…
Le Hash du compte administrateur du domaine est maintenant récupéré, on peut lancer une attaque
« pass the hash » vers le contrôleur de domaine
Redémarrer le poste W10 après avoir sauvegardé dans un fichier texte les « hash » du compte INSA.
La session active « Insa » laissée par l’administrateur sera réinitialisée.
Question : Décrire brièvement l’attaque « pass the hash ». Que permet -elle de faire ?
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
Attaques sur l’annuaire Active Directory
Attaque « Pass the Hash » avec Mimikatz »
https://blog.cobaltstrike.com/2015/05/21/how-to-pass-the-hash-with-mimikatz/
Objectif de l’attaque : mettre en œuvre l’attaque « Pass the hash » pour obtenir un shell sur le
contrôleur de domaine. On se sert de mimikatz pour faire l’attaque.
On a récupéré le hash du compte administrateur de domaine
✓ Soit sur un poste
✓ Soit depuis la base « ntds.dit »
Matériel : Poste Windows 10 et Contrôleur de Domaine
Outils : mimikatz
privilege ::debug
sekurlsa :: pth /user: USERNAME /domain: DOMAIN /ntlm: HASH /run: COMMAND
Ouvrir une session avec son compte local Windows sur le poste Seven. Le compte doit être
administrateur local
Lancer l’interpréteur de commande « cmd » en tant qu’administrateur
Lancer les commandes suivantes dans « mimikatz », bien renseigner le nom du compte
administrateur du domaine ainsi que son « hash » (exemple)
privilege ::debug
sekurlsa::pth /user:insa /domain:adtest.net /ntlm:ad7b43bbbc065453dd85e2bd49769aa9
La commande lancée dans mimikatz a généré une nouvelle fenêtre de commandes et donc un
nouveau processus « cmd » en modifiant son jeton d'accès. L’identité est toujours le compte
utilisateur local.
On peut maintenant lancer l’interpréteur « powershell », faire des recherches sur l’AD, créer un
compte et le rajouter dans le groupe admins du domaine pour un utilisateur (attention c’est peut-
être surveillé par un SIEM)
Cette attaque est moins « connue » mais d’autant plus grave et efficace. Elle est axée sur
l'exfiltration du fichier Ntds.dit des contrôleurs de domaine Active Directory.
Méthode :
1-Exfiltration de la base « Ntds.dit »
2-Extraction des « hashes » des mots de passe de la base AD
Pour exfiltrer la base on va créer un compte utilisateur « agentsql », lui donner les droits
administrateurs et le supprimer une fois l’exfiltration réussie
Création du compte
net user agentsql /add P@ssw0rd
Sur le poste Windows, se connecter au contrôleur de domaine avec ce compte pour exfiltrer dans un
répertoire local la sauvegarde. On va se connecter sur un partage prédéfini c$ du contrôleur de
domaine en ouvrant l’explorateur Windows
Pour le prochain TP, exécuter les commandes suivantes en utilisant le compte de domaine
« agentSQL » afin d’extraire les secrets du compte « Krbtgt » et le compte de votre contrôleur de
domaine « DCtest$ » (attaque DCSync)
Ouvrir l’interpréteur de commande « cmd » en tant que « agentsql »
d) Extraire les « hashes » des mots de passes de tous les utilisateurs de l’Active Directory
Get-ADDBAccount -All -DatabasePath 'c:\ADBackup\Active Directory\ntds.dit' `
-BootKey 0b77be92cb7601bbf9dc3e29a8273aa6
Question : Quels sont les deux services de distribution du KDC (Key Distribution Center):
permettant de délivrer des tickets Kerberos ?
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
................................................................................................................................................................
Objectif de l’attaque : Générer un Golden Ticket pouvant par la suite être utilisé pour effectuer des
demandes de tickets de service
Matériel : Poste Windows 10 et Contrôleur de Domaine
Outils : mimikatz, les secrets du compte « Krbtgt » et du compte du contrôleur de domaine
Opérations
Se connecte en administrateur local sur votre poste Windows 10
Exécuter un interpréteur de commande « cmd » en tant qu’administrateur
Elaborer la commande pour générer le « golden ticket »
Les paramètres sont à chercher dans le fichier « krbtgt.txt » que vous avez sauvegardés au TP
précédent.
/user: Nom du compte pour lequel le ticket de service sera émis (N’importe
quel compte, un compte qui n’existe pas sur le domaine !)
/krbtgt: secret NTLM du compte krbtgt de votre domaine dctest.adtest.net)
/sid: SID du domaine
/domain: Nom de domaine complètement qualifié du domaine.
Exemple :
mimikatz.exe "kerberos::golden /user:toto /domain:adtest.net /sid:S-1-5-21-2930356085-
3295678534-750826786 /krbtgt:bf3940eb4585e1a28381b27e670f300f" "exit"
Vérifier que le ticket « TGT » est bien chargé dans votre session cmd courante avec la commande
« klist »
On va se connecter sur le contrôleur de domaine avec l’utilisateur « toto » qui n’existe pas et
récupérer automatiquement des tickets de service de la part du contrôleur de la machine à l’aide du
ticket TGT que l’on a forgé.
On est sur le contrôleur de domaine avec un compte qui n’existe pas et on peut effectuer des actions
d’administration. Ce qui rend un pirate furtif et difficilement détectable.
En exécutant un « klist » (sortir de la session sur le contrôleur de domaine), on voit les tickets de
services qui ont été délivrés par le service KDC du contrôleur de domaine. On notera que la validité
des tickets délivrés est de 10h alors que la validité de notre ticket est de 10 ans !
De nombreux services peuvent être ciblés à des fins de persistance. Parmi ceux-ci, les services exposés
sur les contrôleurs de domaine présentent des propriétés intéressantes. De fait, les tickets de service
utilisés pour accéder aux services exposés par un compte machine sont émis avec les secrets du
compte machine, qui présentent l'avantage de ne pas être soumis à la même politique de rotation que
les secrets des comptes de service du domaine ou du compte « krbtgt »
Objectif de l’attaque : Générer un « Silver Ticket » pour cibler un service particulier (CIFS)
permettant d’exécuter l’utilitaire de connexion à distance « psExec.exe ».
Matériel : Poste Windows 10 et Contrôleur de Domaine
Outils : mimikatz, les secrets du compte « dctest$ » de votre contrôleur de domaine
Opérations
Exécuter la commande suivante dans votre interpréteur de commande pour purger les tickets :
Klist purge
Les paramètres sont à chercher dans le fichier « DCtest.txt » que vous avez sauvegardés au TP
précédent.
/user: Nom du compte pour lequel le ticket de service sera émis (ici un
compte qui n’exsite pas « toto »).
/aes256: Clé AES256 du compte machine ciblé (ici le contrôleur de
domaine dctest.adtest.net).
/sid: SID du domaine.
/domain: Nom de domaine complètement qualifié du domaine.
/target: Machine ciblé (ici le contrôleur de domaine dctest.adtest.net).
/service: Nom du service ciblé (ici service CIFS).
/ptt Permet d'injecter le ticket forgé directement dans la session
utilisateur courante.
On peut cibler n’importe quel service de n’importe quelle machine du domaine avec un compte qui
n’existe pas. Ce qui rend cette attaque difficile à détecter et facilite aux cyber attaquants les
opérations de dissimulation et de persistance à des fins d’espionnage ou d’exfiltration de données.
FIN DU TP
Annexes
Les commandes NET.ACCOUNTS / NET USER / NET GROUP
Les commandes NET sont utilisées dans les environnements Windows pour gérer les comptes et les
groupes des postes, serveurs et également possible les comptes du domaine
Syntaxe
NET ACCOUNTS [/FORCELOGOFF:{minutes | NO} ] [/MINPWLENGTH:length]
[/MAXPWAGE:{days | UNLIMITED}] [/MINPWAGE:days] [/UNIQUEPW:number] [/DOMAIN]
NET USER [username [password | *] [options]] [/DOMAIN]
NET USER username {password | *} /ADD [options] [/DOMAIN]
NET USER username [/DELETE] [/DOMAIN]
NET USER username [/TIMES:{times | ALL]
NET USER username [/ACTIVE: {YES | NO}]
NET GROUP [groupname [/COMMENT:"text"]] [/DOMAIN]
NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN]
NET GROUP groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN]
NET LOCALGROUP groupname {/ADD [/COMMENT:"text"] | /DELETE} [/DOMAIN]
NET GROUP groupname username [...] {/ADD | /DELETE} [/DOMAIN]
NET LOCALGROUP groupname username [...] {/ADD | /DELETE} [/DOMAIN]
View the current password & logon restrictions for the computer (plus machine role: Server/
Workstation).
NET ACCOUNTS
View the current password & logon restrictions for the domain.
NET ACCOUNTS /DOMAIN
Set the number of minutes a user has before being forced to log off when the account expires or
valid logon hours expire
NET ACCOUNTS /FORCELOGOFF:minutes /DOMAIN
View user account details
NET USER [/DOMAIN]
Add a user account.
NET USER username {password | *} /ADD [options] [/DOMAIN]
Modify a user account.
NET USER [username [password | *] [options]] [/DOMAIN]
Delete a username
NET USER username [/DELETE] [/DOMAIN]
Generate a random password:
NET USER administrator /random
Add a group
NET GROUP groupname /ADD [/COMMENT:"text"] [/DOMAIN]
NET LOCALGROUP groupname /ADD [/COMMENT:"text"] [/DOMAIN]
Edit a group
NET GROUP [groupname [/COMMENT:"text"]] [/DOMAIN]
NET LOCALGROUP [groupname [/COMMENT:"text"]] [/DOMAIN]
Delete a group
NET GROUP groupname /DELETE [/DOMAIN]
NET LOCALGROUP groupname /DELETE [/DOMAIN]
Add a user to a group
NET GROUP groupname username [...] /ADD [/DOMAIN]
NET LOCALGROUP groupname username [...] /ADD [/DOMAIN]
Delete a user from a group
NET GROUP groupname username [...] /DELETE [/DOMAIN]
NET LOCALGROUP groupname username [...] /DELETE [/DOMAIN]
LOCALGROUP will create/modify a group that is local to the computer rather than an Active Directory
domain-wide group.
Examples
Create a group
C:\> NET LOCALGROUP spud /add
Add to guests
C:\> NET LOCALGROUP guests spud /add
Then remove
C:\> NET LOCALGROUP guests spud /delete
C:\> NET LOCALGROUP spud /delete
Lien
https://ss64.com/nt/net-useradmin.html