How to determine if a process is a PP(L)?

Bypass a LSA Protection con Mimikatz

17/11/2009

Valoración: 4.49 (2468 votos)

En el complejo universo de la seguridad informática, existe un constante juego del gato y el ratón entre los defensores de sistemas y aquellos que buscan vulnerarlos. Uno de los tesoros más codiciados dentro de un sistema Windows son las credenciales de usuario, las cuales residen en la memoria de un proceso crítico llamado LSASS. Para proteger este tesoro, Microsoft implementó una formidable barrera conocida como LSA Protection. Sin embargo, toda fortaleza tiene sus puntos débiles. En este artículo, exploraremos en profundidad cómo herramientas como el legendario Mimikatz logran eludir esta protección para acceder a los secretos que guarda LSASS, un conocimiento fundamental tanto para profesionales de la ciberseguridad ofensiva como defensiva.

What is protected process Light (PPL)?
This feature is based on the Protected Process Light (PPL) technology which is a defense-in-depth security feature that is designed to “prevent non-administrative non-PPL processes from accessing or tampering with code and data in a PPL process via open process functions”.
Índice de Contenido

¿Qué es LSASS y la Protección PPL?

Antes de sumergirnos en las técnicas de bypass, es crucial entender a nuestros protagonistas. LSASS, o Local Security Authority Subsystem Service, es el corazón de la seguridad en Windows. Este proceso es responsable de gestionar la política de seguridad del sistema, manejar los inicios de sesión de los usuarios, crear tokens de acceso y, lo más importante para nuestro tema, almacenar en su memoria las credenciales (en diversos formatos, como hashes NTLM o incluso contraseñas en texto plano bajo ciertas configuraciones) de los usuarios que han iniciado sesión.

Debido a su naturaleza crítica, LSASS se convirtió en el objetivo principal de los atacantes que buscaban escalar privilegios o moverse lateralmente en una red. Herramientas como Mimikatz hicieron trivial el acto de "dumpear" o volcar la memoria de LSASS para extraer estas credenciales. Como respuesta, a partir de Windows 8.1, Microsoft introdujo la LSA Protection.

How can I prevent pplkiller & ppldump?
Use Credential Guard which uses virtualization-based security. This would prevent PPLKiller and PPLdump. Use a Microsoft Defender Application Control kernel-mode code integrity policy to restrict which drivers can be loaded. The tool PPLdump, which can disable LSA Protection without loading a driver, could still be used.

Esta protección se basa en una tecnología llamada Protected Process Light (PPL). Cuando LSA Protection está habilitada, el proceso LSASS se marca como un PPL. Esto impone una restricción a nivel de sistema operativo que impide que procesos no protegidos (o con un nivel de protección inferior) puedan interactuar con él, ni siquiera para leer su memoria. Esta medida es tan estricta que incluso un usuario con privilegios de Administrador o SYSTEM no puede acceder directamente a LSASS, frustrando así los intentos convencionales de herramientas de credential dumping.

El Intento Fallido: Mimikatz Contra un LSASS Protegido

Para ilustrar la efectividad de PPL, veamos qué sucede cuando un usuario intenta ejecutar Mimikatz en un sistema con LSA Protection activa. Típicamente, el atacante o pentester abriría una consola con privilegios elevados y ejecutaría los siguientes comandos:

mimikatz # privilege::debug mimikatz # sekurlsa::logonpasswords

En un sistema sin protección, esto mostraría una lista de las credenciales almacenadas. Sin embargo, con PPL habilitado, el resultado es una rotunda negativa, generalmente acompañada de un mensaje de error como:

ERROR kuhl_m_sekurlsa_acquireLSA ; LogonPasswords (0x00000005)

El código de error 0x00000005 se traduce como "Acceso Denegado". Es el sistema operativo haciendo su trabajo, bloqueando el intento de Mimikatz de abrir un handle (un puntero de acceso) al proceso LSASS. Aquí es donde comienza el verdadero desafío y donde las técnicas más avanzadas entran en juego.

