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
396442개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

DLLHijackHunter

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

저장소 보기

DLLHijackHunter

제작: GhostVector Academy

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


개요

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

  1. 발견(Discovery) — 서비스, 예약 작업, 시작 항목, COM 개체 및 AutoElevate UAC 우회 벡터에 걸쳐 바이너리를 열거합니다.
  2. 필터링(Filtration) — 지능형 하드 및 소프트 게이트를 통해 거짓 양성을 제거합니다.
  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: Canary"]
        CB["Canary DLL Builder"]
        TE["Trigger Executor"]
        VF["Verification"]
    end

    subgraph Phase4["Phase 4: 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
    CB --> TE --> VF
    Phase3 --> Phase4

주요 기능

하이재킹 유형 범위

IFEO Debugger 항목이 열거되고 참조된 바이너리가 DLL 임포트에 대해 분석되지만, 전용 IFEO/KnownDLL 우회 하이재킹 유형은 없습니다. 이들은 독립적인 탐지로 광고되지 않습니다.

UAC 우회 발견

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

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

표적 취약점 지식 베이스

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

필터 파이프라인

파이프라인은 두 단계를 통해 거짓 양성을 줄입니다:

하드 게이트(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: 카나리 DLL 빌드
    B->>B: 사전 컴파일된 카나리 추출<br/>(또는 MSVC로 프록시 컴파일)
    B-->>H: canary.dll + 확인 파일 경로
    H->>H: 하이재킹 경로에 DLL 배치
    H->>T: 바이너리 실행 트리거
    T->>V: 서비스 시작 / 작업 실행 / COM 활성화
    V->>V: 카나리 DLL 로드
    V-->>H: 확인 파일 작성<br/>PID, 권한, 무결성 수준
    H->>H: 기록: CONFIRMED
    H->>H: 카나리 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 리디렉션 복사본을 대신 선택합니다. 해당 위치는 거의 확실히 하이재킹 불가능하므로 후보가 크게 강등됩니다. 이것은 정적 검색 순서 계산기가 놓치는 전형적인 거짓 양성(예: KnownDLL이 악용 불가능하게 만드는 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 런타임 (또는 자체 포함 빌드 사용)
  • 관리자 권한 권장 (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


크레딧

GhostVector Academy 제작.

도구 다운로드
유형설명은밀성상태
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만