Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
herpaderping — Process Herpaderping preuve de concept, outil et plongée technique approfondie. Process Herpaderping contourne les produits de sécurité en masquant les intentions d’un processus. | Kitploit
Outils/GitHubGitHub/jxy-s/herpaderping
Outils DéfensifsExploitationTests d'Intrusion
GitHubjxy-s/herpaderping

herpaderping

Process Herpaderping preuve de concept, outil et plongée technique approfondie. Process Herpaderping contourne les produits de sécurité en masquant les intentions d’un processus.

Voir le dépôt
1.2k2249il 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

Process Herpaderping

[][png.HerpaderpIcon] Process Herpaderping est une méthode permettant de masquer les intentions d’un processus en modifiant le contenu sur disque après que l’image a été mappée. Cela entraîne un comportement curieux de la part des produits de sécurité et du système d’exploitation lui-même.

![][png.mimioogle]

![][gif.SurivDemo]

Résumé

En général, un produit de sécurité réagit à la création d’un processus en enregistrant un rappel dans le noyau Windows ([PsSetCreateProcessNotifyRoutineEx][msdn.PsSetCreateProcessNotifyRoutineEx]). À ce stade, un produit de sécurité peut inspecter le fichier qui a servi à mapper l’exécutable et déterminer si ce processus doit être autorisé à s’exécuter. Ce rappel du noyau est invoqué lorsque le thread initial est inséré, et non lors de la création de l’objet processus.

De ce fait, un acteur peut créer et mapper un processus, modifier le contenu du fichier, puis créer le thread initial. Un produit qui inspecte au moment du rappel de création verrait le contenu modifié. De plus, certains produits utilisent une approche d’analyse à l’écriture qui consiste à surveiller les écritures de fichiers. Une optimisation courante consiste à enregistrer que le fichier a été écrit et à différer l’inspection réelle jusqu’à ce que [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] se produise (par exemple, lorsque le descripteur de fichier est fermé). Ainsi, un acteur utilisant un workflow écriture -> mappage -> modification -> exécution -> fermeture contournera l’analyse à l’écriture qui repose uniquement sur l’inspection à [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP].

Pour abuser de cette convention, nous écrivons d’abord un binaire dans un fichier cible sur disque. Ensuite, nous mappons une image du fichier cible et la fournissons au système d’exploitation pour qu’il l’utilise lors de la création du processus. Le système d’exploitation mappe gentiment le binaire original pour nous. En utilisant le descripteur de fichier existant, et avant de créer le thread initial, nous modifions le contenu du fichier cible pour obscurcir ou falsifier le fichier soutenant l’image. Quelque temps plus tard, nous créons le thread initial pour commencer l’exécution du binaire original. Enfin, nous fermerons le descripteur du fichier cible. Passons en revue étape par étape :

  1. Écrire le binaire cible sur le disque, en gardant le descripteur ouvert. C’est ce qui s’exécutera en mémoire.
  2. Mapper le fichier en tant que section d’image ([NtCreateSection][msdn.NtCreateSection], [SEC_IMAGE][msdn.SEC_IMAGE]).
  3. Créer l’objet processus à l’aide du descripteur de section (NtCreateProcessEx).
  4. À l’aide du même descripteur de fichier cible, obscurcir le fichier sur le disque.
  5. Créer le thread initial dans le processus (NtCreateThreadEx).
    • À ce stade, le rappel de création de processus dans le noyau se déclenche. Le contenu sur le disque ne correspond pas à ce qui a été mappé. L’inspection du fichier à ce moment entraînera une attribution incorrecte.
  6. Fermer le descripteur. [IRP_MJ_CLEANUP][msdn.IRP_MJ_CLEANUP] se produira ici.
    • Comme nous avons caché le contenu de ce qui s’exécute, l’inspection à ce stade entraînera une attribution incorrecte.

![][svg.StateDiagram]

plantuml

@startuml
hide empty description

