e知識「e-chishiki.com」では、インドでの著名なIT著者、IT教育者、eセキュリティーの大家により作成された様々な種類のプログラミング言語に関する技術的なコンテンツを知識情報データーベースとして提供します。
週刊e-セキュリティシーリズ(Web アプリケーションセキュリティ)
ルートキット – ロード・オブ・ザ・リング?
Vijay Mukhi
ルートキット – ロード・オブ・ザ・リング?
Intel チップでプログラムを実行すると、そのプログラムの実行モード (リング) がチップに通知されます。通知されたモードに基づいて、プログラムにコンピュータ上のリソースを使用する権限が与えられます。システムは 4 つのリングに分かれています。リング 0 の権限が最も高く、リング 3 が最も低くなります。リング 1 とリング 2 はまったく使用されません。
Windows と Linux のプログラムは、リング 0 (カーネル モード) とリング 3 (ユーザー モード) のどちらかで実行されます。実行可能ファイル (exe) とライブラリ (dll) は、使用できるコンピュータ リソースに制約と制限が適用されるようにリング 3 で実行されます。一方、ハードウェアおよびオペレーティング システムとやり取りするデバイス ドライバは、リング 0 で実行されます。リング 0 で実行されるプログラムには、ルールも制御も一切適用されません。プログラムですべての使用可能なリソースに無制限にアクセスできるので、アドウェア、マルウェア、ウィルス等を作成する侵入者にとって、リング 0 は活動の場となります。しかも、先見の明があるどの技術者にたずねても、現在の状況と異なり、遅かれ早かれ倫理に反するすべてのプログラムがリング 0 で動作するように作成されるだろうと答えるでしょう。
ルートキット : 起きなかったマルウェアの流行
ルートキットは Unix 環境のシステムで登場しました。ハッカーは root (管理者) を装って、ファイル システム全体の制御を奪いました。ルートキットの作成者は基本的に、リング 0 で動作するマルウェアを作成し、そのコードを隠蔽する方法を知っている頭の切れるハッカーです。ウィルスとワクチンは一般にリング 3 で作成されるため、簡単に検出して除去できますが、ルートキットはそうはいきません。けれども、ルートキットの拡大は鈍ってきています。ここでその理由をいくつか示します。
リング 0 で動作するコードを書くのは容易ではない
ルートキットをリング 0 にインストールすると、OS とマルウェアが同じレベルで動作するようになり、コンピュータのリソースを完全に制御できます。しかし、リング 0 で動作するルートキットを作成するのはそれほど容易ではありません。リング 0 のコーディングの知識に加えて、デバイス ドライバの作成に関する知識も必要になります。インターネットからルートキットのコードをそのままカット アンド ペーストしてもうまく機能せず、ましてそれを変更するとなればなおさらです。ハッカーの多くは、作成にかかる手間があまりに膨大なために、ルートキットの使用をあきらめました。ユーザー モードのリング 3 で動作するルートキットはもっと簡単に作成できますが、リング 0 のルートキットほどの威力はありません。ルートキットから見れば、電子メール ウィルス、Firefox の拡張機能、または Internet Explorer のブラウザ ヘルパー オブジェクトの作成など造作もありません。
ドキュメント化されていないカーネル
Microsoft は、リング 0 への入口をできるだけふさごうと懸命に努力してきました。そして Kernel Patch Protection と呼ばれる技術を導入しました。この機能は今のところ 64 ビットのオペレーティング システムでしか動作しませんが、いずれそれも変わるでしょう。
コードをオペレーティング システムから隠蔽し、見えないようにする場合、Windows カーネルが重要な役割を果たします。しかし、Microsoft はカーネル コードをドキュメント化していません。こうすることで、人々にリング 0 の内部構造に基づくコードの作成を思いとどまらせようとしてきました。その結果、ルートキットのコーディングのためにカーネルを変更しようとすると、Windows が著しく不安定になります。私たちがルートキットのテストをしたときは、数え切れないほどの再起動を行いました。さらに問題を複雑にしているのは、Microsoft が新しい OS をリリースするたびにカーネルを更新することです。Windows XP のカーネルは、2000 とも、新しくリリースされた Vista とも大きく異なります。このため、ルートキットをすべてのオペレーティング システムに対応させることはきわめて困難です。
新しいルートキットの情報がない
さらに悪いことに、最近はルートキットに関する情報がほとんど得られません。かつては、rootkit.com というルートキットとデバイス ドライバ プログラム専用のサイトに、ありとあらゆるルートキットの名前が挙げられていました。今では、ルートキットの作成者たちの玄人化が進み、政府や犯罪組織にスキルを売り込むようになっています。ルートキットの世界が突如として地下に潜ってしまったのです。これは危険なことです。新しいルートキットやマルウェアが、金融機関、企業、および政府のお金やデータを探ったり盗んだりするために悪用されており、その存在がまったく気付かれていないからです。
ルートキット除去ツールがもたらす不安定さ
リング 0 とリング 3 では、コーディングに天と地ほどの違いがあります。このため、リング 0 のマルウェアとリング 3 のマルウェアを検出するルールはまったく異なります。現在、ウィルス対策企業では、リング 3 のマルウェアに対する高速なシグネチャ スキャン ツールの作成に加えて、ルートキット除去ツールの作成にも力を注いでいます。しかし、ルートキットのような形で常駐されると、それを除去した後で Windows が安定性を保つという保証がありません。
プログラムを Windows から隠蔽する futo という名前のオープン ソースのルートキットがあります。このプログラムはパブリック ドメインなので、仕組みを突き止めて除去ツールを考案することは容易です。問題は、逆方向の手法を使って futo が姿を現すようにすると、Windows が不安定になることです。初期状態からフォーマットし直す以外に解決策はありません。
ルートキットの世界は危険と背中合わせです。ほとんどのルートキット除去ツールでは、ルートキットを除去した後でコンピュータが正常に機能するという保証がないからです。ネットからダウンロードする製品には、何らかのマルウェアが含まれていることが珍しくなくなっています。最近の Sony のルートキットの事件は、この技術が幅広く悪用されていることを裏付けるものです。
仮説に基づいた解決策
最新のパッチと、きちんと更新された既知のすべてのウィルス対策製品をコンピュータにインストールしても、マルウェアが潜んでいないという保証はありません。Windows を含めて、コンピュータにマルウェアが存在しないことを保証できる製品はこの世に存在しません。仮説に基づいた 1 つの解決策は、OS だけをリング 0 で実行し、デバイス ドライバや他の非 Microsoft のコードをリング 1、exe ファイルとアプリケーションをリング 3 で実行するという方法です。Microsoft はこれを検討したに違いありませんが、リングのアップグレードは行われませんでした。それを行った瞬間に、テクノロジの世界に大混乱と無秩序が訪れて、マルウェアの作成者たちが押し倒されることでしょう。それに次ぐセキュリティ対策は、Windows および Linux OS の内部構造を全面的に書き直すことです。これも遠い道のりです。
銃を一番早く撃てる最も卑劣な男が牛耳っていた西部開拓時代は遠い昔になりました。今では、人はまったくのお手上げ状態で無力です。すべてわかっているにもかかわらず、ハッカーがお金やデータを盗んでいくのを止める手だてがありません。リング 0 のプログラマは、サイバー世界の無敵の王者と称することを好みます。彼らは私たちのシステム、お金、およびすべてのリソースを支配しているからです。
このような状況が長続きしないことを願うばかりです。



