
DLLirant is a tool to automatize the DLL Hijacking researches on a specified binary.
DLLirant는 지정된 바이너리에 대한 DLL 하이재킹(DLL Hijacking) 및 DLL 프록시(DLL Proxying) 연구를 자동화하는 도구입니다.



원하는 PE 파일을 선택하세요. .exe 파일인 경우 애플리케이션은 현재 DLL 검색 순서 하이재킹(DLL Search Order Hijacking)을 검색하며, DLL 파일을 선택하면 해당 DLL을 프록시할 수 있는 옵션을 제공합니다.
두 번째 옵션의 경우 프록시 DLL의 경로를 지정해야 합니다. 이 경로는 두 가지 방법으로 지정할 수 있습니다:
이름을 사용하는 경우, 선택한 DLL의 이름을 가진 프록시 DLL을 생성하고, 애플리케이션은 선택한(원본) DLL을 복사하여 사용자가 선택한 이름으로 이름을 변경합니다.
경로를 사용하는 경우, 이 옵션은 텍스트 상자에 지정된 DLL에서 내보낸(exported) 함수를 호출하는 프록시 DLL 단일 파일을 생성합니다.
필요하다면 import 디렉터리를 만들고 애플리케이션에 필요한 누락된 DLL 파일을 배치할 수도 있습니다(DLL 파일은 대상 바이너리와 함께 output 디렉터리에 자동으로 복사됩니다).
중요
대상 애플리케이션의 오류 메시지와 관련하여, 오류 메시지를 피하려고 시도했지만 실제로는 불가능합니다. 메시지 박스가 대상 애플리케이션을 통해서가 아니라 csrss.exe를 통해 시스템에 의해 생성되기 때문입니다. 따라서 스레드를 종료하고, 자식 창을 닫고, SetErrorMode 등을 사용해 볼 수는 있지만 작동하지 않을 것입니다.
스크립트는 DLLirant와 같은 디렉터리에 output 디렉터리를 생성하고 대상 바이너리를 output 디렉터리로 복사합니다.
PeNet 라이브러리를 통해 스크립트는 바이너리에 필요한 DLL 이름을 추출하고, 필요한 내보낸(exported) 함수를 포함하는 사용자 지정 DLL을 컴파일하여 사용 가능한 각 가져오기(import) 함수를 하나씩 테스트합니다.
바이너리에 필요한 함수가 실행되면 사용자 지정 DLL이 C:\DLLirant\output.txt 파일을 생성하여 DLL 하이재킹이 가능한지 확인합니다.
DLL 하이재킹의 PoC는 DLLirant/dll-hijacks 디렉터리에도 생성됩니다.