Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
SysWhispers3 — SysWhispers on Steroids - AV/EDR-Umgehung durch direkte Systemaufrufe. | Kitploit
Tools/GitHubGitHub/klezvirus/syswhispers3
DefensivwerkzeugePayload-GenerierungExploitationShellcodeRed Teaming
GitHubklezvirus/syswhispers3

SysWhispers3

SysWhispers on Steroids - AV/EDR-Umgehung durch direkte Systemaufrufe.

Repository anzeigen
1.6k207vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

SysWhispers3

SysWhispers hilft bei der Umgehung, indem es Header/ASM-Dateien generiert, die Implants verwenden können, um direkte Systemaufrufe zu tätigen.

Offizieller Discord-Kanal

Komm auf Discord vorbei!

Inceptor Server

Warum um Himmels Willen habe ich keinen PR zu SysWhispers2 erstellt?

Die Gründe, warum SysWhispers3 eine eigenständige Version ist, sind vielfältig, aber die wichtigsten sind:

  • SysWhispers3 ist der De-facto-„Fork", der von Inceptor verwendet wird, und implementiert einige Hilfsklassen, die für die Originalversion des Tools nicht relevant sind.
  • SysWhispers2 entwickelt sich in Richtung NASM-Kompilierung (für gcc/mingw), während diese Version speziell für die Unterstützung von MSVC entwickelt und getestet wurde (weil Inceptor auf absehbare Zeit ein Windows-only-Framework bleiben wird).
  • SysWhispers3 enthält teilweise implementierte Funktionen (wie Egg-Hunting), die in der Originalversion des Tools nicht sinnvoll wären.

Unterschiede zu SysWhispers2

Die Verwendung ist ziemlich ähnlich zu SysWhispers2, mit den folgenden Ausnahmen:

  • Es unterstützt auch x86/WoW64
  • Es unterstützt den Ersatz von Syscall-Anweisungen durch ein EGG (das dynamisch ersetzt werden kann)
  • Es unterstützt direkte Sprünge zu Syscalls im x86/x64-Modus (im WOW64-Modus ist es fast Standard)
  • Es unterstützt direkte Sprünge zu zufälligen Syscalls (Idee von @ElephantSeal übernommen)

Eine bessere Erklärung dieser Funktionen ist im Blogbeitrag SysWhispers is dead, long live SysWhispers! dargelegt.

Einleitung

Sicherheitsprodukte wie AVs und EDRs platzieren normalerweise Hooks in User-Mode-API-Funktionen, um den Programmablauf zu analysieren und potenziell bösartige Aktivitäten zu erkennen.

SysWhispers2 ist ein Tool, das Header/ASM-Paare für jeden Systemaufruf im Kernkernel-Image (ntoskrnl.exe) generiert, die dann direkt aus C/C++-Code integriert und aufgerufen werden können, wodurch User-Land-Hooks umgangen werden.

Das Tool erzeugt jedoch einige Muster, die in Signaturen enthalten sein können, oder ein Verhalten, das zur Laufzeit erkannt werden kann.

SysWhispers3 baut auf SysWhispers2 auf und integriert einige hilfreiche Funktionen, um diese Erkennungsformen zu umgehen.

Installation

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

Nutzung und Beispiele

Die Hilfe zeigt alle verfügbaren Befehle und Funktionen des Tools:

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)

Befehlszeilen

Standard SysWhispers, eingebettete Systemaufrufe (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

Nur SysWhispers3-Beispiele

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


Skriptausgabe

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...

Importieren in Visual Studio

  1. Kopieren Sie die generierten H/C/ASM-Dateien in den Projektordner.
  2. Gehen Sie in Visual Studio zu Projekt → Buildanpassungen... und aktivieren Sie MASM.
  3. Fügen Sie im Projektmappen-Explorer die .h- und .c/.asm-Dateien als Header- bzw. Quelldateien zum Projekt hinzu.
  4. Gehen Sie zu den Eigenschaften der ASM-Datei und setzen Sie den Elementtyp auf Microsoft Macro Assembler.

Kompilieren außerhalb von Visual Studio

Windows

Makefile für 64 Bit:

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

Makefile für 32 Bit:

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

Kompilieren mit nmake:

root@kitploit:~
nmake -f Makefile.msvc

Linux

Makefile für sowohl 64 als auch 32 Bit:

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)

Kompilieren mit make:

root@kitploit:~
make -f Makefile.mingw

Einschränkungen und bekannte Probleme

  • Die Egg-Hunter-Funktionalität ist nicht in diesem Tool implementiert, sondern in Inceptor.
  • Systemaufrufe aus dem Grafiksubsystem (win32k.sys) werden nicht unterstützt.
  • Getestet mit Visual Studio 2019/2022 und Windows 10 SDK.
  • Unterstützung für NASM wird nicht garantiert.
  • Unterstützung für GCC und MinGW wird nicht garantiert.

Fehlerbehebung

Aus SysWhispers2

  • Typ-Neudefinitionsfehler: Ein Projekt kann möglicherweise nicht kompiliert werden, wenn typedef in syscalls.h bereits definiert wurden.
    • Stellen Sie sicher, dass nur die erforderlichen Funktionen enthalten sind (d. h. --preset all ist selten notwendig).
    • Wenn ein typedef bereits in einem anderen verwendeten Header definiert ist, kann es aus syscalls.h entfernt werden.

Neu

  • Mit --verbose kann während der Codegenerierung eine Fehlerbehebungsausgabe aktiviert werden.
  • Mit --debug fügt das Tool einen Software-Breakpoint in den Syscall-Stub ein, um das Debuggen in WinDbg zu erleichtern.
  • Wenn Sie während der Kompilierung einen error A2084:constant value too large erhalten, generieren Sie die Stubs neu.

Danksagungen

SysWhispers2

Entwickelt von @Jackson_T und @modexpblog, baut aber auf der Arbeit vieler anderer auf:

  • @FoxHex0ne für die Katalogisierung vieler Funktionsprototypen und Typdefinitionen in einem maschinenlesbaren Format.
  • @PetrBenes, NTInternals.net-Team und MSDN für zusätzliche Prototypen und Typdefinitionen.
  • @Cn33liz für die anfängliche Dumpert-POC-Implementierung.

SysWhispers2 (x86/WOW64)

  • @rooster für die Erstellung eines Beispiel-x86/WOW64-kompatiblen Forks.

Weitere

  • @ElephantSe4l für die Idee, die Sprünge zu den Syscalls zu randomisieren.
  • @S4ntiagoP für die unglaubliche Arbeit an nanodump, die mir viele Ideen gab.

Lizenz

Wie das Original ist auch dieses Projekt unter der Apache License 2.0 lizenziert.

Tool herunterladen