SPN通信 2011年4月16日Windowsオブジェクトのアクセス権を表示するAccessChkみなさん、こんにちは。 SPNの塩月です。 前回のSPN通信ではWindowsの各種オブジェクトにおける「整合性レベル」でのアクセス制御の仕組みについてお話しましたが、今回は整合性レベルを含むオブジェクトのアクセス権の状態を表示するツール「AccessChk」をご紹介したいと思います。 AccessChkはマイクロソフトのWindows Sysinternalsツールの一つです。「Sysinternals」というのは、元々、Bryce Cogswell氏とMark Russinovich氏が運営していたサイトの名称(開設当初はNTInternalsという名前でした)で、彼らはそこで数多くの非常に優れたWindows OS向けユーティリティツールを公開していました。2006年にそれらすべては彼らの会社(Winternals Software)ごとマイクロソフトにより買収され、現在、Sysinternalsの各種ツールはマイクロソフトのWebサイトにて無償で公開されています。 AccessChk http://technet.microsoft.com/ja-jp/sysinternals/bb664922VistaやWindows 7にはアクセス権を表示/編集する「icacls」コマンドが標準で用意されていますが、このコマンドが対象としているオブジェクトはファイルやディレクトリのみです。一方AccessChkは表示する機能しかないものの、ファイル、ディレクトリ、レジストリキー、プロセス、サービス、グローバルオブジェクトといった各種のオブジェクトに対応しているため、AccessChkによりさまざまなオブジェクトのアクセス許可や整合性レベルを確認することが可能になります。 AccessChkには多くのオプションがあり、オプションの組み合わせなどがやや複雑ですので、少し整理して解説しましょう。AccessChkではまず表示させたいオブジェクトの種類を以下のオプションで区別します。 なし → ファイルやディレクトリを指定(aaa.txt、c:\windows、等) -k → レジストリキーを指定(hklm\software、等) -p → プロセスを指定(プロセスID/プロセス名、または「*」) -c → サービスを指定(サービス名、または「*」) -o → オブジェクトマネージャー名前空間のオブジェクト名を指定オブジェクトにディレクトリやレジストリキーを指定した場合は、通常はその直下のオブジェクトに関するアクセス権の情報が列挙されます。当該ディレクトリあるいはレジストリキー自体の情報を表示したい時は「-d」を追加する必要があります。 accesschk -d c:\windows → windowsディレクトリ自体の情報を表示 accesschk -kd hklm\software → hklm\softwareキー自体の情報を表示また下位のディレクトリ/ファイルやレジストリキーを再帰的に表示させたい場合は「-s」オプションを指定します。 accesschk -s c:\windows → windowsディレクトリ以下を再帰的に表示 accesschk -ks hklm\software → hklm\softwareキー以下を再帰的に表示さてAccessChkはデフォルトでは「R(Read)」や「W(Write)」という記号で簡略化されたアクセス許可の情報のみを表示します。以下は「c:\config.sys」というファイルの情報を表示した例です。 accesschk c:\config.sys c:\config.sys RW BUILTIN\Administrators RW NT AUTHORITY\SYSTEM R BUILTIN\Usersより詳細な情報を表示したい場合は「-v」を追加しますが、このオプションを指定することにより、当該オブジェクトの整合性レベルが以下のように表示されます。 accesschk -v c:\config.sys C:\config.sys High Mandatory Level [No-Write-Up] RW BUILTIN\Administrators FILE_ALL_ACCESS RW NT AUTHORITY\SYSTEM FILE_ALL_ACCESS R BUILTIN\Users FILE_EXECUTE FILE_READ_ATTRIBUTES FILE_READ_DATA FILE_READ_EA SYNCHRONIZE READ_CONTROLここで「High Mandatory Level(高レベル)」とあるのがこのファイルの整合性レベルです。アクセスポリシーは「No-Write-Up(下位からの書き込みを拒否)」が設定されています。 プロセスについては前述の通り「-p」オプションを用いますので、例えば実行中の「notepad.exe(メモ帳)」のアクセス権を確認する場合は次のようなコマンドラインになります。 accesschk -pv notepad.exe [1576] notepad.exe Medium Mandatory Level [No-Write-Up, No-Read-Up] RW win7\admin PROCESS_ALL_ACCESS RW NT AUTHORITY\SYSTEM PROCESS_ALL_ACCESSオブジェクトの整合性レベルは、すべてのオブジェクトに明示的に設定されているわけではありません。ファイルやディレクトリ、レジストリ、サービスなどは多くの場合、整合性レベルが設定されておらず、デフォルトのレベルとポリシーが適用されます。AccessChkの「-v」オプションでは、このようなデフォルトの整合性レベルについても「Default」の表示と共に出力してくれます。以下は「Browser」サービスのアクセス権を表示した例ですが、ここではデフォルトの整合性レベルとアクセスポリシーが表示されていることがわかります。 accesschk -cv Browser Browser Medium Mandatory Level (Default) [No-Write-Up] RW NT AUTHORITY\SYSTEM SERVICE_ALL_ACCESS RW BUILTIN\Administrators SERVICE_ALL_ACCESS R NT AUTHORITY\INTERACTIVE SERVICE_QUERY_STATUS SERVICE_QUERY_CONFIG .....AccessChkには他にも、完全なアクセス制御リストを表示する「-l(エル)」オプション、プロセストークン情報を表示する「-f」オプション、あるユーザが読み取り権限を持つ、あるいは書き込み権限を持つオブジェクトのみを表示する「-r」「-w」オプションなど多彩な機能がありますので、いろいろと試しながら使いこなしていただければと思います。 それではみなさん、またお会いしましょう。
合同会社セキュリティ・プロフェッショナルズ・ネットワーク
|