Integrity Levels
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Windows Vista以降のバージョンでは、すべての保護されたアイテムに整合性レベルタグが付いています。この設定では、特定のフォルダーやファイルを除いて、ファイルやレジストリキーに「中」整合性レベルが主に割り当てられます。デフォルトの動作は、標準ユーザーによって開始されたプロセスが中整合性レベルを持つことであり、サービスは通常、システム整合性レベルで動作します。高整合性ラベルはルートディレクトリを保護します。
重要なルールは、オブジェクトのレベルよりも低い整合性レベルを持つプロセスによってオブジェクトが変更されることはできないということです。整合性レベルは次のとおりです:
信頼されていない: このレベルは匿名ログインを持つプロセス用です。 %%%例: Chrome%%%
低: 主にインターネットとの相互作用のため、特にInternet Explorerの保護モードで、関連するファイルやプロセス、一時インターネットフォルダーのような特定のフォルダーに影響を与えます。低整合性プロセスは、レジストリ書き込みアクセスなし、ユーザープロファイル書き込みアクセスの制限など、重大な制約に直面します。
中: ほとんどの活動のデフォルトレベルで、標準ユーザーおよび特定の整合性レベルを持たないオブジェクトに割り当てられます。管理者グループのメンバーもデフォルトでこのレベルで動作します。
高: 管理者専用で、低整合性レベルのオブジェクトを変更できるようにし、高整合性レベルのオブジェクトも含まれます。
システム: Windowsカーネルとコアサービスの最高の操作レベルで、管理者でさえもアクセスできず、重要なシステム機能を保護します。
インストーラー: 他のすべてのレベルの上に位置するユニークなレベルで、このレベルのオブジェクトは他のオブジェクトをアンインストールできます。
Process Explorerを使用してプロセスの整合性レベルを取得できます。Sysinternalsからプロセスのプロパティにアクセスし、"セキュリティ"タブを表示します:
whoami /groups
を使用して現在の整合性レベルを取得することもできます。
ファイルシステム内のオブジェクトは最小整合性レベル要件を必要とする場合があり、プロセスがこの整合性を持っていない場合、相互作用できません。 例えば、通常のユーザーコンソールから通常のファイルを作成し、権限を確認しましょう:
今、ファイルに最低限の整合性レベルをHighに設定しましょう。これは管理者として実行されているコンソールから行う必要があります。通常のコンソールは中程度の整合性レベルで実行されており、オブジェクトに高い整合性レベルを割り当てることは許可されません。
これは興味深いところです。ユーザー DESKTOP-IDJHTKP\user
がファイルに対して 完全な権限 を持っていることがわかります(実際、このユーザーがファイルを作成したのです)。しかし、実装された最小の整合性レベルのため、彼は高い整合性レベルで実行していない限り、ファイルを変更することができません(彼はそれを読むことができることに注意してください):
したがって、ファイルに最低限の整合性レベルがある場合、それを変更するには、その整合性レベル以上で実行している必要があります。
cmd.exe
のコピーをC:\Windows\System32\cmd-low.exe
に作成し、管理者コンソールから低い整合性レベルを設定しました:
今、cmd-low.exe
を実行すると、中程度の整合性レベルではなく低整合性レベルで実行されます:
好奇心のある人のために、バイナリに高整合性レベルを割り当てると(icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high
)、自動的に高整合性レベルで実行されるわけではありません(中程度の整合性レベルから呼び出すと、デフォルトで中程度の整合性レベルで実行されます)。
すべてのファイルやフォルダーには最小整合性レベルがあるわけではありませんが、すべてのプロセスは整合性レベルの下で実行されています。ファイルシステムで起こったことと同様に、プロセスが別のプロセス内に書き込むには、少なくとも同じ整合性レベルを持っている必要があります。これは、低整合性レベルのプロセスが中程度の整合性レベルのプロセスに対してフルアクセスのハンドルを開くことができないことを意味します。
このセクションと前のセクションで述べた制限により、セキュリティの観点からは、常に可能な限り低い整合性レベルでプロセスを実行することが推奨されます。