web-dev-qa-db-ja.com

特定のアプリケーションが管理者として実行されないようにする

バックグラウンド

ほとんどのインストールツールキットには、インストール後に外部プログラムを自動的またはその他の方法で起動する機能があります。これは、「Readmeの表示」や「プログラムの開始」などのオプションを介してインストーラーに表示されることがよくあります。

問題

問題は、これらのインストーラーの多くが適切にコーディングされておらず、権限を適切に削除しないことです。たとえば、アプリケーションを自動的に起動したり、ブラウザでアプリケーションのホームページを開いたりすると、多くの場合、インストーラの管理者権限または「高」UAC整合性レベルでアプリケーションまたはブラウザが起動されます!

これは、インストールされたアプリケーション、または現在昇格されたアクセス許可で実行されているWebページ(および場合によってはブラウザーのアドオン)を開くことにより、セキュリティ違反を引き起こす可能性があります。

(これが、ソフトウェアのインストール時に自動起動オプションを選択しないことを強くお勧めする理由です。)

質問

防止特定のアプリケーション(Webブラウザなど)をこれまで管理者権限で起動する方法はありますか?つまり、自動プロセス名に基づくドロップ特権?

13
user73728

私は原則として「ルーン」の答えに同意します。

サブプロセスインスタンスが管理者として実行されている場合、それらを自動制限することが必要なようです。

いくつかのアプローチがあります。ただし、オーバーヘッドが煩わしいため、これらは大幅なものであり、臆病な管理者向けではありません。しかし、彼らはその仕事をします。

さらに要求されない限り、アプローチ1のみを表示します

制限するアプリケーションごとに:

right click the executable and go to **PROPERTIES**
go to the **SECURITY** tab
click **ADVANCED** at the bottom
click **ADD** at the bottom
type **ADMINISTRATORS** for the name. if you have a domain then adjust appropriately
press **OK** to get the custom settings for the administrator's group
check the **DENY** checkbox next to "TRAVERSE FOLDER/ EXECUTE FILE" permission (2nd on the list)
hit OK and so-on until you've closed the properties entry for that file.

現在、administratorsグループのメンバーはそのファイルを実行できません。戻ってアクセス許可を変更し、チェックを外して実行できるようにすることはできますが、意図的に行う必要があります。

また、インストーラー中にこれが発生することを心配しているので、[〜#〜] system [〜#〜] "user"に対しても同じ手順を実行する必要があります。これも(効果的に) )このアカウントは一部のインストール中に使用できるため、管理者としても実行されます(Windowsの「ADMIN」アカウントの認証情報を使用してSYSTEMの認証情報トークンを取得できますが、これはこの質問の対象を超えています)。

これはWindows 7でこれを行ういくつかの写真です:

enter image description hereenter image description hereenter image description hereenter image description hereenter image description here

2
Nick
RUNAS /trustlevel:<TrustLevel> program

/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.
/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.

This requires an elevated command Prompt.

説明/ステップバイステップ

  1. スタートメニューを開き、検索バーにcmdと入力します
  2. コマンドプロンプトを右クリックし、[管理者として実行]を選択します。

    RUNAS /showtrustlevels
    
  3. アプリケーションの実行に適した信頼レベルを選択します。ここで、Xは使用する信頼レベルであり、次のように入力します。

    RUNAS /trustlevel:X "Application target"
    
1
David McGowan

ここで見逃されていることの1つは、Internet ExplorerとWindows Explorerのアクセス許可を昇格できないことです(レジストリハックを行わない限り)。 Firefox、Chromeなどについてはわかりませんが、Internet Explorerを管理者として実行しようとすると、資格情報は受け入れられますが、実際にはアクセス許可が昇格されることはありません。これは、WindowsVista以降のセキュリティ機能です。それに加えて、UACが有効にならない唯一の方法は(オフにしない限り)、組み込みの管理者アカウントにログインしている場合です。何かが昇格されたアクセス許可でインストールされたからといって、インストーラーがそのプログラムに昇格されたアクセス許可を与えることができるという意味ではありません。アクセス許可は、プログラムが実行されたアカウントによって決定されます。プログラムが知らないうちに昇格されたアクセス許可で実行できる唯一の方法は、たとえば、プログラムがレジストリ設定からWindowsで起動するかどうかなどです。その場合は、レジストリを編集することで修正できます。

1
MegaloDon

Dropmyrightsまたはpsexecを使用して、より低い権限レベルを達成できるはずです。

トリッキーな部分は、インストーラーがアプリケーションの新しいインスタンスを起動したときに自動的に行われるようにすることです。

そのためには、少なくとも、関連するすべてのファイルタイプとURLのファイルの関連付けを微調整する必要があると思います。たとえば、既存のコマンドの前にpsexecコマンドを追加します。

これは、実行する実行可能ファイルを指定するのではなく、インストーラーが関連するアプリケーションでファイル/ URLを開こうとする限り機能します。実行可能パスが明示的に指定されている場合、標準の実行可能ファイルを、必要なコマンドを実行するshim実行可能ファイルに置き換える必要があると思います。

1
sahmeepee

私はさまざまな解決策を検討しましたが、アプリケーションマニフェストまたはappcompatフラグが機能しないことはすでにわかります(はい、それは本当の答えではありませんが、これを共有したいと思います;))

あなたが探しているものに近いかもしれないのは、いわゆる整合性レベルであり、ファイルシステム(ACL)内で設定でき、プロセスが保持しているトークン

this article exeを常に「低整合性レベル」で実行する方法を説明します

別のアプローチは、ウイルススキャナーやアプリケーションファイアウォールが使用するリアルタイムプロセスモニターのようなサードパーティのツールですが、そのように構成できるものはありません。

0
weberik

AppLockerを使用できます。

これはWindows 7 Enterprise、Ultimate、Server 2K8以降で利用できると思います。 Windows 8については不明ですが、同じであると想定します(EnterpriseとUltimate)。

グループポリシーに移動して、AppLockerを設定できます。

コンピューターの構成-> Windows設定->セキュリティ設定->アプリケーション制御ポリシー-> AppLocker->実行可能ルール。

右クリックして「新しいルールを作成...」

ここでは、特定の実行可能ファイルが選択したユーザーまたはグループによって実行されないようにブロックできます。あなたの例では、AdministratorsグループによるInternetExplorerの実行を拒否することを選択できます。

0
zako42