How to disable PPL protection for LSASS using Mimikatz?
Mimikatz can load the mimidrv.sys driver with the !+ command Once the driver is loaded, we can use it to disable the PPL protection for LSASS through the !processprotect command. PPLKiller (Protected Process Light Killer) is a tool that is typically used to bypass or disable Protected Process Light (PPL) protection on Windows systems.

El Método Kernel: Usando un Driver para Desarmar la Protección

La clave para entender el bypass más común y efectivo es saber que la protección PPL es una restricción impuesta en el "user-mode" (modo usuario), la capa donde se ejecutan la mayoría de las aplicaciones. Sin embargo, el núcleo del sistema operativo, el kernel, opera a un nivel superior de privilegio y no está sujeto a estas restricciones. Si un atacante puede ejecutar código en el kernel, puede modificar las estructuras de datos internas del sistema operativo que definen si un proceso está protegido o no.

Mimikatz viene preparado para esta eventualidad. Incluye un driver legítimamente firmado llamado mimidrv.sys. Este driver actúa como un agente en el kernel, permitiendo que la aplicación Mimikatz (en modo usuario) le envíe comandos para realizar acciones privilegiadas.

Paso a Paso para Deshabilitar PPL con Mimidrv.sys

  1. Obtener Privilegios: Es necesario ejecutar Mimikatz desde una consola con privilegios de Administrador.
  2. Cargar el Driver: El primer paso dentro de Mimikatz es cargar su driver. El archivo mimidrv.sys debe estar en el mismo directorio que mimikatz.exe.
    mimikatz # !+

    Este comando instala y carga el servicio del driver, dándole a Mimikatz su "puerta de entrada" al kernel.

  3. Remover la Protección de LSASS: Una vez que el driver está activo, se puede enviar un comando específico para que busque el proceso LSASS y elimine su bandera de protección PPL a nivel de kernel.
    mimikatz # !processprotect /process:lsass.exe /remove

    El driver localizará la estructura EPROCESS correspondiente a LSASS en la memoria del kernel y pondrá a cero los bits que definen su nivel de protección. Para el sistema operativo, LSASS se convierte instantáneamente en un proceso normal y desprotegido.

  4. Extraer las Credenciales: Con la protección eliminada, el comando que antes fallaba ahora funcionará a la perfección.
    mimikatz # sekurlsa::logonpasswords

    ¡Éxito! Las credenciales ahora son accesibles.

Este método es extremadamente poderoso porque ataca la raíz misma del mecanismo de protección. Otros métodos, como el conocido Bring Your Own Vulnerable Driver (BYOVD), utilizan este mismo principio, aprovechando drivers de terceros (a menudo de hardware legítimo como MSI Afterburner) que exponen funciones de lectura/escritura de memoria del kernel para lograr el mismo objetivo.

How to dump LSASS Despite PPL?
Bypass PPL protections options: If you want to dump LSASS despite PPL, you have 3 main options: Bring Your Own Vulnerable Driver (BYOVD) to run custom kernel code and disable the protection. Tools like PPLKiller, gdrv-loader, or kdmapper make this feasible.

Tabla Comparativa de Métodos de Bypass

Existen varias formas de abordar la protección PPL, cada una con sus propias características. Aquí tienes una comparación simplificada:

MétodoRequisito PrincipalVentajaDesventaja
Modificación de RegistroPrivilegios de Admin, RebootSimple y directoRequiere reinicio, lo que elimina las credenciales en memoria. Muy ruidoso.
Driver de Mimikatz (mimidrv.sys)Privilegios de AdminEfectivo, no requiere reinicio, integrado en la herramienta.Cargar un driver es una actividad sospechosa y detectada por soluciones EDR.
BYOVD (ej. PPLKiller)Privilegios de AdminUsa un driver legítimo y firmado, lo que puede eludir algunas defensas básicas.La explotación de drivers vulnerables es una técnica conocida y monitorizada.
DLL Hijacking (ej. PPLdump)Privilegios de Admin, explotación de vulnerabilidad específicaOpera en modo usuario, más sigiloso que cargar un driver.Depende de vulnerabilidades que Microsoft parchea activamente.

