Windows cmd.exeが昇格された特権で実行されている場合、プロンプトから実行したことは昇格された特権で実行されますか?


11

cmd.exeウィンドウのタイトルバーに「管理者」と表示され、昇格された特権で起動されたことが示された場合、このコマンドウィンドウから実行したものも昇格された特権で実行されますか?

具体的には、次のようなものを実行した場合:

msiexec SomeProgram.msi

昇格された特権で実行されていたcmd.exeから実行されたため、インストーラは昇格された特権で実行されていますか?

より具体的には、UIを表示し、すぐにcmd.exeウィンドウにプロンプ​​トを返すアプリケーション(msiexec上記の呼び出しのように)が昇格された特権で実行されているのではないかと考えています。

回答:


16

はい、昇格した権限で実行されます。

簡単なテスト:

1つの昇格されたコマンドプロンプトと1つの昇格されていないコマンドプロンプトを開くと、これを非常に簡単にテストできます。notepad.exe両方でコマンドを実行し、空のテキストファイルをに保存してみてくださいC:\Windows。1つは保存し、1つは許可エラーをスローします。

完全なテスト:

それがあなたのためにそれを確認するのに十分でない場合(それは本当に私を満足させませんでした)、あなたはSysInternalsからAccessChkを使うことができます。これを管理者特権のコマンドプロンプトから実行する必要があります。

実行中の2つのメモ帳プロセスをチェックアウトすることから始めましょう。

メモ帳:(accesschk.exe -v -p notepad

[11140] notepad.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[11004] notepad.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS

1つはドメインユーザー名で実行され、もう1つはAdministratorsビルトイングループで実行されています。また、高い必須レベルもあります-fフラグを使用して実行して、特権とトークンの内訳を確認することもできます。

MSIExecおよびMSIファイル

走ると物事が少し複雑になると思ったmsiexec。テストに便利なGoogle Chromeスタンドアロンインストーラーがあります。

msiexec.exeは昇格したプロンプトからChromeインストーラーを起動します:

D:\Users\tannerf>accesschk.exe -p msiexec.exe

[10540] msiexec.exe
  RW BUILTIN\Administrators
  RW NT AUTHORITY\SYSTEM

MSIによって生成されたchrome_installer.exe:

D:\Users\tannerf>accesschk.exe -p chrome_installer.exe

[5552] chrome_installer.exe
     NT AUTHORITY\SYSTEM
     OWNER RIGHTS
  RW NT SERVICE\msiserver

もうそんなに切ったり乾かしたりしません!chrome_installer.exeプロセスがMSIServerサービスを介して実行されたように見えます。


これにより、他のインストーラーがどのような動作をするのか疑問に思うので、手元にあるEvernote.msiを実行しました。

Evernoteインストーラーを起動するmsiexec.exeの昇格:

[6916] msiexec.exe
  High Mandatory Level [No-Write-Up, No-Read-Up]
  RW BUILTIN\Administrators
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4652] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

面白い; 今回はシステムレベルで実行されるmsiexec.exeがあります。プロセスモニターを使用して、ポップアップする実際のインストールウィンドウがシステムレベルのmsiexecプロセスからのものであることを確認しました。高い必須レベルを強制終了すると、システムレベルのプロセスも強制終了します。

Evernoteインストーラーを起動する非昇格msiexec.exe:

[7472] msiexec.exe
  Medium Mandatory Level [No-Write-Up, No-Read-Up]
  RW DOMAIN\Tannerf
        PROCESS_ALL_ACCESS
  RW NT AUTHORITY\SYSTEM
        PROCESS_ALL_ACCESS
[4404] msiexec.exe
  System Mandatory Level [No-Write-Up, No-Read-Up]
  R  BUILTIN\Administrators
        PROCESS_QUERY_INFORMATION
        PROCESS_QUERY_LIMITED_INFORMATION

Evernoteはどちらの方法でもシステムレベルのアクセスを取得するようです。インストーラーをダブルクリックしても同じ結果になります。


結論:

特に指定がない限り、プロセスがアクセス許可を継承することはかなり実証されていると思います。msiexec SomeProgram.msiすべてのプロセスプロセスで高い必須レベルで実行されることを保証するものではありません。システムレベルまたはMSIServerの下で実行できます。あなたの走行距離は異なる場合があり、これらのルールが「壊れている」と思われる多くの事例を見ても驚かないでしょう。


2
経験的なテストとは別に、Windowsプロセスは親から権限を継承することになっています。
ボブ

テストの大きなポイント。昇格されたアクセス許可で起動されたcmd.exeから試してみましたがC:\Windows、昇格されたcmd.exeからメモ帳を起動したにもかかわらず、ファイルを保存しようとして拒否されました。「親から継承する」というルールを破る方法はありますか?
イアンC.

@IanC。より少ない権限で子プロセスを実行することは可能です。私は以前のコメントを「デフォルトで継承することを想定して」と述べるべきでした。その情報を含めるように回答を修正しました。ただし、メモ帳に管理権限が継承されている必要があります。
ボブ

@IanC。奇数、それは私のために働いた。accesschkを試してみましたか?違いが何であるかわからない。
タナーフォークナー

11

デフォルトでは、Windowsプロセスは親からセキュリティコンテキストを継承します。

プロセスの既定のセキュリティ記述子のACLは、作成者のプライマリトークンまたは偽装トークンから取得されます。

プロセスのセキュリティとアクセス権に関するMSDN

ただし、より少ない権限でプロセスを生成することは可能です。

プロセスは、それを生成したプロセスの整合性レベルを継承しますが、整合性レベルはプロセスの作成時にカスタマイズできます。ユーザーインターフェイス権限分離テクノロジでウィンドウメッセージの境界を定義するために、Mandatory Integrity Controlは、Windows Explorer、Internet Explorer、Google Chrome、Adobe Readerなどのアプリケーションで使用され、システム内の脆弱なオブジェクトからドキュメントを分離します。

この他のMSDNページに関連する必須の整合性制御に関するウィキペディア(こちら参照)別のプレゼンテーションでは、プロセスの継承についても説明しています。

ただし、@ Tannerのテストと回答が示すように、cmd.exeは可能な限り最高レベルの特権継承で子プロセスを起動すると考えています。


2

実行されたコマンドの特権を解除するには、次の2つの方法があります。

  • runas /trustlevel:0x20000 "msiexec SomeProgram.msi"(実行runas /showtrustlevelsそれは学ぶために0x20000実際には管理者として実行したときにそれらを付与することなく、これが渡されます。 - - /インストール上昇権限を「必要」というプログラムを実行するための本にも作品のデフォルトのユーザーtrustlevelあるタナーのメモ帳試験ごとに)このSUの答え
  • psexec -l -d msiexec SomeProgram.msiあたり、このSUの答えは(おそらくいくつかの「」必要とされているだけでなく、私は以来、これをテストしていないrunas私にとっては作品の罰金のに十分な)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.