📘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 Sherlock para buscar parches faltantes. También podemos utilizar algo como Windows-Exploit-Suggester , 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_092 .
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