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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SysWhispers3 — SysWhispers on Steroids - AV/EDR 회피를 위한 직접 시스템 호출. | Kitploit
도구/GitHubGitHub/klezvirus/syswhispers3
Defensive ToolsPayload GenerationExploitationShellcodeRed Teaming
GitHubklezvirus/syswhispers3

SysWhispers3

SysWhispers on Steroids - AV/EDR 회피를 위한 직접 시스템 호출.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

SysWhispers3

SysWhispers는 직접 시스템 호출을 수행할 수 있는 헤더/ASM 파일을 생성하여 회피에 도움을 줍니다.

공식 Discord 채널

Discord에서 함께하세요!

Inceptor Server

왜 SysWhispers2에 PR을 생성하지 않았나요?

SysWhispers3가 독립형 버전이 된 이유는 많지만, 가장 중요한 이유는 다음과 같습니다:

  • SysWhispers3는 Inceptor에서 사용하는 사실상의 "포크"이며, 원래 도구 버전과 관련 없는 일부 유틸리티 클래스를 구현합니다.
  • SysWhispers2는 NASM 컴파일(gcc/mingw용)을 지원하는 방향으로 나아가고 있지만, 이 버전은 MSVC를 지원하도록 특별히 설계 및 테스트되었습니다(Inceptor는 가까운 미래에도 Windows 전용 프레임워크로 남을 것이기 때문입니다).
  • SysWhispers3에는 에그 헌팅과 같은 부분적으로 구현된 기능이 포함되어 있으며, 이를 원래 도구 버전에 포함하는 것은 합리적이지 않을 것입니다.

SysWhispers2와의 차이점

사용법은 SysWhispers2와 매우 유사하며, 다음과 같은 예외가 있습니다:

  • x86/WoW64도 지원합니다.
  • 동적으로 대체될 EGG를 사용한 syscall 명령어 교체를 지원합니다.
  • x86/x64 모드에서 syscall로의 직접 점프를 지원합니다(WOW64에서는 거의 표준입니다).
  • 무작위 syscall로의 직접 점프를 지원합니다(@ElephantSeal의 아이디어를 차용).

이러한 기능에 대한 더 자세한 설명은 블로그 게시물 SysWhispers is dead, long live SysWhispers!에 잘 설명되어 있습니다.

소개

AV 및 EDR과 같은 보안 제품은 일반적으로 사용자 모드 API 함수에 후크를 배치하여 프로그램 실행 흐름을 분석하고 잠재적인 악성 활동을 감지합니다.

SysWhispers2는 코어 커널 이미지(ntoskrnl.exe)의 모든 시스템 호출에 대해 헤더/ASM 쌍을 생성하도록 설계된 도구로, 이를 C/C++ 코드에서 직접 통합 및 호출하여 사용자 영역 후크를 우회할 수 있습니다.

그러나 이 도구는 서명에 포함될 수 있는 일부 패턴이나 런타임에 탐지될 수 있는 동작을 생성합니다.

SysWhispers3는 SysWhispers2를 기반으로 구축되었으며, 이러한 탐지 형태를 우회하는 데 도움이 되는 몇 가지 유용한 기능을 통합합니다.

설치

root@kitploit:~
C:\> git clone https://github.com/klezVirus/SysWhispers3.git
C:\> cd SysWhispers3
C:\> python .\syswhispers.py --help

사용법 및 예제

도움말은 도구의 사용 가능한 모든 명령과 기능을 보여줍니다:

root@kitploit:~
C:\>python syswhispers.py -h

usage: syswhispers.py [-h] [-p PRESET] [-a {x86,x64}] [-m {embedded,egg_hunter,jumper,jumper_randomized}] [-f FUNCTIONS] -o OUT_FILE [--int2eh] [--wow64] [-v] [-d]

SysWhispers3 - SysWhispers on steroids

optional arguments:
  -h, --help            show this help message and exit
  -p PRESET, --preset PRESET
                        Preset ("all", "common")
  -a {x86,x64}, --arch {x86,x64}
                        Architecture
  -c {msvc,mingw,all}, --compiler {msvc,mingw,all}
                        Compiler
  -m {embedded,egg_hunter,jumper,jumper_randomized}, --method {embedded,egg_hunter,jumper,jumper_randomized}
                        Syscall recovery method
  -f FUNCTIONS, --functions FUNCTIONS
                        Comma-separated functions
  -o OUT_FILE, --out-file OUT_FILE
                        Output basename (w/o extension)
  --int2eh              Use the old `int 2eh` instruction in place of `syscall`
  --wow64               Use Wow64 to run x86 on x64 (only usable with x86 architecture)
  -v, --verbose         Enable debug output
  -d, --debug           Enable syscall debug (insert software breakpoint)

명령줄

표준 SysWhispers, 포함된 시스템 호출 (x64)

root@kitploit:~
# Export all functions with compatibility for all supported Windows versions (see example-output/).
py .\syswhispers.py --preset all -o syscalls_all

# Export just the common functions (see below for list).
py .\syswhispers.py --preset common -o syscalls_common

# Export NtProtectVirtualMemory and NtWriteVirtualMemory with compatibility for all versions.
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem

SysWhispers3 전용 샘플

root@kitploit:~
# Normal SysWhispers, 32-bits mode
py .\syswhispers.py --preset all -o syscalls_all -m jumper --arch x86

# Normal SysWhispers, using WOW64 in 32-bits mode (only specific functions)
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem --arch x86 --wow64

# Egg-Hunting SysWhispers, to bypass the "mark of the sycall" (common function)
py .\syswhispers.py --preset common -o syscalls_common -m egg_hunter

