Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
HWSyscalls — HWSyscalls is a new method to execute indirect syscalls using HWBP, HalosGate and a synthetic trampoline on kernel32 with HWBP. | Kitploit
Outils/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.

Voir le dépôt
735107il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

HWSyscalls

image image

Principaux contributeurs

Dec0ne idov31

Description

HWSyscalls est une nouvelle méthode pour exécuter des appels système indirects à l'aide de 3 composants principaux :

  • Les points d'arrêt matériels et le gestionnaire d'exceptions vecteur (Vectored Exception Handler) pour contrôler le flux d'exécution.

  • HalosGate est utilisé pour trouver les numéros et adresses des appels système.

  • Création d'un trampoline synthétique sur kernel32 avec des points d'arrêt matériels.

HWSyscalls est fourni sous forme de bibliothèque facile à intégrer, qui peut être ajoutée à tout projet souhaitant utiliser des appels système indirects sans déclencher les détections des EDR ou des AV basées sur la détection actuelle des appels système indirects.

Les appels système indirects sont une méthode populaire utilisée sous différentes variantes pour appeler des appels système depuis ntdll. Cependant, le principal problème de l'appel des appels système depuis ntdll se trouve au cœur même de cette approche : un accès inhabituel d'un programme directement à ntdll, sans passer par aucune dll préalable. HWSyscalls repose sur l'idée centrale des appels système indirects, mais apporte une solution à ce problème en combinant la fonctionnalité des points d'arrêt matériels pour créer le trampoline synthétique dans kernel32 et HalosGate pour obtenir les SSN.

Pour simplifier, un flux d'appels système indirects normal ressemble à ceci :

indirect_syscalls

Alors que le nôtre ressemble à ceci :

hwsyscalls_flow

Mise à jour

Nous avons mis à jour la logique de la fonction HWSyscallExceptionHandler avec quelques astuces de manipulation de la pile afin de rendre la pile déroulable (unwindable). Pour ce faire, nous appelons directement la fonction NTAPI (son adresse est désormais retournée par la fonction PrepareSyscall), déclenchons le HWBP dans la fonction NTAPI, créons un nouveau cadre de pile et définissons l'adresse de retour de ce dernier sur un gadget "ADD RSP, 68; RET" trouvé dans kernel32 (ou kernelbase), tout en copiant également les arguments de la pile.

La pile est désormais complètement déroulable et retourne effectivement par kernel32 lors de son retour depuis ntdll, sans aucun besoin de points d'arrêt ni de manipulation du flux d'exécution de notre part :

hwsyscalls_stack

Pour plus d'informations, consultez notre article de blog (BIENTÔT DISPONIBLE).

Utilisation

Pour utiliser le projet, vous devez inclure le fichier HWSyscalls.h et appeler InitHWSyscalls pour trouver les gadgets nécessaires et initialiser le gestionnaire d'exceptions. À la fin de l'exécution de votre programme, appelez DeinitHWSyscalls pour supprimer le gestionnaire d'exceptions.

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é du débogage peut être activée ou désactivée en modifiant la définition HWSYSCALLS_DEBUG dans 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
//...

Configuration

Pour compiler ce projet, vous aurez besoin de Visual Studio 2019 ou version ultérieure. Il est important de noter que ce projet a été conçu uniquement pour les environnements x64 et doit être compilé sans optimisation. Vous pouvez la désactiver via Propriétés du projet -> C/C++ -> Optimisation -> Optimisation (Désactivée /Od).

Exemple

example

Remerciements

  • Sektor7 pour Halosgate et pour l'implémentation du HWBP enseignée dans leur formidable Malware Development Advanced Vol 1.

  • @Am0nsec et @RtlMateusz pour l'implémentation originale de Hellsgate.

  • Rad9800 pour l'inspiration que nous avons tirée de TamperingSyscalls.

  • Yxel pour le code de correspondance de motifs binaires que nous avons utilisé depuis Cronos.

Télécharger l’outil