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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
stealth_call — 헤더 전용 Windows x64 간접 시스템 호출 라이브러리. 제로 CRT, 제로 IAT, VEH anti-BP, AMSI/ETW 우회, W^X 메모리, 호출별 동적 스텁. | Kitploit
도구/GitHubGitHub/share-devn/stealth_call
Privilege EscalationMemory ForensicsExploitationIDS/IPS EvasionShellcodePost-ExploitationRed TeamingPayload Development
GitHubshare-devn/stealth_call

stealth_call

헤더 전용 Windows x64 간접 시스템 호출 라이브러리. 제로 CRT, 제로 IAT, VEH anti-BP, AMSI/ETW 우회, W^X 메모리, 호출별 동적 스텁.

저장소 보기
74개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

stealth_call


이게 뭔가요?

Windows x64 전용 헤더-온리 라이브러리로, ntdll 임포트를 건드리지 않고, 바이너리에 문자열을 남기지 않으며, EDR이 발작을 일으키게 만드는 일반적인 위험 요소 없이 임의의 NT 시스템 콜을 호출할 수 있습니다.

CRT 없음. STL 없음. IAT 없음. 전체 컴파일 결과는 약 19KB, DLL 종속성이 전혀 없습니다.

기존 syscall 라이브러리의 흔한 함정(평문 문자열, 알려진 해시 상수, ntdll이 아닌 메모리에서의 직접 syscall, "뭔가 이상한 짓을 하는 중"임을 알리는 IAT 임포트, SEC_NO_CHANGE IOC, CRT 비대화)을 피하기 위해 제작되었습니다. 여기에는 그런 것들이 전혀 없습니다.


특징

Syscall 엔진

  • 간접 syscall — 스텁이 ntdll 자체의 syscall; ret 가젯으로 점프하므로, syscall 명령어가 실행될 때 RIP는 항상 ntdll 내부에 있습니다
  • 호출별 스텁 생성 — 매 호출마다 무작위 junk, 무작위 레이아웃, XOR 처리된 syscall 번호로 새로운 다형성 스텁을 만듭니다. 재사용하지 않습니다
  • W^X 적용 — 스크래치 페이지는 RW → RX → RW 순서로 전환됩니다. RWX는 절대 할당되지 않습니다
  • 각 호출 직후 스텁을 즉시 지웁니다
  • \KnownDlls\ntdll.dll 섹션 매핑에서 syscall을 추출합니다 (파일 시스템 접근 없음, ProcMon에 보이지 않음)
  • 일반적인 Win11 시스템에서 977개의 syscall을 해석합니다

안티-브레이크포인트

  • VEH 기반 접근 — 디버거가 대상 함수에 0xCC를 설정하면, 예외 핸들러가 조용히 원래 바이트를 복원하고, 단일 스텝으로 명령어를 실행한 후 브레이크포인트를 다시 설정합니다. 디버거는 우회된 사실을 전혀 인지하지 못합니다. 타이밍 윈도우가 전혀 없습니다
  • ntdll뿐만 아니라 모든 DLL의 모든 함수에서 작동합니다

회피

  • AMSI 우회 — AmsiScanBuffer를 패치하여 S_OK 반환
  • ETW 우회 — EtwEventWrite를 패치하여 SUCCESS 반환
  • 모든 패치는 VirtualProtect가 아닌 직접 syscall을 통해 이루어집니다
  • 모든 곳에서 XOR 암호화된 문자열 사용 — DLL 이름, 경로 등. 스택에서 복호화된 후 사용 후 지워집니다
  • 사용자 정의 해시 알고리즘 (FNV-1a나 CRC32 아님 — 알려진 YARA 시그니처 없음)
  • 모든 모듈/함수 해석을 위해 PEB 워킹 사용 — GetModuleHandle, GetProcAddress 사용 안 함

코드 품질

  • 헤더-온리, stealth/ 폴더를 프로젝트에 넣고 바로 사용 가능
  • 스레드 안전: 스레드별 스크래치 페이지 + 스핀락
  • 종료 시 완벽한 정리: 스크래치 페이지 해제, 맵 제로화, VEH 제거
  • 일반적인 EDR 트램펄린(jmp rel32, jmp [rip], mov rax + jmp rax)에 대한 후크 탐지

