Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SysWhispers3 — SysWhispers on Steroids - Evasión de AV/EDR mediante llamadas directas al sistema. | Kitploit
Herramientas/GitHubGitHub/klezvirus/syswhispers3
Herramientas DefensivasGeneración de PayloadsExplotaciónEvasión de IDS/IPSShellcodeRed TeamingGeneración de ShellcodeDesarrollo de PayloadsTop en Evasión de IDS/IPS #19Top en Desarrollo de Payloads #7
1.6k20762hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Top en Generación de Payloads #9
Top en Shellcode #7
Top en Generación de Shellcode #9
GitHubklezvirus/syswhispers3

SysWhispers3

SysWhispers on Steroids - Evasión de AV/EDR mediante llamadas directas al sistema.

Ver Repositorio
Compartir

SysWhispers3

SysWhispers ayuda con la evasión generando archivos de cabecera/ASM que los implantes pueden usar para realizar llamadas directas al sistema.

Canal oficial de Discord

¡Ven a pasar el rato en Discord!

Inceptor Server

¿Por qué demonios no creé un PR para SysWhispers2?

Las razones para que SysWhispers3 sea una versión independiente son muchas, pero las más importantes son:

  • SysWhispers3 es el "fork" de facto utilizado por Inceptor, e implementa algunas clases de utilidades que no son relevantes para la versión original de la herramienta.
  • SysWhispers2 se está moviendo hacia el soporte de compilación NASM (para gcc/mingw), mientras que esta versión está específicamente diseñada y probada para soportar MSVC (porque Inceptor seguirá siendo un framework solo para Windows en el futuro cercano).
  • SysWhispers3 contiene características parcialmente implementadas (como egg-hunting) que no tendría sentido incluir en la versión original de la herramienta.

Diferencias con SysWhispers2

El uso es bastante similar a , con las siguientes excepciones:

SysWhispers2
  • También soporta x86/WoW64
  • Soporta reemplazo de instrucciones de syscalls con un EGG (para ser reemplazado dinámicamente)
  • Soporta saltos directos a syscalls en modo x86/x64 (en WOW64 es casi estándar)
  • Soporta saltos directos a syscalls aleatorios (tomando prestada la idea de @ElephantSeal)

Una mejor explicación de estas características está mejor descrita en la publicación del blog SysWhispers is dead, long live SysWhispers!

Introducción

Los productos de seguridad, como los AV y EDR, suelen colocar hooks en las funciones de API en modo usuario para analizar el flujo de ejecución de un programa, con el fin de detectar actividades potencialmente maliciosas.

SysWhispers2 es una herramienta diseñada para generar pares de cabecera/ASM para cualquier llamada al sistema en la imagen del núcleo del kernel (ntoskrnl.exe), que luego pueden integrarse y llamarse directamente desde código C/C++, evadiendo los hooks en modo usuario.

La herramienta, sin embargo, genera algunos patrones que pueden ser incluidos en firmas, o comportamientos que pueden ser detectados en tiempo de ejecución.

SysWhispers3 está construido sobre SysWhispers2, e integra algunas características útiles para evadir estas formas de detección.

Instalación

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

Uso y Ejemplos

La ayuda muestra todos los comandos y características disponibles de la herramienta:

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)

Líneas de comando

SysWhispers estándar, llamadas al sistema incrustadas (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

Muestras solo de 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


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

Importación en Visual Studio

  1. Copie los archivos H/C/ASM generados en la carpeta del proyecto.
  2. En Visual Studio, vaya a Project → Build Customizations... y habilite MASM.
  3. En el Solution Explorer, agregue los archivos .h y .c/.asm al proyecto como archivos de cabecera y fuente, respectivamente.
  4. Vaya a las propiedades del archivo ASM y establezca el Item Type en Microsoft Macro Assembler.

Compilación fuera de Visual Studio

Windows

Makefile para 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 para 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

Compilar con nmake:

root@kitploit:~
nmake -f Makefile.msvc

Linux

Makefile para 64 y 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)

Compilar con make:

root@kitploit:~
make -f Makefile.mingw

Advertencias y Limitaciones

  • La funcionalidad Egg-Hunter no está implementada dentro de esta herramienta, está en Inceptor.
  • No se soportan llamadas al sistema del subsistema gráfico (win32k.sys).
  • Probado en Visual Studio 2019/2022 con Windows 10 SDK.
  • No se garantiza soporte para NASM.
  • No se garantiza soporte para GCC y MinGW.

Solución de problemas

De SysWhispers2

  • Errores de redefinición de tipos: un proyecto puede no compilar si los typedefs en syscalls.h ya han sido definidos.
    • Asegúrese de que solo se incluyan las funciones necesarias (es decir, --preset all rara vez es necesario).
    • Si un typedef ya está definido en otro encabezado utilizado, entonces podría eliminarse de syscalls.h.

Nuevos

  • Con --verbose, es posible habilitar la salida de solución de problemas durante la generación de código.
  • Con --debug, la herramienta insertará un punto de interrupción de software en el stub de syscall, para facilitar la depuración en WinDbg.
  • Si obtiene un error A2084:constant value too large durante la compilación, regenere los stubs.

Créditos

SysWhispers2

Desarrollado por @Jackson_T y @modexpblog, pero se basa en el trabajo de muchos otros:

  • @FoxHex0ne por catalogar muchos prototipos de funciones y typedefs en un formato legible por máquina.
  • @PetrBenes, equipo de NTInternals.net y MSDN por prototipos y typedefs adicionales.
  • @Cn33liz por la implementación inicial del POC Dumpert.

SysWhispers2 (x86/WOW64)

  • @rooster por crear un fork de muestra compatible con x86/WOW64.

Otros

  • @ElephantSe4l por la idea de aleatorizar los saltos a las syscalls.
  • @S4ntiagoP por el increíble trabajo en nanodump, que me dio muchas ideas.

Licencia

Al igual que el original, este proyecto también está licenciado bajo la Licencia Apache 2.0.

Descargar herramienta