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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PhantomCtx — 활성화 컨텍스트 하이재킹 우회 도구 | Kitploit
도구/GitHubGitHub/r3xmax/phantomctx
Privilege EscalationExploitationPost-ExploitationRed TeamingPayload DevelopmentBinary Exploitation
GitHubr3xmax/phantomctx

PhantomCtx

활성화 컨텍스트 하이재킹 우회 도구

저장소 보기
3065283개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PhantomCtx

PhantomCtx는 서명된 실행 파일(예: Microsoft, Adobe, Mozilla)의 대부분에 임의의 DLL을 로드할 목적으로 Activation Context 하이재킹을 자동화하는 도구입니다.

이 로더는 기존의 DLL Hijacking & Sideloading에 대한 현대적인 대안으로 제시됩니다: 기존 접근 방식과 달리 취약한 바이너리가 필요하지 않습니다. 이 기술은 대상 실행 파일이 임포트 주소 테이블(IAT)을 통해 DLL을 확인하거나, 최악의 경우 절대 경로 없이 LoadLibrary를 통해 DLL을 확인하기만 하면 수행할 수 있습니다.```c C:\PhantomCtx\x64>.\PhantomCtx.exe

            +----------------------------------+
            |         PhantomCtx v1.0          |
            +----------------------------------+

Usage: PhantomCtx.exe -m [MODE] [OPTIONS]

Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.

    -m spawn        Perform Activation Context Hijacking using an on-disk executable
                    (preferably a signed binary for OPSEC purposes).

    -m runtime      Perform Activation Context Hijacking on an already running process.
내부적으로 어떻게 동작하고 공격적인 EDR 솔루션을 어떻게 우회하는지 자세히 알아보려면 [제 기술 블로그](https://rexmax.dev/posts/phantomctx-new-approach-to-activation-context-hijacking-for-edr-evasion/)의 게시물을 확인하세요.

# 목차

- [내부 메커니즘](#internal-mechanism)
  - [EDR 우회를 위한 활성화 컨텍스트 하이재킹의 새로운 방법](#a-new-method-for-activation-context-hijacking-focused-on-edr-evasion)
- [컴파일 방법](#how-to-compile)
- [사용법: 모듈 기반 워크플로우](#usage-module-based-workflow)
  - [Recon](#recon)
  - [Spawn (권장)](#spawn-recommended)
  - [Runtime](#runtime)
- [예제: 활성화 컨텍스트 하이재킹 + mpnotify.exe DLL 프록시](#example-activation-context-hijacking--dll-proxying-mpnotifyexe)
- [면책 조항](#disclaimer)
- [참고 자료](#references)

# 내부 메커니즘

`PhantomCtx`는 대부분의 프로세스에 존재하는 **합법적인** Windows 기능인 **활성화 컨텍스트(Activation Contexts)** 를 악용합니다. Microsoft에 따르면:

>[_활성화 컨텍스트_](https://learn.microsoft.com/en-us/windows/win32/sbscs/a-sbscs-gly)는 시스템이 애플리케이션을 **특정 DLL 버전을 로드하도록**, COM 개체 인스턴스 또는 사용자 지정 창 버전으로 리디렉션하는 데 사용할 수 있는 정보를 포함하는 메모리 내 데이터 구조입니다...

Windows Loader가 DLL(`LoadLibrary` 또는 임포트 테이블을 통해)을 해석할 때 정의된 해석 순서를 따릅니다:

1. DLL 리디렉션
2. API 세트
3. **SxS 매니페스트 리디렉션**
4. 로드된 모듈 목록
5. 알려진 DLL
6. 프로세스 패키지 종속성 그래프  
7 – 12. 디스크의 표준 파일 검색 순서

`PhantomCtx`는 3단계, 즉 **SxS 매니페스트 리디렉션**을 대상으로 합니다. 활성화 컨텍스트는 실행 파일과 연결된 [Side-by-Side](https://en.wikipedia.org/wiki/Side-by-side_assembly) (`.manifest`) 파일에서 파생되며, 일반적으로 PE 바이너리에 포함됩니다. 내부적으로 활성화 컨텍스트에는 **DLL 리디렉션 섹션**을 포함한 여러 섹션을 인덱싱하는 **목차(ToC)** 가 포함되어 있습니다. Loader는 일반적으로 `PEB.ActivationContextData`를 통해 활성화 컨텍스트에 액세스합니다.

[Kurosh Dabbagh Escalante](https://github.com/Kudaes)의 연구에 따르면 악성 활성화 컨텍스트는 `CreateActCtxW`를 사용하여 생성하고 대상 프로세스의 `RW` 메모리에 기록한 다음, `PEB.ActivationContextData`를 덮어써서 조작된 구조를 가리키도록 하여 활성화할 수 있습니다.

하이재킹되면 로더는 악성 활성화 컨텍스트 내에 정의된 DLL 리디렉션을 해석하여, **라이브러리 해석을** 공격자가 통제하는 경로로 **리디렉션**합니다.

그의 연구의 일환으로 개발된 `Eclipse`라는 이름의 로더는 [공식 저장소](https://github.com/Kudaes/Eclipse)에서 확인할 수 있습니다.

## EDR 우회를 위한 활성화 컨텍스트 하이재킹의 새로운 방법

여러 테스트 후 `Eclipse`는 Elastic과 같은 공격적인 EDR에 다음 지점에서 탐지되었습니다:

- `Potential Suspended Process Code Injection`: 일시 중단된 프로세스 생성 후 `NtWriteVirtualMemory`를 사용해 AC 블롭을 원격 프로세스에 복사하는 것.
- `Remote Process Memory Write by Low Reputation Module`: 호출 스택에 `CreateProcess`가 없는 `NtWriteVirtualMemory`와 평판이 낮은 모듈로, `PEB.ActivationContextData`를 덮어쓰는 데 필요합니다.
- `Remote Memory Write to Trusted Target Process`: 호출 스택에 `CreateProcess`가 없는 `WriteProcessMemory`, 시스템/사용자 설치 바이너리로 제한됩니다.

`PhantomCtx`에 구현할 대안을 찾기 위한 하루 간의 연구 끝에, **원래 활성화 컨텍스트의 메모리 영역은 프로세스 생성 중에 매핑된 섹션 뷰(section view)** 라는 것을 발견했습니다. **`NtUnmapViewOfSection`을 사용하여 이 섹션 뷰를 매핑 해제**한 다음, 악성 활성화 컨텍스트를 기반으로 하는 새로운 읽기 전용 섹션 뷰를 생성하여 원래 섹션이 있던 **정확히 동일한 메모리 주소**에 매핑할 수 있습니다.

그 결과, 로더가 `PEB.ActivationContextData` 포인터를 덮어쓸 필요가 **더 이상 없습니다**. 이로 인해 `NtAllocateVirtualMemory`와 `NtWriteVirtualMemory`를 사용할 필요가 사라지며, 원격 프로세스 메모리 쓰기 및 인젝션과 관련된 모든 EDR 모니터링 규칙을 우회합니다.

또한 탐지 난이도를 높이기 위해 `PhantomCtx`는 `CreateActCtxW`를 사용하지 않으므로 공격 중 `.manifest` 파일을 처리할 필요가 없습니다. 선택한 모드에 따라 `NtReadVirtualMemory`를 사용하여 유효한 DLL 리디렉션 섹션이 포함된 **다른 원격 프로세스에서 활성화 컨텍스트를 탈취**하고, DLL 리디렉션 항목을 로컬에서 재구성한 다음 패치하고 원본을 교체할 수 있습니다.

# 컴파일 방법

이 도구를 컴파일하려면 Visual Studio 또는 호환 가능한 컴파일러를 사용하는 것이 좋습니다.

VS를 사용하는 경우 `x64 Native Tools Command Prompt for VS`를 열고 프로젝트 루트 디렉터리로 이동한 다음 `compile.bat`으로 컴파일합니다:```
C:\PhantomCtx>.\compile.bat
[INFO] Created output directory: x64
[INFO] Compiling PhantomCtx...
main.c
utils.c
recon.c
actctx.c
c_runtime.c
dynamic_resolution.c
process_utils.c
spawn.c
runtime.c
Generating Code...
[SUCCESSFUL] Build successful: x64\PhantomCtx.exe

