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
DbgNexum — Injection de shellcode utilisant l'API de débogage Windows | Kitploit
Outils/GitHubGitHub/dis0rder0x00/dbgnexum
Génération de PayloadsExploitationShellcodePost-ExploitationTests d'IntrusionRed TeamingGénération de ShellcodeDéveloppement de Charges UtilesExploitation de Binaires
GitHubdis0rder0x00/dbgnexum

DbgNexum

Injection de shellcode utilisant l'API de débogage Windows

18339il y a 7 moisVé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
Voir le dépôt

DbgNexum - Injection de Shellcode

DbgNexum est une preuve de concept pour injecter un shellcode en utilisant l'API de débogage Windows et la mémoire partagée (File Mapping). Elle évite d'écrire et de lire directement la mémoire distante, utilisant plutôt la manipulation du contexte pour forcer le processus cible à charger et exécuter la charge utile elle-même.

Aperçu

L'injecteur s'attache à un processus cible et crée un thread suspendu. Grâce à une boucle de débogage, il définit un point d'arrêt matériel pour piéger l'exécution à une adresse de retour spécifique. À chaque piège, l'injecteur modifie les registres du CPU pour imiter des appels de fonction, orchestrant une séquence d'appels à des fonctions API Windows à l'intérieur du processus cible.

Au moment de la rédaction de ce README, j'ai testé la technique contre MDE et Elastic, dont aucun ne l'a détectée.

Fonctionnalités clés

  • Pas de WriteProcessMemory / VirtualAllocEx : La charge utile est transférée via CreateFileMapping et MapViewOfFile.
  • Pas de ReadProcessMemory : L'approche obtient toutes les informations clés à partir du contexte du thread.

Utilisation

Le PoC utilise un shellcode XORé de msfvenom qui lance « calc.exe ». Mais veuillez utiliser votre propre shellcode !

  1. Incluez votre shellcode (et clé XOR) dans shellcode.h
  2. Trouvez l'ID du processus cible.
  3. Lancez l'injecteur :
root@kitploit:~
DbgNexum.exe <PID>

Exemple de sortie :

root@kitploit:~
[i] Section 'MZ' created and shellcode copied
[+] Bait thread created. Setting HWBP on FileTimeToSystemTime
[i] Execution Redirected:
|-> [0] Preparation & anchoring stack
|-> [1] Setting HWBP & buffer alloc
|-> [2] Copying File-Mapping name
|-> [3] Zeroing stack slot
|-> [4] Opening handle to named file mapping
|-> [5] Mapping payload into mem. with exec. perm.
|-> [6] Cleanup & shellcode execution
[+] Successfully detached from process 19256
[i] Orchestration complete.

Comment ça fonctionne

Le flux d'exécution est un va-et-vient constant entre la boucle de débogage de l'injecteur et le processus cible.

Étapes d'injection

La fonction DebugLoop contient la logique principale d'injection et orchestre la « machine à états » :

0. Préparation :

  • L'injecteur enregistre le pointeur de pile actuel pour le réutiliser à chaque étape.
  • Pour obtenir l'adresse de retour de la pile ancrée, nous définissons un flag de piège et fixons l'exécution à un appel ret immédiat.

1. Allocation :

  • Définir un HWBP sur l'adresse de retour de la pile ancrée, pour être notifié quand une fonction appelée retourne.
  • Préparer et forcer le thread à appeler LocalAlloc pour (évidemment) allouer un petit tampon.

2. Configuration des données :

  • Préparer et forcer le thread à appeler memcpy pour copier la chaîne MZ dans le tampon précédemment alloué.

3. Préparation de la pile :

  • Forcer le thread à appeler memset pour mettre à zéro un emplacement de pile. Ceci en préparation de l'étape 5, qui appellera MapViewOfFile. Comme la fonction utilisera plus de 4 arguments, le 5ème argument est passé via la pile (que nous définissons ici).

4. Ouverture du mappage :

  • Forcer le thread à appeler OpenFileMappingA en utilisant le nom MZ, « créé » dans les étapes 2 & 3.

5. Mappage de la charge utile :

  • Force la cible à appeler MapViewOfFile. Cela mappe la section de mémoire partagée (contenant le shellcode) dans l'espace d'adressage de la cible avec des permissions EXECUTE.

6. Exécution :

  • Redirige RIP vers l'adresse retournée par MapViewOfFile.
  • Efface les registres de débogage et se détache.
Télécharger l’outil