web-dev-qa-db-ja.com

単一のUACバイナリはありますか?

Windows UAC機能を担当するSystem32フォルダにバイナリ(.exe)がありますか? (例:uac.exe)そのファイルが強制的に削除された場合はどうなりますか? Windowsが壊れるか起動に失敗しますか?

XY問題はありません。 UACが強制的にPCから削除された場合にどうなるかを知りたいのですが。

27
Kathy

UACは、複数のバイナリによって実装されるマルチコンポーネントアーキテクチャです

ユーザーアカウント制御(UAC)は、一緒にACアーキテクチャを形成するいくつかのコンポーネントを指します。それらのいくつかとそれらの実装を担当するバイナリを簡単に確認しますが、最初にMicrosoft Docsの記事からUACアーキテクチャの概要を示しますHow User Account Control Works

enter image description here

ローカルセキュリティ機関(LSA)/フィルタートークン

概念的には、UACの「最初の」コンポーネントは、 ローカルセキュリティ機関サブシステム によって実装されます。これは、ログオンプロセス中にユーザーの アクセストークン の作成を処理します。 Windows Vista以降、ログオンプロセスが変更され、管理者がUACを有効にしてログオンすると、LSAサブシステムがユーザー用に2つの個別のアクセストークンを生成するようになりました。

  1. 完全な管理者アクセス権を持つもの、および
  2. 標準ユーザーアクセスを備えた2番目の「フィルタートークン」

ここに示すように、このプロセスは標準ユーザーログオンのプロセスとは異なります。

enter image description here

LSAサブシステムサービスは、lsass.exeプロセスに存在します。

仮想化

Windows 7で追加されたFileおよび Registry Virtualization はUACのコンポーネントです shims UACに準拠していないが特定の保護領域にアクセスするために管理者権限のみを必要とする古いアプリケーションファイルシステムまたはレジストリの:

UACに準拠していない管理アプリケーションがProgram Filesなどの保護されたディレクトリに書き込もうとすると、UACは変更しようとしているリソースの独自の仮想化ビューをアプリケーションに提供します。仮想化されたコピーは、ユーザーのプロファイルで維持されます。

ソース

管理者権限を必要としない領域へのこれらのアクセス試行をリダイレクトすることにより、これらのアプリケーションは、システムでUACが有効になっていても機能し続けます。

この仮想化は カーネルで実装 です。

アプリケーション情報サービス

アプリケーション情報サービス(AIS)は、アプリケーションのマニフェストを読み取り、UAC同意プロンプトと連携して、アプリケーションが昇格された権限で実行できるかどうかを判断します(つまり、ログオン時に作成されるフィルター処理されていない管理レベルアクセストークンのコンテキストで開始します) 。この ブログ投稿 は、UACプロセスにおけるその役割の概要を示しています。

AISは、追加の管理特権で対話型アプリケーションの実行を促進します。このサービスが停止すると、ユーザーは必要な追加の管理者権限でアプリケーションを起動できなくなります。..シェルは、アプリケーションの起動時にこのサービスを確認します。 AISは、マニフェストと、「requestedExecutionLevel」の要件を持つ「trustInfo」xmlセクションを読み取るものです...

UAC同意プロンプトプロセスでのAISの役割を詳述した上記の引用に続く図を次に示します。

enter image description here

AISは DLL appinfo.dllで実装 であり、svchost.exeによって実行されます。

同意プロンプト

@BenNの answer は、有名な(in)UAC同意プロンプトの重要な役割を説明しています。これはconsent.exeで実装され、管理者権限を必要とするアプリケーションの起動を許可するために、ユーザーの同意または管理ユーザーの資格情報を取得する責任があります。

安全なデスクトップ

セキュアデスクトップは、UAC同意プロンプトがデフォルトで表示される場所です。 MicrosoftのUACBlog は、ユーザーデスクトップと比較してこのデスクトップのユニークな点を示しています。

ログオンUIはセキュアデスクトップ上で実行されるため、Windowsにログオンするときに最も一般的に[セキュアデスクトップ]と対話します。 Secure DesktopのUser Desktopとの主な違いは、SYSTEMとして実行される信頼できるプロセスのみがここで実行できることです(つまり、ユーザーの特権レベルとして実行されるものは何もありません)。UserDesktopからSecure Desktopに到達するパスも信頼する必要があります。チェーン全体。

昇格されたアクセス許可でアプリケーションを実行するためにユーザーの同意を求めるときにそれを使用する背後にあるアイデアは、マルウェアがalreadyに管理者権限がない限りSecure Desktopを模倣できないことです。 。


結論:UACは単なるバイナリではありません。それは織り交ぜられたサブシステムのファブリックです。

UACアーキテクチャには、ここで取り上げていない他の側面もありますが、これは次の事実について十分な証拠を提供するはずです。

  1. UACは単一のバイナリに実装されていません。
  2. 有効にした場合、管理タスクの実行に不可欠な部分です。

Windows Vistaの紹介 オペレーティングシステムの重要な部分に深く統合されているため、UACに関与するすべてのコードを他のこと(ログオンする能力など)を壊すことなく実行不可能に削除します。

UACを「強制的に削除」した場合、Windowsが壊れると言うのは安全だと思います。

56

Twistyがうまく説明しているように/ UACの実装に役立つ多数のがあります。 UACの最もよく知られている部分は、昇格/同意ダイアログです。

これは、consent.exe、「管理アプリケーションの同意UI」で提供されています。私はそれをVMにリネームして何が起こるのか見てみました。予想通り、「管理者として実行」を使用しても昇格のプロンプトは表示されません - 代わりに、昇格しようとしていることを非難するファイルが見つからないというエラーが表示されます。

not found

管理者としてログインしていても、昇格が必要な(シールドアイコンが付いている)コントロールパネルUI要素を使用しようとすると、同様のエラーで失敗します。スタートメニューから管理用のものを起動しようとすると、多少異なるエラーが発生します。

no app associated

すべてを壊した名前の変更を行うときに設定されたACLによっては、ファイル操作で昇格が必要になる可能性があるため(通常、同意ダイアログが表示されない場合でも)、OS内からこれを修正することは不可能です。ただし、普通のユーザーのような活動はそれほど悪くないようです。

25
Ben N