Page cover

📘Windows Server

Windows Server 2008/2008 R2 llegó al final de su vida útil el 14 de enero de 2020. Con el paso de los años, Microsoft ha agregado funciones de seguridad mejoradas a las versiones posteriores de Windows Server. No es muy común encontrar Server 2008 durante una prueba de penetración externa, pero a menudo lo encuentro durante evaluaciones internas.


Comparación entre Server 2008 y versiones más nuevas

La siguiente tabla muestra algunas diferencias notables entre Server 2008 y las últimas versiones de Windows Server.


Windows Server 2008

A menudo, durante mis evaluaciones, me encuentro con versiones antiguas de sistemas operativos, tanto Windows como Linux. A veces, se trata simplemente de sistemas olvidados sobre los que el cliente puede actuar rápidamente y desmantelar, mientras que otras veces, pueden ser sistemas críticos que no se pueden eliminar o reemplazar fácilmente. Los pentesters deben comprender el negocio principal del cliente y mantener conversaciones durante la evaluación, especialmente cuando se trata de escaneo/enumeración y ataques a sistemas antiguos, y durante la fase de informe. No todos los entornos son iguales y debemos tener en cuenta muchos factores al escribir recomendaciones para los hallazgos y asignar calificaciones de riesgo.

Por ejemplo, los entornos médicos pueden estar ejecutando software de misión crítica en sistemas Windows XP/7 o Windows Server 2003/2008. Sin comprender el razonamiento "por qué", no es suficiente simplemente decirles que eliminen los sistemas del entorno. Si están ejecutando un software de resonancia magnética costoso que el proveedor ya no admite, podría costar grandes sumas de dinero realizar la transición a nuevos sistemas. En este caso, tendríamos que analizar otros controles de mitigación que tenga implementados el cliente, como segmentación de red, soporte extendido personalizado de Microsoft, etc.

Si estamos evaluando a un cliente con las mejores y más recientes protecciones y encontramos un host Server 2008 que no se incluyó, entonces puede ser tan simple como recomendar una actualización o desmantelamiento. Esto también podría suceder en entornos sujetos a estrictos requisitos de auditoría o regulatorios donde un sistema heredado podría generarles una calificación de "reprobado" o baja en su auditoría e incluso retrasarlos u obligarlos a perder la financiación gubernamental.

Echemos un vistazo a un host de Windows Server 2008 que podemos encontrar en un entorno médico, una gran universidad o una oficina del gobierno local, entre otros.

En el caso de sistemas operativos más antiguos, como Windows Server 2008, podemos utilizar un script de enumeración como Sherlockarrow-up-right para buscar parches faltantes. También podemos utilizar algo como Windows-Exploit-Suggesterarrow-up-right , que toma los resultados del comando systeminfo como entrada y compara el nivel de parche del host con la base de datos de vulnerabilidades de Microsoft para detectar posibles parches faltantes en el objetivo. Si existe un exploit en Metasploit para el parche faltante en cuestión, la herramienta lo sugerirá. Otros scripts de enumeración pueden ayudarnos con esto, o incluso podemos enumerar el nivel de parche manualmente y realizar nuestra propia investigación. Esto puede ser necesario si existen limitaciones para cargar herramientas en el host de destino o guardar la salida del comando.

Consulta del nivel de parche actual

Primero usemos WMI para verificar si hay KB faltantes.

Una búsqueda rápida en Google de la última revisión instalada nos muestra que este sistema está muy desactualizado.

Sherlock corriendo

Ejecutemos Sherlock para recopilar más información:

Obtención de un shell Meterpreter

En el resultado, podemos ver que faltan varios parches. A partir de aquí, vamos a obtener un shell de Metasploit en el sistema e intentar escalar privilegios utilizando uno de los CVE identificados. Primero, necesitamos obtener un reverse shell de Meterpreter. Podemos hacer esto de varias maneras, pero una forma fácil es utilizando el módulo smb_delivery.

Comando Rundll en el host de destino

Abra una consola cmd en el host de destino y pegue el comando rundll32.exe:

Recibiendo el Reverse Shell

En busca de un exploit de escalada de privilegios locales

Desde aquí, busquemos el módulo de escalada de privilegios '.XML' del Programador de tareas de Windows MS10_092arrow-up-right .

Migración a un proceso de 64 bits

Antes de utilizar el módulo en cuestión, debemos ingresar a nuestro shell de Meterpreter y migrar a un proceso de 64 bits, o el exploit no funcionará. También podríamos haber elegido un payload de Meterpeter x64 durante el paso smb_delivery.

Configuración de las opciones del módulo de escalada de privilegios

Una vez configurado esto, podemos configurar el módulo de escalada de privilegios especificando nuestra sesión actual de Meterpreter, configurando nuestra IP tun0 para LHOST y un puerto de nuestra elección.

Recibir el Meterpreter como SYSTEM

Si todo va según lo previsto, una vez que lo ejecutemos, recibiremos un shell de Meterpreter como NT AUTHORITY\SYSTEM y podremos continuar para realizar cualquier post-explotación necesaria.


Caso práctico

Atacando un Windows Server 2008

Tomando los ejemplos de enumeración que hemos visto en este módulo, acceda al sistema que se muestra a continuación, busque una forma de escalar al nivel de acceso NT AUTHORITY\SYSTEM (puede haber más de una forma) y envíe el archivo flag.txt en el escritorio del Administrador. Desafíese a escalar privilegios de múltiples formas y no se limite a reproducir la escalada de privilegios del Programador de tareas que se detalla anteriormente.

Sherlock para enumerar vulnerabilidades

Encontramos multitud de parches faltantes:

Explotación con Web Delivery

Ejecución del comando en el objetivo

Recibiendo el Meterpreter

Tenemos unsa sesión de Meterpreter en el background:

Migración a un proceso de 64 bits

Exploit Suggester

Con la sesión abierta vamos a buscar exploits efectivos:

Escalada de privilegios

Después de probar algunos de estos módulos no tenemos una explotación exitosa. Como tenemos un Windows Server antiguo vamos a lo clásico, el Eternal Blue:

Tenemos una shell SYSTEM! Podríamos por ejemplo hacer un hashdump para volcar todos los hashes de los usuarios del sistema:

Acceso a la flag

Última actualización