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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
p3-loader — P³-Shellcode Loader est un chargeur qui implémente une technique d'injection de code utilisant la structure des paramètres de processus (Process Parameters) comme emplacement d'exécution et de mise en scène pour l'injection de shellcode dans des processus distants, sans déclencher les mécanismes de détection courants. | Kitploit
Outils/GitHubGitHub/orange-cyberdefense/p3-loader
Outils DéfensifsEscalade de PrivilègesExploitationShellcodePost-ExploitationTests d'IntrusionArticles et RechercheApprentissage et ÉducationRed Teaming
Développement de Charges Utiles
Exploitation de Binaires
GitHuborange-cyberdefense/p3-loader

p3-loader

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

À propos

P³-Shellcode Loader est un chargeur qui implémente une technique d'injection de code utilisant la structure des paramètres de processus (Process Parameters) comme emplacement d'exécution et de mise en scène pour l'injection de shellcode dans des processus distants, sans déclencher les mécanismes de détection courants.

Partager

P³-Shellcode Loader - Empoisonnement des paramètres de processus

Auteurs : Max Hirschberger & Ogulcan Ugur


Sommaire

  1. Introduction
  2. Injection de processus typique et API système impliquées
  3. Fondements techniques des mécanismes internes de Windows requis
    • 3.1 API de création de processus et paramètres de démarrage
    • 3.2 Le bloc d'environnement du processus (PEB)
  4. Empoisonnement des paramètres de processus (P³)
    • 4.1 Démarrage d'un processus avec un paramètre empoisonné
    • 4.2 Localisation des données injectées dans le nouveau processus
    • 4.3 Exécution du code injecté
    • 4.4 Injections de charges utiles implémentées
  5. Transmission d'un shellcode arbitraire dans une chaîne
    • 5.1 Méthodes auxiliaires de bas niveau utilisées par le générateur de shellcode
    • 5.2 Implémentation des opérations de plus haut niveau
  6. Avantages de l'évitement de détection par cette technique
  7. Approche de détection
  8. Conclusion
  9. Références

1. Introduction

P³-Shellcode Loader est un chargeur qui implémente une technique d'injection de code exploitant la structure des paramètres de processus (Empoisonnement des paramètres de processus) comme emplacement d'exécution et de staging pour l'injection de shellcode dans des processus distants, sans déclencher les mécanismes de détection courants.

Un concept similaire a été décrit par le chercheur en sécurité modexp, qui a démontré que les arguments passés à l'API CreateProcess peuvent être utilisés à cette fin [1].


2. Injection de processus typique et API système impliquées

Les attaquants souhaitent rendre leurs activités moins suspectes. Avec l'injection de processus, les attaquants peuvent effectuer leurs activités depuis un processus différent, plus fiable ou attendu pour réaliser l'activité spécifique, réduisant ainsi les soupçons.

Voici les étapes typiques requises pour injecter du code dans un autre processus :

  1. L'attaquant recherche et ouvre un processus cible ou démarre un nouveau processus (via OpenProcess / NtOpenProcess ou CreateProcess / NtCreateProcess).
  2. La mémoire pour le code malveillant est allouée dans le processus cible (via VirtualAllocEx ou NtAllocateVirtualMemory).
  3. Le code malveillant est écrit dans la nouvelle allocation (via WriteProcessMemory / NtWriteVirtualMemory).
  4. La protection d'accès mémoire est configurée pour permettre l'exécution du code malveillant (via VirtualProtectEx / NtProtectVirtualMemory).
  5. Un nouveau thread est démarré dans le processus cible qui exécute le code malveillant (via CreateRemoteThread ou NtCreateThreadEx).

