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
DeepSleep — Une variante de Gargoyle pour x64 afin de masquer les artefacts mémoire en utilisant uniquement ROP et PIC. | Kitploit
Outils/GitHubGitHub/theflink/deepsleep
Criminalistique MémoireExploitationRed TeamingDéveloppement de Charges Utiles
GitHubtheflink/deepsleep

DeepSleep

Une variante de Gargoyle pour x64 afin de masquer les artefacts mémoire en utilisant uniquement ROP et PIC.

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

DeepSleep

Une variante de Gargoyle pour x64 pour masquer les artefacts mémoire en utilisant uniquement ROP et PIC.

Un immense merci à @waldoirc pour avoir documenté une grande partie de cette technique sur son blog
Cette implémentation est différente en ce sens qu'elle n'utilise pas d'APC et est entièrement implémentée en PIC.

Description

J'ai créé cela pour mieux comprendre comment contourner les artefacts mémoire en utilisant une technique similaire à Gargoyle sur x64. L'idée est de mettre en place une ROPChain qui appelle VirtualProtect() -> Sleep() -> VirtualProtect() pour marquer ma propre page comme N/A pendant le sommeil.

Contrairement à Gargoyle et autres implémentations similaires, je me repose entièrement sur ROP et ne mets en file d'attente aucun APC. DeepSleep lui-même est implémenté comme entièrement PIC, ce qui facilite l'énumération des pages mémoire qui doivent être cachées des scanners.

Lorsque le thread est actif, une MessageBox apparaît et la page de DeepSleep est marquée comme exécutable. Pendant le sommeil, la page est marquée comme N/A.

Cela contourne efficacement Moneta au moment de la rédaction si DeepSleep est injecté et que l'adresse de base du thread en cours d'exécution ne pointe pas vers de la mémoire privée engagée.

J'ai vérifié cela en utilisant la technique d'injection Earlybird pour injecter DeepSleep.bin dans notepad.exe

Moneta trouvant DeepSleep lors de l'affichage de msgbox Moneta ne trouvant pas DeepSleep lors de l'affichage de msgbox

Utilisation

En utilisant Mingw :
Tapez make et un sauvage DeepSleep.bin apparaît.
Alternativement, utilisez le DeepSleep.bin précompilé :-)

Travaux futurs et limitations

Travaux futurs

Je pourrais publier un chargeur pour CS ou d'autres agents C2. Similaire à YouMayPasser, le chargeur hookerait Sleep en utilisant des HW breakpoints pour éviter les modifications suspectes de kernel32.dll.

Limitations

Cela a été testé sur 10.0.19044 N/A Build 19044

Les ROPgadgets sur lesquels je me repose pourraient ne pas exister dans ntdll.dll dans d'autres versions de Windows. Il est probablement judicieux d'utiliser des ROPgadgets plus petits et plus génériques et d'énumérer les gadgets dans plus de dlls que ntdll.dll.

Détection

La pile d'appels d'un thread dans l'état DelayExecution inclut des régions mémoire inconnues/altérées et inclut en plus des adresses vers VirtualProtect(). Hunt-Sleeping-Beacons détecte cela.
Il pourrait être possible d'appliquer cette métrique à d'autres C2 utilisant une technique différente pour attendre entre les callbacks.

Pile étrange

Crédits

@waldoirc pour avoir documenté une grande partie de la technique ici
@forrest Orr pour Moneta
Josh Lospinoso pour la technique originale Gargoyle

Télécharger l’outil