16 sept 2015

Extracción de hashes y contraseñas en texto plano en Windows 10 y 8.1

Utilizar herramientas como Mimikatz para conseguir obtener las contraseñas en texto plano en un pentest puede suponer un quebradero de cabeza si nos enfrentamos a sistemas como Windows 10 o Windows 8.1 / 8. Tener un hash o una contraseña en plano puede ser igual a efectos prácticos, pero conseguir las contraseñas en plano en un pentest siempre tendrá más impacto para la empresa. 

Utilizar Mimikatz, WCE o fgdump en la fase de post-explotación en sistemas Windows 10 o Windows 8.1 puede darnos malos resultados, consiguiendo los hashes, generalmente, pero no la contraseña en texto plano. Como ya he comentado no es tan malo, los hashes rules! y podemos hacer un pass the hash (PtH). 


En Internet podemos encontrar un conjunto de herramientas llamadas PowerMemory, en la que se localiza RWMC, Reveal Windows Memory Credential. Este script permite modificar entradas en el registro de Windows para el proveedor WDigest, el cual se pone a 1. Para poder lanzar el script hay que tener el máximo privilegio, es decir, ser System. Una vez ejecutado el script se debe reiniciar la máquina. 


Interesante opción para el pentest en la post-explotación, por lo que si te encuentras con un Windows 8.1 o Windows 10 y quieres sacar las credenciales en plano puedes utilizar el script RWMC escrito en Powershell para lograrlo. 

2 comentarios:

  1. Muchas gracias!.
    Sería bueno siempre complementar este tipo de artículos con contramedidas/mitigaciones que puedan ser útiles para la comunidad (Blue Team :-).Humildemente, se me ocurren:
    -Usar GPO Preferences para que esa rama de registro siempre se sobreescriba con el valor para que se quede desactivado.
    -Muchas casas de productos de seguridad que complementan al AV incluyen algo tipo HIDS que permite monitorizar por ejemplo, que si esa rama de registro se cambia, se nos alerte y se tome alguna acción.
    -Implementar MS ATA (https://technet.microsoft.com/en-us/library/dn707709.aspx) si se tiene posibilidad.
    -Si se usa MS LAPS, poner por GPO que el cambio de password del local admin se efectúe cada día por ejemplo.
    -Por GPO configurar que en los equipos se deniegue cualquier tipo de inicio de sesión de cuentas privilegiadas.
    -Si se tiene Applocker o alún software de control aplicacional, usar las reglas de detección para poder cortar/filtrar este tipo de procesos.
    -Usar LSASS en modo protegido (https://technet.microsoft.com/en-us/library/dn408187.aspx).

    Obviamente no todo el mundo podrá aplicar todo lo posible, pero sí se agradece muchas veces el poder tener también un catálogo de opciones a usar disponibles para mitigar estas cosas.

    Gracias como siempre y un salu2!

    ResponderEliminar
  2. Adicionalmente (mimikatz en la última versión con equipos unidos en dominio saca en claro las passwords de memoria que se usen; por ejemplo, en un equipo de un administrador accediendo por RDP a un server, sacas petróleo):
    Si se tiene Windows 10 y cumpliendo toda esta parafernalia (muy difícil la verdad):
    Credential Guard
    https://technet.microsoft.com/en-us/library/mt483740(v=vs.85).aspx
    http://bitsofwater.com/2015/09/02/windows-10-credential-guard/

    ResponderEliminar