Windows 10のディスククリーンアップ自動実行機能を利用してUACをバイパスする方法 18
隙を見て置き換える 部門より
Windows 10のディスククリーンアップ自動実行機能に対するDLLハイジャックによりUACをバイパスする方法を、セキュリティ研究家のMatt Nelson氏とMatt Graeber氏が発見したそうだ(Nelson氏のブログ記事、Softpedia)。
DLLハイジャックでUACをバイパスする方法の多くは、ファイルの置き換えなどで特権が必要となる。しかし、ディスククリーンアップ自動実行機能を利用する方法では、標準ユーザーの権限でファイルを置き換え可能だという。
ディスククリーンアップの自動実行はタスクスケジューラの「Microsoft\Windows\DiskCleanup」に「SilentCleanup」として登録されており、最上位の特権で実行される。タスクが起動するプログラムは「cleanmgr.exe」だが、実行時に「DismHost.exe」および関連するDLLを「%TEMP%\」フォルダーにコピーし、最上位の特権でDismHost.exeを起動する。
しかし、コピー先フォルダーの内容を書き換えるのに特権は必要ない。DismHost.exeはフォルダー内のDLLを特定の順番で読み込んでいくため、コピー先フォルダーの生成をWMIイベントで監視し、DLLを置き換えることでDLLハイジャックが可能となる。調査の結果、「LogProvider.dll」が最後に読み込まれる(時間に余裕がある)ことが判明しており、このファイルをターゲットとしたPoCがPowerShellスクリプトで作られている。このスクリプトはGitHubで入手可能だ。なお、「標準」ユーザーアカウントではファイルのコピーが実行されず、タスクも最上位の特権で実行されることはないそうだ。Windows 10以外のWindowsバージョンにも適用されるのかどうかについては言及されていない。
この手法については7月20日にMicrosoftに報告しているが、MicrosoftではUACをセキュリティの境界とみなしていないため、セキュリティ脆弱性ではないとの回答があったとのこと。そのため、Nelson氏は緩和策としてタスクを無効化するか、「最上位の特権で実行する」オプションを無効にすることを推奨している。
そもそもタスクマネージャーって (スコア:0)
UACの枠外じゃ
あくまでもインタラクティブ要素
Re:そもそもタスクマネージャーって (スコア:1)
タスクマネージャーとタスクスケジューラの区別もつかねえのかお前は
Re: (スコア:0)
ほら新しいタスクの実行とかありますから。
タスクマネージャを何とかして権限が強力なアカウントとして実行してそこから新しいタスクを実行すれば…
なぜそんなことを… (スコア:0)
>実行時に「DismHost.exe」および関連するDLLを「%TEMP%\」フォルダーにコピーし、最上位の特権でDismHost.exeを起動する。
なんか必要性があるのか?
Re: (スコア:0)
システムファイルのクリーンアップには特権が必要なのでその関係だと思われ
Re:なぜそんなことを… (スコア:2)
サービスとして動かしておけば良さそうなのに。
Re:なぜそんなことを… (スコア:1)
昔のバージョンでサービスやスタートアップとして起動していたものが、最近は必要時にタスク起動になってるのが少なくないね。
標準ユーザーで使っていてよかった (スコア:0)
でも「設定」の手抜きぶりからして、もうMicrosoftは標準ユーザーで使わせることをあきらめたようにしか思えないんだよなあ。
標準ユーザーでのコンパネの出来はVista/7の時代が最高だった。
Re: (スコア:0)
これ、UACがどうこうじゃなくて、
「たんなる権限昇格の脆弱性」だよね。
一般ユーザーでログインしてフォルダに置きゃ、どんなプログラム(下手すりゃWEBからでもそこにファイルおけば)
でも最上位権限で動かせるっていう。
Re:さすがMicrosoft (スコア:2)
とあるけど、ファイルを置きさえすれば最上位の特権で動くのかな?
#試す環境が無いので
Re: (スコア:0)
全然違います。ストーリーとリンク先をよく読みましょう。
Re: (スコア:0)
コピーしてるのはC:\Users\<username>\AppData\Temp\<guid>なんだから、ユーザーフォルダの任意の場所って以上の意味はない。
/tmpなんて何の関係もねえよ。
(何故そんなことをしてるのかは知らんけど、ともかく)実行するためにexeファイルをコピーしてるんだから、
実行権限のある場所にコピーするのは当たり前だろ。馬鹿か?
Re: (スコア:0)
そもそも最上位権限で実行されたプロセスがやることですから、/tmpが駄目なら別の場所にコピーするだけの話ですよね。
Re: (スコア:0)
馬鹿な仕様だ。
Re: (スコア:0)
コピーしたものを特権で実行することが不自然な仕様ですね。
#3054543
にもあるようにサービスで動かせばよいのでは?
Re: (スコア:0)
特権とは言うけどそのユーザの権限自体が持ってる特権だからなぁ…
わざわざコピーしてから動かすのはあれだけど、インストーラとかと同じだと思えば、うんまぁ。
Re: (スコア:0)
勘違いしているようだが、一般ユーザから特権使ってシステムを弄れるようになる脆弱性ではないよ。
→「なお、「標準」ユーザーアカウントではファイルのコピーが実行されず、タスクも最上位の特権で実行されることはない」
パスワード無しでsudoできるユーザの場合に、昇格の認証ダイアログをスキップできる手順が一個見つかった的な話。
そもそも認証ダイアログ自体がユーザ側で動く念のための確認的な物という位置づけだから致命的ではないって事ね。
偽パスワード画面をCtrl+Alt+Del入力させて防ぐとかその手の話に近い。
WindowsだとVNCとかによる機械的な昇格関連の操作はできなくなるのが基本だが、
*nixだとこの手の認証用にGUIのモードを切り替えるとかはかなり遅れてるでしょ。
鬼の首を取ったかのように言える類の話ではないんじゃないかなぁ……