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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
eden — Crystal Palace로 구축된 Cobalt Strike용 PoC UDRL로, Raphael Mudge의 페이지 스트리밍 기법과 모듈형 콜 게이트(Draugr)를 결합합니다. | Kitploit
도구/GitHubGitHub/cobalt-strike/eden
Penetration Testing FrameworksExploit FrameworksShellcodePost-ExploitationLearning & EducationRed TeamingPayload Development
GitHubcobalt-strike/eden

eden

Crystal Palace로 구축된 Cobalt Strike용 PoC UDRL로, Raphael Mudge의 페이지 스트리밍 기법과 모듈형 콜 게이트(Draugr)를 결합합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Eden

그림

Eden 로더는 Crystal Palace로 빌드된 Cobalt Strike용 PoC UDRL로, Raphael Mudge의 페이지 스트리밍 기법과 모듈형 콜게이트(현재 Sleepmask-VS Draugr callgate BOF의 PIC 버전)를 결합합니다.

Eden 로더의 목표는 다음과 같습니다:

  • Crystal Palace를 사용하여 'capabilities'를 결합(및 재사용)함으로써 커스텀 로더/도구를 신속하게 개발할 수 있는 강력함을 입증
  • 다른 사람들이 기반으로 삼을 수 있는 예제 리소스 역할
  • 보안 실무자들이 UDRL의 작동 방식을 이해하도록 지원(완전히 디버깅 가능)
  • 보안 대화에 정보를 제공하고 자극

Eden 로더에 대한 자세한 내용은 관련 블로그를 참조하십시오.

참고: Eden의 목적은 Crystal Palace를 사용하여 서로 다른 '실행 단위'(즉, capabilities)를 결합해 커스텀 로더를 만드는 아이디어를 입증하는 것입니다. 완전한 기능을 갖춘 '회피형' 로더를 의도하지 않으며, 따라서 설계상 여러 기본 OPSEC 기능이 부족합니다. 예를 들어, RWX 메모리를 사용하고 Beacon의 힙 메모리를 추적/마스킹하지 않습니다(따라서 이와 같은 YARA 시그니처에 취약합니다).

빠른 시작 가이드

참고: 이 빠른 시작 가이드는 Crystal Palace를 다운로드/빌드하고 개발 환경 구성을 위해 다음 단계를 완료했다고 가정합니다.

  1. 먼저 다음 Malleable C2 설정을 지정해야 합니다:
root@kitploit:~
stage {
    set sleep_mask "false";
}
  1. 저장소 루트에서 WSL 터미널을 열고 Eden 로더를 빌드하십시오: make clean; make.
  2. crystalpalace.jar을 Cobalt Strike 클라이언트 디렉터리에 복사하십시오.
  3. eden.cna을 Cobalt Strike 클라이언트에 로드하십시오.
  4. 다음에 페이로드를 내보내면 Eden이 자동으로 적용됩니다. 스크립트 콘솔에서 출력을 확인하여 이를 검증할 수 있습니다:
root@kitploit:~
[14:55:55] [*] Generating Payload: HTTP -- Type: HTTP -- Arch: x64 -- Exit Function: Thread -- System Call: None -- HTTP Library: wininet
[14:55:56] [EDEN] Parsing C:\Users\wb\Desktop\eden\eden.spec...
[14:55:56] [EDEN] Applying eden ldr spec...
[14:55:56] [EDEN] Payload Size: 387060 bytes
[14:55:56] [*] Using user modified reflective DLL! DLLName=resources/beacon.x64.rl0k.dll Arch=x64

참고: Eden은 HTTP(S), DNS 및 Pivot Beacons를 지원합니다.

디버그 가이드

릴리스 당시 Crystal Palace의 한 가지 제약은 현재 mingw로 빌드된 오브젝트 파일만 지원한다는 것입니다. MSVC 또는 Clang으로 빌드된 COFF를 사용하려고 하면 일반적으로 재배치(relocation) 오류가 발생합니다. mingw는 pdb 파일을 직접 지원하지 않으므로 복잡한 Windows 트레이드크래프트를 작성할 때 디버깅이 어려워 답답할 수 있습니다. 그러나 Makefile에 -g 옵션을 추가하면 실행 파일 빌드에 디버그 정보를 포함할 수 있습니다. 이를 통해 WinDbg에서 코드를 단계별로 실행할 수 있습니다. 이 프로세스에 대한 자세한 내용은 Rastamouse의 다음 블로그를 읽는 것이 좋습니다.

이 저장소는 기본적으로 위 접근 방식을 사용하여 Draugr(draugr.x64.exe) 및 페이지 스트리밍 코드(guardexec.x64.exe)의 디버그 빌드를 생성합니다. Draugr 디버그 빌드는 종속성이 없으므로 바로 빌드됩니다. 그러나 페이지 스트리밍/IAT 후크 코드를 단계별로 실행/디버깅하려면 아래 단계를 따라야 합니다:

1. 로더 없이 Beacon 내보내기:

  • debug/export_beacon_with_no_ldr.cna를 CS 클라이언트에 로드하고 stageless raw x64 (HTTP) Beacon을 /eden/debug/ 디렉터리로 내보내십시오. 그러면 리플렉티브 로더 없이 Beacon DLL이 내보내지며, 이를 사용하여 guardexec 엔트리 포인트를 모킹할 수 있습니다.
  • (WSL에서) $ xxd -i ./beacon_x64.bin > debug_beacon.h

