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
HWSyscalls — HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP. | Kitploit
Tools/GitHubGitHub/dec0ne/hwsyscalls
IDS/IPS EvasionPost-ExploitationPenetration TestingRed TeamingPayload Development
GitHubdec0ne/hwsyscalls

HWSyscalls

HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP.

Repository anzeigen
735107vor 3 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 →
Teilen

HWSyscalls

image image

Hauptmitwirkende

Dec0ne Idov31

Beschreibung

HWSyscalls ist eine neue Methode zur Ausführung indirekter Syscalls mithilfe von 3 Hauptkomponenten:

  • Hardware-Breakpoints und ein Vectored Exception Handler, um den Ausführungsfluss zu steuern.

  • HalosGate wird verwendet, um Syscall-Nummern und -Adressen zu finden.

  • Erstellen eines synthetischen Trampolins auf kernel32 mit Hardware-Breakpoints.

HWSyscalls wird als einfach einzubindende Bibliothek bereitgestellt, die jedem Projekt hinzugefügt werden kann, das indirekte Syscalls verwenden möchte, ohne EDR- oder AV-Erkennungen auszulösen, die auf der aktuellen Erkennung indirekter Syscalls basieren.

Indirekte Syscalls sind eine beliebte Methode, die in verschiedenen Varianten verwendet wird, um Systemaufrufe aus ntdll heraus zu tätigen. Das Hauptproblem beim Aufrufen von Syscalls aus ntdll liegt jedoch im Kern: Ein ungewöhnlicher Zugriff eines Programms direkt auf ntdll, ohne eine vorherige DLL zu durchlaufen.

HWSyscalls basiert auf der Kernidee indirekter Syscalls, bietet jedoch eine Lösung für dieses Problem, indem es die Funktionalität von Hardware-Breakpoints kombiniert, um das synthetische Trampolin in kernel32 zu erzeugen, und HalosGate nutzt, um die SSNs zu erhalten.

Zur Veranschaulichung sieht ein normaler Ablauf indirekter Syscalls folgendermaßen aus:

indirect_syscalls

Unserer sieht dagegen so aus:

hwsyscalls_flow

Update

Wir haben die Logik der HWSyscallExceptionHandler-Funktion mit etwas Stack-Manipulations-Magie aktualisiert, um den Stack abwickelbar zu machen.

Dies haben wir erreicht, indem wir die NTAPI-Funktion direkt aufrufen (ihre Adresse wird nun in der PrepareSyscall-Funktion zurückgegeben), den HWBP in der NTAPI-Funktion auslösen, einen neuen Stack-Frame erstellen und die Rücksprungadresse des neuen Stack-Frames auf ein in kernel32 (oder kernelbase) gefundenes "ADD RSP, 68; RET"-Gadget setzen, während auch die Stack-Argumente kopiert werden.

Der Stack ist jetzt vollständig abwickelbar und führt auf dem Rückweg von ntdll tatsächlich durch kernel32, ohne dass wir Breakpoints oder eine Manipulation des Ausführungsflusses benötigen:

hwsyscalls_stack

Weitere Informationen finden Sie in unserem Blogbeitrag (KOMMT BALD).

Verwendung

Um das Projekt zu verwenden, müssen Sie HWSyscalls.h einbinden und InitHWSyscalls aufrufen, um die erforderlichen Gadgets zu finden und den Exception Handler zu initialisieren. Rufen Sie am Ende der Programmausführung DeinitHWSyscalls auf, um den Exception Handler zu entfernen.

root@kitploit:~
#include "HWSyscalls.h"

typedef NTSTATUS(WINAPI* NtOpenProcess_t)(
	OUT          PHANDLE            ProcessHandle,
	IN           ACCESS_MASK        DesiredAccess,
	IN           POBJECT_ATTRIBUTES ObjectAttributes,
	IN OPTIONAL  PCLIENT_ID         ClientId);

void main() {

    // Initialize the exception handler and find the required gadgets.
    if (!InitHWSyscalls())
        return;
    
    // ...

    // Execute your function!
    NtOpenProcess_t pNtOpenProcess = (NtOpenProcess_t)PrepareSyscall((char*)("NtOpenProcess"));
    NTSTATUS status = pNtOpenProcess(&targetHandle, PROCESS_ALL_ACCESS, &object, &clientID);

    // ...

    // Removing the exception handler.
    DeinitHWSyscalls();

}

Die Ausführlichkeit der Debug-Ausgaben kann durch Ändern der Definition HWSYSCALLS_DEBUG in HWSyscalls.h ein- oder ausgeschaltet werden.

root@kitploit:~
#pragma once
#include <windows.h>
#include <inttypes.h>
#include <stdio.h>

#pragma region Defines

#define HWSYSCALLS_DEBUG 0 // 0 disable, 1 enable
#define UP -32
//...

Einrichtung

Zum Kompilieren dieses Projekts benötigen Sie Visual Studio 2019 und neuere Versionen. Es ist wichtig zu beachten, dass dieses Projekt nur für x64-Umgebungen erstellt wurde und ohne Optimierung kompiliert werden muss. Sie können dies unter Projekteinstellungen -> C/C++ -> Optimierung -> Optimierung (Deaktiviert /Od) deaktivieren.

Beispiel

example

Danksagungen

  • Sektor7 für Halosgate und für die HWBP-Implementierung, die in ihrem großartigen Malware Development Advanced Vol 1 gelehrt wird.

  • @Am0nsec und @RtlMateusz für die ursprüngliche Hellsgate-Implementierung.

  • Rad9800 für die Inspiration, die wir aus TamperingSyscalls erhalten haben.

  • Yxel für den Binärmuster-Abgleichcode, den wir aus Cronos verwendet haben.

Tool herunterladen