Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DLLHijackHunter — 자동화된 DLL 하이재킹 발견, 검증 및 확인. 로컬 구성 오류를 무기화되고 확인된 공격 경로로 전환합니다. | Kitploit
도구/GitHubGitHub/ghostvectoracademy/dllhijackhunter
Privilege EscalationVulnerability ScannersPayload GenerationPersistence MechanismsDynamic Code Analysis (DAST)ExploitationLateral MovementPenetration TestingBinary AnalysisLearning & EducationRed Teaming
39644174일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
ghostvectoracademy/dllhijackhunter

DLLHijackHunter

자동화된 DLL 하이재킹 발견, 검증 및 확인. 로컬 구성 오류를 무기화되고 확인된 공격 경로로 전환합니다.

저장소 보기

DLLHijackHunter

By ProjectMerai

자동화된 DLL 하이재킹 탐지, 검증 및 확인
로컬 구성 오류를 무기화된 확인된 공격 경로로 전환.


개요

DLLHijackHunter는 정적 분석을 넘어서는 자동화된 Windows DLL 하이재킹 탐지 도구입니다. 다단계 파이프라인을 통해 DLL 하이재킹 기회를 발견, 검증, 확인합니다:

  1. 발견(Discovery) — 서비스, 예약 작업, 시작 항목, COM 개체 및 AutoElevate UAC 우회 벡터 전반의 바이너리를 열거합니다
  2. 필터링(Filtration) — 지능형 하드 및 소프트 게이트를 통해 오탐(false positive)을 제거합니다
  3. 카나리 확인(Canary Confirmation) — 무해한 카나리 DLL을 배포하고 바이너리를 트리거하여 하이재킹이 실제로 작동함을 증명합니다
  4. 점수 산정 및 보고(Scoring & Reporting) — 계층화된 신뢰도 시스템으로 악용 가능성에 따라 결과를 순위화합니다

대부분의 DLL 하이재킹 도구는 "이 DLL이 하이재킹될 수 있을지도 모른다"에서 멈춥니다. DLLHijackHunter는 이를 검증하고, 알려진 악용 인텔리전스와 교차 참조하며, 가능한 경우 실제 실행 경로를 확인하려고 시도합니다.


아키텍처

root@kitploit:~
flowchart TB
    subgraph Phase1["Phase 1: Discovery"]
        SE["Static Engine<br/>Services, Tasks, Startup,<br/>COM, Run Keys"]
        AE["AutoElevate Engine<br/>Manifest + COM UAC Bypass"]
        PE["PE Analyzer<br/>Import Tables, Delay Loads,<br/>Manifests, Exports"]
        ETW["ETW Engine<br/>Real-time DLL Load<br/>Monitoring"]
        SO["Search Order<br/>Calculator"]
    end

    subgraph Phase2["Phase 2: Filter Pipeline"]
        direction LR
        HG["Hard Gates<br/>(Binary Kill)"]
        SG["Soft Gates<br/>(Confidence Adj.)"]
    end

    subgraph Phase3["Phase 3: Load Verification (--verify-load)"]
        LP["LoadProbe<br/>Child-process loader test<br/>Probe DLL placed &amp; removed"]
    end

    subgraph Phase4["Phase 4: Canary"]
        CB["Canary DLL Builder"]
        TE["Trigger Executor"]
        VF["Verification"]
    end

    subgraph Phase5["Phase 5: Output"]
        SC["Tiered Scorer"]
        RC["Console Report"]
        RJ["JSON Report"]
        RH["HTML Report"]
    end

    SE --> PE --> SO
    AE --> PE
    ETW --> SO
    SO --> Phase2
    HG --> SG
    Phase2 --> Phase3
    Phase3 --> Phase4
    CB --> TE --> VF
    Phase4 --> Phase5

주요 기능

하이재킹 유형 범위

IFEO Debugger 항목은 열거되고 참조된 바이너리는 DLL 가져오기에 대해 분석되지만, 전용 IFEO/KnownDLL-우회 하이재킹 유형은 없습니다 — 이러한 항목은 독립형 탐지로 광고되지 않습니다.

UAC 우회 발견

DLLHijackHunter에는 전용 UAC 우회 발견 기능이 포함되어 있습니다:

  • Manifest AutoElevate — 포함된 매니페스트에서 <autoElevate>true</autoElevate>가 있는 EXE를 위해 System32 및 SysWOW64를 스캔합니다
  • COM AutoElevation — Elevation\Enabled=1이 있는 COM 개체를 위해 HKLM\SOFTWARE\Classes\CLSID를 스캔합니다
  • Side-Load 시뮬레이션 — SetDllDirectory 또는 SetDefaultDllDirectories를 호출하지 않는 AutoElevate 바이너리의 경우 "EXE를 쓰기 가능한 폴더에 복사 + DLL 드롭" 공격 경로를 시뮬레이션합니다

