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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DccwBypassUAC — 「dccw.exe」のWinSxSを悪用したWindows 8.1および10のUACバイパス | Kitploit
ツール/GitHubGitHub/l3cr0f/dccwbypassuac
特権昇格エクスプロイトポストエクスプロイトペイロード開発
GitHubl3cr0f/dccwbypassuac

DccwBypassUAC

「dccw.exe」のWinSxSを悪用したWindows 8.1および10のUACバイパス

リポジトリを見るウェブサイト
3988936年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

DccwBypassUAC

このエクスプロイトは、Leo Davidson氏の「Bypass UAC」手法を派生させた方法で、「dccw.exe」による「WinSxS」の管理方法を悪用し、同意を求めずに管理者シェルを取得します。「x86」および「x64」アーキテクチャをサポートしています。さらに、Windows 8.1 9600、Windows 10 14393、Windows 10 15031、Windows 10 15062でテスト済みです。

スクリプトの実行方法については、使用法セクションを参照してください。また、Metasploitで実行して、管理者権限を持つMeterpreterセッションを取得することもできます。

1. 新しいBypass UACの開発

1.1. 脆弱性の検索

新しいBypass UACを開発するには、まずシステム上の脆弱性、より正確には自動昇格(auto-elevate)プロセスの脆弱性を見つける必要があります。そのようなプロセスのリストを取得するために、SysinternalsのStringsというツールを使用しました。その後、「sysprep.exe」、「cliconfig.exe」、「inetmgr.exe」、「consent.exe」、「CompMgmtLauncher.exe」などの自動昇格プロセスに、「Bypass UAC」の実行を可能にする脆弱性があった(一部は今も存在する)ことがわかりました。そこで、SysinternalsのProcess Monitor(ProcMon)というアプリケーションを使って、他の自動昇格プロセスがどのように動作するかを調べ始めましたが、「dccw.exe」プロセスに焦点を当てました。

ただし、ProcMonを開始する前に、まずSysinternalsのSigcheckという別のアプリケーションでこれらのアプリケーションのマニフェストを確認しました。もちろん、このケースでは「dccw.exe」は自動昇格プロセスです。

次に、ProcMonで「dccw.exe」の実行フローを追跡して、何か奇妙なことが発生するかどうかを確認しました。すると、すぐにそれを確認できました。64ビット版Windowsマシンで「dccw.exe」を64ビットプロセスとして実行すると、32ビット版Windowsマシンで実行された場合と同じように、「GdiPlus.dll」という特定のDLLをロードするためにディレクトリ「C:\Windows\System32\dccw.exe.Local\」を探します。一方、同じマシンで32ビットプロセスとして実行すると、プロセスはディレクトリ「C:\Windows\SysWOW64\dccw.exe.Local\」を探します。そして、そのディレクトリが存在しないため、プロセスは常に「C:\Windows\WinSxS\」内のフォルダを探して目的のDLLを取得します。このフォルダ名は次のような構造になっています:

[architecture]_microsoft.windows.gdiplus_[sequencial_code]_[Windows_version]_none_[sequencial_number]

「WinSxS」ディレクトリを調べると、この構造に一致するフォルダが複数あることがわかります。これは、「dccw.exe」がこれらのフォルダのいずれかから目的のDLLをロードできることを意味します。確かなことは、アプリケーションがx86プロセスとして呼び出された場合、フォルダ名は「x86」という文字列で始まり、x64プロセスとして実行された場合は「amd64」という文字列で始まるということだけです。

この状況は、DLLハイジャックを実行し、同意を求めずに高整合性でコードを実行するために悪用される可能性があります。

1.2. 脆弱性の検証

自動昇格プロセスの実行中にエラーを発見したら、それが悪用可能かどうかを検証する必要があります。このために、目的のパスに「dccw.exe.Local」フォルダを作成し、そのフォルダ内に、「WinSxS」にあるフォルダのうち、プロセスが「GdiPlus.dll」をロードするために呼び出す可能性のあるフォルダを、そのDLLなしで作成しました。

ここで「dccw.exe」を実行すると、プロセスが「dccw.exe.Local」フォルダと「WinSxS」フォルダのいずれかを見つけたものの、目的のDLLが見つからないためエラーが発生することがわかります。これは想定どおりです。前述のとおり、この状況は攻撃者によって悪用される可能性があるからです。

