1 nov 2011

Impersonalización (Parte I de II)

Hoy en día, las empresas y grandes organizaciones, recurren a la misma técnica para recordar credenciales, repetirlas. Es interesante observar como en un departamento con muchos equipos, la cuenta de administrador repite credenciales entre distintas máquinas. Es sencillo entender que si disponemos de 1000 máquinas, disponer de 1000 administradores distintos sería una locura. Pero también podemos entender que podríamos disponer de distintas cuentas de administrador en función del departamento. Otra acción no recomendable sería disponer de cuentas de administrador con contraseña ascendente, es decir, máquina 1 - administrador - admin01., máquina 2 - administrador - admin02., máquina 3 - administrador - admin03. Si se vulnera o compromete una máquina, no hay que ser un Albert (Einstein) para entender la relación de credenciales. En definitiva es un problema complejo. Una de las soluciones más utilizadas credenciales administrativas distintas por departamento, con un responsable sobre esa credencial.

Pero, ¿Qué es la impersonalización? Supongamos que un posible atacante vulnera una máquina y adquiere la contraseña administrativa, es decir, la crackea. Este atacante podría acceder tanto local como remotamente a otras máquinas con las credenciales de administrador. Esto ha generado que los administradores endurezcan sus credenciales, las típicas de "mi contraseña es irrompible porque tiene muchos caracteres". Cierto es que crackear una contraseña alfanumérica de muchos caracteres puede llevarnos mucho tiempo, pero ¿y si no hiciera falta?

Es posible que estemos pensando lo mismo, no hace falta crackear una contraseña para acceder a un sistema de manera remota. Realizaremos un proceso de impersonalización de las credenciales utilizadas por un sistema. El objetivo es conseguir suplantar en local las credenciales con las que estamos logueados en la máquina. Las credenciales están en memoria, recordemos que la contraseña nunca está en plano y si en formato hash. Las credenciales son almacenadas en el proceso LSASS.EXE, este proceso se encarga de administrar la autenticación de dominios de autoridad de seguridad local y directorio activo. Nosotros queremos sustituir las credenciales en memoria por las que nos interesa, ya que disponemos de un usuario y un hash.

En el proceso de inicio de sesión interactivo, el proceso WINLOGON.EXE es el encargado de interceptar el proceso de validación del teclado. Este proceso le devuelve al proceso LSA el procedimiento de validación. Cuando se valida al usuario se produce la invocación de LSALogonUser para autenticar en la base de datos SAM (local o remota), permitiendo crear la sesión si se autenticó correctamente. Esta información será utilizada por LAN Manager y otros servicios cuanto el usuario intente acceder a recursos remotos, objetos locales y al utilizar sus privilegios.

La impersonalización persigue la manipulación de estos datos para ser otro usuario en el sistema y poder acceder a recursos locales o recursos remotos que no podían ser accesibles anteriormente. Un objetivo en una auditoría es conseguir hashes para poder suplantar la identidad de otro usuario. Por ejemplo, disponemos de un usuario en una máquina A y obtenemos los usuarios A, B y C de esta misma máquina con sus respectivo hashes. Para acceder a recursos de la máquina B, en la cual no se encuentra el usuario nuestro, pero sí los usuarios A,B y/o C nos valdría suplantar las credenciales en memoria mediante esta técnica. Es interesante obtener el hash de un administrador porque podremos utilizar recursos como C$, admin$, etc. Por otro lado, también podremos utilizar las PSTools de Sysinternals para ejecutar procesos en remoto, por ejemplo, una shell.

Tras este artículo contando la teoría, en el siguiente nos meteremos de lleno con la práctica de la impersonalización en sistemas Windows, con herramientas como pwdump, windows credential editor, el antiguo pass the hash, o la técnica del sticky keys, sethc.exe.

 

=========================================================

Impersonalización (Parte I de II)

- Impersonalización (Parte II de II)

=========================================================

Esta información será utilizada por LAN Manager y otros servicios cuanto el usuario intente acceder a recursos remotos, objetos locales y al utilizar sus privilegios.

7 comentarios:

  1. Excelente explicacion, ansioso estoy de la segunda parte...

    ResponderEliminar
  2. Grande Pablete!. Deberiamos hacer una encuesta anónima para ver cuántas empresas tienen la misma contraseña de administrador en todas sus máquinas :)

    ResponderEliminar
  3. [...] Enlace: http://www.flu-project.com/impersonalizacion-parte-i-de-ii.html [...]

    ResponderEliminar
  4. [...] de un equipo Windows, para ello necesita permisos de debug (para el proceso LSASS, os suena de Pass The Hash [...]

    ResponderEliminar
  5. [...] Por úlitmo, si hemos hecho un proceso de recopilación de hashes son run hashdump, podriamos utilizar el hash de administrador local por si acaso es el mismo en la otra máquina, o si hacemos un run post/windows/gather/smart_hashdump podemos sacar hashes de usuarios de dominio si estuviéramos en un DC. Otra opción es subir un WCE 1.3 o Mimikatz para sacar pass en claro del proceso LSASS.EXE… hay muchas opciones… Imaginemos que tenemos la clave o impersonalizamos el hash. [...]

    ResponderEliminar
  6. [...] ataques PtH o Pass The Hash permiten utilizar el robo de credenciales, ya sea mediante el uso de la contraseña obtenida o el [...]

    ResponderEliminar