대상 취약점 지식 베이스

  • 대상 취약점 매핑 — 발견된 가져오기를 번들된 HijackLibs 데이터셋 스냅샷(약 590개의 문서화된 DLL 항목, 약 700개의 취약한 실행 파일 포함)과 교차 참조하며, Resources/hijacklibs.json으로 포함됩니다. 일치하면 신뢰도가 높아지고 발견 항목이 해당 HijackLibs 참조 페이지에 연결됩니다. 일치하지 않는다고 해서 의미가 없는 것은 아닙니다. 데이터셋은 데이터 기반입니다 — https://hijacklibs.net/api/hijacklibs.json을 해당 리소스 위에 다시 다운로드하여 새로 고칠 수 있습니다(코드 변경 불필요). 데이터셋 © HijackLibs 프로젝트 및 기여자.
  • 자동화된 PATH 악용 — 쓰기 가능한 PATH 폴더를 평가하고 누락된 DLL에 대해 PATH를 검색하는 것으로 알려진 선별된 기본 Windows 서비스 맵에 대한 하이재킹 후보를 생성합니다
  • 확장된 phantom DLL 헌팅 — 여러 범주에 걸쳐 고가치 phantom DLL 기회 라이브러리를 검색합니다

필터 파이프라인

파이프라인은 두 단계를 통해 오탐(false positive)을 줄입니다:

하드 게이트(Hard Gates)

  • API 세트 스키마 필터링 (api-ms-*, ext-ms-*)
  • KnownDLL 필터링
  • 공격자 기준 ACL 쓰기 가능성 검증 — 경로는 권한 없는 주체(Users / Authenticated Users / Everyone, 그리고 LOCAL SERVICE/NETWORK SERVICE와 같은 누출 방지 하위 관리자 서비스 계정)가 유효한 쓰기 권한을 가진 경우에만 쓰기 가능한 것으로 간주됩니다. 중요하게도, 이는 도구가 실행되는 토큰과 독립적으로 계산되므로, 상승된 권한으로 실행해도 System32/Program Files가 쓰기 가능해 보이지 않습니다. 이것이 LPE 트리아지에서 상승된 실행을 의미 있게 만드는 이유입니다.

소프트 게이트(Soft Gates)

  • WinSxS 매니페스트 페널티
  • 권한 델타 분석
  • LoadLibraryEx 완화 검사
  • 서명 검증 검사
  • 우아한 오류 처리 페널티

카나리 확인

추측 대신, DLLHijackHunter는 하이재킹이 실제로 작동함을 증명하려고 시도합니다:

root@kitploit:~
sequenceDiagram
    participant H as DLLHijackHunter
    participant B as Canary DLL Builder
    participant T as Trigger Executor
    participant V as Victim Binary

    H->>B: Build canary DLL
    B->>B: Extract precompiled canary<br/>(or compile a proxy with MSVC)
    B-->>H: canary.dll + confirmation file path
    H->>H: Place DLL at hijack path
    H->>T: Trigger binary execution
    T->>V: Start service / run task / COM activate
    V->>V: Loads canary DLL
    V-->>H: Writes confirmation file<br/>PID, privilege, integrity level
    H->>H: Record: CONFIRMED
    H->>H: Cleanup canary DLL

카나리 DLL:

  • x64 및 x86 모두 사전 컴파일되어 스캐너에 내장되므로, 스캔 시점에 컴파일러가 필요하지 않습니다. 올바른 아키텍처가 피해자의 비트 수와 일치하도록 선택되어 요청 시 추출됩니다.
  • 자체 위치 확인: 런타임 시 자체 로드된 모듈 경로(%ProgramData%\DLLHijackHunter\canary_<hash>.confirm)에서 확인 파일 경로를 파생하므로, 하나의 바이너리가 모든 후보에 사용됩니다. 스캐너는 배포 경로에서 동일한 해시를 계산하고 해당 파일을 폴링합니다.
  • 파일 기반 확인 메커니즘을 사용합니다
  • 사용자, 무결성 수준, 권한 표시자와 같은 실행 메타데이터를 캡처합니다
  • 악성 페이로드를 포함하지 않으며, 엄격히 탐지 및 검증 메커니즘입니다
  • CRT를 정적으로 링크하므로 피해자 호스트에 런타임 종속성(ucrtbase/vcruntime)이 없습니다

