Obtención de credenciales de administrador en infraestructura Microsoft


Una de las oportunidades de mejora o hallazgos que se pueden identificar en una auditoría de tecnología y especialmente en el ámbito de seguridad informática o ciberseguridad, es la obtención de información sensible a nivel de recursos compartidos en la red. Por ejemplo:  credenciales de los usuarios, es decir, el usuario y contraseña para autenticar servicios digitales. Este tema se vuelve más crítico dependiendo de los privilegios o permisos que tengan las credenciales capturadas y si están en texto plano. Dentro de los privilegios altos, están las cuentas de administrador local de los equipos de un dominio o implementados en una infraestructura tecnológica de Microsoft.

El presente post, muestra un procedimiento para capturar por medio de una vulnerabilidad o funcionalidad de Microsoft en los servidores controladores de dominio, las credenciales en texto plano de un usuario administrador local. Cabe aclarar que es posible encontrar contraseñas de otro tipo de cuentas. Por ejemplo: cuentas técnicas que usen aplicaciones o servicios de la organización.

Escenario: Se debe tener acceso previo a un equipo conectado a un dominio de Microsoft y credenciales básicas de acceso a la red.

Posibilidad de ocurrencia: Alta. (Existen herramientas o código fuente libre que usa esta clave privada para descifrar las credenciales)

Impacto: Alto. (Ej. Se puede acceder a cualquier equipo de cómputo del dominio como administrador local)

Nivel de riesgo: Alto.

Herramientas usadas: Comandos de Windows y GP3Finder.

En la carpeta SYSVOL de los servidores controladores de dominio de Microsoft, existen contraseñas cifradas de diferentes cuentas de usuario (ej.  La cuenta del administrador local u otras de dominio). Sin embargo, debido a que Microsoft publicó la clave privada AES, es posible descifrar las contraseñas y obtenerlas en texto plano, sin importar su complejidad.

Procedimiento:

  1. Mapear la carpeta SYSVOL en el controlador de dominio usando el comando NET USE.

net use * "\\controladordominio\SYSVOL" /persistent:no

2. Ingresar a la letra en que se mapeó la ruta de la carpeta SYSVOL, para este ejemplo, la letra T. Luego, se puede digitar el comando «dir» para verificar el acceso y listar los archivos o carpetas del directorio mapeado en dicha unidad de red.

Contenido del directorio SYSVOL

3. Ejecutar el comando para buscar la palabra clave “cpassword” en los archivos XML y exportar el resultado a un archivo plano.

findstr /si cpassword *.xml > D:\resultadoCpasswd.txt

NOTA: El campo “cpassword” es el que contiene la clave de administrador local cifrada en AES.

4. Verificar la creación del archivo plano (para el ejemplo, en la partición de disco con la letra D) y proceder a abrirlo con un editor de texto plano (ej. Notepad ++).

Resultado comando búsqueda de «cpassword».

5. Copiar el valor cifrado de la contraseña, ejemplo: “rCc3lGRv402Rc99vL5cLO4UgbhOWn6EOnUfhHMoeSxY” y enviarlo como parámetro al programa GP3Finder, que tiene la clave privada en AES-256 de Microsoft, para descifrarla.

Contraseña en texto plano descifrada.

Finalmente, probar que la contraseña sea válida para el usuario que se encontró en el archivo Group Policy Preferences – GPP.

Cabe aclarar que existen otras formas de explotar esta vulnerabilidad de una forma más automatizada, como por ejemplo desde Metasploit usando «post/windows/gather/credentials/gpp» o con PowerSploit usando «Get-GPPPassword«, entre otras, sin embargo, publico esta forma porque fue como en el momento de la auditoría se hizo la prueba y funcionó.

Recomendaciones para mitigar este riesgo:

  • Actualizar y ajustar la línea base de seguridad para los servidores controladores de dominio, en lo que respecta a las directivas de seguridad de grupo (GPO) y otras mejores prácticas, como las que publica el Center for Internet Secuirty (CIS) para sistemas operativos Windows Server. 
  • Instalar los parches de seguridad del boletín MS14-025 liberado por Microsoft, en los controladores de dominio para prevenir que los administradores agreguen contraseñas en las GPP. 
  • Evaluar la posibilidad de eliminar las políticas GPP que cuentan con credenciales almacenadas, evitando que sean visibles. 
  • Considerar la necesidad de controlar el acceso al archivo Groups.xml, así como correlacionar este tipo de evento de acceso denegado y generar alertas para monitorizarlo. 

Como se puede ver, el procedimiento es simple pero el impacto es alto, por consiguiente, si bien esta vulnerabilidad o característica no es nueva, debido a que Microsoft publicó contra medidas y parches de seguridad desde el 2014, aún existen muchas organizaciones que desconocen o asumen el riesgo y es allí, en donde se puede materializar un incidente de seguridad de la información.

Referencias:
https://msrc-blog.microsoft.com/2014/05/13/ms14-025-an-update-for-group-policy-preferences

https://support.microsoft.com/en-us/help/2962486/ms14-025-vulnerability-in-group-policy-preferences-could-allow-elevati

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gppref/2c15cbf0-f086-4c74-8b70-1f2fa45dd4be?redirectedfrom=MSDN

https://github.com/mattifestation/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1

http://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp

ANEXO: Clave AES.