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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Potato — Windowsのローカル特権昇格エクスプロイト。NBNSスプーフィング、偽WPADプロキシ、HTTP-to-SMB NTLMリレーを使用してNT AUTHORITY\SYSTEMアクセスを取得します。 | Kitploit
ツール/GitHubGitHub/foxglovesec/potato
特権昇格エクスプロイト横移動ポストエクスプロイトネットワークセキュリティペネトレーションテスト認証レッドチーミング
GitHubfoxglovesec/potato

Potato

Windowsのローカル特権昇格エクスプロイト。NBNSスプーフィング、偽WPADプロキシ、HTTP-to-SMB NTLMリレーを使用してNT AUTHORITY\SYSTEMアクセスを取得します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

#Potato Windows 7、8、10、Server 2008、Server 2012 における特権昇格

###仕組み Potato は Windows の既知の問題、すなわち NTLM リレー(具体的には HTTP->SMB リレー)と NBNS スプーフィングを悪用して、ローカル特権昇格を実現します。

以下に概説する手法を用いることで、非特権ユーザーがデフォルト構成の Windows ホストに対して「NT AUTHORITY\SYSYTEM」レベルのアクセス権を取得することが可能です。

このエクスプロイトは 3 つの主要な部分で構成されており、いずれもコマンドラインスイッチを通じてある程度設定可能です:

#####1. ローカル NBNS スプーファー NBNS は Windows 環境で一般的に使用される名前解決用のブロードキャスト UDP プロトコルです。ペネトレーションテストでは、ネットワークトラフィックをスニッフィングし、ローカルネットワーク上で観測された NBNS クエリに応答することがよくあります。特権昇格の目的では、ネットワークトラフィックをスニッフィングできるとは仮定できないため、どのようにして NBNS スプーフィングを実現するのでしょうか?

ターゲットマシン(この場合、ターゲットは 127.0.0.1)がどのホストに対して NBNS クエリを送信するかを事前に知ることができれば、応答を作成してターゲットホストに NBNS 応答をフラッディングすることができます(NBNS は UDP プロトコルであるため)。1 つの複雑な点は、NBNS パケット内の 2 バイトのフィールドである TXID が、リクエストと応答で一致しなければならないことです。これは、素早くフラッディングし、65536 個の可能な値すべてを反復することで克服できます。

スプーフィングしようとしているホストに既に DNS レコードが存在する場合はどうなるでしょうか? 実は、「ポート枯渇」と呼ばれる手法を使って、すべての UDP ポートにバインドすることで、DNS ルックアップを面白い方法で強制的に失敗させることができます。DNS ルックアップを実行しようとすると、DNS 応答が返ってくるための送信元ポートが利用できなくなるため、失敗します。

テストでは、これが 100% の効果を発揮することが証明されています。

#####2. 偽の WPAD プロキシサーバー NBNS 応答をスプーフィングする機能があれば、NBNS スプーファーを 127.0.0.1 に向けることができます。ターゲットマシン(自分自身のマシン)に対して、ホスト「WPAD」または「WPAD.DOMAIN.TLD」の NBNS 応答パケットをフラッディングし、WPAD ホストの IP アドレスが 127.0.0.1 であると主張します。

同時に、127.0.0.1 上でローカルに HTTP サーバーを実行します。「http://wpad/wpad.dat」へのリクエストを受信すると、次のようなものを返します:

root@kitploit:~
FindProxyForURL(url,host){
	if (dnsDomainIs(host, "localhost")) return "DIRECT";
	return "PROXY 127.0.0.1:80";}

これにより、ターゲット上のすべての HTTP トラフィックが、127.0.0.1 で実行されている当社のサーバーを経由してリダイレクトされます。

興味深いことに、この攻撃は低権限のユーザーによって実行された場合でも、マシンのすべてのユーザーに影響を与えます。これには管理者やシステムアカウントも含まれます。例については、スクリーンショット「egoldstein_spoofing.png」および「dade_spoofed.png」を参照してください。

#####3. HTTP -> SMB NTLM リレー すべての HTTP トラフィックが当社が制御するサーバーを経由して流れるようになったので、NTLM 認証を要求するなどの操作が可能になります...

Potato エクスプロイトでは、すべてのリクエストは「http://localhost/GETHASHESxxxxx」への 302 リダイレクトでリダイレクトされます。ここで xxxxx は何らかの一意の識別子です。「http://localhost/GETHASHESxxxxx」へのリクエストは、NTLM 認証を要求する 401 応答を返します。

NTLM 資格情報はローカルの SMB リスナーにリレーされ、ユーザー定義のコマンドを実行する新しいシステムサービスが作成されます。このコマンドは「NT AUTHORITY\SYSTEM」特権で実行されます。

###エクスプロイトの使用 使用方法は現在、オペレーティングシステムに依存しています。