번들된 바이너리는 src/DLLHijackHunter/Resources/canary_src.c의 감사 가능한 소스에서 빌드되며 Resources/build_canary.bat로 재생성할 수 있습니다(MSVC C++ 툴체인 필요, 스캐너는 필요 없음).

기능 프록시 예외: 검색 순서 하이재킹이 존재하고 내보내기를 노출하는 DLL을 대상으로 할 때, 확인 후 호스트를 유지하려면 내보내기 전달 프록시가 필요하며, 이는 MSVC(cl.exe, vswhere/vcvarsall을 통해 위치 확인)로 DLL별로 컴파일됩니다. 툴체인이 없으면 사전 컴파일된 카나리가 대신 사용됩니다 — 여전히 로드를 확인(DllMain 실행)하지만 내보내기를 전달하지 않으므로, 확인이 기록된 후 호스트 프로세스가 충돌할 수 있습니다. Phantom-DLL 및 기타 내보내기 없는 후보는 컴파일러가 전혀 필요하지 않습니다.

서명: 내장된 카나리는 서명되지 않았습니다. 코드 서명(더 엄격한 정책에서 로드되고 귀속 가능하도록)에는 서명 인증서가 필요하며 유지 관리자를 위한 릴리스 시점 단계로 남겨집니다.

프록시/내보내기 전달 모드에 대한 중요 참고 사항

프록시/내보내기 전달 카나리는 실험적이며 최선의 노력(best-effort) 입니다. 일부 대상은 다음에 따라 올바르게 로드되지 않거나 예기치 않게 동작할 수 있습니다:

  • 서수 전용 내보내기
  • 데코레이션된 내보내기 이름
  • 호출 규약 불일치
  • 대상 프로세스의 로더/런타임 가정

즉, 실패한 프록시 카나리가 항상 기본 하이재킹 경로가 불가능하다는 것을 의미하지는 않습니다.


로드 순서 검증 (--verify-load)

필터 파이프라인과 카나리 단계 사이에 위치한 옵트인(opt-in), 표준 사용자 검증입니다. 각 적용 가능한 후보에 대해 쓰기 가능한 하이재킹 위치에 무해한 프로브 DLL을 잠시 기록한 다음, 수명이 짧은 자식 프로세스에서 실제 Windows 로더에 DLL을 이름으로 해석하도록 요청합니다. 로더가 해석하는 위치에 따라 판정이 결정됩니다:

  • 검증된 승리(Verified win) — 로더가 쓰기 가능한 위치를 선택합니다. 검색 순서 주장이 증명됩니다(이 확인을 통해 발견 항목이 High 계층에 도달할 수 있습니다. 카나리 실행만 Confirmed로 가는 유일한 경로입니다).
  • 보호된 항목에 패배(Loses to protected) — 로더가 KnownDLL, System32 복사본 또는 SxS 리디렉션 복사본을 대신 선택합니다. 해당 위치는 거의 확실히 하이재킹 불가능하므로 후보는 크게 강등됩니다. 이는 정적 검색 순서 계산기가 놓치는 전형적인 오탐을 포착합니다(예: KnownDLLs가 악용 불가능하게 만드는 ntdll.dll에 대한 .local/검색 순서 "발견").

설계 및 안전 참고 사항:

  • 자식 프로세스에서 실행되므로 이미 스캐너에 로드된 이름이 결과를 단락시킬 수 없고, 로드 부작용이나 충돌이 격리됩니다. 상승된 권한이 필요하지 않습니다.
  • 각 프로브는 배치, 해석, 그리고 제거됩니다. 기존 파일은 백업되고 복원됩니다.
  • 최신 LOAD_LIBRARY_SEARCH 순서를 모델링하므로 Phantom / Search-Order / Side-Load 후보에만 적용됩니다. .local, PATH 및 AppInit/AppCert 후보는 다른 메커니즘을 사용하며 Skipped로 보고됩니다.
  • 후보 위치에 파일을 일시적으로 기록합니다(중간 영향). 완전히 수동적인 읽기 전용 트리아지에는 끄십시오.
root@kitploit:~
# 로더 검증 검색 순서를 사용한 표준 사용자 트리아지 (카나리 없음, ETW 없음)
.\DLLHijackHunter.exe --lpe-only --no-canary --no-etw --verify-load

비교

