
Injecteur de DLL pour Windows 10 via un pilote utilisant VAD et dissimulant le pilote chargé
Driver DLL Injector Description
Le Driver DLL Injector est un outil puissant qui permet aux utilisateurs de charger les pilotes de leur choix à l'aide de leur mapper préféré. En exploitant les capacités d'un chargeur de pilotes non signés, tel que KDmapper, cet injecteur a été développé et testé sur des processus Windows 10 2004 x64
Le pilote hooke une fonction sûre protégée par Patch Guard, connue sous le nom de xKdEnumerateDebuggingDevices, pour communiquer avec notre processus en mode utilisateur. Cette méthode est fortement détectée par les anti-cheats populaires, alors nous allons plus loin et piégeons un thread en mode utilisateur dans le noyau pour communiquer, en restaurant l'adresse de la fonction d'origine afin de contourner les contrôles d'intégrité des fonctions.
Le pilote effectue ce qui suit pour masquer les traces laissées derrière lui :
Manipulation de la VAD : Le pilote alloue stratégiquement de la mémoire derrière la "pile de threads" en exploitant des fonctions non documentées de descripteur d'adresse virtuelle (VAD) comme MiInsertChange et MiAllocVad, qui sont peu connues. Une fois la VAD allouée et la DLL chargée avec succès, le pilote supprime la VAD de l'arborescence VAD.
Manipulation des PTE : Pour contourner les contrôles de NtQueryVirtualMemory, le pilote manipule les entrées de table de pages (PTE) afin de rendre exécutables les pages allouées par la VAD. En modifiant les PTE, le pilote s'assure que la VAD ne se met pas à jour avec le bit exécutable (X) activé, contournant ainsi les restrictions potentielles.
Nettoyage de PiDDBCacheTable, MmUnloadedDrivers (liste de compartiments de hachage).
Selon le mapper manuel que vous utilisez pour le pilote, vous devez également prendre en compte les gros pools.
Le processus en mode utilisateur utilise l'overlay de Discord pour appeler la fonction main de notre DLL.
Le processus en mode utilisateur effectue les opérations suivantes :
Pour utiliser le Driver DLL Injector, suivez ces étapes :
1. Choisissez et installez un mapper compatible, tel que KDmapper.
2. Compilez ou construisez le projet Driver DLL Injector.
3. Chargez le pilote à l'aide du mapper sélectionné
4. Lancez l'application de test (avec l'overlay Discord activé)
5. Lancez l'application en mode utilisateur et attendez la boîte de message Hello World.
Lors de la création de ce projet, plusieurs obstacles se sont présentés en cours de route. Parmi ceux-ci :
/sdl-, /GS- et la bibliothèque d'exécution sur /MT a résolu mes problèmes de crash.KMODE_EXCEPTION ; corrigé en définissant la propriété du pilote /GS-.ModMap - pour avoir montré la manipulation de la VAD
SkCrypt - pour le chiffrement
Stealthy Kernel Mode Injector - pour la base du pilote
Poseidon - pour avoir piégé le thread UM dans le monde du noyau
FACE INJECTOR - pour le shellcode