
Utility per driver kernel di Windows che sfrutta driver firmati vulnerabili (BYOVD) per aggirare DSE, caricare driver non firmati, dirottare processi protetti ed eseguire il dump della memoria dei processi.
Lo scopo di questo strumento è fornire un modo semplice per esplorare il kernel e i componenti di Windows senza richiedere una configurazione complessa o un debugger locale. Include:
Esempio:
Eseguito su Windows 11 24H2*
Eseguito su Windows 10 20H2*
Compilato ed eseguito su Windows 8.1*
Eseguito su Windows 7 SP1 completamente aggiornato (versione precompilata)*
Eseguito su Windows 10 19H2 (versione precompilata, SecureBoot abilitato)*
A causa del modo insolito di caricamento che non coinvolge il loader standard del kernel, ma utilizza la sovrascrittura di moduli già caricati con shellcode, esistono alcune limitazioni:
Ciò significa che non è possibile utilizzare i parametri specificati nel proprio DriverEntry poiché non saranno validi. Significa anche che non è possibile caricare qualsiasi driver ma solo quelli progettati appositamente, oppure è necessario modificare le routine dello shellcode.
Non esiste codice SEH in x64. Al suo posto c'è una tabella di regioni try/except/finally descritta da un puntatore nell'header PE. Se si verifica un'eccezione, può causare un BSOD.
Il codice mappato non può scaricare se stesso; tuttavia, è possibile rilasciare tutte le risorse allocate dal codice mappato. DRIVER_OBJECT->DriverUnload dovrebbe essere impostato a NULL.
Se il vostro progetto necessita di un'altra dipendenza da modulo, dovete riscrivere questa parte del loader.
A causa del modo insolito di caricamento, il driver mappato non sarà all'interno di PsLoadedModulesList. Ciò significa che qualsiasi callback registrata da tale codice avrà il suo handler situato in memoria al di fuori di questa lista. PatchGuard potrebbe rilevarlo e causare un crash del sistema.
In generale, se volete sapere cosa non dovreste fare nel kernel, consultate https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo che contiene alcuni esempi di cose proibite.
Questo strumento non modifica (e non modificherà in futuro) le strutture interne di Windows MmUnloadedDrivers e/o PiDDBCacheTable. Questo perché:
Lo usate a vostro rischio. Alcuni AV pigri potrebbero segnalare questo strumento come hacktool/malware.
Elenco completo con tutti i metadati disponibili qui:
Altri provider potrebbero essere aggiunti in futuro.
Utilizza driver noti come vulnerabili (o wormhole by design) da software legittimo per accedere a memoria arbitraria del kernel con primitive di lettura/scrittura.
A seconda del comando, KDU funzionerà come TDL/DSEFix oppure modificherà gli oggetti processo in modalità kernel (EPROCESS).
In modalità -map, KDU per la maggior parte dei provider disponibili utilizzerà per impostazione predefinita un driver firmato di terze parti da SysInternals Process Explorer e lo dirotterà inserendo un piccolo shellcode loader all'interno della sua routine IRP_MJ_DEVICE_CONTROL.