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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
DbgNexum — Windows 디버깅 API를 이용한 셸코드 주입 | Kitploit
도구/GitHubGitHub/dis0rder0x00/dbgnexum
Payload GenerationExploitationShellcodePost-ExploitationPenetration TestingRed TeamingShellcode GenerationPayload DevelopmentBinary Exploitation
GitHubdis0rder0x00/dbgnexum

DbgNexum

Windows 디버깅 API를 이용한 셸코드 주입

183397개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

DbgNexum - 셸코드 인젝션

DbgNexum은 Windows 디버깅 API와 공유 메모리(파일 매핑)를 사용하여 셸코드를 주입하기 위한 Proof-of-Concept입니다. 원격 메모리를 직접 읽고 쓰는 대신 컨텍스트 조작을 사용하여 대상 프로세스가 페이로드를 스스로 로드하고 실행하도록 강제합니다.

개요

인젝터는 대상 프로세스에 연결하고 일시 중단된 스레드를 생성합니다. 디버그 루프를 통해 하드웨어 중단점을 설정하고, 특정 반환 주소에서 실행이 트랩되도록 합니다. 각 트랩에서 인젝터는 CPU 레지스터를 수정하여 함수 호출을 모방하며, 대상 프로세스 내부에서 일련의 Windows API 함수 호출을 조율합니다.

이 README를 작성하는 시점에, 저는 이 기법을 MDE와 Elastic을 대상으로 테스트했으며, 둘 다 이를 탐지하지 못했습니다.

주요 기능

  • WriteProcessMemory / VirtualAllocEx 불필요: 페이로드는 CreateFileMapping 및 MapViewOfFile을 통해 전송됩니다.
  • ReadProcessMemory 불필요: 이 접근 방식은 모든 주요 정보를 스레드 컨텍스트에서 얻습니다.

사용법

이 PoC는 "calc.exe"를 실행하는 XOR 처리된 msfvenom 셸코드를 사용합니다. 하지만 여러분만의 셸코드를 사용하세요!

  1. shellcode.h에 셸코드(및 XOR 키)를 포함하세요.
  2. 대상의 프로세스 ID를 찾으세요.
  3. 인젝터를 실행하세요:
root@kitploit:~
DbgNexum.exe <PID>

예제 출력:

root@kitploit:~
[i] Section 'MZ' created and shellcode copied
[+] Bait thread created. Setting HWBP on FileTimeToSystemTime
[i] Execution Redirected:
|-> [0] Preparation & anchoring stack
|-> [1] Setting HWBP & buffer alloc
|-> [2] Copying File-Mapping name
|-> [3] Zeroing stack slot
|-> [4] Opening handle to named file mapping
|-> [5] Mapping payload into mem. with exec. perm.
|-> [6] Cleanup & shellcode execution
[+] Successfully detached from process 19256
[i] Orchestration complete.

작동 원리

실행 흐름은 인젝터의 디버그 루프와 대상 프로세스 사이를 끊임없이 오갑니다.

인젝션 단계

DebugLoop 함수에는 주요 인젝션 로직이 포함되어 있으며 "상태 머신"을 조율합니다.

0. 준비:

  • 인젝터는 각 단계에서 재사용하기 위해 현재 스택 포인터를 저장합니다.
  • 고정된 스택의 반환 주소를 얻기 위해 트랩 플래그를 설정하고 실행을 즉시 ret 호출로 설정합니다.

1. 할당:

  • 호출된 함수가 반환될 때 알림을 받기 위해 고정된 스택의 반환 주소에 HWBP를 설정합니다.
  • 작은 버퍼를 할당하기 위해(당연히) 스레드가 LocalAlloc을 호출하도록 준비하고 강제합니다.

2. 데이터 설정:

  • 이전에 할당된 버퍼에 문자열 MZ를 복사하기 위해 스레드가 memcpy를 호출하도록 준비하고 강제합니다.

3. 스택 준비:

  • 스레드가 memset을 호출하여 스택 슬롯을 0으로 만들도록 강제합니다. 이는 MapViewOfFile을 호출할 5단계를 준비하기 위한 것입니다. 이 함수는 4개 이상의 인수를 사용하므로 5번째 인수는 스택을 통해 전달됩니다(여기서 설정합니다).

4. 매핑 열기:

  • 2단계와 3단계에서 "생성된" MZ 이름을 사용하여 스레드가 OpenFileMappingA를 호출하도록 강제합니다.

5. 페이로드 매핑:

  • 대상이 MapViewOfFile을 호출하도록 강제합니다. 이는 셸코드를 포함하는 공유 메모리 섹션을 EXECUTE 권한으로 대상의 주소 공간에 매핑합니다.

6. 실행:

  • RIP를 MapViewOfFile이 반환한 주소로 리디렉션합니다.
  • 디버그 레지스터를 지우고 분리합니다.
도구 다운로드