【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
   
[基礎解説]
Windowsセキュリティ・メカニズム入門(後編)

3.トークンの内容を書き換えてみる

畑中 哲
2006/06/16

トークンの書き換えの例

 トークンが重要であることを示すサンプルとして、TokenTest.exeというコマンドを作成・用意した。コマンド・プロンプト(cmd.exeプロセス)を起動し、そのトークンのローカルAdministratorsグループを[拒否のみに使用するグループ]属性に変えたり、トークンから特権を取り除いたりすることができる。これはWindows 2000以降のOSで実行する必要がある。

Column:TokenTest.exeツール

 これは、新しい子プロセスを起動し、そのプロセスのトークンのローカルAdministratorsグループを[拒否のみに使用するグループ]属性に変えたり、トークンから特権を取り除いたりするためのツールである。以下のリンクを右クリックしてローカル・コンピュータ上に保存、解凍し、コマンド・プロンプト上から起動して実験していただきたい。詳しい使い方については、.ZIPファイル内のドキュメントを参照のこと。

  このツールを実行すると、次のようなダイアログが表示される。

TokenTest.exeツールの実行画面
このツールを起動すると、このようなダイアログが表示される。[はい]か[いいえ]をクリックすることにより、プロセスのトークンの属性を変更することができる。
  これをクリックすると、ローカルAdministratorsグループの属性を[拒否のみに利用するグループ]に変更する
  これをクリックすると、トークンからほとんどの特権を取り除く。
  これをクリックすると、終了する。

 このツールを起動し、[はい]か[いいえ]をクリックすると、トークンの内容が変更された新しいコマンド・プロンプトのウィンドウが起動する。その中で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
 
目次ページへ  「基礎解説」

ホワイトペーパーTechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?