Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
PPLRunner — Cria um driver ELAM e um serviço que inicia um processo filho assinado como Anti-Malware Protected Process-Light (PPL) no Windows, para investigação de segurança. | Kitploit
Ferramentas/GitHubGitHub/pathtofile/pplrunner
Ferramentas DefensivasEscalada de PrivilégiosMecanismos de PersistênciaExploraçãoAnálise de MalwarePapers e PesquisaRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Cria um driver ELAM e um serviço que inicia um processo filho assinado como Anti-Malware Protected Process-Light (PPL) no Windows, para investigação de segurança.

Ver Repositório
1853612há 4 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PPLRunner

Este projeto tem como objetivo permitir a execução de processos 'arbitrários*' como Anti Malware Protected-Process-Light (PPL), para fins de pesquisa. (* Consulte a seção Restrições para mais detalhes)

Consulte este blog que escrevi para mais detalhes e o raciocínio por trás deste projeto.

Visão Geral

O processo protegido pelo sistema é um modelo de segurança no Windows projetado para proteger processos do sistema e antivírus contra adulteração ou introspecção, mesmo por Administradores/SYSTEM.

Processos iniciados como Anti Malware 'Protected Process-Light' (PPL) são restritos no que podem fazer, só podem carregar código assinado, mas não podem ser depurados, inspecionados ou interrompidos por processos não protegidos. Além disso, eles podem obter acesso a dados especiais, como o Provedor ETW Microsoft-Windows-Threat-Intelligence.

Este projeto cria um driver Early-Launch Anti Malware (ELAM) e um serviço em modo usuário. O serviço iniciará um processo filho configurável quando for iniciado, que também será marcado como PPL.

O binário filho deve ser assinado com o mesmo certificado que o serviço, juntamente com algumas outras restrições, mas fora isso pode ser qualquer binário e argumentos de linha de comando que você escolher.

Honestamente, não estou explicando bem o que são ELAM e PPL; em vez disso, recomendo começar por aqui:

  • Capítulo 3, Windows Internals Part 1 (recurso nº 1 para qualquer coisa no 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 Pré-Compilado/Fácil

Você pode obter uma versão pré-compilada e assinada do serviço PPLRunner e do módulo de kernel em Releases. A release também contém o certificado autogerado e a chave privada em um arquivo .pfx protegido por senha com a senha password. Eu avisei que isto é apenas para fins de pesquisa, certo?

Manual

Para gerar e compilar seu próprio projeto:

Configuração

Certifique-se de ter os Windows SDKs instalados.

Abra generate_cert.ps1 e sign_file.ps1, e altere a variável $password para outra coisa (elas devem corresponder entre si).

Execute generate_cert.ps1. Isso gerará um ppl_runner.pfx com um novo certificado privado e público. Este será usado para assinar todos os binários usados pelo PPLRunner.

Compilação

Compile ppl_runner.sln. Isso produzirá 3 binários:

elam_driver.sys

O Driver de Kernel ELAM que contém as informações do certificado. O driver não faz nada de fato e não será realmente carregado; ele é usado apenas como um veículo para o certificado de assinatura.

ppl_runner.exe

O instalador e binário do Serviço. Como um serviço PPL, quando iniciado, ele lançará um processo filho, também como PPL, e então parará e encerrará.

child_example.exe

Um executável de exemplo que será assinado com o certificado correto pelo Visual Studio no momento da compilação. O PPLRunner pode executar quase qualquer binário; este é apenas um exemplo que será assinado automaticamente.

Instalação

NOTA Instale apenas em uma máquina de teste, não em produção/seu PC pessoal.

  1. Após a compilação, copie elam_driver.sys e ppl_runner.exe para uma pasta na máquina de destino.

  2. Habilite a assinatura de teste executando isto em um prompt elevado e, em seguida, reinicie:

bcdedit /set testsigning on
  1. Em um prompt de comando elevado, navegue até a pasta que contém os executáveis copiados e execute:
ppl_runner.exe install

Isso deve instalar um serviço chamado ppl_runner.

Configurar

Para assinar um binário a executar, assine-o com o certificado ppl_runner.pfx, usando o script sign_file.ps1, ou simplesmente executando o signtool.exe você mesmo. Se não tiver o signtool.exe, ele está nos Windows SDKs.

Crie a chave de registo HKLM\SOFTWARE\PPL_RUNNER. Defina a chave predefinida/vazia como REG_SZ, contendo o caminho completo para o binário a executar, e quaisquer argumentos de linha de comandos. Por exemplo, a partir da linha de comandos:

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

Executar

Para fazer o serviço iniciar o executável, basta executar a partir de um prompt elevado:

net start ppl_runner

Como um serviço PPL, quando iniciado, o ppl_runner lerá a chave de registro, iniciará o processo filho, também como PPL, e então parará e sairá. Um lançamento bem-sucedido ainda dirá the service failed to run, mas se você verificar o código de retorno com sc query ppl_runner, ele deve ser 0, ou seja, ERROR_SUCCESS.

O processo filho não será visível, no entanto, se você puder usar Debug Outputs e DBGView.exe para obter alguma forma de saída (veja o código child_example).

Limpeza/Remoção

Como o serviço também é Anti Malware PPL, ele só pode ser parado e excluído por um processo de nível igualmente elevado. No entanto, podemos usar o PPLRunner para se remover, simplesmente definindo o comando na chave de registro como:

C:\path\to\ppl_runner.exe remove

E execute o Serviço. Ou seja, execute:

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

Restrições

  • Este projeto só funciona no modo testsigning.
  • ppl_runner.exe install deve ser executado novamente após cada reinicialização
  • O binário filho deve ser assinado com o mesmo certificado que o serviço
  • Quaisquer DLLs carregadas pelo binário também devem ser assinadas

Depuração

Execute o DBGView da Sysinternals e registre Win32 Global, filtrando por *[PPL_RUNNER]*. Isso mostrará todos os logs do serviço e do instalador.

Exemplos de uso

A definir - blog do Sealighter

Projetos semelhantes

James Forshaw criou um projeto incrível para injetar código em processos PPL existentes.

Leitura adicional e agradecimentos

Seguir Alex Ionescu é provavelmente a melhor maneira de aprender mais sobre ELAM e PPL. Possivelmente comece com isto: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Seguir Matt Graeber e James Forshaw é outra ótima maneira.

Agradecimentos enormes ao Matt pelo script powershell para obter o hash 'To-Be-Signed' de um certificado.

James escreveu muito sobre PPL e suas falhas.

Baixar ferramenta