🔑Atacando a LSASS
Además de obtener copias de la base de datos SAM para volcar y descifrar hashes, también nos beneficiaremos al apuntar a LSASS, que es un servicio crítico que desempeña un papel central en la gestión de credenciales y los procesos de autenticación en todos los sistemas operativos Windows.
Al iniciar sesión por primera vez, LSASS:
Cachea las credenciales locales en memoria
Crea tokens de acceso
Hace cumplir las políticas de seguridad
Escribeen el registro de seguridad de Windows
Cubramos algunas de las técnicas y herramientas que podemos usar para volcar la memoria LSASS y extraer credenciales de un host que ejecuta Windows.
Dump de la memoria del proceso LSASS
De manera similar al proceso de atacar la base de datos SAM, con LSASS, sería prudente que primero creemos una copia del contenido de la memoria del proceso LSASS mediante la generación de un volcado de memoria. La creación de un archivo de volcado nos permite extraer credenciales sin conexión utilizando nuestro host de ataque. Tenga en cuenta que realizar ataques fuera de línea nos brinda más flexibilidad en la velocidad de nuestro ataque y requiere menos tiempo dedicado al sistema objetivo. Existen innumerables métodos que podemos utilizar para crear un volcado de memoria. Cubramos las técnicas que se pueden realizar utilizando herramientas ya integradas en Windows.
Método del administrador de tareas
Con acceso a una sesión gráfica interactiva con el objetivo, podemos usar el administrador de tareas para crear un volcado de memoria. Esto requiere que:
Abra el Administrador de tareas
> Seleccione la pestaña Procesos
> Busque y haga clic con el botón derecho en el Local Security Authority Process
> Seleccione Crear archivo de volcado
Se crea y guarda un archivo llamado lsass.DMP
en:
Este es el archivo que transferiremos a nuestra máquina de atacante. Podemos utilizar el método de transferencia de archivos que se analiza en la sección Atacando a SAM de este módulo para transferir el archivo de volcado a nuestra máquina de atacante.
Método Rundll32.exe y Comsvcs.dll
El método del Administrador de tareas depende de que tengamos una sesión interactiva basada en GUI con un objetivo. Podemos utilizar un método alternativo para volcar la memoria del proceso LSASS a través de una utilidad de línea de comandos llamada rundll32.exe . Esta forma es más rápida que el método del Administrador de tareas y más flexible porque podemos obtener una sesión de shell en un host de Windows con solo acceso a la línea de comando. Es importante tener en cuenta que las herramientas antivirus modernas reconocen este método como actividad maliciosa.
Antes de emitir el comando para crear el archivo de volcado, debemos determinar a qué ID de proceso ( PID
) está asignado lsass.exe
. Esto se puede hacer desde cmd o PowerShell:
Encontrar LSASS PID en cmd
Desde cmd, podemos emitir el comando tasklist /svc
y encontrar lsass.exe y su ID de proceso en el campo PID.
Encontrar LSASS PID en PowerShell
Desde PowerShell, podemos emitir el comando Get-Process lsass
y ver el ID del proceso en el campo Id
.
Una vez que tengamos el PID asignado al proceso LSASS, podemos crear el archivo de volcado.
Creando lsass.dmp usando PowerShell
Con una sesión de administrador de PowerShell, podemos ejecutar el siguiente comando para crear el archivo de volcado:
Con este comando, estamos ejecutando rundll32.exe
para llamar a una función exportada de comsvcs.dll
la cual también llama a la función MiniDumpWriteDump ( MiniDump
) para volcar la memoria del proceso LSASS a un directorio específico ( C:\lsass.dmp
). Recuerde que la mayoría de las herramientas antivirus modernas reconocen esto como malicioso e impiden que se ejecute el comando. En estos casos, necesitaremos considerar formas de evitar o desactivar la herramienta AV a la que nos enfrentamos. Las técnicas de derivación AV están fuera del alcance de este módulo.
Si logramos ejecutar este comando y generar el archivo lsass.dmp
, podemos proceder a transferir el archivo a nuestra caja de ataque para intentar extraer las credenciales que puedan haber estado almacenadas en la memoria del proceso LSASS.
Nota: Podemos utilizar el método de transferencia de archivos que se analiza en la sección Atacar a SAM para obtener el archivo lsass.dmp del objetivo a nuestro host de ataque.
Usando Pypykatz para extraer credenciales
Una vez que tengamos el archivo de volcado en nuestro host de ataque, podemos usar una poderosa herramienta llamada pypykatz para intentar extraer las credenciales del archivo .dmp. Pypykatz es una implementación de Mimikatz escrita íntegramente en Python. El hecho de que esté escrito en Python nos permite ejecutarlo en hosts de ataque basados en Linux. Al momento de escribir este artículo, Mimikatz solo se ejecuta en sistemas Windows, por lo que para usarlo, necesitaríamos usar un host de ataque de Windows o ejecutar Mimikatz directamente en el objetivo, lo cual no es un escenario ideal. Esto hace que Pypykatz sea una alternativa atractiva porque todo lo que necesitamos es una copia del archivo de volcado y podemos ejecutarlo sin conexión desde nuestro host de ataque basado en Linux.
Recuerde que LSASS almacena las credenciales que tienen sesiones de inicio de sesión activas en sistemas Windows. Cuando volcamos la memoria del proceso LSASS en el archivo, esencialmente tomamos una "instantánea" de lo que había en la memoria en ese momento. Si hubo sesiones de inicio de sesión activas, las credenciales utilizadas para establecerlas estarán presentes. Vamos a ejecutar Pypykatz contra el archivo de volcado para averiguarlo.
Ejecutando Pypykatz
El comando inicia el uso de pypykatz
para analizar los secretos ocultos en el volcado de memoria del proceso LSASS. Usamos lsa
en el comando porque LSASS es un subsistema de local security authority
, luego especificamos la fuente de datos como un archivo minidump
, seguido por la ruta al archivo de volcado ( /home/kali/Documents/lsass.dmp
) almacenado en nuestro host de ataque. Pypykatz analiza el archivo de volcado y genera los resultados:
Echemos un vistazo más detallado a parte de la información útil del resultado.
MSV
MSV es un paquete de autenticación en Windows al que LSA recurre para validar los intentos de inicio de sesión en la base de datos SAM. Pypykatz extrajo los hashes SID
, Username
, Domain
e incluso NT
& SHA1
contraseña asociados con la sesión de inicio de sesión de la cuenta de usuario bob almacenada en la memoria del proceso LSASS. Esto resultará útil en la etapa final de nuestro ataque que se cubre al final de esta sección.
WDIGEST
WDIGEST
es un protocolo de autenticación más antiguo habilitado de forma predeterminada en Windows XP
- Windows 8
y Windows Server 2003
- Windows Server 2012
. LSASS almacena en caché las credenciales utilizadas por WDIGEST en texto sin cifrar. Esto significa que si nos encontramos apuntando a un sistema Windows con WDIGEST habilitado, lo más probable es que veamos una contraseña en texto sin cifrar. Los sistemas operativos Windows modernos tienen WDIGEST desactivado de forma predeterminada. Además, es fundamental tener en cuenta que Microsoft lanzó una actualización de seguridad para los sistemas afectados por este problema con WDIGEST. Podemos estudiar los detalles de esa actualización de seguridad aquí .
Kerberos
Kerberos es un protocolo de autenticación de red utilizado por Active Directory en entornos de dominio de Windows. Las cuentas de usuario del dominio reciben tickets tras la autenticación con Active Directory. Este ticket se utiliza para permitir que el usuario acceda a recursos compartidos en la red a la que se le ha otorgado acceso sin necesidad de escribir sus credenciales cada vez. LSASS caches passwords
, ekeys
, tickets
y pins
asociado con Kerberos. Es posible extraerlos de la memoria del proceso LSASS y utilizarlos para acceder a otros sistemas unidos al mismo dominio.
DPAPI
La interfaz de programación de aplicaciones de protección de datos o DPAPI es un conjunto de API en los sistemas operativos Windows que se utilizan para cifrar y descifrar blobs de datos DPAPI por usuario para las funciones del sistema operativo Windows y varias aplicaciones de terceros. Estos son solo algunos ejemplos de aplicaciones que usan DPAPI y para qué lo usan:
Aplicaciones | Uso de DPAPI |
| Datos de autocompletado del formulario de contraseña (nombre de usuario y contraseña para sitios guardados). |
| Datos de autocompletado del formulario de contraseña (nombre de usuario y contraseña para sitios guardados). |
| Contraseñas para cuentas de correo electrónico. |
| Credenciales guardadas para conexiones a máquinas remotas. |
| Credenciales guardadas para acceder a recursos compartidos, unirse a redes inalámbricas, VPN y más. |
Mimikatz y Pypykatz pueden extraer el DPAPI masterkey
del usuario que inició sesión cuyos datos están presentes en la memoria del proceso LSASS. Esta clave maestra luego se puede usar para descifrar los secretos asociados con cada una de las aplicaciones usando DPAPI y dar como resultado la captura de credenciales para varias cuentas. Las técnicas de ataque DPAPI se tratan con mayor detalle en el módulo Escalada de privilegios de Windows .
Descifrando el NT Hash con Hashcat
Ahora podemos usar Hashcat para descifrar NT Hash. En este ejemplo, solo encontramos un hash NT asociado con el usuario Bob, lo que significa que no necesitaremos crear una lista de hashes como lo hicimos en la Attacking SAM
sección de este módulo. Después de configurar el modo en el comando, podemos pegar el hash, especificar una lista de palabras y luego descifrar el hash.
Nuestro intento de descifrado se completa y nuestro ataque general puede considerarse un éxito.
Última actualización