¿Cómo se almacenan las credenciales de Windows almacenadas en caché en la máquina local?

26

¿Cómo se almacenan las credenciales de dominio de Active Directory almacenadas en caché en un cliente de Windows? ¿Se almacenan en la base de datos SAM local, lo que los hace susceptibles a los mismos ataques de tabla de arco iris a los que las cuentas de usuarios locales son susceptibles, o se almacenan de manera diferente? Tenga en cuenta que me doy cuenta de que están salados y picados, para que no se almacenen en texto sin formato, pero ¿se cortan de la misma manera que las cuentas locales y se almacenan en la misma ubicación?

Me doy cuenta de que, como mínimo, son susceptibles a un ataque de fuerza bruta, pero esa es una situación mucho mejor que ser vulnerable a las mesas de arco iris en el caso de una máquina robada.

MDMarra
fuente

Respuestas:

17

"Credenciales almacenadas en caché"

Las credenciales almacenadas en caché para un dominio AD son en realidad dobles hash de la contraseña y se almacenan en la sección HKLM \ Security. La ubicación del archivo de la colmena es: %systemroot%\System32\config\SECURITY

Solo el usuario del "sistema" tiene acceso a las claves de registro:
HKLM\Security\Cache\NL$ndonde nhay un índice 1 al número máximo de credenciales almacenadas en caché.

Susceptibilidad a los ataques

WinNT to WinXP utilizó hashes "Lan Manager" para cuentas locales , que se rompen fácilmente en el hardware moderno. El craqueo usualmente toma varios minutos (recientemente hice 3 contraseñas en 00:08:06) con solo una computadora de escritorio "normal". Los hashes de Lan Manager no están salados, por lo que también hay mesas de arco iris disponibles públicamente.

Vista y posteriores usan hashes NT para cuentas locales . Windows 2000 y versiones posteriores también usan hashes NT para cuentas de dominio . Los hashes NT son hashes salados con doble MD4. La sal por entrada impide el uso de tablas de arco iris, pero MD4 se puede ejecutar muy rápido en hardware moderno: aproximadamente 6 años de cómputo para una contraseña de 60 bits. Con suerte y un clúster de 6 GPU, un cracker puede romper este tipo de contraseña en ~ 6 meses. Llevando eso a la nube, alrededor de $ 35k en la GPU Amazon EC2, dependiendo de la disponibilidad, podrían pasar horas.

Chris S
fuente
Creo que la parte más grande de mi pregunta era si o no estas credenciales almacenadas son susceptibles a los mismos ataques basados en la tabla de arco iris como cuentas locales de si son ordenadas en un método diferente
MDMarra
Actualizado ... Vista + es todo lo mismo. Las versiones anteriores eran diferentes.
Chris S
"El hash NT de la contraseña se calcula utilizando un algoritmo hash MD4 sin sal". - Directo de TechNet: technet.microsoft.com/en-us/library/hh994565(v=ws.10).aspx
thepip3r
Esa página está mal, los hashes NT están salados. Vea la respuesta de Joe a continuación para un enlace a un KB.
Chris S
4

Las credenciales no se almacenan en caché en la máquina local. Vea este extracto de MS:

Seguridad de credenciales de dominio en caché

El término credenciales almacenadas en caché no describe con precisión cómo Windows almacena en caché la información de inicio de sesión para los inicios de sesión de dominio. En Windows 2000 y en versiones posteriores de Windows, el nombre de usuario y la contraseña no se almacenan en caché. En cambio, el sistema almacena un verificador cifrado de la contraseña. Este verificador es un hash MD4 salado que se calcula dos veces. El doble cálculo efectivamente convierte al verificador en un hash del hash de la contraseña del usuario. Este comportamiento es diferente al comportamiento de Microsoft Windows NT 4.0 y versiones anteriores de Windows NT.

http://support.microsoft.com/kb/913485

joeqwerty
fuente
Correcto, entiendo que las credenciales en sí mismas no se almacenan en la memoria caché, pero mi pregunta era más similar a "los hashes resultantes almacenados en la base de datos SAM local de la misma manera que las cuentas locales, lo que los hace vulnerables a los mismos ataques. " Lo editaré en un minuto para que quede un poco más claro.
MDMarra
1
meh ... para mí esto es picar palabras. La naturaleza del "hashing" es un proceso unidireccional que crea básicamente un valor ofuscado de la contraseña utilizando un algoritmo criptográficamente seguro. El problema es que MD4 puede haber sido criptográficamente seguro hace 10-15 años, pero ya ni siquiera está cerca (tampoco lo es MD5 o SHA1 desde el punto de vista de un criptógrafo). Por lo tanto, si usted tiene el hardware de hoy en día que puede rápida fuerza bruta el espacio de claves del algoritmo o descubrir una colisión, a continuación, puede fácilmente obtener la contraseña a partir del hash ...
thepip3r
Si las credenciales se almacenan de cualquier forma o forma para que puedan verificarse en modo fuera de línea, entonces se almacenan en caché para todos los propósitos, sin importar cómo se
vean
4

Son manejados por Credential Manager, para lo cual existe una API de Credential Manager. Los hashes salados se almacenan de forma algo segura en el disco y se accede a ellos a través de HKLM \ Security. (A la que solo LocalSystem puede acceder de manera predeterminada, pero es fácil de omitir, por ejemplo, mediante psexec -i -s regedit.exe).

Sin embargo, en un sistema Windows en ejecución, la situación es más grave, ya que las credenciales utilizadas recientemente se pueden obtener y revertir fácilmente en texto sin formato conectando una DLL a Lsass. (Ver Mimikatz.)

Entonces, sí, encontrará algún tipo de hash (o hash de un hash, o 'verificador' o como quiera llamarlo) en HKLM \ Security \ Cache en el cliente. Pero no creo que haya una forma factible de atacar el hash en el disco. No es el mismo tipo de hash NTLM que se puede atacar.

Ryan Ries
fuente
El descifrado de contraseñas fuera de línea en el SAM es completamente diferente de enganchar LSASS en la memoria como lo hacen Mimikatz y WCE. Y dependiendo de la complejidad de la contraseña, el descifrado de contraseña fuera de línea del SAM puede ser MUY fácil (ver samdump2)
thepip3r