La técnica del Pass the Hash está con nosotros desde hace muchos años, quizá 1999, pero no ha dejado de ayudar a los pentesters y auditores en su día a día. ¿Qué es eso del Pass the Hash? Para que todos nos entendamos es así de sencillo: ¿Para qué crackear e intentar averiguar la contraseña que se esconde detrás de un hash conseguido en un sistema Microsoft Windows owneado si podemos usar el hash directamente para autenticarnos o pasar un proceso de autorización? La técnica del Pass the Hash nos permite utilizar dicha información, es decir el hash, para autenticarnos a través del protocolo SMB en otra máquina o para conseguir que se nos autorice el acceso a un recurso en un entorno Active Directory con un proceso de Pass the Ticket.
Como os podéis imaginar, es uno de los movimientos laterales que podemos hacer en un proceso de Ethical Hacking cuando se ha llegado a una máquina interna de la red con un sistema Windows. Es decir, localizar los hashes de contraseñas pertenecientes a usuarios de los sistemas y utilizar directamente el hash para suplantar la identidad de esa cuenta sin necesidad siquiera de conocer el valor de la contraseña almacenada en él.
¿Qué hay de nuevo ahora en Windows 10?
Microsoft lleva más de 15 años luchando contra esta técnica, y proteger los hashes es una de las recomendaciones de fortificación de Windows básicas, aunque las cosas parece que han ido de mal en peor, con la aparición de herramientas como WCE o el famoso Mimikatz. Con la llegada de Windows 10 y Windows Server 2016 se anunció que el final del Pass the Hash había llegado. Muchos nos alegramos, pensamos que era algo natural y que sería una técnica pasada, añadiendo medidas de protección en todas las fases del proceso y sobre todo después de la compra de Aorato por parte de Microsoft. De repente nos hablaron de Credential Guard y en la BlackHat 2015 se habló de cómo se puede utilizar para mitigar los ataques Pass the Hash.
Credential Guard es una solución para evitar el robo de credenciales en Windows 10. Es un nuevo componente de autenticación de credenciales. Este nuevo proceso es “isolated” en el sistema. Estas credenciales nunca se revelan en la memoria, por lo que un atacante no puede leerlas. Credential Guard es sin estado y los secretos son cifrados para que puedan ser gestionados en el modo usuario normal del proceso LSASS, tal y como puede verse en la imagen.
Las credenciales son protegidas en el proceso aislado denominado Credential Guard. Tanto el hash NTLM como el TGT de Kerberos no existen el proceso lsass.exe. Las credenciales son protegidas de la lectura de la memoria del proceso lsass. La identidad en la imagen inferior de Alice está protegida, ya que un posible atacante no tiene acceso a los datos del proceso Credential Guard, por lo que se entiende que no podrán ser utilizados en un movimiento lateral, es decir, no se podría realizar la técnica Pass the Hash.
Tenemos que tener claro que esto no previene de que un atacante pueda “apagar” el proceso de Credential Guard, por lo que el comportamiento sería similar al conocido. Además, Credential Guard tampoco previene de que un atacante pueda utilizar un Keylogger para robar el PIN y utilizar la autenticación de Alice, tal y como se ve en la imagen. Es una pieza más del proceso de fortificación de Windows que debe verse de manera completa en todas sus partes.
PoC: ¿Es el final del Pass the Hash?
La prueba que queríamos hacer es sencilla. Entendemos el concepto de Credential Guard y la necesidad de ofuscar y hacer mucho más complejo la consecución de hashes. La idea de esta prueba de concepto era verificar si podíamos seguir haciendo ataques de tipo Pass the Hash en Windows 10. El escenario es el siguiente:
Por otro lado, se puede utilizar el módulo psexec de Metasploit para lograr el mismo efecto. En este caso conseguiríamos ejecutar una Meterpreter sobre la máquina Windows 10, gracias al uso de la técnica Pass the Hash.
Credential Guard
La ejecución de Credential Guard para fortificar el sistema lleva una serie de requisitos consigo, las cuales se resumen a continuación.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”
Figura 1: Windows 10 y el final de los ataques Pass the Hash (Pth) |
Como os podéis imaginar, es uno de los movimientos laterales que podemos hacer en un proceso de Ethical Hacking cuando se ha llegado a una máquina interna de la red con un sistema Windows. Es decir, localizar los hashes de contraseñas pertenecientes a usuarios de los sistemas y utilizar directamente el hash para suplantar la identidad de esa cuenta sin necesidad siquiera de conocer el valor de la contraseña almacenada en él.
¿Qué hay de nuevo ahora en Windows 10?
Microsoft lleva más de 15 años luchando contra esta técnica, y proteger los hashes es una de las recomendaciones de fortificación de Windows básicas, aunque las cosas parece que han ido de mal en peor, con la aparición de herramientas como WCE o el famoso Mimikatz. Con la llegada de Windows 10 y Windows Server 2016 se anunció que el final del Pass the Hash había llegado. Muchos nos alegramos, pensamos que era algo natural y que sería una técnica pasada, añadiendo medidas de protección en todas las fases del proceso y sobre todo después de la compra de Aorato por parte de Microsoft. De repente nos hablaron de Credential Guard y en la BlackHat 2015 se habló de cómo se puede utilizar para mitigar los ataques Pass the Hash.
Figura 2: Black Hat USA 2015 "Defeating Pass-the-Hash"
Credential Guard es una solución para evitar el robo de credenciales en Windows 10. Es un nuevo componente de autenticación de credenciales. Este nuevo proceso es “isolated” en el sistema. Estas credenciales nunca se revelan en la memoria, por lo que un atacante no puede leerlas. Credential Guard es sin estado y los secretos son cifrados para que puedan ser gestionados en el modo usuario normal del proceso LSASS, tal y como puede verse en la imagen.
Figura 3: Separación de los modos Normal y Seguro en Windows 10 |
Las credenciales son protegidas en el proceso aislado denominado Credential Guard. Tanto el hash NTLM como el TGT de Kerberos no existen el proceso lsass.exe. Las credenciales son protegidas de la lectura de la memoria del proceso lsass. La identidad en la imagen inferior de Alice está protegida, ya que un posible atacante no tiene acceso a los datos del proceso Credential Guard, por lo que se entiende que no podrán ser utilizados en un movimiento lateral, es decir, no se podría realizar la técnica Pass the Hash.
Figura 4: Características de Credential Guard |
Tenemos que tener claro que esto no previene de que un atacante pueda “apagar” el proceso de Credential Guard, por lo que el comportamiento sería similar al conocido. Además, Credential Guard tampoco previene de que un atacante pueda utilizar un Keylogger para robar el PIN y utilizar la autenticación de Alice, tal y como se ve en la imagen. Es una pieza más del proceso de fortificación de Windows que debe verse de manera completa en todas sus partes.
PoC: ¿Es el final del Pass the Hash?
La prueba que queríamos hacer es sencilla. Entendemos el concepto de Credential Guard y la necesidad de ofuscar y hacer mucho más complejo la consecución de hashes. La idea de esta prueba de concepto era verificar si podíamos seguir haciendo ataques de tipo Pass the Hash en Windows 10. El escenario es el siguiente:
Figura 5: El equipo de la víctima será un Windows 10 Enterprise |
• Windows 10: El equipo de la víctima será un Windows 10 Enterprise Edition.El robo de hashes de la víctima se supone que se hace desde el fichero SAM, en algún instante. Si utilizamos la herramienta WCE para cambiar credenciales del usuario ‘administrator’ del equipo Windows 7 y poder realizar a posteriori el uso del hash. Como se puede ver en la imagen, se puede realizar la técnica PtH y lograr acceso al Windows 10 como ‘administrator’.
• Kali Linux 2: Utilizaremos el módulo de psexec de Metasploit para llevar a cabo la autenticación.
• Windows 7. Utilizaremos la herramienta WCE para llevar a cabo el PtH sobre Windows 10.
Figura 6: Uso de WCE para utilizar un Hash de administrador en un ataque PtH |
Por otro lado, se puede utilizar el módulo psexec de Metasploit para lograr el mismo efecto. En este caso conseguiríamos ejecutar una Meterpreter sobre la máquina Windows 10, gracias al uso de la técnica Pass the Hash.
Figura 7: Uso de psexec para explotar un ataque PtH |
Credential Guard
La ejecución de Credential Guard para fortificar el sistema lleva una serie de requisitos consigo, las cuales se resumen a continuación.
• Solo está implementado en Windows 10 Enterprise Edition.Si quisiéramos activar Credential Guard por política de grupo podemos seguir las siguientes instrucciones:
• UEFI firmware version 2.3.1 o superior.
• Extensiones de virtualización (Intel VT-x o AMD-V).
• Arquitectura x64.
• TPM 1.2 o 2.0.
• Secure Firmware Update.
• Hypervisor.
• Desde la consola de gestión de políticas a través de mmc.exe, debemos ir a “Configuración del equipo” -> “Plantillas administrativas” -> “Sistema” -> “Device Guard”.
• Debemos hacer doble clic sobre la “Activación de la seguridad basada en virtualización”.
Figura 8: Activación de Credential Guard vía Políticas |
• Seleccionar el nivel de seguridad de la plataforma y elegir Secure Boot o Secure Boot and DMA Protection.
• En la configuración de Credential Guard, hay que clicar Enabled with UEFI lock y pulsar OK.La técnica Pass the Hash lleva demasiado tiempo entre nosotros. Quizá sean más las ganas de eliminar un término que se ha arraigado en la cultura de la seguridad informática. Credential Guard nos ayuda a combatir la captura de hashes y la protección de nuestras credenciales en memoria, pero hoy día podemos seguir haciendo uso de los ataques Pass the Hash en un sistema Windows por defecto. Comprueba que tienes Credential Guard habilitado o cumples con los requisitos y fortifica tu Windows.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”
Hola Pablo,
ResponderEliminar¿La PoC que estás mostrando para Pass The Hash es con la opción Credential Guard Deshabilitada?
Si activas Credential Guard, ¿te permite seguir haciéndolo?
Saludos,
Hola Pablo. Quede con la misma duda de Luciano. Creo q debes aclarar si la PoC fue exitosa o no con Credential Guard activado.
ResponderEliminarSaludos
Hola Pablo. Quede con la misma duda de Luciano. Creo q debes aclarar si la PoC fue exitosa o no con Credential Guard activado.
ResponderEliminarSaludos
Hola,
ResponderEliminarCredential Guard protege del acceso y robo en memoria (ya que lsass ya no tendrá la información). No creáis que es trivial (debido a requisitos y listado de cosas a realizar, hay que mirar si la GPO ha habilitado unas claves del registro en HKLM. Microsoft recomienda que en las imágenes que se desplieguen en las empresas, IT lo habilite).
La prueba, habilitando el protector (Credential Guard) por política, es que se puede reutilizar un hash NTLM para autenticar. Lógicamente, aplicaciones como Mimikatz o WCE no podrán obtener la información (hashes) de memoria, pero siempre nos quedaría la SAM. Tener en cuenta que si es una autenticación de red, se podría encontrar solo en memoria, por lo que el hash no lo quitarían.
No está siendo fácil (al menos en mi caso) habilitar el Cred. Guard, también debido a los distintos requisitos y operativas de GPO y registro a tener en cuenta.
Probar en Windows 10, no a obtener el hash en memoria, si no a utilizar la SAM para obtener el hash y llevar a cabo la autenticación remota a través del hash (con WCE, o el módulo de PSEXEC de MSF).
Un saludo!