
Utilitário de driver de kernel do Windows que abusa de drivers assinados vulneráveis (BYOVD) para contornar o DSE, carregar drivers não assinados, sequestrar processos protegidos e despejar a memória de processos.
O propósito desta ferramenta é fornecer uma maneira simples de explorar o kernel/componentes do Windows sem exigir configuração extensa ou um depurador local. Ela apresenta:
Exemplo:
Executado no Windows 11 24H2*
Executado no Windows 10 20H2*
Compilado e executado no Windows 8.1*
Executado no Windows 7 SP1 totalmente atualizado (versão pré-compilada)*
Executado no Windows 10 19H2 (versão pré-compilada, SecureBoot habilitado)*
Devido à forma incomum de carregamento que não envolve o carregador de kernel padrão, mas usa a sobrescrita de módulos já carregados com shellcode, existem algumas limitações:
Isso significa que você não pode usar parâmetros especificados no seu DriverEntry, pois eles não serão válidos. Isso também significa que você não pode carregar qualquer driver, mas apenas os especialmente projetados, ou você precisa alterar as rotinas do shellcode.
Não há código SEH no x64. Em vez disso, você tem uma tabela de regiões try/except/finally descrita por um ponteiro no cabeçalho PE. Se houver uma exceção, isso pode resultar em um BSOD.
O código mapeado não pode se descarregar; no entanto, você pode liberar todos os recursos alocados pelo seu código mapeado. DRIVER_OBJECT->DriverUnload deve ser definido como NULL.
Se o seu projeto precisar de outra dependência de módulo, você deve reescrever esta parte do carregador.
Devido à forma incomum de carregamento, o driver mapeado não estará dentro de PsLoadedModulesList. Isso significa que qualquer callback registrado por tal código terá seu handler localizado na memória fora desta lista. O PatchGuard pode detectar isso e travar o sistema.
Em geral, se você quer saber o que você não deve fazer no kernel, veja https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo que contém alguns exemplos de coisas proibidas.
Esta ferramenta não altera (e não alterará no futuro) as estruturas internas do Windows MmUnloadedDrivers e/ou PiDDBCacheTable. Isso porque:
Você usa por sua conta e risco. Alguns AVs preguiçosos podem sinalizar esta ferramenta como hacktool/malware.
Lista completa incluindo todos os metadados disponíveis aqui:
Mais provedores podem ser adicionados no futuro.
Ele usa drivers conhecidos como vulneráveis (ou wormhole por design) de softwares legítimos para acessar memória arbitrária do kernel com primitivas de leitura/escrita.
Dependendo do comando, o KDU funcionará como TDL/DSEFix ou modificará objetos de processo do modo kernel (EPROCESS).
No modo -map, o KDU para a maioria dos provedores disponíveis usará por padrão um driver assinado de terceiros do SysInternals Process Explorer e o sequestrará colocando um pequeno shellcode carregador dentro de sua rotina IRP_MJ_DEVICE_CONTROL.
O KDU usa shellcode para mapear drivers de entrada e executar seu DriverEntry. Existem algumas variantes de shellcode embutidas no KDU. O Shellcode V1, V2 e V3 são usados em conjunto com um driver vítima de terceiros (Process Explorer, etc.).