Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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
396443812일 전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는 이를 검증하고, 알려진 악용 인텔리전스와 교차 참조하며, 가능한 경우 실제 실행 경로를 확인하려고 시도합니다.


아키텍처

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

주요 기능

하이재킹 유형 범위

유형설명은밀성상태
PhantomDLL이 디스크 어디에도 존재하지 않음높음구현됨
Search OrderWindows 검색 순서에서 더 앞쪽에 DLL 배치높음구현됨
Side-Loading합법적인 앱이 자체 디렉터리에서 DLL을 로드하는 것 악용높음구현됨 (AutoElevate 복사-임시 경로)
.local Redirect.local 디렉터리 리디렉션을 통한 하이재킹높음구현됨
ENV PATH시스템 PATH의 쓰기 가능한 디렉터리 무기화높음구현됨 (선별된 서비스/DLL 맵)
AppInit DLLsAppInit_DLLs 레지스트리 악용낮음구현됨
AppCert DLLsAppCertDLLs 레지스트리 악용 (모든 CreateProcess/WinExec 호출자에 로드됨)낮음구현됨
CWD현재 작업 디렉터리 하이재킹낮음계획됨 — 현재 어떤 발견 경로에서도 생성되지 않음

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는 하이재킹이 실제로 작동함을 증명하려고 시도합니다:

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/검색 순서 "발견").

설계 및 안전 참고 사항:

도구 다운로드