Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PPLRunner — Erstellt einen ELAM-Treiber und -Dienst, der einen signierten untergeordneten Prozess als Anti-Malware Protected Process-Light (PPL) unter Windows startet, für Sicherheitsforschung. | Kitploit
Tools/GitHubGitHub/pathtofile/pplrunner
DefensivwerkzeugePrivilege EscalationPersistenzmechanismenExploitationMalware-AnalysePapers & ForschungRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Erstellt einen ELAM-Treiber und -Dienst, der einen signierten untergeordneten Prozess als Anti-Malware Protected Process-Light (PPL) unter Windows startet, für Sicherheitsforschung.

Repository anzeigen
1853612vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PPLRunner

Dieses Projekt ermöglicht es, einen „beliebigen*“ Prozess als Anti-Malware Protected-Process-Light (PPL) auszuführen, zu Forschungszwecken. (* Siehe den Abschnitt Einschränkungen für weitere Details)

Siehe diesen von mir geschriebenen Blogbeitrag für weitere Details und die Beweggründe hinter diesem Projekt.

Überblick

Der systemgeschützte Prozess ist ein Sicherheitsmodell in Windows, das dazu dient, System- und Antivirenprozesse vor Manipulation oder Introspektion zu schützen, selbst durch Administratoren/SYSTEM.

Prozesse, die als Anti-Malware „Protected Process-Light“ (PPL) gestartet werden, sind in dem eingeschränkt, was sie tun können, können nur signierten Code laden, aber können nicht von nicht geschützten Prozessen debuggt, inspiziert oder gestoppt werden. Darüber hinaus können sie Zugriff auf spezielle Daten erhalten, wie etwa den ETW-Provider Microsoft-Windows-Threat-Intelligence.

Dieses Projekt erstellt einen Early-Launch Anti Malware (ELAM)-Treiber und einen Usermode-Dienst. Der Dienst startet bei seinem Start einen konfigurierbaren Kindprozess, der ebenfalls als PPL markiert wird.

Die Kind-Binärdatei muss mit demselben Zertifikat wie der Dienst signiert sein, zusammen mit einigen anderen Einschränkungen, kann aber ansonsten eine beliebige Binärdatei und beliebige Kommandozeilenargumente sein, die Sie wählen.

