[基礎解説] Windowsセキュリティ・メカニズム入門(後編) 2.トークンの内容を確認する畑中 哲2006/06/16 |
|
|
トークンの情報を表示するWhoAmIコマンド
トークンの情報を表示するためのツールとして、WhoAmIというコマンド(ファイル名はwhoami.exe)が利用できる。
- Windows Server 2003では、システムにデフォルトでインストールされている。
- Windows XPではサポート・ツールに含まれている。
http://www.microsoft.com/downloads/details.aspx?FamilyId=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=ja - Windows 2000ではリソース・キットに含まれている。
http://www.microsoft.com/downloads/details.aspx?familyid=3E89879D-6C0B-4F92-96C4-1016C187D429 - Windows NT 4.0ではリソース・キットに含まれている。
残念ながら、Windows Server 2003のもの以外は、日本語での表示や、グループの属性(後述)の表示ができないといった欠点がある。特にグループの属性を表示できないのは不都合なので、Windows Server 2003のWhoAmIが利用できない環境では、代わりにWindows NT 4.0のリソースキットに含まれるProcess Explode(pview.exe)やSysinternalsのProcess Explorerツールなどを代用として使うとよい。
WhoAmIは自分自身のプロセスのトークンを表示するツールである。WhoAmIは、しばしば現在デスクトップにログオン中のユーザーを知るために用いられる。だがそれは、ログオンして最初のプロセスに与えられたトークンが、
|
とコピーされて、whoami.exeプロセスのトークンに、デスクトップにログオンしたユーザーの情報がたまたま受け継がれているからにすぎない。現在デスクトップにログオンしているユーザーとは違うユーザーを表示するWhoAmIが、同一デスクトップ内で起動することもあり得る。通常は上記のようにデスクトップにログオンしたユーザーの情報が継承されているので、現在デスクトップにログオンしているユーザーを知るツールとして使用して構わないが、確実なところを知りたければWhoAmI以外の方法で調べる必要がある。
WhoAmIコマンドでトークンの情報を見る
では、WhoAmIを実行してみよう。
WhoAmIにはいくつかオプションがあり、オプションを付けると必要な情報を個別に見ることができる。「whoami.exe /all」とすると利用可能なすべての情報を見ることができる。
オプションを付けずに実行すると、トークンのユーザーだけが出力される。以下はすべてWindows Server 2003で実行した場合の例である。
■トークンのユーザー
プロセスの持つトークンのユーザー情報を表示させるには、「whoami /user」を実行する。
ユーザー名の表示 | ||||||
whoami /userコマンドを実行するとユーザー名が表示される。 | ||||||
|
このユーザー情報により、このトークンを持つプロセスが「誰」であるかが分かる。誰であるかを特定する情報なので、必ず一人のユーザーしか表示されない。この出力例では、whoami.exeプロセスは「server」ドメインの「administrator」というユーザーとして動作していることになる。SIDという列は今回の解説では無視して構わない。
■トークンのグループ
トークンに記述されているグループの情報を表示させるには、「whoami /groups」を実行する。
このグループ情報により、単に1人のユーザー情報だけでなく、さまざまなグループを加味して、トークンのアクセス・チェックが行われる。この例では、Everyone、BUILTIN\Users、BUILTIN\Administratorsなど、全部で9つのグループが含まれていることが分かる(画面中の)。
どのグループがトークンに記載されるかは、基本的には、トークンのユーザーがどのグループに所属しているかによって決まる。だがこれまで述べたように、トークンは書き換えることができるので、あるユーザーがあるグループに所属しているからといって、そのユーザーとして起動したプロセスのトークンに、所属しているグループが必ずすべて記載されているとは限らない。
トークン内のグループ情報には[属性]が付いている(画面中の)。通常は[有効なグループ]という属性が付いている(画面中の)。このグループは、ACLの許可/拒否エントリの両方のチェックに使われる。
[有効なグループ]ではなく、[拒否のみに使用するグループ]属性が付いていることもある。そのグループは、ACLの許可エントリのチェックには使われず、拒否エントリのチェックにのみ使われる。ACLの許可エントリと拒否エントリとは、例えばファイルのACLの場合、下図のような画面で設定するエントリのことである。
ACLの[許可]と[拒否]エントリ | |||||||||
ACLには、あるユーザーやグループに対する「許可」を設定するエントリと、「拒否」を設定するエントリの2種類が含まれる。 | |||||||||
|
「管理者権限でログオン」してプロセスを起動すると、デフォルトではプロセスのトークンに[有効なグループ]属性を持つBUILTIN\Administratorsグループが記載される(先の「グループ情報の表示」画面の)。これが、さまざまなオブジェクトに対して強力なアクセス権が認められる源である。たとえユーザーが「管理者権限でログオン」していたとしても、BUILTIN\Administratorsグループが[有効なグループ]としてトークンに記載されていなければ、プロセスはオブジェクトにアクセスすることはできない。
■トークンの特権
トークンに記述されている特権情報を表示させるには、「whoami /priv」を実行する。
特権情報の表示 | ||||||||||||
whoami /privコマンドを実行すると、トークンに記載されている特権の情報が表示される。 | ||||||||||||
|
この特権リストが、トークンに与えられた特権の一覧である。[状態]に[有効]と[無効]があるが、[無効]なものも使用可能な特権としてトークンに与えられている。ただし正確にいうと、特権はただトークンに与えられただけでは無効となっていて、そのままではプロセスは特権的操作を行えない。各プロセスは必要に応じてトークン内の特権を有効にして特権的操作を行い、不要になったら無効にする。もちろん、そもそもトークンに記載されていない特権を有効にすることはできない。
INDEX | ||
[基礎解説] | ||
Windowsセキュリティ・メカニズム入門(前編) | ||
1.セキュアなOSに必要なこと | ||
2.プロセスとトークンとACL | ||
3.トークンと特権的操作 | ||
4.トークンの作成と書き換え | ||
Windowsセキュリティ・メカニズム入門(後編) | ||
1.管理者権限でログオンするとは? | ||
2.トークンの内容を確認する | ||
3.トークンの内容を書き換えてみる | ||
4.別のユーザーとして実行する機能とWindows Vista | ||
「基礎解説」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|