Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
PPLRunner — Compila un controlador y servicio ELAM que inicia un proceso hijo firmado como Anti-Malware Protected Process-Light (PPL) en Windows, para investigación de seguridad. | Kitploit
Herramientas/GitHubGitHub/pathtofile/pplrunner
Herramientas DefensivasEscalada de PrivilegiosMecanismos de PersistenciaExplotaciónAnálisis de MalwarePapers e InvestigaciónRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Compila un controlador y servicio ELAM que inicia un proceso hijo firmado como Anti-Malware Protected Process-Light (PPL) en Windows, para investigación de seguridad.

Ver Repositorio
1853612hace 4 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PPLRunner

Este proyecto tiene como objetivo permitir la ejecución de procesos 'arbitrarios*' como Anti Malware Protected-Process-Light (PPL), con fines de investigación. (* Consulte la sección Restricciones para más detalles)

Consulte este blog que escribí para más detalles y el razonamiento detrás de este proyecto.

Descripción general

El proceso protegido del sistema es un modelo de seguridad en Windows diseñado para proteger los procesos del sistema y antivirus contra manipulación o introspección, incluso por parte de Administradores/SYSTEM.

Los procesos iniciados como Anti Malware 'Protected Process-Light' (PPL) tienen restringido lo que pueden hacer, solo pueden cargar código firmado, pero no pueden ser depurados, inspeccionados ni detenidos por procesos no protegidos. Además, pueden obtener acceso a datos especiales, como el proveedor ETW Microsoft-Windows-Threat-Intelligence.

Este proyecto crea un controlador Early-Launch Anti Malware (ELAM) y un servicio en modo usuario. El servicio lanzará un proceso hijo configurable cuando se inicie, el cual también será marcado como PPL.

El binario hijo debe estar firmado con el mismo certificado que el servicio, junto con algunas otras restricciones, pero por lo demás puede ser cualquier binario y argumentos de línea de comandos que elija.

Honestamente, no estoy explicando bien qué son ELAM y PPL; en su lugar, recomiendo comenzar aquí:

  • Capítulo 3, Windows Internals Part 1 (el recurso #1 para cualquier cosa de Windows, honestamente)
  • 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

Modo precompilado/fácil

Puede obtener una versión precompilada y firmada del servicio PPLRunner y del módulo del kernel desde Releases. La versión también incluye el certificado autogenerado y la clave privada en un archivo .pfx protegido con contraseña, siendo la contraseña password. Ya dije que esto es solo para fines de investigación, ¿verdad?

Manual

Para generar y compilar su propio proyecto:

Configuración

Asegúrese de tener instalados los SDK de Windows.

Abra generate_cert.ps1 y sign_file.ps1, y cambie la variable $password por otra cosa (deben coincidir entre sí).

Ejecute generate_cert.ps1. Esto generará un ppl_runner.pfx con un nuevo certificado privado y público. Se utilizará para firmar todos los binarios usados por PPLRunner.

Compilación

Compile ppl_runner.sln. Esto producirá 3 binarios:

elam_driver.sys

El controlador de kernel ELAM que contiene la información del certificado. El controlador en realidad no hace nada y no se cargará realmente; solo se usa como vehículo para el certificado de firma.

ppl_runner.exe

El instalador y binario del servicio. Como servicio PPL, al iniciarse lanzará un proceso hijo, también como PPL, y luego se detendrá y saldrá.

child_example.exe

Un ejecutable de ejemplo que será firmado con el certificado correcto por Visual Studio en el momento de la compilación. PPLRunner puede ejecutar casi cualquier binario; este es solo un ejemplo que se firmará automáticamente.

Instalación

NOTA Instálelo solo en una máquina de pruebas, no en producción ni en su PC personal.

  1. Una vez compilado, copie elam_driver.sys y ppl_runner.exe a una carpeta en la máquina de destino.

  2. Habilite la firma de prueba ejecutando esto desde un símbolo del sistema elevado, luego reinicie:

bcdedit /set testsigning on
  1. Desde un símbolo del sistema con privilegios elevados, navegue hasta la carpeta que contiene los ejecutables copiados y ejecute:
ppl_runner.exe install

Esto debería instalar un servicio llamado ppl_runner.

Configurar

Para firmar un binario que se ejecutará, fírmalo con el certificado ppl_runner.pfx, usando el script sign_file.ps1, o simplemente ejecutando signtool.exe tú mismo. Si no tienes signtool.exe, está en los Windows SDKs.

Crea la clave de registro HKLM\SOFTWARE\PPL_RUNNER. Establece la clave predeterminada/vacía como un REG_SZ, que contenga la ruta completa al binario a ejecutar, y cualquier argumento de línea de comandos. p. ej. desde la línea de comandos:

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

Ejecutar

Para hacer que el servicio lance el ejecutable, simplemente ejecute desde un símbolo del sistema con privilegios elevados:

net start ppl_runner

Como servicio PPL, cuando se inicie ppl_runner leerá la clave del registro, lanzará el proceso hijo, también como PPL, y luego se detendrá y saldrá. Un lanzamiento exitoso seguirá mostrando the service failed to run, pero si verificas el código de retorno con sc query ppl_runner, debería ser 0, es decir, ERROR_SUCCESS.

El proceso hijo no será visible, sin embargo, si puedes usar Debug Outputs y DBGView.exe para obtener algún tipo de salida (consulta el código de child_example).

Limpieza/Eliminación

Como el servicio también es Anti Malware PPL, solo puede ser detenido y eliminado por un proceso de nivel similarmente alto. Sin embargo, podemos usar PPLRunner para eliminarse a sí mismo, simplemente establece el comando en la clave del registro como:

C:\path\to\ppl_runner.exe remove

Y ejecuta el Servicio. Es decir, ejecuta:

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

Restricciones

  • Este proyecto solo funciona en modo testsigning.
  • ppl_runner.exe install debe volver a ejecutarse después de cada reinicio.
  • El binario hijo debe estar firmado con el mismo certificado que el servicio.
  • Cualquier DLL que cargue el binario también debe estar firmada.

Depuración

Ejecute DBGView de Sysinternals y registre Win32 Global, filtrando por *[PPL_RUNNER]*. Esto mostrará todos los registros del servicio y del instalador.

Ejemplos de uso

Por definir - blog de Sealighter

Proyectos similares

James Forshaw creó un proyecto increíble para inyectar código en procesos PPL existentes.

Lecturas adicionales y agradecimientos

Seguir a Alex Ionescu es probablemente la mejor manera de aprender más sobre ELAM y PPL. Posiblemente empezar con esto: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Seguir a Matt Graeber y a James Forshaw es otra gran manera.

Un enorme agradecimiento a Matt por el script de powershell para obtener el hash 'To-Be-Signed' de un certificado.

James ha escrito mucho sobre PPL y sus fallos.

Descargar herramienta