Pass-The-Hash 0-100 PrivEsc Active Directory

Share it!

En este post demostraremos e intentaremos explicar la técnica de escalada de privilegios Pass-The-Hash, la cual nos permite inyectarnos «on the fly» los credenciales en memoria de cualquier usuario logueado en un entorno de Active Directory.

Para ello se ha establecido el siguiente escenario de prueba:

 

  • Windows XP atacante ( sin credenciales de Active Directory )
  • Windows XP vulnerable «Yo tengo un XP, te lo llevo al partido si te hace falta» ( logueado como administrador en Active Directory )
  • BackTrack5 + Metasploit

Lo primero que un atacante realizaría para escalar privilegios sería encontrar en su segmento de red un SO Windows vulnerable a una ejecución remota de código ( RCE ), la cual nos permite mediante desbordamiento de memoria sobre el sistema afectado la ejecución de un payload en este caso meterpreter para obtener acceso completo al sistema.

Para ello utilizaremos nmap y su completa suite de scripts incluidos por defecto, de la siguiente manera:

  • nmap -sV -O –script=smb-check-vulns 192.168.1.0/24

 

 

Podemos observar como ha identificado el host 192.168.1.43 como vulnerable a MS08_067. Una vez identificado, utilizaremos metasploit para explotar la vulnerabilidad y acceder al sistema.

 

En el vídeo de la demostración, se puede observar como el primer Windows XP que aparece en escena está fuera del dominio, y al intentar acceder a los recursos de otro equipo logueado en Active Directory se nos aparece el prompt invitandonos a que insertemos el usuario correspondiente ( el cual desconocemos ).

Una vez que hemos accedido al sistema, puede que éste tenga un antivirus instalado y que no se haya dado cuenta ya que el proceso se inyecta en memoria y no se produce ningún tipo de escritura en el disco duro que es su mayor rango de acción, pasamos rápido a listar los hashes en memoria con el comando hashdump, que accederá al proceso LSASS ( Local Security Authority Subsystem Service ) para mostrar la información que se mantiene en memoria sobre la autenticación de ususarios en el sistema.

La siguiente fase del ataque será inyectar esos hashes en el Windows XP que se encuentra fuera del dominio y queremos cederle los mismos privilegios que el Windows XP víctima, para ello haremos uso de las utilidades de la suite Pass-The-Hash, por Hernán Ochoa de CoreSecurity.

De la suite usaremos varias herramientas:

  • whosthere.exe

Permite listas las credenciales NTLM ( usuario, dominio, hash LM y NTLM ), tanto locales como las que se producen a través de Escritorio Remoto

  • iam.exe

Permiten intercambiar «on the fly» las credenciales que le marquemos, sin necesidad de conocer la contraseña correspondiente y sin necesidad de crackear mediante rainbow tables, como en el anterior post Spoofing NBNS Responses

Lo que hacen estas herramientas es consultar a la libreria LSASRV.DLL y sobrepone los credenciales que le indiquemos, siendo a partir de ese momento una máquina totalmente asociada al dominio, con los mismos accesos a los recursos compartidos, etc.

Un problema que nos podemos encontrar es que whosthere viene preestablecido con unos direccionamientos de memoria a los cuales tiene que acceder que posiblemente no coincidan con la versión de la máquina víctima, por idioma o Service Pack, como se puede comprobar en la siguiente imagen:

 

Can´t find addresses !

 

Para ello deberemos de hacer uso del debugger IDA Pro en la máquina en la que queremos setear los credenciales obtenidos de la víctima, lo abrimos y seleccionamos LSASRV.DLL que se encuentra en C:\Windows\System32\lssarv.dll, como se muestra en la siguiente figura:

 

 

Esa es la información que nos muestra el IDA Pro + un script preparado al efecto por Herán Ochoa y que se encuentra en el source code de su herramienta, llamado passthehash.idc. Hacemos un Load del script  y encontramos la información que estabamos buscando en la parte inferior, como se muestra en la siguiente figura:

 

 

El script sencillamente nos allana el paso hacia las direcciones de memoria siguientes:

  • LsapAddCredential = 75403C18
  • LsaEncryptMemory = 753EFE43
  • g_Feedback@@3_KA = 75480C98
  • g_pDESXKey@@3PAU_desxtable = 75480CA0
  • LogonSessionList@@3U_LIST_ENTRY = 7547FC60
  • LogonSessionListCount@@3KA= 7547FE54

 

Lo que lo convierte en las siguientes direcciones útil para esta versión de Microsoft Windows XP SP3 que utilizaremos con whosthere.exe ->
75403C18:753EFE43:75480C98:75480CA0:7547FC60:7547FE54

 

Vemos como ahora con el direccionamiento correcto whosthere.exe es capaz de apoyarse en la libreria LSASRV.DLL para extraer la información que nos interesa, podemos ver como actualmente estamos logueados como Administrador y no pertenecemos a ningún dominio.

Ahora sólo nos queda ejecutar iam.exe + las direcciones de memoria extraidas + hashes obtenidos del sistema comprometido

 

Listo, ya somos administradores del dominio sin conocer la contraseña del Administrador con el riesgo de seguridad que ello implica.

Para visualizar el proceso completo pueden visitar el siguiente link HD en Vimeo

Share it!
Esta entrada fue publicada en Seguridad Informática. Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>