Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
PPLRunner — Создаёт драйвер ELAM и службу, которая запускает подписанный дочерний процесс как Anti-Malware Protected Process-Light (PPL) в Windows, для исследований в области безопасности. | Kitploit
Инструменты/GitHubGitHub/pathtofile/pplrunner
Оборонительные ИнструментыПовышение привилегийМеханизмы персистентностиЭксплуатацияАнализ вредоносных программСтатьи и ИсследованияRed Teaming
GitHubpathtofile/pplrunner

PPLRunner

Создаёт драйвер ELAM и службу, которая запускает подписанный дочерний процесс как Anti-Malware Protected Process-Light (PPL) в Windows, для исследований в области безопасности.

Репозиторий
18536124 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

PPLRunner

Этот проект позволяет запускать «произвольный*» процесс как Anti Malware Protected-Process-Light (PPL) в исследовательских целях. (* Подробности см. в разделе Ограничения)

Подробности и обоснование этого проекта см. в этом моём блоге.

Обзор

Защищённый системный процесс — это модель безопасности в Windows, предназначенная для защиты системных процессов и процессов антивирусов от несанкционированного изменения или интроспекции, даже со стороны администраторов/SYSTEM.

Процессы, запущенные как Anti Malware «Protected Process-Light» (PPL), ограничены в том, что они могут делать, могут загружать только подписанный код, но не могут быть отлажены, проинспектированы или остановлены незащищёнными процессами. Кроме того, они могут получать доступ к специальным данным, например к ETW-провайдеру Microsoft-Windows-Threat-Intelligence.

Этот проект создаёт драйвер Early-Launch Anti Malware (ELAM) и пользовательскую службу. Служба при запуске запускает настраиваемый дочерний процесс, который также будет помечен как PPL.

Дочерний бинарный файл должен быть подписан тем же сертификатом, что и служба, а также должен соответствовать некоторым другим ограничениям, но в остальном это может быть любой бинарный файл и любые аргументы командной строки на ваш выбор.

Честно говоря, у меня не очень получается объяснить, что такое ELAM и PPL, поэтому вместо этого рекомендую начать отсюда:

  • Глава 3, Windows Internals Part 1 (ресурс №1 по всему, что связано с Windows, если честно)
  • 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

Готовый/простой режим

Вы можете взять готовую и подписанную версию службы PPLRunner и модуля ядра из Releases. В релизе также есть автогенерируемый сертификат и закрытый ключ в файле .pfx, защищённом паролем password. Я же говорил, что это только для исследовательских целей, верно?

Вручную

Чтобы сгенерировать и собрать собственный проект:

Настройка

Убедитесь, что у вас установлены Windows SDK.

Откройте generate_cert.ps1 и sign_file.ps1 и измените переменную $password на что-то другое (они должны совпадать друг с другом).

Запустите generate_cert.ps1. Это создаст ppl_runner.pfx с новым закрытым и открытым сертификатом. Он будет использоваться для подписи всех бинарных файлов, используемых PPLRunner.

Сборка

Соберите ppl_runner.sln. Это создаст 3 бинарных файла:

elam_driver.sys

Драйвер ядра ELAM, содержащий информацию о сертификате. Драйвер на самом деле ничего не делает и не будет фактически загружен, он используется лишь как носитель для сертификата подписи.

ppl_runner.exe

Установщик и бинарный файл службы. Как служба PPL, при запуске она запускает дочерний процесс, также как PPL, затем останавливается и завершается.

child_example.exe

Пример исполняемого файла, который будет подписан правильным сертификатом Visual Studio во время сборки. PPLRunner может запускать почти любой бинарный файл, это лишь пример, который будет автоматически подписан.

Установка

ПРИМЕЧАНИЕ Устанавливайте только на тестовой машине, а не на продакшене/домашнем ПК.

  1. После сборки скопируйте elam_driver.sys и ppl_runner.exe в папку на целевой машине.

  2. Включите тестовую подпись, выполнив следующее из командной строки с повышенными правами, затем перезагрузитесь:

bcdedit /set testsigning on
  1. Из командной строки с повышенными привилегиями перейдите в папку, содержащую скопированные исполняемые файлы, и выполните:
ppl_runner.exe install

Это должно установить службу с именем ppl_runner.

Настройка

Чтобы подписать бинарный файл для запуска, подпишите его сертификатом ppl_runner.pfx, используя либо скрипт sign_file.ps1, либо просто запустив signtool.exe самостоятельно. Если у вас нет signtool.exe, он находится в Windows SDK.

Создайте раздел реестра HKLM\SOFTWARE\PPL_RUNNER. Установите для ключа по умолчанию/пустого ключа значение типа REG_SZ, содержащее полный путь к исполняемому бинарному файлу и любые аргументы командной строки. Например, из командной строки:

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

Запуск

Чтобы сервис запустил исполняемый файл, просто выполните из командной строки с повышенными правами:

net start ppl_runner

Как служба PPL, при запуске ppl_runner прочитает ключ реестра, запустит дочерний процесс, также как PPL, затем остановится и завершится. Успешный запуск всё равно выдаст сообщение the service failed to run, но если проверить код возврата с помощью sc query ppl_runner, он должен быть 0, то есть ERROR_SUCCESS.

Дочерний процесс не будет виден, однако вы можете использовать Debug Outputs и DBGView.exe, чтобы получить некоторый вывод (см. код child_example).

Очистка/Удаление

Поскольку служба также является Anti Malware PPL, она может быть остановлена и удалена только процессом с аналогично высоким уровнем. Однако мы можем использовать PPLRunner для самоудаления, просто задав в ключе реестра команду:

C:\path\to\ppl_runner.exe remove

И запустите службу. То есть выполните:

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

Ограничения

  • Этот проект работает только в режиме testsigning.
  • ppl_runner.exe install необходимо запускать повторно после каждой перезагрузки.
  • Дочерний бинарный файл должен быть подписан тем же сертификатом, что и служба.
  • Любые DLL, загружаемые бинарным файлом, также должны быть подписаны.

Отладка

Запустите DBGView от Sysinternals и включите логирование Win32 Global с фильтром по *[PPL_RUNNER]*. Это покажет все логи от службы и установщика.

Примеры использования

Будет дополнено — блог Sealighter

Похожие проекты

James Forshaw создал замечательный проект для внедрения кода в существующие процессы PPL.

Дополнительное чтение и благодарности

Читать Alex Ionescu — вероятно, лучший способ узнать больше об ELAM и PPL. Возможно, стоит начать с этого: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Читать Matt Graeber и James Forshaw — ещё один отличный способ.

Огромная благодарность Matt за скрипт powershell для получения хеша 'To-Be-Signed' из сертификата.

James написал много о PPL и его недостатках.

Скачать инструмент