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
Tools/GitHubGitHub/share-devn/stealth_call
Privilege EscalationSpeicherforensikExploitationIDS/IPS-UmgehungShellcodePost-ExploitationRed TeamingPayload-Entwicklung
GitHubshare-devn/stealth_call

stealth_call

Nur-Header-Bibliothek für indirekte Syscalls unter Windows x64. Kein CRT, keine IAT, VEH-Anti-BP, AMSI/ETW-Umgehung, W^X-Speicher, dynamische Stubs pro Aufruf.

Repository anzeigen
7vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

stealth_call


Was ist das?

Nur-Header-Bibliothek für Windows x64, mit der Sie jeden NT-Syscall aufrufen können, ohne ntdll-Importe zu berühren, ohne Zeichenketten in Ihrer Binärdatei zu hinterlassen und ohne die üblichen Warnsignale, die EDRs aus der Fassung bringen.

Kein CRT. Keine STL. Kein IAT. Das Ganze kompiliert auf ~19 KB mit buchstäblich keinen DLL-Abhängigkeiten.

Entwickelt, um die üblichen Fallstricke bestehender Syscall-Bibliotheken zu vermeiden – Klartext-Zeichenketten, bekannte Hash-Konstanten, direkter Syscall aus Nicht-ntdll-Speicher, IAT-Importe, die schreien "Ich mache etwas Seltsames", SEC_NO_CHANGE IOC, CRT-Aufblähung. Nichts davon hier.


Funktionen

Syscall-Engine

  • Indirekte Syscalls — Stubs springen in das eigene syscall; ret-Gadget von ntdll, so dass RIP immer innerhalb von ntdll ist, wenn die Syscall-Anweisung ausgeführt wird
  • Pro-Aufruf-Stub-Generierung — jeder einzelne Aufruf erstellt einen frischen Stub mit zufälligem Müll, zufälligem Layout, XOR-verschlüsselter Syscall-Nummer. Nichts wird wiederverwendet
  • W^X-Durchsetzung — Scratch-Pages gehen RW → RX → RW. RWX wird grundsätzlich nie allokiert
  • Stubs werden sofort nach jedem Aufruf gelöscht
  • Syscalls extrahiert aus \KnownDlls\ntdll.dll-Abschnittszuordnung (kein Dateisystemzugriff, für ProcMon unsichtbar)
  • 977 Syscalls auf einem typischen Win11-System aufgelöst

Anti-Breakpoint

  • VEH-basierter Ansatz — wenn ein Debugger ein 0xCC auf Ihre Zielfunktion setzt, stellt der Exception-Handler stillschweigend das ursprüngliche Byte wieder her, führt die Anweisung im Single-Step aus und setzt den Breakpoint zurück. Der Debugger merkt nie, dass er umgangen wurde. Null Zeitfenster
  • Funktioniert mit jeder Funktion in jeder DLL, nicht nur ntdll

Umgehung

  • AMSI-Bypass — patcht AmsiScanBuffer, um S_OK zurückzugeben
  • ETW-Bypass — patcht EtwEventWrite, um SUCCESS zurückzugeben
  • Alle Patches erfolgen über direkte Syscalls, nicht über VirtualProtect
  • XOR-verschlüsselte Zeichenketten überall — DLL-Namen, Pfade, alles. Auf dem Stack entschlüsselt, nach Gebrauch gelöscht
  • Eigener Hash-Algorithmus (nicht FNV-1a, nicht CRC32 — keine bekannten YARA-Signaturen)
  • PEB-Walk für alle Modul-/Funktionsauflösungen — kein GetModuleHandle, kein GetProcAddress

Code-Qualität

  • Nur-Header, legen Sie den Ordner stealth/ in Ihr Projekt und los geht's
  • Threadsicher durch Pro-Thread-Scratch-Pages + Spinlocks
  • Vollständige Bereinigung beim Herunterfahren — Scratch-Pages freigegeben, Maps auf Null gesetzt, VEH entfernt
  • Hook-Erkennung für gängige EDR-Trampoline (jmp rel32, jmp [rip], mov rax + jmp rax)

Wie es funktioniert

flow

