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
PrintSpoofer-ReflectiveDLL — La vulnérabilité d'élévation de privilèges du spouleur d'impression Windows (CVE-2019-1040/CVE-2019-1019) a été implémentée en tant que Reflective DLL pour les tests de pénétration. | Kitploit
Outils/GitHubGitHub/jonyfilc/printspoofer-reflectivedll
Escalade de PrivilègesExploitationMouvement LatéralPost-ExploitationTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubjonyfilc/printspoofer-reflectivedll

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

PrintSpoofer-ReflectiveDLL

La vulnérabilité d'élévation de privilèges du spouleur d'impression Windows (CVE-2019-1040/CVE-2019-1019) a été implémentée en tant que Reflective DLL pour les tests de pénétration.

Voir le dépôt
234il y a 25 joursPas encore vérifié

Détails de PrintSpoofer

License Platform C++

PrintSpoofer est un outil qui réalise une élévation de privilèges locale en exploitant une vulnérabilité dans le service Windows Print Spooler (CVE-2019-1040 / CVE-2019-1019). Ce projet implémente l'exploit PrintSpoofer au format Reflective DLL, ce qui le rend adapté à une utilisation avec des frameworks de tests d'intrusion comme Cobalt Strike.

Table des matières

  • Aperçu
  • Fonctionnement
  • Détails techniques
  • Prérequis
  • Compilation
  • Utilisation
  • Structure du projet
  • Avertissement de sécurité
  • Références

Aperçu

PrintSpoofer exploite une vulnérabilité dans le service Windows Print Spooler qui permet à un utilisateur avec peu de privilèges d'obtenir des privilèges de niveau SYSTEM. L'exploit abuse de la manière dont le service Print Spooler gère les pipes nommés (named pipes).

Fonctionnalités

  • Format Reflective DLL — peut être chargé entièrement en mémoire sans toucher au disque
  • Fonctionne avec le privilège SE_IMPERSONATE_NAME
  • Communique avec le service Print Spooler via le protocole RPC
  • Utilise le mécanisme de Named Pipe pour effectuer l'usurpation de jeton (token impersonation)

Fonctionnement

PrintSpoofer opère en réalisant les étapes suivantes :

1. Vérification des privilèges

L'exploit vérifie d'abord si le jeton courant possède le privilège SE_IMPERSONATE_NAME. Celui-ci est nécessaire pour usurper le jeton d'un autre utilisateur.

2. Création du named pipe

Un named pipe est créé en utilisant un UUID aléatoire. Le chemin du pipe est :

root@kitploit:~
\\.\pipe\<UUID>\pipe\spoolss

3. Attente de connexion au pipe

Une connexion asynchrone est attendue sur le named pipe créé. Un événement est créé et le pipe est préparé pour accepter des connexions entrantes.

4. Déclenchement de la connexion du Print Spooler

Dans un thread séparé, un appel RPC est effectué vers le service Print Spooler. En invoquant RpcRemoteFindFirstPrinterChangeNotificationEx, le service tente de se connecter au pipe que nous avons créé.

5. Usurpation de jeton