[*] --> CreateFile
CreateFile --> FileHandle
FileHandle --> Write
FileHandle --> NtCreateSection
Write -[hidden]-> NtCreateSection
NtCreateSection --> SectionHandle
SectionHandle --> NtCreateProcessEx
FileHandle --> Modify
NtCreateProcessEx -[hidden]-> Modify
NtCreateProcessEx --> NtCreateThreadEx
Modify -[hidden]-> NtCreateThreadEx
NtCreateThreadEx --> [*]
FileHandle --> CloseFile
NtCreateThreadEx -[hidden]-> CloseFile
NtCreateThreadEx --> PspCallProcessNotifyRoutines
PspCallProcessNotifyRoutines -[hidden]-> [*]
CloseFile --> IRP_MJ_CLEANUP
IRP_MJ_CLEANUP -[hidden]-> [*]
PspCallProcessNotifyRoutines --> Inspect
PspCallProcessNotifyRoutines -[hidden]-> CloseFile 
IRP_MJ_CLEANUP --> Inspect
Inspect -[hidden]-> [*]

CreateFile : Créer le fichier cible, garder le descripteur ouvert.
Write : Écrire la charge utile source dans le fichier cible.
Modify : Obscurcir le fichier sur le disque.
NtCreateSection : Créer une section en utilisant le descripteur de fichier.
NtCreateProcessEx : La section d'image pour le processus est mappée et mise en cache dans l'objet fichier.
NtCreateThreadEx : La section mise en cache est utilisée.
NtCreateThreadEx : Les routines de notification de processus se déclenchent dans le noyau.
Inspect : Le contenu sur le disque ne correspond pas à ce qui a été exécuté. 
Inspect : L'inspection du fichier à ce moment entraînera une attribution incorrecte.
@enduml

Comportement

Vous verrez dans la démo ci-dessous que CMD.exe est utilisé comme cible d’exécution. La première exécution remplace les octets sur le disque par un motif. La deuxième exécution remplace CMD.exe par ProcessHacker.exe. L’outil Herpaderping corrige le binaire pour qu’il ressemble le plus possible à ProcessHacker.exe, en conservant même la signature originale. Notez les exécutions multiples du même binaire et l’apparence du processus pour l’utilisateur par rapport à ce qui se trouve dans le fichier sur le disque.

![][gif.ProcessHerpaderp]

![][png.procmon]

Approfondir

Nous avons observé le comportement et certains aspects peuvent surprendre. Essayons d’expliquer ce comportement.

[Plongée technique approfondie][md.DivingDeeper]

Contexte et motivation

Lors de la conception de produits de sécurisation des plateformes Windows, de nombreux ingénieurs de ce domaine (dont moi-même) sont tombés dans des idées préconçues concernant la façon dont le système d’exploitation gère les données. Dans ce scénario, certains pourraient s’attendre à ce que le fichier sur disque reste « verrouillé » lorsque le processus est créé. Vous ne pouvez pas supprimer le fichier. Vous ne pouvez pas y écrire. Mais vous pouvez le renommer. Comme on le voit ici, sous certaines conditions, vous pouvez en fait y écrire. Restez vigilant sur vos hypothèses, remettez-les toujours en question et faites vos recherches.

La motivation de cette recherche est venue en découvrant comment effectuer une analyse lorsqu’un fichier est écrit. Avec des recherches antérieures sur le Process Hollowing et le Doppelganging, j’avais théorisé que cela pourrait être possible. L’objectif est d’offrir une meilleure sécurité. On ne peut pas créer une meilleure serrure sans d’abord comprendre comment briser l’ancienne.

Techniques similaires

Herpaderping est similaire au Hollowing et au Doppelganging, mais il existe quelques différences clés :

Process Hollowing

Le Process Hollowing consiste à modifier la section mappée avant le début de l’exécution, ce qui, de manière abstraite, ressemble à : mapper -> modifier la section -> exécuter. Ce workflow entraîne une divergence du flux d’exécution prévu du processus creusé vers un code non prévu. Le Doppelganging peut être considéré comme une forme de Hollowing. Cependant, le Hollowing, à mon avis, est plus proche de l’injection dans la mesure où il implique généralement une écriture explicite dans le code déjà mappé. Cela diffère d’Herpaderping, où il n’y a pas de sections modifiées.

Télécharger l’outil