Syscall-Pfad

  1. initialize() öffnet ntdll über den Abschnitt \KnownDlls, parst PE-Exporte, schnappt sich jede Syscall-Nummer
  2. Scannt ntdll .text nach einem syscall; ret-Gadget — von hier aus wird die tatsächliche Syscall-Anweisung ausgeführt
  3. Wenn Sie sc::invoke() aufrufen:
    • Schlägt den Syscall-Eintrag per Hash nach
    • Holt sich die Scratch-Page des aufrufenden Threads (oder allokiert eine, nur RW)
    • emit_stub() erstellt einen eindeutigen polymorphen Stub — zufällige Junk-Anweisungen davor/danach, XOR-verschleierte Syscall-Nummer mit einem Pro-Aufruf-Schlüssel, indirekter Sprung zum ntdll-Gadget
    • Wechselt die Page von RW → RX
    • Ruft durch den Stub auf
    • Wechselt zurück von RX → RW
    • Setzt die Stub-Bytes auf Null

Zu keinem Zeitpunkt existiert RWX-Speicher. Zu keinem Zeitpunkt führt eine syscall-Anweisung außerhalb von ntdll aus. Zu keinem Zeitpunkt werden Syscall-Nummern im Klartext gespeichert.

VEH-Trampolin

Sie rufen tramp::invoke() mit der Zielfunktion auf. Wenn es keinen Breakpoint gibt — läuft die Funktion normal ohne zusätzlichen Overhead. Wenn ein Debugger 0xCC gesetzt hat:

  1. INT3-Ausnahme wird ausgelöst
  2. Unser VEH-Handler prüft, ob die Adresse in unserer Tabelle ist (Hash-Lookup, kein linearer Scan)
  3. Stellt das ursprüngliche Byte aus einer sauberen, von der Festplatte gelesenen Kopie wieder her
  4. Setzt das Trap-Flag
  5. Setzt die Ausführung fort — die echte Anweisung wird ausgeführt
  6. Single-Step-Ausnahme wird ausgelöst
  7. Handler setzt 0xCC zurück

Die Breakpoint-Liste des Debuggers zeigt ihn weiterhin als aktiv an. Der Breakpoint wird bei unseren Aufrufen einfach nie ausgelöst.


Erstellen

root@kitploit:~
cmake -B build -A x64
cmake --build build --config Release

Benötigt MSVC (VS 2019+) und CMake 3.15+. Ausgabe ist ~19 KB ohne Importe.


Verwendung

Syscalls

root@kitploit:~
#include "stealth/syscall.hpp"

stealth::sc::initialize();

PVOID base = nullptr;
SIZE_T size = 0x1000;
NTSTATUS status = stealth::sc::invoke<NTSTATUS>(
    HASH("NtAllocateVirtualMemory"),
    NtCurrentProcess(), &base, (ULONG_PTR)0, &size,
    (ULONG)(MEM_COMMIT | MEM_RESERVE), (ULONG)PAGE_READWRITE
);

Anti-Breakpoint

root@kitploit:~
#include "stealth/trampoline.hpp"

// funktioniert sogar, wenn x64dbg einen BP auf MessageBoxA hat
int ret = stealth::tramp::invoke<int>(
    HASH_CI("user32.dll"), HASH("MessageBoxA"),
    (HWND)nullptr, (LPCSTR)"hello", (LPCSTR)"title", (UINT)MB_OK
);

AMSI / ETW

root@kitploit:~
#include "stealth/bypass.hpp"

stealth::bypass::patch_etw();
stealth::bypass::patch_amsi();

Bereinigung

root@kitploit:~
stealth::tramp::shutdown();
stealth::sc::shutdown();

Projektstruktur

root@kitploit:~
stealth/
  common.hpp      — Speicheroperationen, Spinlock, static_map, PRNG, Debug-Ausgabe
  hash.hpp        — benutzerdefinierter Hash zur Compile-Zeit
  xorstr.hpp      — XOR-Zeichenkettenverschlüsselung zur Compile-Zeit
  peb.hpp         — PEB-Walk, PE-Export-Parser, Hook-Erkennung
  syscall.hpp     — Indirekte Syscall-Engine, Stub-Generator, W^X, Anti-Dump
  trampoline.hpp  — VEH-basierter Anti-Breakpoint
  bypass.hpp      — AMSI + ETW-Patching

Lizenz

MIT — tun Sie damit, was Sie wollen.

Tool herunterladen