Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
HWSyscalls — HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP. | Kitploit
Strumenti/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.

Vedi Repository
7351073 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

HWSyscalls

image image

Principali Contributori

Dec0ne idov31

Descrizione

HWSyscalls è un nuovo metodo per eseguire syscall indirette usando 3 componenti principali:

  • Breakpoint hardware e Vectored Exception Handler per controllare il flusso di esecuzione.

  • HalosGate viene usato per trovare i numeri e gli indirizzi delle syscall.

  • Creazione di un trampolino sintetico su kernel32 con breakpoint hardware.

HWSyscalls è fornito come una libreria facile da includere che può essere aggiunta a qualsiasi progetto che voglia usare syscall indirette senza innescare i rilevamenti di EDR o AV basati sull'attuale rilevamento delle syscall indirette.

Le syscall indirette sono un metodo popolare usato in diverse varianti per chiamare le system call da ntdll; tuttavia, il problema principale nel chiamare syscall da ntdll è nel suo stesso cuore: uno strano accesso da un programma direttamente a ntdll, senza passare attraverso alcuna dll precedente. HWSyscalls è costruito sull'idea centrale delle syscall indirette, ma con una soluzione a questo problema combinando la funzionalità dei breakpoint hardware per creare il trampolino sintetico in kernel32 e HalosGate per ottenere gli SSN.

Per semplificare, un normale flusso di syscall indirette appare così:

indirect_syscalls

Mentre il nostro appare così:

hwsyscalls_flow

Aggiornamento

Abbiamo aggiornato la logica della funzione HWSyscallExceptionHandler con un po' di magia di manipolazione dello stack per rendere lo stack in grado di supportare l'unwinding. Lo abbiamo fatto chiamando direttamente la funzione NTAPI (il suo indirizzo ora viene restituito dalla funzione PrepareSyscall), facendo scattare l'HWBP nella funzione NTAPI, creando un nuovo stack frame e impostando l'indirizzo di ritorno del nuovo stack frame su un gadget "ADD RSP, 68; RET" trovato in kernel32 (o kernelbase), copiando anche gli argomenti dallo stack.

Lo stack ora supporta completamente l'unwinding e di fatto ritorna attraverso kernel32 nel suo percorso di ritorno da ntdll, senza alcuna necessità di breakpoint o di manipolazione del flusso di esecuzione da parte nostra:

hwsyscalls_stack

Per ulteriori informazioni, dai un'occhiata al nostro post sul blog (PROSSIMAMENTE).

Utilizzo

Per usare il progetto, dovrai includere HWSyscalls.h e chiamare InitHWSyscalls per trovare i gadget necessari e inizializzare il gestore delle eccezioni. Al termine dell'esecuzione del tuo programma, chiama DeinitHWSyscalls per rimuovere il gestore delle eccezioni.

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();

}

La verbosità di debug può essere attivata o disattivata modificando la definizione HWSYSCALLS_DEBUG in HWSyscalls.h

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
//...

Configurazione

Per compilare questo progetto avrai bisogno di Visual Studio 2019 e successivi. È importante notare che questo progetto è stato creato solo per ambienti x64 e deve essere compilato senza ottimizzazioni. Puoi disattivarla da Impostazioni di progetto -> C/C++ -> Ottimizzazione -> Ottimizzazione (Disabilitata /Od).

Esempio

example

Riconoscimenti

  • Sektor7 per Halosgate e per l'implementazione degli HWBP insegnata nel loro incredibile Malware Development Advanced Vol 1.

  • @Am0nsec e @RtlMateusz per l'implementazione originale di Hellsgate.

  • Rad9800 per l'ispirazione che abbiamo tratto da TamperingSyscalls.

  • Yxel per il codice di pattern matching binario che abbiamo usato da Cronos.

Scarica lo strumento