Ehrlich gesagt gelingt es mir nicht gut, zu erklären, was ELAM und PPL sind; stattdessen empfehle ich, hier zu beginnen:

  • Kapitel 3, Windows Internals Part 1 (#1-Ressource für alles rund um Windows, ehrlich gesagt)
  • 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

Vorgefertigt/Einfach-Modus

Sie können eine vorgefertigte und signierte Version des PPLRunner-Dienstes und des Kernelmoduls aus den Releases herunterladen. Das Release enthält außerdem das automatisch generierte Zertifikat und den privaten Schlüssel in einer .pfx-Datei, die mit dem Passwort password passwortgeschützt ist. Ich habe doch gesagt, dass dies nur zu Forschungszwecken dient, oder?

Manuell

Um Ihr eigenes Projekt zu generieren und zu erstellen:

Einrichtung

Stellen Sie sicher, dass Sie die Windows SDKs installiert haben.

Öffnen Sie generate_cert.ps1 und sign_file.ps1 und ändern Sie die Variable $password in etwas anderes (sie müssen zueinander passen).

Führen Sie generate_cert.ps1 aus. Dies erzeugt eine ppl_runner.pfx mit einem neuen privaten und öffentlichen Zertifikat. Diese wird verwendet, um alle von PPLRunner verwendeten Binärdateien zu signieren.

Build

Erstellen Sie ppl_runner.sln. Dies erzeugt 3 Binärdateien:

elam_driver.sys

Der ELAM-Kernel-Treiber, der die Zertifikatsinformationen enthält. Der Treiber tut eigentlich nichts und wird nicht tatsächlich geladen; er dient lediglich als Träger für das Signaturzertifikat.

ppl_runner.exe

Der Dienst-Installer und die Binärdatei. Als PPL-Dienst startet er beim Start einen Kindprozess, ebenfalls als PPL, und beendet sich dann und exitet.

child_example.exe

Eine Beispiel-Binärdatei, die zur Build-Zeit von Visual Studio mit dem korrekten Zertifikat signiert wird. PPLRunner kann nahezu jede Binärdatei ausführen; dies ist nur ein Beispiel, das automatisch signiert wird.

Installation

HINWEIS Nur auf einer Testmaschine installieren, nicht auf einer Produktions-/Ihrem Heim-PC.

  1. Sobald erstellt, kopieren Sie elam_driver.sys und ppl_runner.exe in einen Ordner auf der Zielmaschine.

  2. Aktivieren Sie das Testsignieren, indem Sie Folgendes in einer erhöhten Eingabeaufforderung ausführen und dann neu starten:

bcdedit /set testsigning on
  1. Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten, navigieren Sie zu dem Ordner, der die kopierten ausführbaren Dateien enthält, und führen Sie Folgendes aus:
ppl_runner.exe install

Dadurch sollte ein Dienst namens ppl_runner installiert werden.

Konfigurieren

Um eine ausführbare Binärdatei zu signieren, signieren Sie sie mit dem Zertifikat ppl_runner.pfx, entweder mit dem Skript sign_file.ps1 oder indem Sie signtool.exe selbst ausführen. Falls Sie signtool.exe nicht haben, befindet es sich in den Windows SDKs.

Erstellen Sie den Registrierungsschlüssel HKLM\SOFTWARE\PPL_RUNNER. Setzen Sie den Standard-/leeren Schlüssel auf einen REG_SZ, der den vollständigen Pfad zur auszuführenden Binärdatei sowie etwaige Kommandozeilenargumente enthält, z. B. über die Kommandozeile:

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

Ausführen

Um den Dienst dazu zu bringen, die ausführbare Datei zu starten, führen Sie einfach in einer Eingabeaufforderung mit erhöhten Rechten aus:

net start ppl_runner

Als PPL-Dienst liest ppl_runner beim Start den Registrierungsschlüssel, startet den untergeordneten Prozess, ebenfalls als PPL, und beendet sich dann. Ein erfolgreicher Start meldet weiterhin the service failed to run, aber wenn Sie den Rückgabecode mit sc query ppl_runner prüfen, sollte er 0 sein, d. h. ERROR_SUCCESS.

Der untergeordnete Prozess ist nicht sichtbar, aber Sie können Debug Outputs und DBGView.exe verwenden, um eine Form von Ausgabe zu erhalten (siehe den child_example-Code).

Bereinigung/Entfernung

Da der Dienst ebenfalls Anti-Malware-PPL ist, kann er nur von einem ähnlich hochprivilegierten Prozess gestoppt und gelöscht werden. Wir können jedoch PPLRunner verwenden, um sich selbst zu entfernen; setzen Sie dazu einfach den Befehl im Registrierungsschlüssel auf:

C:\path\to\ppl_runner.exe remove

Und starten Sie den Dienst. D. h. führen Sie aus:

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

Einschränkungen

  • Dieses Projekt funktioniert nur im testsigning-Modus.
  • ppl_runner.exe install muss nach jedem Neustart erneut ausgeführt werden
  • Die untergeordnete Binärdatei muss mit demselben Zertifikat signiert sein wie der Dienst
  • Alle DLLs, die die Binärdatei lädt, müssen ebenfalls signiert sein

Fehlerbehebung

Führen Sie DBGView von Sysinternals aus und protokollieren Sie Win32 Global, gefiltert nach *[PPL_RUNNER]*. Dadurch werden alle Protokolle des Dienstes und des Installers angezeigt.

Anwendungsbeispiele

Noch festzulegen – Sealighter-Blog

Ähnliche Projekte

James Forshaw hat ein großartiges Projekt erstellt, um Code in bestehende PPL-Prozesse einzuschleusen.

Weiterführende Lektüre und Dank

Alex Ionescu zu folgen ist wahrscheinlich der beste Weg, um mehr über ELAM und PPL zu erfahren. Beginnen Sie möglicherweise hiermit: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Matt Graeber und James Forshaw zu folgen ist ein weiterer großartiger Weg.

Großer Dank an Matt für das powershell-Skript zum Abrufen des „To-Be-Signed“-Hashes aus einem Zertifikat.

James hat viel über PPL und seine Schwachstellen geschrieben.

Tool herunterladen