Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
PPLRunner — Windows上で署名済みの子プロセスをAnti-Malware Protected Process-Light (PPL) として起動するELAMドライバーとサービスを構築する、セキュリティ研究向けのツール。 | Kitploit
ツール/GitHubGitHub/pathtofile/pplrunner
防御ツール特権昇格永続化メカニズムエクスプロイトマルウェア分析論文と研究レッドチーミング
GitHubpathtofile/pplrunner

PPLRunner

Windows上で署名済みの子プロセスをAnti-Malware Protected Process-Light (PPL) として起動するELAMドライバーとサービスを構築する、セキュリティ研究向けのツール。

リポジトリを見る
18536124年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

PPLRunner

このプロジェクトは、研究目的で「任意の*」プロセスを Anti Malware Protected-Process-Light (PPL) として実行できるようにするものです。(* 詳細については制限事項セクションを参照してください)

詳細とこのプロジェクトの背景にある理由については、私が書いたこのブログ記事を参照してください。

概要

システム保護プロセスは、Windows におけるセキュリティモデルであり、システムプロセスやアンチウイルスプロセスを、管理者/SYSTEM によるものも含めて改ざんや内部検査から保護するように設計されています。

Anti Malware「Protected Process-Light」(PPL) として起動されたプロセスは、実行できる操作が制限され、署名済みコードのみを読み込むことができますが、非保護プロセスによるデバッグ、検査、停止はできません。さらに、Microsoft-Windows-Threat-Intelligence ETW Provider などの特別なデータにアクセスできる場合があります。

このプロジェクトは、Early-Launch Anti Malware (ELAM) ドライバーとユーザーモードサービスを作成します。このサービスは起動時に、設定可能な子プロセスを起動し、その子プロセスも PPL としてマークされます。

子バイナリは、サービスと同じ証明書で署名されている必要があり、その他いくつかの制限事項がありますが、それ以外は任意のバイナリやコマンドライン引数を選択できます。

正直なところ、ELAM と PPL が何であるかをうまく説明できていません。代わりに、ここから始めることをお勧めします:

  • 『Windows Internals Part 1』第3章 (率直に言って Windows に関するあらゆる事柄のための第1のリソース)
  • 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 はほぼ任意のバイナリを実行できますが、これは自動的に署名される単なるサンプルです。

インストール

注意 テストマシンにのみインストールしてください。本番環境や自宅の PC にはインストールしないでください。

  1. ビルド後、elam_driver.sys と ppl_runner.exe をターゲットマシン上のフォルダーにコピーします。

  2. 管理者権限のプロンプトから以下を実行してテスト署名を有効にし、再起動します:

bcdedit /set testsigning on
  1. 管理者権限のコマンドプロンプトから、コピーした実行ファイルが含まれるフォルダに移動し、次を実行します:
ppl_runner.exe install

これにより ppl_runner という名前のサービスがインストールされます。

設定

実行するバイナリに署名するには、sign_file.ps1 スクリプトを使用するか、signtool.exe を直接実行して、ppl_runner.pfx 証明書で署名します。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 として起動され、その後 ppl_runner は停止して終了します。起動に成功しても 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 もすべて署名されている必要があります

デバッグ

Sysinternals の DBGView を実行し、Win32 Global をログ出力して *[PPL_RUNNER]* でフィルタリングします。 これにより、サービスとインストーラーからのすべてのログが表示されます。

使用例

未定 - Sealighter ブログ

類似プロジェクト

James Forshaw は、既存の PPL プロセスにコードを注入するための素晴らしいプロジェクトを作成しました。

さらなる読み物と謝辞

ELAM と PPL についてさらに学ぶには、Alex Ionescu をフォローするのがおそらく最良の方法です。 おそらくここから始めるとよいでしょう: https://www.crowdstrike.com/blog/protected-processes-part-3-windows-pki-internals-signing-levels-scenarios-signers-root-keys/

Matt Graeber と James Forshaw をフォローすることも、もう一つの素晴らしい方法です。

証明書から「To-Be-Signed」ハッシュを取得するための powershell スクリプトを提供してくれた Matt に多大なる感謝を捧げます。

James は PPL とその欠陥について多くの記事を執筆しています。

ツールをダウンロード