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
PPLRunner — Compile un pilote ELAM et un service qui lance un processus enfant signé en tant que processus protégé anti-malware léger (PPL) sous Windows, à des fins de recherche en sécurité. | Kitploit
Outils/GitHubGitHub/pathtofile/pplrunner
Outils DéfensifsEscalade de PrivilègesMécanismes de PersistanceExploitationAnalyse de MalwareArticles et RechercheRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Compile un pilote ELAM et un service qui lance un processus enfant signé en tant que processus protégé anti-malware léger (PPL) sous Windows, à des fins de recherche en sécurité.

Voir le dépôt
1853612il 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

PPLRunner

Ce projet a pour but de permettre l'exécution d'un processus « arbitraire* » en tant que Anti Malware Protected-Process-Light (PPL), à des fins de recherche. (* Voir la section Restrictions pour plus de détails)

Voir cet article de blog que j'ai écrit pour plus de détails et le raisonnement derrière ce projet.

Aperçu

Le processus protégé par le système est un modèle de sécurité sous Windows conçu pour protéger les processus système et antivirus contre la falsification ou l'introspection, même par des Administrateurs/SYSTEM.

Les processus démarrés en tant qu'Anti Malware « Protected Process-Light » (PPL) sont limités dans ce qu'ils peuvent faire, ne peuvent charger que du code signé, mais ne peuvent pas être débogués, inspectés ou arrêtés par des processus non protégés. De plus, ils peuvent accéder à des données spéciales, telles que le fournisseur ETW Microsoft-Windows-Threat-Intelligence.

Ce projet crée un pilote Early-Launch Anti Malware (ELAM) et un service en mode utilisateur. Le service lancera un processus enfant configurable lors de son démarrage, lequel sera également marqué comme PPL.

Le binaire enfant doit être signé avec le même certificat que le service, ainsi que quelques autres restrictions, mais peut sinon être n'importe quel binaire et arguments de ligne de commande de votre choix.

Honnêtement, je n'explique pas très bien ce que sont ELAM et PPL, je recommande plutôt de commencer ici :

  • Chapitre 3, Windows Internals Part 1 (la ressource n°1 pour tout ce qui touche à Windows, honnêtement)
  • https://docs.microsoft.com/en-us/windows/win32/services/protecting-anti-malware-services-
  • https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/
  • https://googleprojectzero.blogspot.com/2018/10/injecting-code-into-windows-protected.html

Pré-construit/Mode facile

Vous pouvez récupérer une version pré-construite et signée du service PPLRunner et du module noyau depuis les Releases. La release contient également le certificat et la clé privée générés automatiquement dans un fichier .pfx protégé par mot de passe avec le mot de passe password. Je vous avais bien dit que c'était uniquement à des fins de recherche, non ?

Manuel

Pour générer et construire votre propre projet :

Configuration

Assurez-vous que les Windows SDKs sont installés.

Ouvrez generate_cert.ps1 et sign_file.ps1, et changez la variable $password par autre chose (elles doivent correspondre entre elles).

Exécutez generate_cert.ps1. Cela générera un ppl_runner.pfx avec un nouveau certificat privé et public. Celui-ci sera utilisé pour signer tous les binaires utilisés par PPLRunner.

Build

Compilez ppl_runner.sln. Cela produira 3 binaires :

elam_driver.sys

Le pilote noyau ELAM qui contient les informations de certificat. Le pilote ne fait en réalité rien, et ne sera pas réellement chargé, il sert simplement de véhicule pour le certificat de signature.

ppl_runner.exe

L'installateur et binaire du service. En tant que service PPL, lors de son démarrage il lancera un processus enfant, également en PPL, puis s'arrêtera et se terminera.

child_example.exe

Un exécutable d'exemple qui sera signé avec le bon certificat par Visual Studio au moment du build. PPLRunner peut exécuter presque n'importe quel binaire, ce n'est qu'un exemple qui sera automatiquement signé.

Installation

NOTE N'installez que sur une machine de test, pas en production/sur votre PC personnel.

  1. Une fois compilé, copiez elam_driver.sys et ppl_runner.exe dans un dossier sur la machine cible.

  2. Activez la signature de test en exécutant ceci depuis une invite élevée, puis redémarrez :

bcdedit /set testsigning on
  1. À partir d'une invite de commande élevée, accédez au dossier contenant les exécutables copiés et exécutez :
ppl_runner.exe install

Cela devrait installer un service nommé ppl_runner.

Configuration

Pour signer un binaire à exécuter, signez-le avec le certificat ppl_runner.pfx, en utilisant soit le script sign_file.ps1, soit en exécutant simplement signtool.exe vous-même. Si vous ne disposez pas de signtool.exe, il se trouve dans les Windows SDKs.

Créez la clé de registre HKLM\SOFTWARE\PPL_RUNNER. Définissez la clé par défaut/vide comme une valeur REG_SZ, contenant le chemin complet du binaire à exécuter, ainsi que tout argument de ligne de commande. Par exemple, depuis la ligne de commande :

REG.exe ADD HKLM\SOFTWARE\PPL_RUNNER /ve /t REG_SZ /d "C:\path\to\binay --argument 1"

Exécution

Pour que le service lance l'exécutable, exécutez simplement depuis une invite élevée :

net start ppl_runner

En tant que service PPL, une fois démarré, ppl_runner lira la clé de registre, lancera le processus enfant, également en tant que PPL, puis s'arrêtera et se terminera. Un lancement réussi affichera toujours the service failed to run, mais si vous vérifiez le code de retour avec sc query ppl_runner, il devrait être 0, c'est-à-dire ERROR_SUCCESS.

Le processus enfant ne sera pas visible, toutefois si vous pouvez utiliser les sorties de débogage et DBGView.exe pour obtenir une forme de sortie (voir le code child_example).

Nettoyage/Suppression

Comme le service est également un PPL Anti-Malware, il ne peut être arrêté et supprimé que par un processus de niveau tout aussi élevé. Cependant, nous pouvons utiliser PPLRunner pour se supprimer lui-même, il suffit de définir la commande dans la clé de registre comme suit :

C:\path\to\ppl_runner.exe remove

Et exécutez le service. c'est-à-dire exécutez :

REG.exe ADD HKLM\SOFTWARE\PPL_RUNNER /ve /t REG_SZ /d "C:\path\to\ppl_runner.exe remove"
net start ppl_runner

Restrictions

  • Ce projet ne fonctionne qu'en mode testsigning.
  • ppl_runner.exe install doit être réexécuté après chaque redémarrage
  • Le binaire enfant doit être signé avec le même certificat que le service
  • Toutes les DLL chargées par le binaire doivent également être signées

Débogage

Lancez DBGView de Sysinternals et journalisez Win32 Global, en filtrant sur *[PPL_RUNNER]*. Cela affichera tous les journaux du service et de l'installateur.

Exemples d'utilisation

À définir - blog Sealighter

Projets similaires

James Forshaw a créé un excellent projet pour injecter du code dans des processus PPL existants.

Lectures complémentaires et remerciements

Suivre Alex Ionescu est probablement le meilleur moyen d'en apprendre davantage sur ELAM et PPL. Commencez éventuellement par ceci : https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Suivre Matt Graeber et James Forshaw est une autre excellente option.

Un immense merci à Matt pour le script powershell permettant d'obtenir le hash « To-Be-Signed » à partir d'un certificat.

James a écrit beaucoup sur PPL et ses failles.

Télécharger l’outil