작동 방식

flow

Syscall 경로

  1. initialize()는 \KnownDlls 섹션을 통해 ntdll을 열고, PE 내보내기를 파싱하여 모든 syscall 번호를 가져옵니다
  2. ntdll .text에서 syscall; ret 가젯을 스캔합니다 — 실제 syscall 명령어가 실행될 위치입니다
  3. sc::invoke() 호출 시:
    • 해시로 syscall 항목을 조회합니다
    • 호출 스레드의 스크래치 페이지를 가져옵니다 (또는 RW로 할당합니다)
    • emit_stub()가 고유한 다형성 스텁을 생성합니다 — 전후에 무작위 junk 명령어, 호출별 키로 XOR 난독화된 syscall 번호, ntdll 가젯으로의 간접 jmp
    • 페이지를 RW → RX로 전환합니다
    • 스텁을 통해 호출합니다
    • RX → RW로 다시 전환합니다
    • 스텁 바이트를 제로화합니다

어느 순간에도 RWX 메모리는 존재하지 않습니다. ntdll 외부에서 syscall 명령어가 실행되는 일은 없습니다. syscall 번호가 평문으로 저장되는 일도 없습니다.

VEH 트램펄린

tramp::invoke()를 대상 함수와 함께 호출합니다. 브레이크포인트가 없으면 — 함수는 오버헤드 없이 정상 실행됩니다. 디버거가 0xCC를 설정했다면:

  1. INT3 예외가 발생합니다
  2. VEH 핸들러가 해당 주소가 우리 테이블에 있는지 확인합니다 (선형 탐색이 아닌 해시 조회)
  3. 디스크에서 읽어온 깨끗한 복사본에서 원래 바이트를 복원합니다
  4. Trap Flag를 설정합니다
  5. 실행을 계속합니다 — 실제 명령어가 실행됩니다
  6. 단일 스텝 예외가 발생합니다
  7. 핸들러가 0xCC를 다시 설정합니다

디버거의 브레이크포인트 목록에는 여전히 활성화된 것으로 표시됩니다. 브레이크포인트는 우리 호출에서 절대 트리거되지 않을 뿐입니다.


빌드

root@kitploit:~
cmake -B build -A x64
cmake --build build --config Release

MSVC (VS 2019+)와 CMake 3.15+가 필요합니다. 출력 결과는 약 19KB이며 임포트가 전혀 없습니다.


사용법

Syscall

root@kitploit:~
#include "stealth/syscall.hpp"

stealth::sc::initialize();

PVOID base = nullptr;
SIZE_T size = 0x1000;
NTSTATUS status = stealth::sc::invoke<NTSTATUS>(
    HASH("NtAllocateVirtualMemory"),
    NtCurrentProcess(), &base, (ULONG_PTR)0, &size,
    (ULONG)(MEM_COMMIT | MEM_RESERVE), (ULONG)PAGE_READWRITE
);

안티-브레이크포인트

root@kitploit:~
#include "stealth/trampoline.hpp"

// x64dbg가 MessageBoxA에 BP를 설정해도 작동
int ret = stealth::tramp::invoke<int>(
    HASH_CI("user32.dll"), HASH("MessageBoxA"),
    (HWND)nullptr, (LPCSTR)"hello", (LPCSTR)"title", (UINT)MB_OK
);

AMSI / ETW

root@kitploit:~
#include "stealth/bypass.hpp"

stealth::bypass::patch_etw();
stealth::bypass::patch_amsi();

정리

root@kitploit:~
stealth::tramp::shutdown();
stealth::sc::shutdown();

프로젝트 구조

root@kitploit:~
stealth/
  common.hpp      — 메모리 연산, 스핀락, static_map, PRNG, 디버그 출력
  hash.hpp        — 컴파일타임 사용자 정의 해시
  xorstr.hpp      — 컴파일타임 XOR 문자열 암호화
  peb.hpp         — PEB 워킹, PE 내보내기 파서, 후크 탐지
  syscall.hpp     — 간접 syscall 엔진, 스텁 생성기, W^X, 안티-덤프
  trampoline.hpp  — VEH 기반 안티-브레이크포인트
  bypass.hpp      — AMSI + ETW 패치

라이선스

MIT — 원하는 대로 사용하세요.

도구 다운로드