
Injetor de DLL do Windows 10 via Driver utilizando VAD e ocultando o driver carregado
Driver DLL Injector Descrição
O Driver DLL Injector é uma ferramenta poderosa que permite aos usuários carregar drivers de sua escolha usando o mapper de sua preferência. Ao aproveitar os recursos de um carregador de drivers não assinados, como o KDmapper, este injetor foi construído e testado em processos do Windows 10 2004 x64
O driver hooka uma função segura do Patch Guard conhecida como xKdEnumerateDebuggingDevices para comunicação com o nosso processo usermode. Esse método é altamente detectado em anticheats populares, então vamos um passo além e prendemos uma thread do usermode no kernel para comunicar, restaurando o endereço das funções originais e, portanto, contornando as verificações de integridade de funções.
O driver faz o seguinte para ocultar os rastros deixados para trás:
Manipulação de VAD: O driver aloca estrategicamente memória atrás da "thread stack" utilizando funções não documentadas do Virtual Address Descriptor (VAD), como MiInsertChange e MiAllocVad, que não são amplamente conhecidas. Assim que o VAD é alocado e a DLL é carregada com sucesso, o driver removerá o VAD da árvore de VADs.
Manipulação de PTE: Para contornar verificações do NtQueryVirtualMemory, o driver manipula as Page Table Entries (PTEs) para tornar executáveis as páginas alocadas pelo VAD. Ao modificar as PTEs, o driver garante que o VAD não seja atualizado com o bit executável (X) ativado, contornando possíveis restrições.
Limpeza da PiDDBCacheTable, MmUnloadedDrivers (Lista de Buckets de Hash).
Dependendo de qual mapper manual você usa para o driver, você também terá que levar em conta grandes pools.
O processo usermode utiliza o overlay do Discord para chamar a função main da nossa DLL.
O processo usermode faz o seguinte:
Para usar o Driver DLL Injector, siga estes passos:
1. Escolha e instale um mapper compatível, como o KDmapper.
2. Compile ou construa o projeto Driver DLL Injector.
3. Carregue o driver usando o mapper selecionado
4. Inicie o aplicativo de teste (com o overlay do Discord ativado)
5. Inicie o aplicativo usermode e aguarde a caixa de mensagem "Hello World".
Ao criar este projeto, houve vários bloqueios pelo caminho. Alguns deles foram:
/sdl-, /GS- e a biblioteca de runtime para /MT corrigiu meus problemas com crashes.KMODE_EXCEPTION, corrigindo isso ao definir a propriedade do driver /GS-.ModMap - por mostrar a manipulação de VAD
SkCrypt - pela criptografia
Stealthy Kernel Mode Injector - pela base do driver
Poseidon - por prender uma thread no kernel
FACE INJECTOR - pelo shellcode