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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CallStackSpoofer — 시스템 콜을 수행할 때 임의의 콜 스택을 스푸핑하기 위한 PoC 구현 (예: NtOpenProcess를 통한 핸들 획득) | Kitploit
도구/GitHubGitHub/withsecurelabs/callstackspoofer
IDS/IPS EvasionPost-ExploitationRed TeamingAdversarial Attack
GitHubwithsecurelabs/callstackspoofer

CallStackSpoofer

시스템 콜을 수행할 때 임의의 콜 스택을 스푸핑하기 위한 PoC 구현 (예: NtOpenProcess를 통한 핸들 획득)

저장소 보기
589741년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CallStackSpoofer

이 저장소는 시스템 호출 시 임의의 콜 스택을 스푸핑하는 PoC 구현을 보여줍니다. 전체 기술 워크스루는 다음 블로그 게시물을 참조하십시오: https://labs.withsecure.com/blog/spoofing-call-stacks-to-confuse-edrs.

기본적으로 모방할 세 가지 샘플 콜 스택이 포함되어 있으며, 아래에서 볼 수 있듯이 --wmi, --rpc 또는 --svchost를 지정하여 선택할 수 있습니다:

readmeexample

이 콜 스택은 프로세스 액세스 이벤트를 활성화한 상태로 SysMon을 실행하고, 핸들 작업의 대상이 lsass인 이벤트를 검색하여 얻은 것입니다.

NB 주의사항: 이 PoC는 다음 Windows 빌드에서 테스트되었습니다:

  • 10.0.19044.1706 (21h2)

다른 버전에서는 테스트되지 않았으며, 오프셋은 Windows 빌드에 따라 분명히 다를 수 있으므로(따라서 깨질 수 있습니다) 주의하십시오.

문제가 있는 경우 오류를 디버깅하는 한 가지 방법은 SysMon에서 OpenProcess 이벤트를 생성하는 프로세스를 찾아 WinDbg로 해당 프로세스에 연결하는 것입니다. 연결한 후 bp ntdll!NtOpenProcess를 실행하고 중단점이 적중되면 knf를 실행합니다.

그러면 아래와 유사한 출력이 표시되며, 전체 기호 해석과 올바른 스택 사용 공간( 'Memory' 열로 표시됨)이 포함됩니다:

root@kitploit:~
0:003> knf
 #   Memory  Child-SP          RetAddr               Call Site
00           00000037`f01fe300 00007ffd`221d2ea6     ntdll!NtOpenProcess+0x12
01         8 00000037`f01fe308 00007ffd`1ffee959     KERNELBASE!ProcessIdToSessionId+0x96
02        80 00000037`f01fe388 00007ffd`23b99633     lsm!RpcOpenEnum+0x129
03       430 00000037`f01fe7b8 00007ffd`23b33711     RPCRT4!Invoke+0x73
04        40 00000037`f01fe7f8 00007ffd`23bfd77b     RPCRT4!Ndr64UnmarshallHandle+0xe1
05        70 00000037`f01fe868 00007ffd`23b7d2ac     RPCRT4!Ndr64StubWorker+0xb0b
06       6c0 00000037`f01fef28 00007ffd`23b7a408     RPCRT4!NdrServerCallAll+0x3c
07        50 00000037`f01fef78 00007ffd`23b5a266     RPCRT4!DispatchToStubInCNoAvrf+0x18
08        50 00000037`f01fefc8 00007ffd`23b59bb8     RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x1a6
09        e0 00000037`f01ff0a8 00007ffd`23b68a0f     RPCRT4!RPC_INTERFACE::DispatchToStub+0xf8
0a        70 00000037`f01ff118 00007ffd`23b67e18     RPCRT4!LRPC_SCALL::DispatchRequest+0x31f
0b        d0 00000037`f01ff1e8 00007ffd`23b67401     RPCRT4!LRPC_SCALL::HandleRequest+0x7f8
0c       110 00000037`f01ff2f8 00007ffd`23b66e6e     RPCRT4!LRPC_ADDRESS::HandleRequest+0x341
0d        a0 00000037`f01ff398 00007ffd`23b6b542     RPCRT4!LRPC_ADDRESS::ProcessIO+0x89e
0e       140 00000037`f01ff4d8 00007ffd`24ab0330     RPCRT4!LrpcIoComplete+0xc2
0f        a0 00000037`f01ff578 00007ffd`24ae2f26     ntdll!TppAlpcpExecuteCallback+0x260
10        80 00000037`f01ff5f8 00007ffd`23387034     ntdll!TppWorkerThread+0x456
11       300 00000037`f01ff8f8 00007ffd`24ae2651     KERNEL32!BaseThreadInitThunk+0x14
12        30 00000037`f01ff928 00000000`00000000     ntdll!RtlUserThreadStart+0x21

참고로 현재 호출 사이트에서 사용하는 전체 스택 공간은 아래 행에 표시됩니다(예: ntdll!NtOpenProcess는 8바이트만 차지합니다). 앞서 언급했듯이 전체 기술 워크스루는 이 readme 시작 부분에 링크된 블로그에서 다루며, 여기서 이와 같은 내용(및 Child-SP와 같은 개념)을 자세히 설명합니다. windbg로 생성된 값은 문제가 발생할 경우 CalculateFunctionStackSize()가 반환하는 값과 대조하는 데 사용할 수 있습니다.

관련 작업

UNWIND_CODE 파싱 예제 코드를 제공한 unicorn_pe 프로젝트(https://github.com/hzqst/unicorn_pe)에 감사드립니다.

도구 다운로드