Lorsque le service Print Spooler (s'exécutant en tant que SYSTEM) se connecte au named pipe, l'exploit utilise ImpersonateNamedPipeClient pour usurper le jeton du service. Cela permet d'obtenir les privilèges SYSTEM.

6. Opération privilégiée

Avec un jeton SYSTEM, des actions de haute privilège peuvent maintenant être exécutées.

Détails techniques

Vulnérabilité du Print Spooler

Le service Windows Print Spooler traite les notifications d'imprimante via des named pipes. Comme le service ne valide pas correctement les connexions aux pipes, un attaquant peut le forcer à se connecter à un pipe malveillant, puis usurper le jeton SYSTEM.

Communication RPC

Le projet communique avec le service Print Spooler en utilisant le protocole MS-RPRN (Print System Remote Protocol). Ce protocole est défini via un fichier IDL (Interface Definition Language) et permet les appels RPC.

Injection Reflective DLL

Une DLL reflective se comporte différemment des DLL standards :

  • Elle peut être chargée directement en mémoire sans toucher au disque
  • Elle n'a pas besoin de l'API LoadLibrary
  • Elle analyse et charge manuellement le format PE (Portable Exécutable)

Prérequis

Pour la compilation

  • Visual Studio 2022 (charge de travail Développement Desktop en C++)
  • Windows 10/11

Pour l'exécution

  • Windows 10/11
  • Service Print Spooler en cours d'exécution
  • Privilège SE_IMPERSONATE_NAME (disponible par défaut pour la plupart des utilisateurs standards)
  • Cobalt Strike ou un framework similaire (optionnel)

Compilation

Compilation avec Visual Studio

  1. Ouvrez le fichier PrintSpoofer.sln dans Visual Studio.

  2. Sélectionnez votre plateforme de solution et configuration :

    • Plateforme : x64 ou Win32 (selon l'architecture cible)
    • Configuration : Release (production) ou Debug (développement)
  3. Compilez la solution via Générer la solution (Ctrl+Maj+B).

  4. La DLL compilée se trouvera à l'emplacement :

    root@kitploit:~
    PrintSpoofer\x64\Release\PrintSpoofer.dll   (pour x64)
    PrintSpoofer\Win32\Release\PrintSpoofer.dll (pour x86)
    

Options de compilation

Le projet utilise les définitions de préprocesseur suivantes :

  • REFLECTIVE_DLL_EXPORTS : Active les exports de la DLL reflective
  • REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN : Utilise un DllMain personnalisé
  • REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR : Active LoadRemoteLibraryR (en mode Release)

Utilisation

Utilisation avec Cobalt Strike

PrintSpoofer peut être utilisé avec la commande elevate de Cobalt Strike :

root@kitploit:~
elevate PrintSpoofer LISTENER_NAME

Où :

  • PrintSpoofer : le nom du module d'élévation
  • LISTENER_NAME : l'écouteur qui recevra le shell élevé

Utilisation manuelle

La DLL peut être chargée manuellement via des techniques d'injection Reflective DLL.

Résultat attendu

Une exécution réussie de l'exploit affichera :

root@kitploit:~
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] ImpersonateNamedPipeClient OK
[+] Exploit successfully, enjoy your shell

Descriptions des fichiers

dllmain.cpp

  • Point d'entrée de la DLL (DllMain)
  • Contrôle la logique de l'exploit
  • Gère les fonctionnalités spécifiques à la DLL reflective

PrintSpoofer.cpp

  • CheckAndEnablePrivilege : Vérifie et active les privilèges du jeton
  • GenerateRandomPipeName : Génère des noms de pipe à l'aide d'UUID aléatoires
  • CreateSpoolNamedPipe : Crée les named pipes et configure la sécurité
  • ConnectSpoolNamedPipe : Prépare les pipes pour des connexions asynchrones
  • TriggerNamedPipeConnection : Crée un thread pour déclencher la connexion du Print Spooler
  • TriggerNamedPipeConnectionThread : Effectue l'appel RPC
  • GetSystem : Effectue l'usurpation de jeton

ms-rprn.idl

  • Définition IDL du protocole MS-RPRN de Microsoft
  • Traité par le compilateur MIDL pour générer les stubs RPC

ReflectiveLoader.cpp

  • Implémente l'analyse du format PE et le chargement en mémoire pour l'injection Reflective DLL

Avertissement

Cet outil est destiné exclusivement à des fins éducatives et pour des tests d'intrusion autorisés.

Références

  • https://www.itm4n.fr/printspoofer-abusing-impersonate-privileges/
  • https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation

Licence

Ce projet est sous licence MIT. Pour plus d'informations, consultez le fichier LICENSE.

Télécharger l’outil