Les techniques d'injection supplémentaires incluent, sans s'y limiter, les suivantes :

  • Détournement de thread : Au lieu de créer un nouveau thread, un thread existant est redirigé (via NtSetContextThread)
  • Injection Early-Bird APC : Utilise les appels de procédure asynchrones (APC) pour rediriger l'exécution d'un thread existant (via NtQueueApcThread)
  • Dirty Vanity : Abuse de l'API Windows RtlCreateProcessReflection, qui implémente le forking de processus. Lors de nos tests, nous avons observé que la plupart des EDR se concentrent sur une télémétrie spécifique pour détecter l'injection de processus. Les EDR surveillent principalement l'utilisation de WriteProcessMemory et VirtualAllocEx, ainsi que leurs appels système noyau sous-jacents NtWriteVirtualMemory, NtAllocateVirtualMemory et NtAllocateVirtualMemoryEx.

3. Fondements techniques des mécanismes internes de Windows requis

3.1 API de création de processus et paramètres de démarrage

Windows fournit la fonction API CreateProcessW pour créer de nouveaux processus, illustrée dans le Listing 1. Les trois premiers de ses paramètres lpCommandLine, lpEnvironment et lpStartupInfo sont pertinents pour la technique d'injection décrite, car ils sont utilisés pour transférer des données vers le nouveau processus.```c BOOL CreateProcessW( [in, optional] LPCWSTR lpApplicationName, [in, out, optional] LPWSTR lpCommandLine, [in, optional] LPSECURITY_ATTRIBUTES lpProcessAttributes, [in, optional] LPSECURITY_ATTRIBUTES lpThreadAttributes, [in] BOOL bInheritHandles, [in] DWORD dwCreationFlags, [in, optional] LPVOID lpEnvironment, [in, optional] LPCWSTR lpCurrentDirectory, [in] LPSTARTUPINFOW lpStartupInfo, [out] LPPROCESS_INFORMATION lpProcessInformation );

*Listing 1 : Définition de la fonction API Windows CreateProcessW*
 
Le paramètre `lpCommandLine` spécifie la ligne de commande du nouveau processus. Il est limité à un maximum de 32 767 caractères Unicode, y compris le terminateur nul Unicode. Pour la variante Unicode, il est nécessaire de fournir une chaîne que la fonction peut écrire. Si une chaîne constante est fournie, toute tentative d'écriture de la part de la fonction API entraîne une violation d'accès mémoire. Si la valeur est `NULL`, la ligne de commande du processus sera prise du paramètre `lpApplicationName`. Si `lpApplicationName` est `NULL`, elle doit être fournie dans le champ `lpCommandLine` et est limitée à `MAX_PATH` caractères.
 
Le paramètre `lpEnvironment` fournit une liste de variables d'environnement au processus. Si la valeur est `NULL`, l'environnement du processus créateur sera utilisé. La liste des variables d'environnement est constituée de chaînes terminées par un caractère nul successives au format `NOM=VALEUR` avec un autre terminateur nul à la fin.
 
Le paramètre `lpStartupInfo` est une structure présentée dans le Listing 2 avec des champs tels que la station de fenêtre, le bureau, les handles d'entrée et sortie standard ainsi que des champs qui configurent la fenêtre principale du nouveau processus. Selon la documentation Microsoft, le champ `lpReserved` est réservé à un usage interne sans documentation supplémentaire. Grâce à l'analyse avec le débogueur WinDbg, il a été possible de relier ce paramètre à la variable `ShellInfo` de type `UNICODE_STRING` dans le nouveau processus.```c
typedef struct _STARTUPINFOW {
    DWORD  cb;
    LPWSTR lpReserved;   // Copied to ShellInfo (UNICODE_STRING)
    LPWSTR lpDesktop;
    LPWSTR lpTitle;
    DWORD  dwX;
    DWORD  dwY;
    DWORD  dwXSize;
    // (...) additional fields
    WORD   wShowWindow;
    WORD   cbReserved2;
    LPBYTE lpReserved2;
    HANDLE hStdInput;
    // (...) additional fields
} STARTUPINFOW, *LPSTARTUPINFOW;

Liste 2 : Disposition de la structure de données STARTUPINFOW

3.2 Le bloc d'environnement du processus (PEB)

Télécharger l’outil