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.

Active X Inseguros y una Prueba de Concepto


¿Qué es un ActiveX? Es una tecnología de reutilización de software creado en Microsoft COM. Por ejemplo, ActiveX permite un documento de Word embeberlo en una hoja de cálculo de Excel y esta publicarse por medio de un sitio o aplicación Web.

ActiveX habilita una interface de Scripts a través de la cual se pueden aprovechar todas las capacidades de componentes binarios pueden estar disponibles para los lenguajes scripts, tales como VBS y JS (lo que se conoce como Automatización OLE o simplemente Automatización). Es un modelo de plug-in de IE, permitiendo que IE cargue y use componentes binarios personalizados desde o dentro de sitios Web. La interacción entre las páginas se hace por medio de las interfaces script.

Dado que ActiveX es una tecnología de reutilización de código de propósito general y no es diseñado solamente para usarse en páginas Web. No todos los componentes son apropiados para su uso en la Web. Sin embargo, hay límites para estos componentes, por ejemplo, un ActiveX no podría ejecutar código malicioso en su computador sin su consentimiento.

El componente ActiveX debe afirmar que es tanto seguro para inicialización y seguro para scripting.

¿Qué es inicialización y scripting seguro?

«Seguro para inicialización» básicamente significa que el componente no violará la seguridad del usuario, incluso si inicializado con datos no confiables o maliciosos.

«Seguro para scripting» significa que sus interfaces de scripting no pueden ser objeto de abuso por un script malicioso que cause daño al usuario.

¿Cuál es la configuración por defecto de esta característica en IE?

IE por defecto deniega la carga de componentes ActiveX marcados como no seguros para inicializar o ejecutar scripting cuando son referenciados en sitios Web alojados remotamente y en cualquier zona de seguridad del IE, excepto la zona de maquina local que está en la opción “Preguntar”, es decir, en el resto de zonas está configurada en la opción denegar.

Esta configuración se puede hacer de manera diferente por cada zona de seguridad o mediante GPO a partir de IE 7.

Las interfaces del Windows Script Host son también un ejemplo más claro de un componente ActiveX inseguro, ya que permiten la manipulación del registro, manipulación de archivos, y lanzar programas o líneas de comando.

En IE6 en inferior, en la zona de sitios seguros esta opción está marcada para preguntar y no denegar como las versiones actuales, por tanto, le muestra un mensaje al usuario para que permita la interacción al darle clic en “Yes” o “Si”.

Question

La opción de “Preguntar” al usuario, tampoco es una buena idea, ya que los usuarios finales se acostumbraron a que cada vez que ven un aviso del navegador, dan en la opción “Si” para poder trabajar o visualizar lo que desean, por tanto, muchos no leen o son conscientes de que están permitiendo al hacer clic en sí.

Amenazas informáticas:

El problema radica en que IE no permite configurar de manera personalizada un componente ActiveX para fines específicos, sino que cuando se habilita esta opción en una zona del navegador, permite que cualquier o todos los sitios Web que funcionan en esta zona. Lleven a cabo cualquier acción en el computador sin el consentimiento del usuario, esto significa que un atacante o cualquier persona podría controlar el contenido, archivo, entre otras para todos los computadores que visitan el sitios Web.

Un atacante podría instalar un malware (ej. Spyware, virus, ransomware…) sin necesidad de permisos administrativos, configurar programas para ejecutarse al inicio de sesión del usuario, capturar o enviar información privada a externos, borrar citas del calendario o modificar/borrar archivos. Además puede hacer un escenario de ataque en donde con un script en un archivo HTML infecte los usuarios y luego lo restaure al original, sin que sea fácil de rastrear este tipo de ataque.

Prueba de Concepto – PoC:  (Se puede ejecutar codigo remoto desde la Red Interna o desde un sitio Web comprometido en Internet).

Verificar la opción en la configuración del Internet Explorer. (La que no se puede habilitar)

Opcion1

La prueba consiste en ingresar desde el Internet Explorer a un sitio en Internet donde se montó una página HTML que permita ejecutar una calculadora sin consentimiento del usuario. La prueba fue satisfactoria en un Internet Explorer 10 con Windows 7 Service Pack 1.

Se crea una página HTML básica con un llamado a un archivo JavaScript o se modifica una existen en un sitio Web.

Index