# Jumping/Jumping Randomized SysWhispers, to bypass dynamic RIP validation (all functions) using MinGW as the compiler
py .\syswhispers.py --preset all -o syscalls_all -m jumper -c mingw


스크립트 출력

root@kitploit:~
PS C:\Projects\SysWhispers2> py .\syswhispers.py --preset common --out-file temp\syscalls_common -v 
                                                       
                  .                         ,--.
,-. . . ,-. . , , |-. o ,-. ,-. ,-. ,-. ,-.  __/
`-. | | `-. |/|/  | | | `-. | | |-' |   `-. .  \
`-' `-| `-' ' '   ' ' ' `-' |-' `-' '   `-'  '''
     /|                     |  @Jackson_T
    `-'                     '  @modexpblog, 2021

                      Edits by @klezVirus,  2022
SysWhispers3: Why call the kernel when you can whisper?


Common functions selected.

Complete! Files written to:
        temp\syscalls_common.h
        temp\syscalls_common.c
        temp\syscalls_common_.asm
Press a key to continue...

Visual Studio로 가져오기

  1. 생성된 H/C/ASM 파일을 프로젝트 폴더에 복사합니다.
  2. Visual Studio에서 프로젝트 → *빌드 사용자 지정...*으로 이동하여 MASM을 활성화합니다.
  3. 솔루션 탐색기에서 .h 및 .c/.asm 파일을 각각 헤더 및 소스 파일로 프로젝트에 추가합니다.
  4. ASM 파일의 속성으로 이동하여 항목 형식을 Microsoft 매크로 어셈블러로 설정합니다.

Visual Studio 외부에서 컴파일

Windows

64비트용 Makefile:

Makefile.msvc

root@kitploit:~
OPTIONS = -Zp8 -c -nologo -Gy -Os -O1 -GR- -EHa -Oi -GS-
LIBS = libvcruntime.lib libcmt.lib ucrt.lib kernel32.lib

program:
  ML64 /c syscalls-asm.x64.asm /link /NODEFAULTLIB /RELEASE /MACHINE:X64
  cl.exe $(OPTIONS) syscalls.c  program.c
  link.exe /OUT:program.x64.exe -nologo $(LIBS) /MACHINE:X64 -subsystem:console -nodefaultlib syscalls-asm.x64.obj syscalls.obj program.obj

32비트용 Makefile:

Makefile.msvc

root@kitploit:~
OPTIONS = -Zp8 -c -nologo -Gy -Os -O1 -GR- -EHa -Oi -GS-
LIBS = libvcruntime.lib libcmt.lib ucrt.lib kernel32.lib

program:
  ML /c syscalls-asm.x86.asm /link /NODEFAULTLIB /RELEASE /MACHINE:X86
  cl.exe $(OPTIONS) syscalls.c  program.c
  link.exe /OUT:program.x86.exe -nologo $(LIBS) /MACHINE:X86 -subsystem:console -nodefaultlib syscalls-asm.x86.obj syscalls.obj program.obj

nmake로 컴파일:

root@kitploit:~
nmake -f Makefile.msvc

Linux

64비트 및 32비트 모두를 위한 Makefile:

Makefile.mingw

root@kitploit:~
CC_x64 := x86_64-w64-mingw32-gcc
CC_x86 := i686-w64-mingw32-gcc
OPTIONS := -masm=intel -Wall

program:
  $(CC_x64) syscalls.c program.c -o program.x64.exe $(OPTIONS)
  $(CC_x86) syscalls.c program.c -o program.x86.exe $(OPTIONS)

make로 컴파일:

root@kitploit:~
make -f Makefile.mingw

주의사항 및 제한사항

  • Egg-Hunter 기능은 이 도구 내에서 구현되지 않으며, Inceptor에 있습니다.
  • 그래픽 하위 시스템(win32k.sys)의 시스템 호출은 지원되지 않습니다.
  • Visual Studio 2019/2022 및 Windows 10 SDK에서 테스트되었습니다.
  • NASM 지원은 보장되지 않습니다.
  • GCC 및 MinGW 지원은 보장되지 않습니다.

문제 해결

SysWhispers2에서 온 것

  • 형식 재정의 오류: syscalls.h의 typedef가 이미 정의된 경우 프로젝트가 컴파일되지 않을 수 있습니다.
    • 필요한 함수만 포함되었는지 확인하십시오(즉, --preset all은 거의 필요하지 않습니다).
    • 다른 사용된 헤더에 typedef가 이미 정의된 경우 syscalls.h에서 제거할 수 있습니다.

새로운 것

  • --verbose를 사용하면 코드 생성 중 문제 해결 출력을 활성화할 수 있습니다.
  • --debug를 사용하면 도구가 syscall 스텁에 소프트웨어 중단점을 삽입하여 WinDbg에서 디버깅을 용이하게 합니다.
  • 컴파일 중 error A2084:constant value too large 오류가 발생하면 스텁을 다시 생성하십시오.

크레딧

SysWhispers2

개발자: @Jackson_T 및 @modexpblog, 하지만 다른 많은 사람들의 작업을 기반으로 합니다:

  • @FoxHex0ne: 기계 판독 가능 형식으로 많은 함수 프로토타입과 typedef를 카탈로그화했습니다.
  • @PetrBenes, NTInternals.net 팀 및 MSDN: 추가 프로토타입 및 typedef 제공.
  • @Cn33liz: 초기 Dumpert POC 구현.

SysWhispers2 (x86/WOW64)

  • @rooster: x86/WOW64 호환 포크 샘플 생성.

기타

  • @ElephantSe4l: syscall로의 점프 무작위화에 대한 아이디어.
  • @S4ntiagoP: 많은 아이디어를 제공한 nanodump의 놀라운 작업.

라이선스

원본과 마찬가지로 이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다.

도구 다운로드