
Outil d'injection DLL pour déverrouiller les machines virtuelles invitées
V M I n j e c t o r
(c) 2012 par Marco Batista
<marco.batista [at] secforce.com>
Sous licence GPLv3 (voir le fichier LICENSE)
VMInjector est un outil conçu pour contourner les écrans d'authentification de connexion des principaux systèmes d'exploitation exécutés sur VMware Workstation/Player, en utilisant la manipulation directe de la mémoire.
VMInjector est un outil qui manipule la mémoire des invités VMware afin de contourner l'écran d'authentification du système d'exploitation. VMware gère les ressources allouées aux systèmes d'exploitation invités, y compris la mémoire RAM. VMInjector injecte une bibliothèque DLL dans le processus VMware pour accéder aux ressources mappées. La bibliothèque DLL fonctionne en analysant l'espace mémoire appartenant au processus VMware et en localisant le fichier RAM mappé en mémoire, qui correspond à l'image RAM de l'invité. En manipulant le fichier RAM alloué et en corrigeant la fonction responsable de l'authentification, un attaquant obtient un accès non autorisé à l'hôte virtuel sous-jacent. VMInjector peut actuellement contourner les systèmes d'exploitation verrouillés Windows, Ubuntu et Mac OS X. Le patch en mémoire n'est pas persistant, et un redémarrage de la machine virtuelle invitée restaurera la fonctionnalité normale du mot de passe.
VMInjector peut être utilisé si le mot de passe d'un hôte virtuel est oublié et nécessite une réinitialisation. Le plus souvent, cet outil peut être utilisé lors d'activités de tests d'intrusion, lorsqu'un accès à un hôte VMWare est obtenu et que l'attaquant cherche à obtenir un accès supplémentaire aux invités exécutés sur cet hôte.
Machine Windows (avec accès administrateur) ; VMware Workstation ou édition Player ; Une machine virtuelle invitée verrouillée ;
VMInjector se compose de 2 parties : L'application d'injection DLL (script python ou exécutable converti fourni) Bibliothèque DLL (x86 et x64)
L'outil prend en charge à la fois les architectures x86 et x64 en fournissant les deux DLL. On peut utiliser son propre injecteur DLL pour sélectionner la machine virtuelle invitée exécutée sur l'hôte.
Afin d'exécuter l'outil, exécutez l'exécutable VMInjector (32 ou 64) fourni depuis la ligne de commande. VMWare exécute chaque invité dans un processus différent. VMInjector doit être pointé vers le processus exécutant l'invité qui nécessite un contournement. Une fois que l'utilisateur choisit un processus, il injecte la DLL dans la cible choisie. Une fois la DLL injectée, l'utilisateur devra spécifier l'OS, afin que le patch en mémoire puisse être effectué.
Cet outil est réservé à des fins légales. Le code est publié sous licence GPLv3.
Je tiens à remercier Michael Ligh pour ses précieuses recherches sur l'injection de shellcode dans les machines virtuelles invitées en 2006.
Je tiens également à remercier Carsten Maartmann-Moe pour son travail sur Inception, un outil qui peut déverrouiller des machines Windows, Ubuntu et OS X verrouillées en utilisant l'astuce IEEE 1394 FireWire. Cela a été présenté pour la première fois par l'outil (désormais obsolète) winlockpwn.