Se agregan las lineas de ejecución de codigo al archivo JS con el objeto ActiveX malicioso, que  para este ejemplo solo ejecuta una calculadora en el computador que visita la página.

js

Ejecución desde el navegador.

PoC

Remediación

Para asegurar un ActiveX no solamente basta con fírmalo digitalmente(este es más para la integridad y no repudio del control), sino que también existen dos métodos a nivel de código fuente para asegurarlo, usando un identificador de clase del control (CLSID).

  1. El primer método consiste en usar la interface ICatRegister del “Component Categories Manager” para crear unas entradas en el registro (CATID_SafeForScripting) del sistema operativo y el IE examina este antes de cargar el control ActiveX.

La ruta donde se crea esto es la siguiente:

regedit

Los pasos son:

  1. Create an instance of the Component Categories Manager and retrieve the address of the ICatRegister
  2. Set the appropriate members of a CATEGORYINFO
  3. Call the ICatRegister::RegisterCategories method, passing the address of the initialized CATEGORYINFO

NOTA: En el enlace de referencia está el código fuente de ejemplo con la implementación.

El segundo método tiene que ver con implementar una interface llamada IObjectSafety y su método SetInterfaceSafetyOptions (con 3 parámetros) en el control ActiveX, para poder que el navegador IE lo inicialice y ejecute de forma segura.

ActiveX-Seguro

En el siguiente articulo de Microsoft explican el detalle del asunto:

https://msdn.microsoft.com/en-us/library/aa751977%28v=vs.85%29.aspx

También es recomendable este post sobre el diseño seguro de ActiveX:

https://msdn.microsoft.com/es-es/library/aa752035%28v=vs.85%29.aspx

Espero este ejemplo sirva para que cuando se vaya habilitar una opción en el navegador, se evalue primero el riesgo y en lo posible con una prueba de concepto evidenciarlo; ademas que esto  pueda ayudar a crear lineamientos para los desarrolladores de las Apps corporativas que usan ActiveX, con el fin de no poner en riesgo la organización.

Propagación de malware desde emails gubernamentales de Colombia


Uno de los vectores de ataque más comunes para propagar malware (virus, troyanos, ransomware…) son los correos electrónicos, ya que muchos usan la ingeniería social para que más fácilmente exploten la vulnerabilidad del kernel humano, que es el eslabón más débil en seguridad de la información.

En este post, se muestra una nueva propagación que se está realizando por medio de cuentas de correo comprometidas de municipios de Colombia, usando el servicio de correo de Google – Gmail.

– carreta & + acción!

Este es el correo malicioso o vector de ataque: como pueden ver el correo llega aparentemente desde una cuenta oficial de un municipio de Caldas y al parecer ya tienen identificado personas que hacen este proceso con el Ministerio de Hacienda, ya que de los correos que se han analizado, solo le llegan a personas que trabajan o apoyan el pago de impuestos.

Vector

Al descomprimir el archivo adjunto, se evidencia que efectivamente tiene un binario (.exe) el cual al momento del análisis, solo era detectado por cuatro fabricantes de antivirus, como se va mostrar más adelante.

Muestra

Análisis del encabezado del correo

Usando este script elaborado en Python para extraer la información más trascendental de los encabezados del correo, se evidencia que efectivamente se envió desde servidores de correo de Google y que la cuenta de correo es la oficial del municipio.

Script

PD: El código completo del script lo publique en pastebin, por si lo quieren probar y complementar.

Ejecución del script y prueba de que se envio desde el servidor de correo de Gmail.ExecScriptComo pueden ver en el Return-Path, el buzón de correo es el oficial de un municipio de Viterbo Caldas  – Colombia y se verifico que la cuenta existiera desde el login de Gmail.

VerificacionCuenta

Análisis dinámico del malware

Verificación integridad del archivo binario

El pase de diapositivas requiere JavaScript.

Nivel de detección a la fecha (solo 4 de 54)NivelDeteccion

Detección en Virus Total