2. Crystal Palace에서 Draugr PIC 스텁 내보내기:

  • 이렇게 하려면 WSL에서 $ ./piclink /<path>/eden/debug/draugr.spec x64 /<path>/eden/debug/draugr.bin을 통해 Crystal Palace를 실행해야 합니다. 그러면 Crystal Palace가 guardexec 엔트리 포인트 모킹에 사용할 수 있는 Draugr PIC 스텁 만 출력합니다.
  • (WSL에서) $ xxd -i ./draugr.bin > debug_druagr.h

3. WinDbg에서 디버깅 시작

  • 위 단계를 수행한 후 Eden을 다시 빌드하십시오: make clean;make
  • WinDbg를 열고 실행 파일 실행(/eden/bin/draugr.exe 또는 /eden/bin/guardexec.exe)을 선택하십시오
  • Open source file을 선택하고 관련 .c 파일을 선택하십시오(예: 페이지 스트리밍 코드를 디버깅하는 경우 guardexec.c).
  • 이제 독립 실행형 콜 스택 스푸핑 Draugr 바이너리 또는 IAT 후크가 있는 라이브 Beacon에 대해 단계별 실행/중단점 설정을 할 수 있습니다. 경고로, 마스킹은 페이로드 생성 중에 Crystal Palace가 키를 패치해야 하므로 디버그 모드에서는 제대로 작동하지 않습니다.

참고: Crystal Palace가 암호화된 DLL 및 해당 키와 같은 항목에 대해 디버그 페이로드를 내보내도록 할 명확한 방법이 없으므로 로더용 디버그 실행 파일은 없습니다. 따라서 모킹된 '암호화된' PIC 버퍼를 전달하는 것은 간단하지 않습니다.

설계 고려 사항

  1. Eden 로더는 주로 서로 다른 **'capabilities'**를 결합하여 새로운 로더를 만드는 Crystal Palace의 강력함을 입증하기 위한 것입니다. 이 아이디어는 이 저장소에서 구현된 것보다 훨씬 더 발전시킬 수 있습니다(예: COFF 모듈(가드레일, 콜게이트, 슬립 난독화 등)을 통해 완전히 커스터마이즈 가능한 '정적' PIC 로더).

  2. Eden 로더는 Beacon의 수명 주기의 모든 호출을 스푸핑할 수 있도록 명시적으로 PIC 버전의 Draugr을 사용합니다(예: 리플렉티브 로딩 프로세스 중 사용되는 VirtualAlloc / LoadLibrary 호출). 경우에 따라 이는 과할 수 있습니다(예: EDR이 백업되지 않은 LoadLibrary 호출 등을 신경 쓰지 않는 경우). 이 경우 훨씬 더 간단한 Draugr의 PICO(=='BOF') 버전을 사용하도록 수정할 수 있습니다.

  3. Eden 로더는 의도적으로 'Callgate'를 로더에서 분리하려고 합니다. 이는 모듈성을 위한 설계로, BeaconGate/콜게이트 BOF를 교체할 수 있다는 아이디어입니다. 따라서 Draugr 콜게이트 코드는 모두 자체 오브젝트 파일에 포함되어 있습니다. 이를 다른 'capability'로 교체하면 Eden의 TTP를 크게 변경할 수 있습니다.

  4. Eden 로더는 의도적으로 Crystal Palace의 최신 기능을 사용하지 않습니다. 예를 들어, mergelib는 Crystal Palace의 공유 라이브러리인 LibTCG와 함께 사용할 수 있습니다. 그러나 이는 코드 디버깅 기능을 잃게 된다는 것을 의미합니다.

문제 해결

페이지 스트림 기법은 특정 명령에 대해 Beacon 성능에 영향을 줄 수 있습니다(예: 기본적으로 4개의 가시 페이지가 구성된 경우 프로세스 인젝션에 **약 1분(!)**이 소요됩니다). guardexec.h에서 #define MAXVISIBLE을 늘리면 대부분의 문제를 해결할 수 있습니다(Eden의 기본값은 6). 일반적인 참고로, 페이지 스트리밍은 프로세스 인젝션 기법(특히 타이밍에 의존하는 경우)에 문제를 일으킬 수 있습니다.

왜 공개하는가?

https://aff-wg.org/2025/03/13/the-security-conversation/

관련 작업/크레딧

Eden 로더는 Crystal Palace (https://tradecraftgarden.org/crystalpalace.html)로 빌드되었으며 다음 프로젝트를 사용합니다:

  • Raphael Mudge의 페이지 스트리밍 기법: https://tradecraftgarden.org/pagestream.html.
  • NtDallas의 Draugr 콜 스택 스푸핑 기법: https://github.com/NtDallas/Draugr.
  • 예제 BOF 콜게이트가 포함된 Sleepmask-VS. 이러한 'capabilities'는 Crystal Palace와 함께 사용하기 위해 PIC로 컴파일되도록 용도를 변경하고 수정했습니다.
  • Rastamouse의 Crystal-Kit은 Draugr BeaconGate BOF를 활용하지만 다른 구현을 사용하는 유사한 프로젝트입니다.

마지막으로, 개발 중에 도움이 된 Crystal Palace에 대한 블로그를 작성해 주신 @rastamouse에게 감사를 전합니다.

도구 다운로드