Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
PrintSpoofer-ReflectiveDLL — Windows プリントスプーラーの権限昇格の脆弱性(CVE-2019-1040/CVE-2019-1019)が、ペネトレーションテスト用に Reflective DLL として実装されました。 | Kitploit
ツール/GitHubGitHub/jonyfilc/printspoofer-reflectivedll
特権昇格エクスプロイト横移動ポストエクスプロイトペネトレーションテストレッドチーミングペイロード開発
GitHubjonyfilc/printspoofer-reflectivedll

PrintSpoofer-ReflectiveDLL

人気

すべて見る →

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

すべてのツールを探索

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

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

Windows プリントスプーラーの権限昇格の脆弱性(CVE-2019-1040/CVE-2019-1019)が、ペネトレーションテスト用に Reflective DLL として実装されました。

リポジトリを見る
235日前未レビュー

PrintSpoofer 詳細

License Platform C++

PrintSpoofer は、Windows Print Spooler サービスの脆弱性 (CVE-2019-1040 / CVE-2019-1019) を悪用してローカル権限昇格を実行するツールです。このプロジェクトは PrintSpoofer エクスプロイトを Reflective DLL 形式で実装しており、Cobalt Strike などのペネトレーションテストフレームワークでの使用に適しています。

目次

  • 概要
  • 動作原理
  • 技術的詳細
  • 要件
  • ビルド
  • 使用方法
  • プロジェクト構成
  • セキュリティ免責事項
  • 参考リンク

概要

PrintSpoofer は、低権限ユーザーが SYSTEM レベルの権限を取得できるようにする Windows Print Spooler サービスの脆弱性を悪用します。このエクスプロイトは、Print Spooler サービスが名前付きパイプを処理する方法を悪用します。

特徴

  • Reflective DLL 形式 — ディスクに触れることなく完全にメモリにロード可能
  • SE_IMPERSONATE_NAME 権限で動作
  • RPC プロトコルを使用して Print Spooler サービスと通信
  • 名前付きパイプ メカニズムを使用してトークンの偽装を実行

動作原理

PrintSpoofer は以下の手順で動作します:

1. 権限チェック

エクスプロイトはまず、現在のトークンが SE_IMPERSONATE_NAME 権限を持っているかどうかを確認します。これは別のユーザーのトークンを偽装するために必要です。

2. 名前付きパイプの作成

ランダムな UUID を使用して名前付きパイプが作成されます。パイプのパスは次のとおりです:

root@kitploit:~
\\.\pipe\<UUID>\pipe\spoolss

3. パイプ接続の待機

作成された名前付きパイプ上で非同期接続が待機されます。イベントが作成され、パイプが着信接続を受け入れるよう準備されます。

4. Print Spooler 接続のトリガー

別スレッドで、Print Spooler サービスに対して RPC 呼び出しが行われます。 RpcRemoteFindFirstPrinterChangeNotificationEx を呼び出すことで、サービスは作成したパイプへの接続を試みます。

5. トークンの偽装

Print Spooler サービス (SYSTEM として実行) が名前付きパイプに接続すると、エクスプロイトは ImpersonateNamedPipeClient を使用してサービスのトークンを偽装します。 これにより SYSTEM 権限が取得されます。

6. 特権操作

SYSTEM トークンを取得すると、高権限アクションを実行できるようになります。

技術的詳細

Print Spooler の脆弱性

Windows Print Spooler サービスは、名前付きパイプを介してプリンター通知を処理します。 サービスがパイプ接続を適切に検証しないため、攻撃者はサービスを悪意のあるパイプに接続させ、SYSTEM トークンを偽装することができます。

RPC 通信

このプロジェクトは、MS-RPRN (Print System Remote Protocol) を使用して Print Spooler サービスと通信します。 このプロトコルは IDL (Interface Definition Language) ファイルで定義され、RPC 呼び出しを可能にします。

Reflective DLL インジェクション

Reflective DLL は標準の DLL とは異なる動作をします:

  • ディスクに触れることなく直接メモリにロードできる
  • LoadLibrary API を必要としない
  • PE (Portable Executable) 形式を手動で解析してロードする

要件

ビルド用

  • Visual Studio 2022 (C++ デスクトップ開発ワークロード)
  • Windows 10/11

実行用

  • Windows 10/11
  • Print Spooler サービスが実行中であること
  • SE_IMPERSONATE_NAME 権限 (デフォルトでほとんどの標準ユーザーが利用可能)
  • Cobalt Strike または類似のフレームワーク (オプション)

ビルド

Visual Studio でのビルド

  1. Visual Studio で PrintSpoofer.sln ファイルを開きます。

  2. ソリューションプラットフォーム と 構成 を選択します:

    • プラットフォーム: x64 または Win32 (ターゲットアーキテクチャによる)
    • 構成: Release (本番用) または Debug (開発用)
  3. Build Solution (Ctrl+Shift+B) でソリューションをビルドします。

  4. コンパイルされた DLL は次の場所に配置されます:

    root@kitploit:~
    PrintSpoofer\x64\Release\PrintSpoofer.dll   (for x64)
    PrintSpoofer\Win32\Release\PrintSpoofer.dll (for x86)
    

ビルドオプション

このプロジェクトは以下のプリプロセッサ定義を使用します:

  • REFLECTIVE_DLL_EXPORTS: Reflective DLL エクスポートを有効化
  • REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN: カスタム DllMain を使用
  • REFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR: LoadRemoteLibraryR を有効化 (Release モード)

使用方法

Cobalt Strike での使用

PrintSpoofer は Cobalt Strike の elevate コマンドで使用できます:

root@kitploit:~
elevate PrintSpoofer LISTENER_NAME

ここで:

  • PrintSpoofer: エレベーターモジュール名
  • LISTENER_NAME: 昇格したシェルを受け取るリスナー

手動での使用

DLL は Reflective DLL インジェクション手法を使用して手動でロードできます。

期待される出力

エクスプロイトが成功すると、次のような出力が表示されます:

root@kitploit:~
[+] Found privilege: SeImpersonatePrivilege
[+] Named pipe listening...
[+] ImpersonateNamedPipeClient OK
[+] Exploit successfully, enjoy your shell

ファイルの説明

dllmain.cpp

  • DLL エントリポイント (DllMain)
  • エクスプロイトロジックを制御する
  • Reflective DLL 固有の機能を処理する

PrintSpoofer.cpp

  • CheckAndEnablePrivilege: トークン権限を確認し有効化する
  • GenerateRandomPipeName: ランダムな UUID を使用してパイプ名を生成する
  • CreateSpoolNamedPipe: 名前付きパイプを作成しセキュリティを構成する
  • ConnectSpoolNamedPipe: 非同期接続用にパイプを準備する
  • TriggerNamedPipeConnection: Print Spooler 接続をトリガーするスレッドを作成する
  • TriggerNamedPipeConnectionThread: RPC 呼び出しを実行する
  • GetSystem: トークンの偽装を実行する

ms-rprn.idl

  • Microsoft の MS-RPRN プロトコルの IDL 定義
  • MIDL コンパイラによって処理され、RPC スタブを生成する

ReflectiveLoader.cpp

  • Reflective DLL インジェクション用の PE 解析とメモリロードを実装する

免責事項

このツールは教育目的のみおよび許可されたペネトレーションテストを対象としています。

参考リンク

  • https://www.itm4n.fr/printspoofer-abusing-impersonate-privileges/
  • https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation

ライセンス

このプロジェクトは MIT ライセンスの下でライセンスされています。詳細については、LICENSE ファイル を参照してください。

ツールをダウンロード