HackTheBox NanoCorp

nmap -sS -Pn -n -vvv --open --min-rate 5000 10.10.11.93 -oG port

PORT     STATE SERVICE          REASON
53/tcp   open  domain           syn-ack ttl 127
80/tcp   open  http             syn-ack ttl 127
88/tcp   open  kerberos-sec     syn-ack ttl 127
135/tcp  open  msrpc            syn-ack ttl 127
139/tcp  open  netbios-ssn      syn-ack ttl 127
389/tcp  open  ldap             syn-ack ttl 127
445/tcp  open  microsoft-ds     syn-ack ttl 127
464/tcp  open  kpasswd5         syn-ack ttl 127
593/tcp  open  http-rpc-epmap   syn-ack ttl 127
636/tcp  open  ldapssl          syn-ack ttl 127
3268/tcp open  globalcatLDAP    syn-ack ttl 127
3269/tcp open  globalcatLDAPssl syn-ack ttl 127
5986/tcp open  wsmans           syn-ack ttl 127

Buscamos los puertos abiertoos que tiene el host.


nmap -sCV -p53,80,88,135,139,389,445,464,593,636,3268,3269,5986 10.10.11.93 -oN target.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-12-12 15:33 EST
Nmap scan report for nanocorp.htb (10.10.11.93)
Host is up (0.10s latency).

PORT     STATE SERVICE           VERSION
53/tcp   open  domain            Simple DNS Plus
80/tcp   open  http              Apache httpd 2.4.58 (OpenSSL/3.1.3 PHP/8.2.12)
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12
|_http-title: Nanocorp
88/tcp   open  kerberos-sec      Microsoft Windows Kerberos (server time: 2025-12-12 20:37:18Z)
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: nanocorp.htb0., 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  ldapssl?
3268/tcp open  ldap              Microsoft Windows Active Directory LDAP (Domain: nanocorp.htb0., Site: Default-First-Site-Name)
3269/tcp open  globalcatLDAPssl?
5986/tcp open  ssl/http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
| tls-alpn: 
|_  http/1.1
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=dc01.nanocorp.htb
| Subject Alternative Name: DNS:dc01.nanocorp.htb
| Not valid before: 2025-04-06T22:58:43
|_Not valid after:  2026-04-06T23:18:43
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2025-12-12T20:37:37
|_  start_date: N/A
|_clock-skew: 3m51s
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled and required

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

El escaneo muestra que 10.10.11.93 es un controlador de dominio Windows (DC01) del dominio nanocorp.htb, con servicios clave de Active Directory expuestos: Kerberos (88), LDAP/LDAPS (389/636/3268/3269), SMB (445/139/135) y RPC.

También corre un servidor web Apache en el puerto 80, con PHP 8.2.12 y el método TRACE habilitado.

El puerto 5986 muestra un servicio WinRM sobre HTTPS y el certificado SSL confirma el nombre del DC. En general, el host es claramente un Domain Controller con servicios típicos de AD abiertos, lo cual indica su rol central en la red.


Inspeccionando el codigo fuente encontramos un nuevo dominio lo agregamos a nuestros /etc/host http://hire.nanocorp.htb.


Observamos las web's los dos dominios. La segunda interfas investigando encontre esta vulnerabilidad.


Hemos generado este arcchivo ahora lo vamos a subir a la web.


Observamos que subimos con exito el archivo zip.


Cuando nos ponemos en escucha con el sudo responder -I tun0 observamos que logramos capturar el hash del usuario que ejecuta ese servicio.


Haciendo uso de john logramos crackear el hash.


ldapdomaindump

  • Numero uno nos hemos hecho con la contraseña de web_svc

  • Como punto numero dos observamos que el unico usuario que se puede conectar remotamente es monitoring_svc del cual no tenemos nada.


Bloodhound-python

El comando bloodhound-python se ejecutó correctamente usando las credenciales del usuario web_svc, obtuvo un TGT válido, se conectó al controlador de dominio dc01.nanocorp.htb y enumeró toda la información principal del entorno Active Directory del dominio nanocorp.htb, incluyendo 1 dominio, 1 equipo (el DC), 6 usuarios, 53 grupos, 2 GPOs, 2 OUs y 19 contenedores, sin encontrar relaciones de confianza entre dominios. Finalmente generó un archivo comprimido BloodHound.zip con todos los datos recolectados para su análisis.

Ahora vamos a analizar esta informacion generada de una manera mas estructurada y visual usando BloodHound.


Tenemos control total sobre las credenciales del usuario web_svc, y gracias a eso podemos añadirnos al grupo IT_Support. Este grupo, a su vez, posee el privilegio de Forzar Cambio de Contraseña sobre la cuenta monitoring_svc, lo que nos permite establecer una nueva contraseña a nuestra elección.

Obtener el control de monitoring_svc es clave, ya que con sus privilegios podremos autenticarnos directamente contra el Domain Controller y avanzar en la escalada dentro del dominio.


Usando las credenciales de web_svc, primero me añadí al grupo IT_SUPPORT, y como ese grupo tiene permisos para forzar cambios de contraseña, aproveché para resetear la contraseña de monitoring_svc y poner una nueva. Con esto ya tengo control total de esa cuenta y puedo usarla para acceder con más privilegios dentro del dominio.


Usé impacket-getTGT para generar un TGT con las credenciales de MONITORING_SVC, y el ticket se guardó en el archivo MONITORING_SVC.ccache. Después exporté KRB5CCNAME para que mi sesión use automáticamente ese ticket. Básicamente, ya tengo cargada la identidad de monitoring_svc y puedo autenticarme en el dominio sin volver a poner la contraseña.

Recordemos el puerto 5986 funciona con WinRM sobre HTTPS, así que para conectarme tengo que manejar la autenticación Kerberos o Cert basada en HTTPS. No puedo entrar directamente como si fuera HTTP normal; necesito usar el ticket Kerberos que ya generé o una autenticación compatible con WinRM sobre TLS para poder acceder sin problemas.

Esto nos ayudara con nuestra mision.


Ejecuté winrmexec.py usando el ticket Kerberos de MONITORING_SVC (-k) para conectarme al puerto 5986 de WinRM sobre HTTPS. La herramienta automáticamente resolvió la IP y la URL del servicio, solicitó un TGS para HTTP/dc01.nanocorp.htb y me abrió una sesión de PowerShell en el DC como monitoring_svc, lista para ejecutar comandos con los privilegios de esa cuenta.


Antes que nada para escalar privilegios nos creamos el siguiente script.


Ahora vamos ah transferir los componentes necesarios para que todo esto funcione el runas y el nc.exe cp /usr/share/windows-resources/binaries/nc.exe /home/kali/Desktop/HackThebox/NanoCorp/scripts

Estos tres archivos el bad el nc y el runas nos lo vamos a transferir a la maquina victima.

El compilador se inició y generó RunasCs.exe, aunque mostró una advertencia que indicaba que el compilador integrado solo admite funciones hasta C# 5. A pesar del mensaje de versión desactualizada, la compilación se completó sin errores, lo que significó que ahora tenía un binario funcional listo para intentar la escalada de privilegios.


Una vez tenemos todo ejecutamos todo y maquina resuelta.

Última actualización