Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PPLRunner — Crea un driver ELAM e un servizio che avvia un processo figlio firmato come Anti-Malware Protected Process-Light (PPL) su Windows, per la ricerca sulla sicurezza. | Kitploit
Strumenti/GitHubGitHub/pathtofile/pplrunner
Strumenti DifensiviEscalation di PrivilegiMeccanismi di PersistenzaExploitAnalisi MalwarePaper e RicercaRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Crea un driver ELAM e un servizio che avvia un processo figlio firmato come Anti-Malware Protected Process-Light (PPL) su Windows, per la ricerca sulla sicurezza.

Vedi Repository
18536124 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

PPLRunner

Questo progetto ha lo scopo di consentire l'esecuzione di processi 'arbitrari*' come Anti Malware Protected-Process-Light (PPL), per scopi di ricerca. (* Vedere la sezione Restrizioni per maggiori dettagli)

Vedere questo blog che ho scritto per maggiori dettagli e le motivazioni alla base di questo progetto.

Panoramica

Il processo protetto di sistema è un modello di sicurezza in Windows progettato per proteggere i processi di sistema e antivirus da manomissioni o introspezione, anche da parte di Amministratori/SYSTEM.

I processi avviati come Anti Malware 'Protected Process-Light' (PPL) sono limitati in ciò che possono fare, possono caricare solo codice firmato, ma non possono essere sottoposti a debug, ispezionati o arrestati da processi non protetti. Inoltre, possono ottenere accesso a dati speciali, come il provider ETW Microsoft-Windows-Threat-Intelligence.

Questo progetto crea un driver Early-Launch Anti Malware (ELAM) e un servizio usermode. Il servizio avvierà un processo figlio configurabile all'avvio, che sarà anch'esso contrassegnato come PPL.

Il binario figlio deve essere firmato con lo stesso certificato del servizio, insieme ad alcune altre restrizioni, ma per il resto può essere qualsiasi binario e argomenti da riga di comando tu scelga.

Onestamente non sto spiegando bene cosa siano ELAM e PPL, invece consiglio di iniziare da qui:

  • Capitolo 3, Windows Internals Parte 1 (#1 risorsa per qualsiasi cosa riguardi Windows, onestamente)
  • 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

Modalità Pre-Built/Facile

Puoi scaricare una versione pre-compilata e firmata del servizio PPLRunner e del modulo kernel da Releases. La release contiene anche il certificato autogenerato e la chiave privata in un file .pfx, protetto da password con la password password. Vi avevo detto che è solo per scopi di ricerca, vero?

Manuale

Per generare e compilare il tuo progetto:

Configurazione

Assicurati di avere installato gli Windows SDK.

Apri generate_cert.ps1 e sign_file.ps1, e cambia la variabile $password con qualcos'altro (devono corrispondersi a vicenda).

Esegui generate_cert.ps1. Questo genererà un file ppl_runner.pfx con un nuovo certificato privato e pubblico. Verrà utilizzato per firmare tutti i binari usati da PPLRunner.

Compilazione

Compila ppl_runner.sln. Questo produrrà 3 binari:

elam_driver.sys

Il driver kernel ELAM che contiene le informazioni del certificato. Il driver in realtà non fa nulla e non verrà effettivamente caricato, viene usato solo come contenitore per il certificato di firma.

ppl_runner.exe

Il programma di installazione del servizio e il binario. Come servizio PPL, all'avvio avvierà un processo figlio, anch'esso come PPL, poi si fermerà e uscirà.

child_example.exe

Un eseguibile di esempio che verrà firmato con il certificato corretto da Visual Studio in fase di compilazione. PPLRunner può eseguire quasi qualsiasi binario, questo è solo un esempio che verrà firmato automaticamente.

Installazione

NOTA Installare solo su una macchina di test, non in produzione/sul tuo PC di casa.

  1. Una volta compilato, copia elam_driver.sys e ppl_runner.exe in una cartella sulla macchina di destinazione.

  2. Abilita la firma di test eseguendo questo da un prompt con privilegi elevati, poi riavvia:

bcdedit /set testsigning on
  1. Da un prompt dei comandi con privilegi elevati, spostati nella cartella contenente gli eseguibili copiati ed esegui:
ppl_runner.exe install

Questo dovrebbe installare un servizio chiamato ppl_runner.

Configurazione

Per firmare un binario da eseguire, firmalo con il certificato ppl_runner.pfx, usando lo script sign_file.ps1, oppure eseguendo direttamente signtool.exe. Se non hai signtool.exe, è disponibile negli Windows SDK.

Crea la chiave di registro HKLM\SOFTWARE\PPL_RUNNER. Imposta la chiave predefinita/vuota come REG_SZ, contenente il percorso completo del binario da eseguire, e qualsiasi argomento della riga di comando. ad es. dalla riga di comando:

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

Esecuzione

Per fare in modo che il servizio avvii l'eseguibile, è sufficiente eseguire da un prompt con privilegi elevati:

net start ppl_runner

Come servizio PPL, all'avvio ppl_runner leggerà la chiave di registro, avvierà il processo figlio, anch'esso come PPL, quindi si fermerà e uscirà. Un avvio riuscito dirà comunque the service failed to run, ma se controlli il codice di ritorno con sc query ppl_runner, dovrebbe essere 0, cioè ERROR_SUCCESS.

Il processo figlio non sarà visibile, tuttavia se puoi usare Debug Outputs e DBGView.exe per ottenere una qualche forma di output (vedi il codice child_example).

Pulizia/Rimozione

Poiché il servizio è anche Anti Malware PPL, può essere fermato ed eliminato solo da un processo di livello altrettanto elevato. Tuttavia, possiamo usare PPLRunner per rimuovere se stesso, impostando semplicemente il comando nella chiave di registro come:

C:\path\to\ppl_runner.exe remove

E avvia il Servizio. cioè esegui:

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

Restrizioni

  • Questo progetto funziona solo in modalità testsigning.
  • ppl_runner.exe install deve essere eseguito nuovamente dopo ogni riavvio
  • Il binario figlio deve essere firmato con lo stesso certificato del servizio
  • Anche tutte le DLL caricate dal binario devono essere firmate

Debugging

Esegui DBGView di Sysinternals e registra Win32 Global, filtrando su *[PPL_RUNNER]*. Questo mostrerà tutti i log del servizio e dell'installer.

Esempi d'uso

Da definire - blog di Sealighter

Progetti simili

James Forshaw ha creato un fantastico progetto per iniettare codice nei processi PPL esistenti.

Ulteriori letture e ringraziamenti

Seguire Alex Ionescu è probabilmente il modo migliore per saperne di più su ELAM e PPL. Possibilmente inizia con questo: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Seguire Matt Graeber e James Forshaw è un altro ottimo modo.

Un enorme ringraziamento a Matt per lo script powershell per ottenere l'hash 'To-Be-Signed' da un certificato.

James ha scritto molto su PPL e i suoi difetti.

Scarica lo strumento