¿Cómo Habilitar y Verificar la Protección LSA?

Para los defensores, es vital asegurarse de que esta protección esté activa. Hay dos formas principales de hacerlo:

1. A través del Editor de Registro

  1. Abre el Editor de Registro (regedit.exe).
  2. Navega a la clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa.
  3. Busca un valor DWORD (32-bit) llamado RunAsPPL. Si no existe, créalo.
  4. Establece su valor en 1.
  5. Reinicia el equipo para que los cambios surtan efecto.

2. A través de la Línea de Comandos

Puedes verificar el estado actual con este comando:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL

Si el comando devuelve que el valor no existe o está en 0, la protección está deshabilitada. Si devuelve 0x1, está habilitada.

Preguntas Frecuentes (FAQ)

¿Es ilegal realizar estas acciones?

El uso de estas técnicas es legal en entornos controlados para fines educativos, investigación de seguridad o pruebas de penetración autorizadas (ethical hacking). Utilizarlas en sistemas para los que no tienes permiso explícito es ilegal y puede tener graves consecuencias legales.

How to bypass PPL protections and execute arbitrary code?
This time, security researcher Gabriel Landau developed a new approach to bypass PPL protections and execute arbitrary code. At a high level, this technique involves forcing a PPL to page fault which is then followed by a time-of-check-time-of-use (TOCTOU) issue to force a PPL to load the exploit code.

¿Mi antivirus detectará Mimikatz?

Sí, casi con total seguridad. Mimikatz es la herramienta de post-explotación más famosa del mundo. Cualquier solución antivirus o EDR (Endpoint Detection and Response) moderna la detectará y bloqueará de inmediato. Los atacantes reales utilizan versiones ofuscadas o técnicas alternativas para evitar la detección.

¿Significa esto que la protección PPL es inútil?

¡Absolutamente no! La protección PPL es un excelente ejemplo de "defensa en profundidad". Eleva significativamente el listón para un atacante. Les obliga a pasar de un simple comando a tener que ejecutar código a nivel de kernel, una acción mucho más compleja, ruidosa y fácil de detectar para las herramientas de seguridad avanzadas. Obliga al adversario a mostrar sus cartas más poderosas.

How to disable PPL protection for LSASS using Mimikatz?
Mimikatz can load the mimidrv.sys driver with the !+ command Once the driver is loaded, we can use it to disable the PPL protection for LSASS through the !processprotect command. PPLKiller (Protected Process Light Killer) is a tool that is typically used to bypass or disable Protected Process Light (PPL) protection on Windows systems.

¿Qué es Credential Guard y cómo se compara?

Credential Guard es una capa de protección aún más fuerte, disponible en ediciones Enterprise de Windows. Utiliza seguridad basada en virtualización (VBS) para aislar completamente el proceso LSASS en un contenedor de memoria al que ni siquiera el kernel del sistema operativo principal puede acceder. Es la evolución de PPL y ofrece una protección mucho más robusta contra este tipo de ataques.

Conclusión

Deshabilitar la protección LSA de LSASS es un claro ejemplo de la batalla técnica que se libra en el campo de la ciberseguridad. Mientras que Microsoft construye defensas cada vez más sofisticadas como PPL, la comunidad de seguridad (tanto atacantes como investigadores) encuentra formas creativas de eludirlas. El método del driver de Mimikatz es una demostración clásica de que, en la arquitectura de Windows, quien controla el kernel, lo controla todo. Comprender estos mecanismos no solo es fascinante desde un punto de vista técnico, sino que es esencial para construir defensas más resilientes y para saber qué buscar cuando se cazan amenazas avanzadas en una red.

Si quieres conocer otros artículos parecidos a Bypass a LSA Protection con Mimikatz puedes visitar la categoría Juegos.

Subir