Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/klezvirus/syswhispers3
Outils DéfensifsGénération de PayloadsExploitationShellcodeRed Teaming
GitHubklezvirus/syswhispers3

SysWhispers3

SysWhispers sous stéroïdes - contournement d'AV/EDR via des appels système directs.

Voir le dépôt
1.6k207il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SysWhispers3

SysWhispers aide à l'évasion en générant des fichiers d'en-tête/ASM que les implants peuvent utiliser pour effectuer des appels système directs.

Salon Discord Officiel

Venez traîner sur Discord !

Inceptor Server

Pourquoi diable n'ai-je pas créé de PR pour SysWhispers2 ?

Les raisons pour lesquelles SysWhispers3 est une version autonome sont nombreuses, mais les plus importantes sont :

  • SysWhispers3 est le « fork » de facto utilisé par Inceptor, et implémente des classes utilitaires qui ne sont pas pertinentes pour la version originale de l'outil.
  • SysWhispers2 évolue vers la prise en charge de la compilation NASM (pour gcc/mingw), tandis que cette version est spécifiquement conçue et testée pour MSVC (car Inceptor restera un framework Windows exclusif dans un avenir proche).
  • SysWhispers3 contient des fonctionnalités partiellement implémentées (comme la chasse aux œufs) qu'il ne serait pas judicieux d'inclure dans la version originale de l'outil.

Différences avec SysWhispers2

L'utilisation est assez similaire à SysWhispers2, à l'exception des différences suivantes :

  • Il prend également en charge x86/WoW64
  • Il prend en charge le remplacement des instructions syscall par un ŒUF (à remplacer dynamiquement)
  • Il prend en charge les sauts directs vers les syscalls en mode x86/x64 (en mode WOW64, c'est presque standard)
  • Il prend en charge les sauts directs vers des syscalls aléatoires (emprunt de l'idée @ElephantSeal)

Une meilleure explication de ces fonctionnalités est donnée dans l'article de blog SysWhispers is dead, long live SysWhispers!

Introduction

Les produits de sécurité, tels que les antivirus et les EDR, placent généralement des hooks dans les fonctions API en mode utilisateur pour analyser le flux d'exécution d'un programme, afin de détecter des activités potentiellement malveillantes.

SysWhispers2 est un outil conçu pour générer des paires d'en-tête/ASM pour tout appel système dans l'image du noyau principal (ntoskrnl.exe), qui peuvent ensuite être intégrées et appelées directement depuis du code C/C++, contournant ainsi les hooks en mode utilisateur.

Cependant, l'outil génère certains motifs qui peuvent être inclus dans des signatures, ou un comportement qui peut être détecté à l'exécution.

SysWhispers3 est construit sur SysWhispers2 et intègre des fonctionnalités utiles pour contourner ces formes de détection.

Installation

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

Utilisation et Exemples

L'aide affiche toutes les commandes et fonctionnalités disponibles de l'outil :

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 sous stéroïdes

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)

Lignes de commande

SysWhispers standard, appels système intégrés (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

Exemples propres à 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

Sortie du script

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

Importation dans Visual Studio

  1. Copiez les fichiers H/C/ASM générés dans le dossier du projet.
  2. Dans Visual Studio, allez dans Projet → Personnalisations de la génération... et activez MASM.
  3. Dans l'Explorateur de solutions, ajoutez les fichiers .h et .c/.asm au projet en tant que fichiers d'en-tête et fichiers source, respectivement.
  4. Accédez aux propriétés du fichier ASM et définissez le Type d'élément sur Microsoft Macro Assembler.

Compilation en dehors de Visual Studio

Windows

Makefile pour 64 bits :

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 pour 32 bits :

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

Compilez avec nmake :

root@kitploit:~
nmake -f Makefile.msvc

Linux

Makefile pour 64 et 32 bits :

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)

Compilez avec make :

root@kitploit:~
make -f Makefile.mingw

Mises en garde et limitations

  • La fonctionnalité de chasse aux œufs (Egg-Hunter) n'est pas implémentée dans cet outil, elle l'est dans Inceptor.
  • Les appels système du sous-système graphique (win32k.sys) ne sont pas supportés.
  • Testé sur Visual Studio 2019/2022 avec le SDK Windows 10.
  • La prise en charge de NASM n'est pas garantie.
  • La prise en charge de GCC et MinGW n'est pas garantie.

Dépannage

Depuis SysWhispers2

  • Erreurs de redéfinition de type : un projet peut ne pas compiler si les typedefs dans syscalls.h ont déjà été définis.
    • Assurez-vous que seules les fonctions nécessaires sont incluses (c'est-à-dire que --preset all est rarement nécessaire).
    • Si un typedef est déjà défini dans un autre en-tête utilisé, il peut être supprimé de syscalls.h.

Nouveau

  • Avec --verbose, il est possible d'activer la sortie de dépannage pendant la génération de code.
  • Avec --debug, l'outil insère un point d'arrêt logiciel dans le stub syscall pour faciliter le débogage dans WinDbg.
  • Si vous obtenez une erreur error A2084:constant value too large lors de la compilation, regénérez les stubs.

Crédits

SysWhispers2

Développé par @Jackson_T et @modexpblog, mais construit sur le travail de nombreux autres :

  • @FoxHex0ne pour avoir catalogué de nombreux prototypes de fonctions et typedefs dans un format lisible par machine.
  • @PetrBenes, l'équipe NTInternals.net, et MSDN pour des prototypes et typedefs supplémentaires.
  • @Cn33liz pour l'implémentation POC initiale de Dumpert.

SysWhispers2 (x86/WOW64)

  • @rooster pour avoir créé un fork compatible x86/WOW64.

Autres

  • @ElephantSe4l pour l'idée de randomiser les sauts vers les syscalls.
  • @S4ntiagoP pour l'incroyable travail sur nanodump, qui m'a donné des tonnes d'idées.

Licence

Comme l'original, ce projet est également sous licence Apache License 2.0.

Télécharger l’outil