1.3. エクスプロイトの開発

この時点で、「dccw.exe」を悪用してWindows 10でBypass UACを実行できることはすでにわかっていますが、どのようにするのでしょうか?

1.3.1. 手法

Bypass UACで最もよく使われる手法は、Leo Davidson氏によって開発されたものです。しかし、この手法はIFileOperation COMオブジェクトを呼び出すためにプロセスインジェクションを実行するため、一部のアンチウイルスソフトウェアに検出される可能性があります。そのため、より良いアプローチは、Masquerade PEBと呼ばれる、Cn33liz氏が自身のBypass UACで使用している手法です。

また、Leo Davidson氏の手法はビルド15002以降でUACをトリガーするため、新しいバージョンのWindows 10ではIFileOperationの呼び出し方を変更する必要があります。このような操作の呼び出し方はオリジナルと同じですが、操作フラグ「FOF_SILENT」、「FOFX_SHOWELEVATIONPROMPT」、「FOF_NOERRORUI」なしで行います。

1.3.2. 初期チェック

エクスプロイトを実行する前に、失敗してアラームを発生させないようにするために、いくつかの点を確認することが重要です。最初に確認するのはWindowsのビルドバージョンです。一部のバージョン(ビルド7600より前のバージョン)はこのエクスプロイトの影響を受けないためです。次に、まだ管理者権限を持っていないことを確認します。すでに管理者権限を持っている場合は、スクリプトを実行する理由がありません。その後、UAC設定を確認して「常に通知」に設定されていないことを確認します。「常に通知」に設定されている場合、エクスプロイトは無意味になるためです。最後に、ユーザーが管理者グループに属しているかどうかを確認します。属していない場合、エクスプロイトは失敗するためです。

1.3.3. 相互運用性

エクスプロイトを開発する際、可能な限り多くのシステムで動作できることが重要です。これには32ビット版Windowsシステムも含まれます。これを実現するには、そのようなシステム向けにエクスプロイトをコンパイルする必要があります。64ビットシステムでも実行できるからです。

32ビット版のエクスプロイトを64ビット版Windowsマシンで実行すると、WOW64(64ビットマシンで32ビットアプリケーションを実行できるようにするWindowsサブシステム)の呼び出しにより、「dccw.exe」の動作が少し異なります。つまり、「dccw.exe.Local」フォルダは「C:\Windows\System32\」ディレクトリではなく「C:\Windows\SysWOW64\」ディレクトリで検索されます。また、対象となる「GdiPlus.dll」は32ビットDLLになるため、「C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_*」という名前パターンに一致するフォルダ内で検索されます。ただし、32ビット版Windowsシステムで実行された場合、エクスプロイトは期待どおりに動作します。

最後に、DLLハイジャックを実行する際には、「C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_*」というパターンに一致するすべてのパスを考慮する必要があることを強調しておきます。これにより100%の効果を保証できます。

1.3.4. 悪意のあるDLL

高整合性でプロセスを実行するには、DLLハイジャックを介して呼び出されるDLLを開発する必要があります。しかし、これは見た目ほど単純ではありません。なぜなら、それだけを行うと、「dccw.exe」も私たちのコードも実行されないからです。「dccw.exe」は「GdiPlus.dll」の一部の関数に依存しているため、それらの関数の実行を実装するか、正当なDLLに転送する必要があります。

最良の選択肢は、正当なDLLに実行を転送することです。これにより、私たちのDLLのサイズを小さくできます。そのために、ExportsToC++プログラムを使用して、「GdiPlus.dll」のすべてのエクスポートをC++言語に移植しました。ここでの問題は、「GdiPlus.dll」が持つエクスポートの数が非常に多いことです。正確には631個です。しかし、「dccw.exe」がそのすべてをインポートするわけではなく、ごく一部のみです。「dccw.exe」が「GdiPlus.dll」からどの関数をインポートするかを調べるために、「IDA Pro」でリバースエンジニアリングを行いました。最終的に、「GdiPlus.dll」からインポートされる関数は15個だけなので、DLLにはそれらの関数だけを含めればよいのです。

