nullmap
Un mapper de pilote manuel très simple basé sur mon ancien voidmap et le POC de CVE-2023-21768 par chompie et b33f. Étant donné que la primitive de lecture/écriture mémoire sous-jacente basée sur IoRing ne gère pas très bien les lectures et écritures consécutives, j'ai décidé d'écraser CR4 pour désactiver SMEP/SMAP afin d'exécuter le pilote mappé en mode utilisateur. Testé sur Windows 11 22H2 (22621.525).
Utilisation :
nullmap.exe <chemin_vers_le_pilote>
Problèmes possibles :
- Le pilote mappé manuellement sera dans un pool alloué par ExAllocatePool. Si vous souhaitez l'utiliser pour quelque chose de plus sérieux, envisagez une meilleure méthode d'allocation mémoire pour qu'il ne puisse pas être vidé aussi facilement.
- Il n'existe pas de moyen simple de lire la valeur CR4 d'origine, j'ai donc dû coder en dur la valeur présente sur mon système. Bien qu'elle devrait être la même pour la plupart des CPU modernes, vous devriez tout de même vérifier que la valeur est correcte.
- J'ai codé en dur l'offset vers NtGdiGetEmbUFI car il n'y a pas de moyen simple de le sigscan, ce qui signifie que vous devrez mettre à jour cet offset pour votre version spécifique de Windows.
- Il a été écrit en un après-midi, ce n'est peut-être pas le code le plus propre.
Vidéo :