사용법: 모듈 기반 워크플로우

이 도구는 모듈식 아키텍처로 설계되어 개발을 단순화하면서 운영자에게 명확한 단계별 워크플로우를 제공합니다.

각 모듈은 익스플로잇 워크플로우 내에서 특정 역할을 수행합니다.

도구의 모든 기능을 최대한 활용하려면 각 모듈의 용도를 잠시 검토하시기 바랍니다!!!

공격은 생성될 프로세스(권장) 또는 이미 실행 중인 프로세스를 대상으로 수행할 수 있습니다. 이 도구는 두 시나리오를 모두 처리하도록 설계되었습니다.```c C:\PhantomCtx\x64>.\PhantomCtx.exe

            +----------------------------------+
            |         PhantomCtx v1.0          |
            +----------------------------------+

Usage: PhantomCtx.exe -m [MODE] [OPTIONS]

Modes: -m recon Displays information about the Activation Context DLL redirections of a running process or one to be spawned.

    -m spawn        Perform Activation Context Hijacking using an on-disk executable
                    (preferably a signed binary for OPSEC purposes).

    -m runtime      Perform Activation Context Hijacking on an already running process.
## Recon

`recon` 모드는 대상 프로그램 또는 실행 중인 프로세스의 활성화 컨텍스트(Activation Context)를 파싱하는 데 중점을 둡니다. 악용 워크플로우에서 어떤 악용 하위 모듈을 사용할지 결정하므로 가장 먼저 실행해야 하는 모듈입니다.```c
C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -h

                +----------------------------------+
                |         PhantomCtx v1.0          |
                +----------------------------------+

  Usage:
        PhantomCtx.exe -m recon -s [SUBMODE] -p [PROCESS_NAME|PATH]

  Submodes:
        -s spawn        Spawn a process in suspended mode to retrieve its
                        Activation Context DLL redirection information.

        -s runtime      Attach to a currently running process to retrieve its
                        Activation Context DLL redirection information.

  Examples:
        PhantomCtx.exe -m recon -s spawn   -p C:\path\to\target.exe
        PhantomCtx.exe -m recon -s runtime -p target.exe

