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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
特権昇格脆弱性分析エクスプロイト横移動ポストエクスプロイトペネトレーションテストペイロード開発バイナリエクスプロイト

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

リポジトリを見る
323年前未レビュー

Windows のローカル権限昇格 (LPE) 脆弱性が、2022 年 9 月 9 日に Andrea Pierini (@decoder_it) 氏と Antonio Cocomazzi (@splinter_code) 氏によって Microsoft に報告されました。この脆弱性により、ホスト上の低権限アカウントを持つ攻撃者が、SYSTEM 権限で任意のファイルを読み書きできるようになります。

この脆弱性自体は SYSTEM としてコマンドを直接実行できるようにするものではありませんが、複数のベクターと組み合わせることでこの結果を達成できます。幸運なことに、2 月 13 日には BlackArrowSec によって StorSvc サービスを悪用する別の権限昇格 PoC が公開されました。これは、攻撃者が PATH 内の任意のディレクトリに DLL ファイルを書き込める限り、SYSTEM としてコードを実行できるようにするものです。

LocalPotato PoC は、NTLM ローカル認証と呼ばれる NTLM 認証の特殊なケースにおける欠陥を利用して、特権プロセスを欺き、攻撃者がローカル SMB サーバーに対して開始したセッションを認証させます。その結果、攻撃者は、欺かれたプロセスの権限で、C$ や ADMIN$ などの特別な共有を含む任意の共有にアクセスできる接続を手に入れることになります。

エクスプロイトが実行するプロセスは次のとおりです。

  • 攻撃者は、特権プロセスをトリガーして、自身が制御する不正サーバーに接続させます。これは以前の Potato エクスプロイトと同様に機能します。非特権ユーザーがオペレーティングシステムに、特権ユーザー (通常は SYSTEM) を使用する接続を強制的に作成させることができるものです。
  • 不正サーバーは、特権接続用にセキュリティコンテキスト A をインスタンス化しますが、すぐには返信しません。代わりに攻撃者は、現在の非特権資格情報を使用してローカル SMB サーバー (Windows ファイル共有) への接続を同時に開始する不正クライアントを起動します。クライアントは接続を開始するために Type1 メッセージを送信し、サーバーは新しいセキュリティコンテキスト B の ID を含む Type2 メッセージを送信して応答します。
  • 攻撃者は両方の接続からコンテキスト ID を交換し、特権プロセスが自身のコンテキストではなく SMB サーバー接続のコンテキストを受け取るようにします。その結果、特権クライアントはそのユーザー (SYSTEM) を、攻撃者が作成した SMB 接続のセキュリティコンテキスト B に関連付けます。これにより、攻撃者のクライアントは SYSTEM 権限で任意のネットワーク共有にアクセスできるようになります。

SMB 共有への特権接続を手に入れることで、攻撃者はターゲットマシン上の任意の場所にあるファイルを読み書きできます。これだけでは脆弱なマシンに対して直接コマンドを実行することはできませんが、別の攻撃ベクターと組み合わせてその目的を達成します。

この脆弱性は SMB サーバーではなく NTLM プロトコルにあることに注意してください。したがって、この同じ攻撃ベクターは、理論上は NTLM による認証を利用する任意のサービスに対して使用できる可能性があります。ただし、実際には、攻撃するプロトコルを選択する際にいくつかの注意点に対処する必要があります。PoC は、同様の攻撃ベクターに対する他のプロトコルの追加保護を回避するために SMB サーバーを使用しており、SMB サーバーに対してエクスプロイトを機能させるための簡単なバイパスも実装しています。 オリジナルのエクスプロイト作者の投稿 - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

これまで、LocalPotato を使用してターゲットマシンに任意のファイルを書き込んできました。特権シェルを取得するには、任意のファイル書き込みを使用してコマンドを実行する方法をまだ見つける必要があります。

最近、攻撃者が欠落している DLL をハイジャックして SYSTEM 権限で任意のコマンドを実行できる、もう 1 つの権限昇格ベクターが見つかりました。このベクターの唯一の問題は、攻撃者がそれをトリガーするためにシステムの PATH に DLL を書き込む必要があることでした。デフォルトでは、Windows の PATH には特権アカウントのみが書き込めるディレクトリだけが含まれます。特定のアプリケーションのインストールによって PATH 変数が変更され、マシンが脆弱になっている場合を見つけられる可能性はありますが、この攻撃ベクターは特定のシナリオにのみ適用されます。この攻撃を LocalPotato と組み合わせることで、この制限を克服し、完全に機能する権限昇格エクスプロイトを実現できます。

StorSvc と DLL ハイジャック

BlackArrowSec によって発見されたように (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc)、攻撃者は "StorSvc" サービスが提供する "SvcRebootToFlashingMode" メソッドに RPC 呼び出しを送信できます。これにより、最終的に "SprintCSP.dll" と呼ばれる欠落した DLL の読み込み試行がトリガーされます。

RPC に詳しくない場合は、リモートで使用できるように関数を公開する API だと考えてください。この場合、StorSvc サービスは SvcRebootToFlashingMode メソッドを公開しており、マシンにアクセスできる人なら誰でも呼び出すことができます。

StorSvc は SYSTEM 権限で実行されるため、PATH 内のどこかに SprintCSP.dll を作成すると、SvcRebootToFlashingMode への呼び出しが行われるたびにそれが読み込まれます。

エクスプロイトのコンパイル