また、Windows がプロキシ設定と WPAD ファイルをどのように処理するかの癖により、時々不安定になることがあります。エクスプロイトが機能しない場合、多くの場合、実行したままにして待つ必要があります。Windows が既に WPAD のキャッシュエントリを持っている場合、または WPAD が見つからなかったために直接インターネットアクセスを許可している場合、更新されるまでに 30~60 分かかることがあります。この時間が経過した後、エクスプロイトを実行したままにして、後でもう一度トリガーを試みる必要があります。

ここに記載されている手法は、最も単純なものから最も複雑なものへと並べられています。リストの後半にある手法は、それ以前のすべてのバージョンで機能するはずです。各手法にはビデオとスクリーンショットが含まれています。

#####Windows 7 - https://www.youtube.com/watch?v=Nd6f5P3LSNM を参照 Windows 7 は、Windows Defender の更新メカニズムを通じてかなり確実にエクスプロイトできます。

Potato.exe にはこれを自動的にトリガーするコードがあります。単純に以下を実行します: Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true

これにより NBNS スプーファーが起動し、「WPAD」を 127.0.0.1 にスプーフィングし、Windows Defender の更新をチェックします。

ネットワークに既に「WPAD」の DNS エントリがある場合は、「-disable_exhaust false」を試すことができます。これにより DNS ルックアップが失敗し、NBNS にフォールバックするはずです。これを数回テストして、機能することを確認しました。

#####Windows Server 2008 - https://www.youtube.com/watch?v=z_IGPWgL5SY を参照 Windows Server には Defender が付属していないため、代替の方法が必要です。代わりに、単純に Windows の更新をチェックします。もう 1 つの注意点は、少なくとも私のドメインでは、Server 2K8 が単なる WPAD ではなく WPAD.DOMAIN.TLD を要求したことです。以下は使用例です:

Potato.exe -ip <local ip> -cmd <command to run> -disable_exhaust true -disable_defender true --spoof_host WPAD.EMC.LOCAL

これが正常に実行された後、単純に Windows の更新をチェックします。トリガーされない場合は、エクスプロイトを実行したまま約 30 分待って、再度チェックしてください。それでも機能しない場合は、実際に更新をダウンロードしてみてください。

ネットワークに既に「WPAD」の DNS エントリがある場合は、「-disable_exhaust false」を試すことができます。これにより DNS ルックアップが失敗し、NBNS にフォールバックするはずです。これを数回テストして、機能することを確認しました。

#####Windows 8/10/Server 2012 - https://www.youtube.com/watch?v=Kan58VeYpb8 を参照 最新バージョンの Windows では、Windows Update が「インターネットオプション」で設定されたプロキシ設定を尊重しなくなったか、WPAD をチェックしなくなったようです。代わりに、Windows Update のプロキシ設定は「netsh winhttp proxy...」を使用して制御されます。

代わりに、これらのバージョンでは、Windows の新しい機能である「信頼されていない証明書の自動更新」に依存しています。詳細は https://support.microsoft.com/en-us/kb/2677070 および https://technet.microsoft.com/en-us/library/dn265983.aspx にあります。

technet の記事によると、「Windows Server 2012 R2、Windows Server 2012、Windows 8.1、および Windows 8 オペレーティングシステムには、証明書信頼リスト(CTL)を毎日ダウンロードする自動更新メカニズムが含まれています。」

Windows のこの部分は、winhttp プロキシ設定が直接に設定されていても、依然として WPAD を使用しているようです。

この場合、Potato の使用法は次のとおりです: Potato.exe -ip <local ip> -cmd <cmd to run> -disable_exhaust true -disable_defender true

この時点で、最大 24 時間待つか、この更新をトリガーする別の方法を見つける必要があります。

ネットワークに既に「WPAD」の DNS エントリがある場合は、「-disable_exhaust false」を試すことができます。これにより DNS ルックアップが失敗し、NBNS にフォールバックするはずです。これを数回テストして、機能することを確認しました。

###緩和策

Windows で「認証の拡張保護」を有効にすると、NTLM リレー攻撃を阻止できるはずです。

SMB 署名もこの種の攻撃を緩和する可能性がありますが、これを確認するには私の側でさらに調査が必要です。

###オフブロードキャスト NBNS スプーフィング Potato エクスプロイトと同じ NBNS スプーフィング手法を使用して、UDP 137 と通信できる任意のホストに対して NBNS スプーフィングを実行できます。NBNS リクエストがタイムアウトする前に有効な応答を忍び込ませるために、UDP パケットを十分に素早く送信する必要があるだけです。

このデモビデオは https://www.youtube.com/watch?v=Mzn7ozkyG5g で視聴できます。

デモラボには次のセットアップがあります:

PFSense ファイアウォール 10.0.0.0/24 -> 企業 LAN 10.0.1.0 /24 -> サーバーネットワーク

企業ネットワークから、サーバーネットワーク上のマシンを攻撃します。

使用法: python Responder.py –I eth0 –spoof <target>:<spoof address>:<spoof host>

ツールをダウンロード