예를 들어, 서명된 Microsoft 바이너리 mpnotify.exe를 사용합니다. 첫 번째 단계는 DLL 리디렉션 섹션이 포함된 유효한 Activation Context가 포함되어 있는지 확인하는 것입니다.

포함되어 있지 않은 경우, 도구는 유효한 리디렉션 섹션을 포함하는 다른 프로세스에서 Activation Context를 검색하는 spawn 또는 runtime 모드의 steal-context 하위 모듈을 권장합니다.```c C:\PhantomCtx\x64>.\PhantomCtx.exe -m recon -s spawn -p "C:\Windows\System32\mpnotify.exe" [SUCCESS] Suspended process created... [SUCCESS] Activation Context Data Blob copied to local heap buffer @00000294CEA79CD0 (916 bytes)

+-[ ACTIVATION CONTEXT DATA ] | Magic : 0x78746341 (Actx) | HeaderSize : 0x20 (32 bytes) | FormatVersion : 1 | TotalSize : 0x394 (916 bytes) | Flags : 0x00000000 | +--[ TOC ] 6 entries | [00] Id=1 Format=1 Offset=0x00D4 Length=0x0218 | [01] Id=4 Format=2 Offset=0x02EC Length=0x0028 | [02] Id=5 Format=2 Offset=0x0314 Length=0x0028 | [03] Id=6 Format=2 Offset=0x033C Length=0x0028 | [04] Id=9 Format=2 Offset=0x0364 Length=0x0028 | [05] Id=11 Format=1 Offset=0x038C Length=0x0008 | +--[ DLL REDIRECTION ] not present in this blob | +--[ HINT ] Use 'steal-context' to steal the Activation Context from a running process that has one. Example: -m spawn|runtime -s steal-context -p -d --dll-path --steal-from

대상 프로그램 또는 프로세스의 Activation Context에 유효한 DLL 리디렉션 섹션이 포함된 경우, 가장 효율적인 방법은 `spawn` 또는 `runtime` 악용 모드 내의 `add-entry` 또는 `patch-entry` 하위 모듈을 사용하는 것입니다.

## Spawn (권장)
도구 다운로드