¹ 사전 컴파일된 이중 아키텍처 카나리가 내장되어 있어 로드를 확인하는 데 **컴파일러가 필요하지 않습니다**. 내보내기 소비 호스트를 유지하기 위한 선택적 내보내기 전달 *프록시*만 MSVC가 필요합니다.
² 공격자 기준 ACL 쓰기 가능성(필터 파이프라인 참조)을 통해. 오탐을 줄이지만 제거하지는 않습니다. 소프트 게이트 휴리스틱(매니페스트/SxS/LoadLibraryEx)은 여전히 불확실성을 내포합니다. 검증되지 않은 정적 발견은 이제 **High** 계층 아래로 제한됩니다.
³ 자동 시작 상태에서 파생되며, 검증된 재부팅 테스트가 아닙니다.
⁴ 내보내기 전달 프록시는 실험적/최선의 노력입니다(위 참고 참조).
⁵ 서비스/작업/COM 트리거만 해당. UAC 우회 발견은 카나리 트리거되지 않습니다.
⁶ 번들된 HijackLibs 데이터셋 스냅샷(약 590개 항목)으로 지원되며, hijacklibs.net에서 새로 고칠 수 있습니다.

사용법

사전 요구 사항

  • Windows 10/11 또는 Windows Server 2016+
  • .NET 8.0 또는 10.0 런타임 (또는 자체 포함 빌드 사용)
  • 관리자 권한 권장 (ETW, 카나리 배포 및 일부 서비스 트리거에 필요)

빌드

root@kitploit:~
git clone https://github.com/ghostvectoracademy/DLLHijackHunter.git
cd DLLHijackHunter

# 빌드 (자체 포함 단일 파일)
dotnet publish src/DLLHijackHunter/DLLHijackHunter.csproj `
    -c Release -r win-x64 --self-contained `
    -p:PublishSingleFile=true -o ./publish

# 또는 빌드 스크립트 사용
.\build.ps1

빠른 시작

root@kitploit:~
# 전체 공격적 스캔 (권장, 관리자 필요)
.\DLLHijackHunter.exe --profile aggressive

# 안전 스캔 (파일 드롭 없음, 트리거 없음)
.\DLLHijackHunter.exe --profile safe

# UAC 우회 집중 스캔
.\DLLHijackHunter.exe --profile uac-bypass

# 특정 바이너리 대상
.\DLLHijackHunter.exe --target "C:\Program Files\MyApp\app.exe"

# 파일 이름으로 대상 지정 (부분 일치)
.\DLLHijackHunter.exe --target notepad.exe

# 확인된 발견만
.\DLLHijackHunter.exe --profile redteam --format json -o report.json

CLI 옵션

root@kitploit:~
DLLHijackHunter — 자동화된 DLL 하이재킹 탐지

옵션:
  -p, --profile <profile>        스캔 프로필 [기본값: aggressive]
                                   aggressive | strict | safe | redteam | uac-bypass
  -o, --output <path>            출력 파일 경로 (형식 자동 감지)
  -f, --format <format>          출력 형식 [기본값: console]
                                   console | json | html
  -t, --target <target>          특정 바이너리, 디렉터리 또는 파일 이름 대상 지정
      --min-confidence <value>   최소 신뢰도 임계값 0-100. 생략 시 각 프로필의
                                   자체 임계값이 적용됩니다. 전달 시 이를 재정의합니다.
      --no-canary                카나리 확인 비활성화
      --no-etw                   ETW 런타임 발견 비활성화
      --verify-load              실제 로더로 검색 순서 검증 (아래 참조).
                                   표준 사용자. 무해한 프로브를 일시적으로 기록합니다.
      --confirmed-only           카나리 확인된 발견만 표시
      --lpe-only                 엄격한 LPE 헌팅: System32/Program Files 무시, 표준
                                   사용자 쓰기 가능 취약점만 표시
      --log-file <path>          진단 스캔 로그를 파일에 기록
  -v, --verbose                  자세한 출력

참고: --min-confidence는 명시적으로 전달할 때만 재정의로 처리됩니다. 그렇지 않으면 선택된 프로필의 임계값이 사용됩니다(예: safe = 50%, strict = 80%).

스캔 프로필


점수 산정

각 발견 항목은 최종 우선순위 계층으로 결합되는 신뢰도 및 영향 신호를 받습니다.

일반적인 영향 고려 사항:

  • 획득한 권한
  • 트리거 신뢰성
  • 은밀성
  • 재부팅 지속성

확인된 카나리 실행은 가장 강력한 검증 신호로 취급되어야 합니다.

계층 게이팅: High 및 Confirmed 계층은 증명 신호(실행된 카나리, ETW 런타임 로드 관찰 또는 문서화된 지식 베이스 일치)로 뒷받침되는 발견을 위해 예약됩니다. 순수 정적 검색 순서 일치는 아무리 깨끗해도 Medium 계층 상단으로 제한되고 Static-only로 주석 처리되어 검증되지 않은 휴리스틱이 높은 신뢰도로 제시되지 않습니다.

