[基礎解説] Windowsセキュリティ・メカニズム入門(後編) 3.トークンの内容を書き換えてみる畑中 哲2006/06/16 |
|
|
トークンの書き換えの例
トークンが重要であることを示すサンプルとして、TokenTest.exeというコマンドを作成・用意した。コマンド・プロンプト(cmd.exeプロセス)を起動し、そのトークンのローカルAdministratorsグループを[拒否のみに使用するグループ]属性に変えたり、トークンから特権を取り除いたりすることができる。これはWindows 2000以降のOSで実行する必要がある。
Column:TokenTest.exeツール これは、新しい子プロセスを起動し、そのプロセスのトークンのローカルAdministratorsグループを[拒否のみに使用するグループ]属性に変えたり、トークンから特権を取り除いたりするためのツールである。以下のリンクを右クリックしてローカル・コンピュータ上に保存、解凍し、コマンド・プロンプト上から起動して実験していただきたい。詳しい使い方については、.ZIPファイル内のドキュメントを参照のこと。このツールを実行すると、次のようなダイアログが表示される。
このツールを起動し、[はい]か[いいえ]をクリックすると、トークンの内容が変更された新しいコマンド・プロンプトのウィンドウが起動する。その中でWhoAmIコマンドを実行すると、特権がどのように変更されたかが分かる。 |
このツールで起動されたコマンド・プロンプト内で「管理者権限」が必要な操作を実行してみたり、さらに子プロセスを起動して「管理者権限」が必要な操作を実行してみるとよい。以下の例では、Administratorsグループに属するユーザーでシステムにログオン後、このツールを使ってトークンを変更し、WhoAmIコマンドでその結果や効果を確かめている。
ローカルAdministratorsグループを取り除いた例
以下は、コマンド・プロンプト(cmd.exeプロセス)のトークンから、ローカルAdministratorsグループを取り除いた場合の例である。先のツールを使ってコマンド・プロンプトを起動し、Administratorsグループをトークンから取り除いている。
トークンのBUILTIN\Administratorsグループの属性が[拒否のみに使用するグループ]になっていることに注意していただきたい(画面中の)。
これにより、デスクトップにログオンしているこのserver\administratorというユーザーは、「管理者権限」を持っている(Domain Adminsグループに属しているので、「ドメインの管理者権限」さえ持っている)にもかかわらず、このコマンド・プロンプト、およびそこから起動した子プロセスでは、デフォルトのACLを持ったオブジェクトへの強力なアクセスを行うことができない。
例えば[コントロール・パネル]の[システム]アプレット(コマンド・プロンプトからsysdm.cplで起動できる。画面中の)では、「このコンピュータの ID を変更できるのは管理者のみです。」というメッセージが表示され、操作を拒否されていることが分かる。
管理者権限がない場合のシステムのプロパティの例 | ||||||
管理者アカウントでログオンしているにもかかわらず、トークンからローカルAdministratorsグループを削除すると、このように操作を行うことができなくなる。 | ||||||
|
このほか、コマンド・プロンプト上でWindowsのシステム・ディレクトリにファイルを作成しようとしても(上記のechoコマンドなど)、やはり拒否される(画面中の)。
一方、さまざまな特権はトークンに残っているので、「管理者権限」が必要な特権的操作は行うことができる。例えば、コンピュータの時刻を変更することは可能である。
ほぼすべての特権を取り除いた例
以下は、コマンド・プロンプト(cmd.exe プロセス)のトークンから、ほぼすべての特権を取り除いた場合の例である。先のツールを使ってコマンド・プロンプトを起動し、トークンからほとんどの特権を取り除いている
トークンの特権がほとんどなくなっていることに注意していただきたい(画面中の)。
これによって、デスクトップにログオンしているこのserver\administratorというユーザーは「管理者権限」を持っている(Domain Adminsグループに属しているので、「ドメインの管理者権限」さえ持っている)にもかかわらず、このコマンド・プロンプト、およびそこから起動した子プロセスでは、特権的操作を行うことができない。
例えば[日付と時刻]コントロール・パネル(コマンド・プロンプトからtimedate.cplで起動する。画面中の)では、「システムの時刻を変更する特権がありません」というメッセージで操作を拒否される。
システムの時刻を変更する特権を削除した場合の例 | |||
管理者アカウントでログオンしており、トークンにローカルAdministratorsグループが有効なグループとして含まれているにもかかわらず、トークンからほぼすべての特権を削除すると、システムの時刻を変更することもできなくなる。 | |||
|
また、コンピュータをシャットダウンしようとしても拒否される(先の画面中の)。
特権を必要としない操作は、通常通り、プロセスのトークンとオブジェクトのACLの比較で許可/拒否が決まる。トークンには[有効なグループ]属性を持つBUILTIN\Administratorsグループが記載されているので、例えば、コマンド・プロンプト上でWindowsのシステム・ディレクトリにファイルを作成するような操作(先の画面中の)は実行することができる。
お互いのプロセスは独立しているので、このようなトークンの違うプロセスでも、1つのデスクトップ内で共存することができる。デスクトップに誰がログオンしているかではなく、このように1つのデスクトップ内でも独立した各プロセスのトークンによって、アクセスは判定される。
異なるトークンを持つ2つのプロセスの例 |
同一のエクスプローラ・プロセス(同一のプロセスデスクトップ)内でも、それぞれのプロセスごとに異なるトークンを持つことができる。トークンはプロセスごとに独立しているので、このように、異なる属性を持つプロセスが共存することができる。 |
同一デスクトップ内で、上のコマンド・プロンプトと下のコマンド・プロンプトのトークンが異なることに注目していただきたい。
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をインストールしてみる
|
|