エクスプロイトリンク - (https://github.com/decoder-it/LocalPotato)

このエクスプロイトを使用するには、まず提供されている両方のファイルをコンパイルする必要があります。

  • SprintCSP.dll: これはハイジャックする欠落 DLL です。リバースシェルを実行するようにコマンドを変更する必要があります。
  • RpcClient.exe: このプログラムは SvcRebootToFlashingMode への RPC 呼び出しをトリガーします。対象とする Windows のバージョンによって、SvcRebootToFlashingMode を公開するインターフェース識別子が異なるため、エクスプロイトのコードを少し編集する必要がある場合があります。 両方のファイルのプロジェクトは、ディレクトリ "LPE via StorSvc" にあります。

まず "RpcClient.exe" から始めましょう。前述のとおり、ターゲットマシンの Windows バージョンに応じてエクスプロイトを変更する必要があります。これを行うには、"LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c" の最初の行を変更して、正しいオペレーティングシステムが選択されるようにする必要があります。これにより、エクスプロイトが正しい RPC インターフェース識別子を使用するように設定されます。コードを修正したら、開発者コマンドプロンプトを開き、次のコマンドを実行してプロジェクトをビルドしましょう。 コマンド: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (コンパイルされた実行可能ファイルはデスクトップにあります。)

次に "SprintCSP.dll" をコンパイルするには、"C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c" 内の "DoStuff()" 関数を変更して、マシンへの特権アクセスを許可するコマンドを実行するようにするだけです。簡単にするために、DLL が現在のユーザーを Administrators グループに追加するようにします。ターゲットから自分のマシンへのリバースシェルを取得することもできます。 次のコマンドを実行して DLL をコンパイルし、結果をデスクトップに戻します。 コマンド: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

これでエクスプロイトを実行する準備が整いました。"LocalPotato.exe" エクスプロイト、"RpcClient.exe"、"SprintCSP.dll" ファイルがあることを確認してください。

  • まず、現在のユーザーが Administrators グループのメンバーではないことを確認しましょう。
  • "StorSvc" を正常にエクスプロイトするには、"SprintCSP.dll" を現在の PATH 内の任意のディレクトリにコピーする必要があります。PATH は次のコマンドを実行して確認できます。 C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • %SystemRoot%\system32 ディレクトリをターゲットにします。これは "C:\windows\system32" に展開されます。ただし、任意のディレクトリを使用できるはずです。
  • LocalPotato を使用すると、非特権ユーザーでも SprintCSP.dll を system32 にコピーできます。 C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • DLL を配置したら、"RpcClient.exe" を実行して "SvcRebootToFlashingMode" への呼び出しをトリガーし、DLL 内のペイロードを効果的に実行できます。 C:\Users\user\Desktop> RpcClient.exe
  • エクスプロイトが期待どおりに機能したかどうかを確認するには、ユーザーが Administrators グループのメンバーになったかどうかを確認できます。 C:> net user user

検出と緩和策

検出

localpotato エクスプロイトがどのように機能し、StorSrv サービスと連鎖させて SYSTEM としてコードを実行する方法を理解したところで、この攻撃をシステム内でどのように検出し、防止するかを見ていきましょう。

YARA ルール: この攻撃は引数を指定してコマンドラインターミナルで実行される実行可能ファイルを伴うため、この活動を検出する一般的な方法は 2 つあります。パターンマッチングツール YARA を使用してファイルパターンを検出する方法と、このハックツール localpotato.exe の実行によって生成されたイベントを調べる方法です。この攻撃は localpotato.exe として知られるハックツールを使用するため、YARA または THOR などの他の検出ツールを使用してホストをスキャンし、システム内のこのツールの存在を検出する YARA ルールを作成できます。 (YARA ルールはこのリポジトリに添付されています。この最小限のルールは、localpotato 実行可能ファイル内の一般的な文字列パターンを探します。)

Sigma ルール: SIGMA は、イベントログで見つかったパターンに基づいて検出ルールを作成するために使用される汎用シグネチャ言語です。ネットワーク上の localpotato を検出するには、集中ログ監視が有効になっていることが期待されます。次の SIGMA ルールは、SIGMA 公式リポジトリ (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml) から取得したものです。

  • LocalPotato の検出 (ルールはリポジトリに添付されています)
  • Storsvc と SprintCSP.dll ハイジャックの検出 localpotato の脆弱性が Storsvc と組み合わせて SprintCSP.dll をハイジャックし、SYSTEM として実行されることを確認しました。公式 GitHub から取得した以下の添付 SIGMA ルールを使用して、この活動を検出できます。

これらの Sigma ルールは、導入済みの検出/監視ツールに変換し、イベントログを検索して潜在的な攻撃を探すために使用できます。

緩和策

  • パッチ更新: localpotato エクスプロイトは Windows オペレーティングシステムの脆弱性を標的にしています。攻撃者がこの脆弱性を悪用するのを防ぐために、すべてのシステムが最新のセキュリティパッチで更新されていることを確認してください。この脆弱性は、パッチが適用された OS には影響しません。
  • 最小権限の原則: 攻撃者が localpotato エクスプロイトを悪用するのを防ぐ 1 つの方法は、最小権限の原則を実装することです。これは、ユーザーが職務を遂行するために必要なリソースにのみアクセスを制限することを意味します。これにより、攻撃者がエクスプロイトを実行するために必要な昇格された特権を獲得する可能性が低くなります。
  • 不審な活動の監視: "Splunk" などのツールを使用して、ネットワーク上の不審な活動を監視します。異常なプロセス活動や悪意のあるコードの実行試行など、localpotato 攻撃の兆候を探します。
ツールをダウンロード