Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SysWhispers3 — SysWhispers on Steroids - обход AV/EDR с помощью прямых системных вызовов. | Kitploit
Инструменты/GitHubGitHub/klezvirus/syswhispers3
Оборонительные ИнструментыГенерация полезной нагрузкиЭксплуатацияШелл-кодRed Teaming
GitHubklezvirus/syswhispers3

SysWhispers3

SysWhispers on Steroids - обход AV/EDR с помощью прямых системных вызовов.

Репозиторий
1.6k2072 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SysWhispers3

SysWhispers помогает с обходом защиты, генерируя пары файлов заголовков/ASM, которые можно использовать для прямых системных вызовов.

Официальный Discord-канал

Заходите пообщаться на Discord!

Inceptor Server

Почему я не создал PR в SysWhispers2?

Причин, по которым SysWhispers3 является отдельной версией, много, но самые важные:

  • SysWhispers3 — это фактический «форк», используемый Inceptor, и реализует некоторые вспомогательные классы, которые не актуальны для оригинальной версии инструмента.
  • SysWhispers2 движется к поддержке компиляции NASM (для gcc/mingw), в то время как эта версия специально спроектирована и протестирована для поддержки MSVC (потому что Inceptor в ближайшем будущем останется Windows-ориентированным фреймворком).
  • SysWhispers3 содержит частично реализованные функции (например, поиск яиц), которые было бы нецелесообразно включать в оригинальную версию инструмента.

Отличия от SysWhispers2

Использование очень похоже на SysWhispers2, за следующими исключениями:

  • Также поддерживает x86/WoW64
  • Поддерживает замену инструкций системных вызовов на EGG (чтобы заменять их динамически)
  • Поддерживает прямые переходы к системным вызовам в режиме x86/x64 (в WOW64 это почти стандарт)
  • Поддерживает прямые переходы к случайным системным вызовам (идея позаимствована у @ElephantSeal)

Эти функции лучше объяснены в статье SysWhispers is dead, long live SysWhispers!

Введение

Продукты безопасности, такие как антивирусы и EDR, обычно устанавливают хуки в пользовательские API-функции для анализа потока выполнения программы с целью обнаружения потенциально вредоносной активности.

SysWhispers2 — это инструмент, предназначенный для генерации пар заголовков/ASM для любого системного вызова в образе ядра (ntoskrnl.exe), которые затем можно интегрировать и вызывать напрямую из кода на 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:~
# Экспорт всех функций с совместимостью со всеми поддерживаемыми версиями Windows (см. example-output/).
py .\syswhispers.py --preset all -o syscalls_all

# Экспорт только общих функций (см. список ниже).
py .\syswhispers.py --preset common -o syscalls_common

# Экспорт NtProtectVirtualMemory и NtWriteVirtualMemory с совместимостью со всеми версиями.
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem

Примеры только для SysWhispers3

root@kitploit:~
# Обычный SysWhispers, 32-битный режим
py .\syswhispers.py --preset all -o syscalls_all -m jumper --arch x86

# Обычный SysWhispers, использование WOW64 в 32-битном режиме (только определённые функции)
py .\syswhispers.py --functions NtProtectVirtualMemory,NtWriteVirtualMemory -o syscalls_mem --arch x86 --wow64

# Egg-Hunting SysWhispers, для обхода «метки системного вызова» (общие функции)
py .\syswhispers.py --preset common -o syscalls_common -m egg_hunter

# Jumping/Jumping Randomized SysWhispers, для обхода динамической проверки RIP (все функции) с использованием MinGW в качестве компилятора
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 перейдите в Project → Build Customizations... и включите MASM.
  3. В Solution Explorer добавьте файлы .h и .c/.asm в проект как файлы заголовков и исходные файлы соответственно.
  4. Откройте свойства файла ASM и установите Item Type в Microsoft Macro Assembler.

Компиляция вне Visual Studio

Windows

Makefile для 64 бит:

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 для 32 бит:

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

Makefile для 64 и 32 бит:

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

  • Ошибки переопределения типов: проект может не компилироваться, если typedef в syscalls.h уже были определены.
    • Убедитесь, что включены только необходимые функции (т.е. --preset all требуется редко).
    • Если typedef уже определён в другом используемом заголовке, его можно удалить из syscalls.h.

Новое

  • С помощью --verbose можно включить диагностический вывод во время генерации кода.
  • С помощью --debug инструмент вставит программную точку останова в заглушку системного вызова для упрощения отладки в 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 за идею рандомизации переходов к системным вызовам.
  • @S4ntiagoP за невероятную работу над nanodump, которая дала мне множество идей.

Лицензия

Как и оригинальный проект, этот проект лицензирован по лицензии Apache License 2.0.

Скачать инструмент