これで問題は解決したように思えますが、C:\Windows\WinSxS\内の特定の「GdiPlus.dll」に実行を転送すると、「WinSxS」の内部フォルダ名はWindowsのビルドごとに変わるため、DLLは一部のシステムでしか動作しません。この問題を解決するために、「C:\Windows\System32\GdiPlus.dll」に実行を転送するというアイデアを思いつきました。このパスはすべてのWindows 10システムで同じだからです。

最後に行う必要があるのは、悪意のあるコードを実行した後に「dccw.exe」の実行を停止して、そのプロセスのウィンドウが開かないようにすることです。

悪意のあるDLLを開発したら、それを標的のマシンにドロップする必要があります。そのために、DLLは圧縮され、「base64」エンコードされてエクスプロイトに埋め込まれています。実行時にデコードおよび解凍して、期待どおりにドロップできます。

最後に、前述のとおり、細工された「GdiPlus.dll」はIFileOperation COMオブジェクトを使用して対象の場所にコピーされます。

1.3.5. 検出回避

攻撃者はシステムを侵害した後、可能な限り長く検出されずに潜伏しようとします。つまり、実行したアクションの痕跡をすべて削除するということです。そのため、エクスプロイトの実行中に作成された一時ファイルは、不要になった時点で削除されます。

1.3.6. 目標

最後に、高整合性で実行したいプロセスを決定する必要があります。このケースでは、「cmd.exe」アプリケーションを選択しました。管理者権限を取得すれば、高整合性で必要なだけ多くの操作を実行できるからです。実際には、任意のアプリケーションを実行できます。

2. 要件

エクスプロイトを正常に実行するには、標的のマシンが次の要件を満たしている必要があります:
 - Windows 8または10であること。ビルドバージョンは問いません。
 - UAC設定が「常に通知」に設定されていないこと。
 - 侵害されたユーザーが「Administratorsグループ」に属していること。

3. 使用法

エクスプロイトを実行するには、標的のマシンが要件を満たしていることを確認する必要があります。その後は、他のコマンドラインスクリプトと同じようにエクスプロイトを実行するだけです:

root@kitploit:~
C:\Users\L3cr0f> DccwBypassUAC.exe

4. Metasploitモジュール

このPoCのMetasploitモジュールは、Masquerading PEBの代わりにDLLインジェクションを使用します。以下で入手できます:

 - Metasploit Framework: https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/local/bypassuac_injection_winsxs.rb
 - L3cr0fのMetasploitモジュールリポジトリ: https://github.com/L3cr0f/Metasploit-modules#bypassuac_injection_winsxs

5. 免責事項

このエクスプロイトは、攻撃者がどのようにシステムの特権を取得し得るかを示すために開発されたものであり、悪意のある目的で使用するためのものではありません。つまり、誰かがこれを犯罪行為に使用した場合、私は一切の責任を負いません。

6. マイクロソフトの見解

User Access Control (UAC)は、Windows Vistaで導入されたテクノロジであり、標準ユーザーの特権とタスクを、管理者アクセスを必要とするものから分離する方法を提供します。標準ユーザーがシステムを使用中に、権限のないアクションを実行しようとすると、Windowsからプロンプトが表示され、管理者アカウントのパスワードが要求されます。管理者がシステムを使用中に同じタスクを実行しようとすると、警告プロンプトのみが表示されます。このプロンプトは、管理者が続行する前にアクションに同意することだけを求められるため、「同意プロンプト(Consent Prompt)」として知られています。「同意プロンプト」をバイパスできる弱点は、セキュリティ境界とは見なされないため、セキュリティの脆弱性とは見なされません。

ただし、マイクロソフトは「User Account Control (UAC)は、マイクロソフトの全体的なセキュリティビジョンの基本コンポーネントです」とも述べています。

出典:
 - セキュリティの脆弱性の定義。
 - User Account Controlの動作方法。

7. 謝辞

エクスプロイトを開発するにあたり、以下によって作成されたものを基にしました:
 - Fuzzysecurity: https://github.com/FuzzySecurity/PowerShell-Suite/tree/master/Bypass-UAC。
 - Cn33liz: https://github.com/Cn33liz/TpmInitUACBypass。
 - hFireF0X: https://github.com/hfiref0x/UACME。
本当にありがとうございます!
ツールをダウンロード