Según el análisis realizado en la maquina infectada y en un sandbox, se pudo evidenciar que inyecta el proceso “explorer.exe”, lee y establece valores en las siguientes claves de registro:

  • «Explorer.EXE» (Access type: «SETVAL», Path: «HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN»,

  • Key: «HKCU», Value: «%VariableEntorno%\Pago_De_Impuesto_Empresarial_Ministerio_De_Hacienda.exe») «Explorer.EXE» (Access type: «SETVAL», Path: «HKLM\SOFTWARE\MICROSOFT\ACTIVE SETUP\INSTALLED COMPONENTS\{XR047075-RM0W-RY08-NN57-N332G1U801U4}»,

Crea un archivo en la ruta>

%TEMP%\iJanuary15.exe

String de mutuaciones:

  • «_x_X_UPDATE_X_x_» «_x_X_PASSWORDLIST_X_x_» «_x_X_BLOCKMOUSE_X_x_» «***MUTEX2» «***MUTEX2_PERSIST» «***MUTEX2_SAIR» «{C20CD437-BA6D-4ebb-B190-70B43DE3B0F3}» «_SHuassist.mtx» «Local\ZonesCounterMutex» «Local\ZoneAttributeCacheCounterMutex» «Local\ZonesCacheCounterMutex» «Local\ZonesLockedCacheCounterMutex»

Intenta ejecutar el proceso del navegador “Firefox.exe” y usa las siguientes DLL

«USER32.DLL» at base 76C20000
«%WINDIR%\SYSTEM32\OLE32.DLL» at base 764C0000
«OLEAUT32.DLL» at base 77170000
«%WINDIR%\SYSTEM32\APPHELP.DLL» at base 75470000

%WINDIR%\system32\MSVBVM60.DLL (usada por apps en Visual Basic)

Usa el comando:

cscript.exe» «%TEMP%\teste.vbs»»

Intenta obtener nombres de usuarios del equipo

  • GetUserNameA@ADVAPI32.DLL

  • LookupAccountNameA@ADVAPI32.DLL

Metadatos de la muestra

MetaMuestra

Certificados digitales

CertsDigitales

Acciones de Red

  • ·        Se conecta al dominio: paovallos1.no-ip.info
  • ·         Se conecta a la IP 201.211.17.122 por el puerto TCP 9015.

La IP del C&C esta ubicada en Venezuela y ya esta listada en Blacklist.

Finalmente, se prueba la conexión por dicho puerto y aun esta habilitado.

TestConnect

Conclusiones y recomendaciones:

  • Con este análisis se comprueba que efectivamente el correo contiene un malware que busca conectarse a una IP de Venezuela donde está el C&C para extraer información confidencial y tener el equipo en una Botnet.
  • Al revisar los encabezados del correo se comprueba que se están enviando desde los servidores de Google y no desde un Servidor Falso, lo da un indicio de que estos buzones están comprometidos o tuvieron un acceso no autorizado.
  • Con el análisis dinámico de malware puedes entender mejor como funciona y que está intentando hacer, con el fin de implementar otras medidas preventivas y no solamente las reactivas que se pueden tomar con la muestra.
  •  Se recomienda revisar el filtro de correo de tus servidores, ya que muchos por defecto dejan pasar archivos comprimidos con contraseña y crear reglas con patrones para detectarlos, ya sea por el asunto, contendido del correo, entre otros…
  • Se recomienda usar contraseñas fuertes y diferentes para los buzones de correo, incluso aprovechar las características que estos brindan como autenticación de doble factor.
  • Si te llega un malware, no te quedes tranquilo con solo enviar la muestra a los laboratorios para que genere la firma que lo detecta y elimina, es más interesante hacerle un análisis manual o usar servicios Sandbox free o pagos, para ver cómo funciona y tomar otras medidas en la infraestructura de T.I. (Ej. Bloqueo de IPs, puertos TCP/UDP en los Firewalls, Bloqueo de URLs en el Proxy, Habilitación de filtros en los IPS/IDS, mitigación de vulnerabilidades entre otros…) ademas de entender el codigo malicioso.
  • Se recomienda afinar mejor las reglas de correlacion del SIEM para detectar tempranamente estas amenazas.
  • Finalmente, se recomienda dar a todos sus empleados un entrenamiento de concienciación en seguridad de la información  (Security Awareness Training) para que aprendan a identificar estas amenazas informáticas y las reporten adecuadamente al personal del Service Desk, al equipo de respuesta a incidentes de seguridad o en este caso, al equipo de seguridad de Google, el cual puedes hacer diligenciando el formulario para reportarlo desde aquí, anexando las cabeceras segun tu proveedor de correo.

Una de las cosas interesantes en la gestión de incidentes de seguridad de T.I. o de la información, es que «cuando aprendes de cómo te atacan, aprendes a defenderte y atacar mejor.»

Salu010,

@JOGAcrack.