권장 트리아지 구성

쓰기 가능성이 공격자 기준으로 평가되므로 상승된 실행과 표준 사용자 실행 모두 의미가 있습니다:

  • LPE 트리아지의 경우 가장 신뢰할 수 있는 구성은 --lpe-only를 사용한 표준 사용자 실행입니다(컴파일러를 사용할 수 없는 경우 --no-canary 포함) — 살아남은 모든 발견은 권한 없는 주체가 실제로 쓸 수 있습니다.
  • 상승된 실행은 ETW 및 카나리 확인에 필요하며, 이제 "System32의 모든 것이 쓰기 가능해 보이는" 역사적 역전에서 안전합니다.

안전

DLLHijackHunter는 승인된 환경에서 방어적 보안 연구, 랩 검증, 감사 및 레드팀 시뮬레이션을 위해 설계되었습니다.

소유하거나 명시적으로 평가 권한이 부여된 시스템 및 네트워크에서만 사용하십시오.

운영 참고 사항

  • 카나리 모드는 후보 위치에 테스트 DLL을 기록합니다
  • 일부 트리거는 검증 중에 서비스/작업을 잠시 시작하거나 중지할 수 있습니다
  • 프록시/내보내기 전달 카나리는 취약한 대상을 불안정하게 만들 수 있습니다
  • 파일 드롭과 트리거가 허용되지 않는 프로덕션 트리아지에는 safe 프로필이 선호되는 모드입니다

출력

DLLHijackHunter는 다음을 지원합니다:

  • 콘솔 보고
  • JSON 내보내기
  • HTML 내보내기

권장 워크플로:

  1. 광범위한 스캔 실행
  2. 고신뢰도 발견 검토
  3. 고가치 경로에 선택적으로 카나리 확인 사용
  4. 보고 및 트리아지를 위해 JSON/HTML 출력 보존

라이선스

MIT


크레딧

ProjectMerai 제작.

도구 다운로드
유형설명은밀성상태
PhantomDLL이 디스크 어디에도 존재하지 않음높음구현됨
Search OrderWindows 검색 순서에서 더 앞쪽에 DLL 배치높음구현됨
Side-Loading합법적인 앱이 자체 디렉터리에서 DLL을 로드하는 것 악용높음구현됨 (AutoElevate 복사-임시 경로)
.local Redirect.local 디렉터리 리디렉션을 통한 하이재킹높음구현됨
ENV PATH시스템 PATH의 쓰기 가능한 디렉터리 무기화높음구현됨 (선별된 서비스/DLL 맵)
AppInit DLLsAppInit_DLLs 레지스트리 악용낮음구현됨
AppCert DLLsAppCertDLLs 레지스트리 악용 (모든 CreateProcess/WinExec 호출자에 로드됨)낮음구현됨
CWD현재 작업 디렉터리 하이재킹낮음계획됨 — 현재 어떤 발견 경로에서도 생성되지 않음
기능DLLHijackHunterRobberDLLSpyWinPEASProcmon
자동화된 발견✅✅✅✅❌
Phantom DLL 탐지✅❌✅❌✅
검색 순서 분석✅❌❌❌❌
ACL 기반 쓰기 가능성 검사✅부분적❌기본❌
ETW 실시간 모니터링✅❌❌❌✅
카나리 확인✅¹❌❌❌❌
권한 상승 검사✅❌❌❌❌
UAC 우회 발견✅❌❌❌❌
오탐 감소✅²없음기본없음없음
재부팅 지속성 검사✅³❌❌❌❌
프록시 DLL 생성✅⁴❌❌❌❌
신뢰도 점수 산정✅❌❌❌❌
자동 트리거 (svc/task/COM)✅⁵❌❌❌❌
HTML/JSON 보고✅❌❌TXT❌
위협 인텔리전스 연관✅⁶❌❌❌❌
자동화된 PATH 악용✅❌❌❌❌
대상별 스캔✅❌❌❌✅
자체 포함 바이너리✅❌❌✅❌
프로필사용 사례카나리ETWUAC 우회최소 신뢰도트리거
aggressive전체 감사, 랩 환경✅✅✅15%서비스, 작업, COM
strict고신뢰도 발견만✅✅❌80%서비스, 작업
safe프로덕션 시스템, 읽기 전용❌❌❌50%없음
redteam확인된 악용 가능만✅✅❌50%서비스, 작업, COM
uac-bypassUAC 우회 벡터만❌❌✅20%AutoElevate만