[System Environment] | |||||||||||||
クラッキングを手助けする“Rootkit”ツールを検出する
|
|||||||||||||
|
解説 |
“Rootkit”ツールとは?
過去に経験したCodeRedやSlammerといったいくつかのセキュリティ・トラブルは、コンピュータ・セキュリティの重要性について私たちに教えてくれるきっかけとなった。ウイルス・メールなど、セキュリティ上の脅威は極めて身近になったものの、前述したCodeRedやSlammerを始め、私たちがよく知っている過去の攻撃用プログラムは、システムをダウンさせたり、ウイルスをまき散らしたりと活動は派手だが、多くは遊び半分や自分の技術をひけらかすことを目的とした愉快犯的なもので、財産の窃取を目的としたプロの犯罪ではなかった。しかし今後は、会社の面目がつぶれるだけではすまなくなる。
「ピンポン・ダッシュ」的ないたずらでなく、企業活動を妨害するためのシステム破壊や、顧客情報や取引情報、財務情報などといった企業機密を窃取する攻撃者は、最大の効果と証拠隠滅とを同時に図るために、侵入したシステムをじっくりと調べぬく。通常、この作業は数日から長い場合は数カ月にわたる場合もある。具体的には、システムに修正されずに残されており、悪用が可能なセキュリティ・ホールの状態の調査、万一進入路がふさがれた場合でも継続的に侵入可能にするためのバックドアの設置、不正アクセスの証拠隠滅を目的とするアクセス・ログの改ざんなどだ。
これらの作業を効率よく実施するにはツールが必要である。いわば「泥棒の7つ道具」のようなものだ。こうしたシステム・クラッキングを目的としたツール集が、アンダーグラウンドで開発され、流通している。これらのツール集は一般に“Rootkit”と呼ばれている(“root”はUNIX OSにおける管理者権限を表す)。
Rootkitの種類と特徴
Rootkitは、ターゲットOS別などにさまざまな種類が開発されているが、大きく分類すると次のような種類がある。
■永続的なRootkitとメモリ・ベースのRootkit
永続的なRootkit(persistent Rootkit)は、システムが再起動されるたびに自動的に起動され、こっそりと動き続けるタイプのものだ。Windows環境なら、レジストリやファイル・システムを改変して、システムの起動時やユーザーのログオン時に密かに自分自身を起動するように設定する。
一方のメモリ・ベースのRootkitは、現在実行中のシステムのメモリを改変するタイプのものだ。システムを再起動すると、Rootkitの影響は排除できる。レジストリやファイル・システムは改変しないので、永続的なRootkitと比較すると見つけにくい。再起動で影響は排除できるが、滅多に再起動されないサーバなどでは、Rootkitが常に有効なままになる。
■ユーザー・モードRootkitとカーネル・モードRootkit
Windowsシステムの内部には、Windows OS自体やデバイス・ドライバなど、より低レベルな処理を行うためのカーネル・モードと、アプリケーションを実行するためのユーザー・モードという2つのプログラム実行レベルがある。こうしてモードを分離することで、アプリケーションが低レベルなシステムのリソースを直接操作することを制限し、システムの安全性を向上させている。
|
このうちユーザー・モードのプログラムとして実行されるRootkitを「ユーザー・モードRootkit」と呼ぶことがある。ツールの性格上、Rootkitは自身の存在を隠す機能を備えていることが多い。このためにユーザー・モードRootkitが実行する典型的な手法の1つは、ファイル一覧を取得するためのWindows APIなどを横取りして、本当のファイル・リストから、自身の存在を省いてアプリケーションに結果を返すという方法だ。
Rootkitによる自身の隠蔽方法 |
ファイルの存在を隠蔽したければ、ファイル一覧を取得するWindows APIを横取りして、実際のファイル・リストから自身のファイルを省いて結果を返すようにする。APIを使ってファイル一覧を取得する限り、Rootkitの存在は発見できない。 |
同様にして、レジストリ関連のAPIや、プロセス管理用APIなどを横取りすれば、レジストリの改ざんや、実行中のプロセスを隠蔽することも可能だ。
これに対し、カーネル・モードで実行されるRootkitはカーネル・モードRootkitと呼ばれる。カーネル・モードRootkitは、Windowsカーネルのデータを直接操作することが可能なので、より自由にシステムを制御できる。例えば、カーネル内にあるプロセス・リストを改ざんすれば、本当は実行されている自身のプロセスの存在を隠蔽できる。
Rootkitの定期的なチェックが必要
万一システムにRootkitが仕掛けられていたなら、すでにシステムは攻撃者の手に落ちていると考えるべきだ。Rootkitのインストール自身を未然に防止すべきなのだが、特に重要なサーバなどについては、内部にRootkitが仕掛けられていないかどうかを定期的に確認したほうがよい。ただし、一般的なウイルス対策ソフトウェアは、Rootkitの検出機能は持っていない。
幸い、Rootkitの検査ツールがいくつか提供されている。特にSysinternalsのRootkitRevealerは、無償で入手して利用できる。
操作方法 |
Rootkitの検出を目的として開発されたWindows向けツールがいくつかある。このうち1つは、Windowsシステム管理者向けの無償ツール開発で著名なSysinternalsが提供しているRootkitRevealerである。RootkitReaverlerは無償ツールで、だれでも以下のページからダウンロードして利用できる。
このほかにも、ウイルス対策ソフトェア・ベンダであるF-Secureが開発したBlackLight(F-SecureのBlackLightのホーム・ページ)などがある(有償製品。原稿執筆時点ではベータ版を試用可能)。Rootkitの検出は複雑で、オールマイティなツールはない。各検出ツールの特徴を吟味して、使い分けたり、組み合わせたりする必要がある。ここでは、無償版ツールで最も身近なRootkitRevealerについて簡単に紹介しよう。
基本的にRootkitReavealerは、通常のAPI呼び出しの結果と、ロー・レベルの走査結果とを比較し、両者に違いがないかどうかを検査することでRootkitの存在を検出する。具体的には、ファイル・システムとレジストリの双方について検査し、双方に不整合が発見された場合などはRootkitが存在する可能性があることを警告する。ウイルス対策ソフトウェアのように、パターン・ファイルとのマッチングをとるわけではないので、オフライン環境でも実行することができる。
前述したユーザー・モードRootkitについては、この方法で検出できる可能性が高い。しかしカーネル・モードRootkitについては、ロー・レベルの検査自体が詐称されている可能性があるため、検出に失敗する場合もある。検査をすべてツールまかせにするのではなく、手作業による検査を大幅に簡略化してくれるツールと位置づけるべきだろう。
RootkitRevealerの実行自体は非常に単純である。まず、前出のSysinternalsのページからプログラム含むアーカイブ・ファイル(.zipファイル)をダウンロードし、適当なフォルダに解凍する。RootkitRevealerには、GUI版(RootkitRevealer.exe)とコマンドライン版(rootkitrevcons.exe)がある。GUI版では、スキャン結果をウィンドウに表示することができる。一方のコマンドライン版では、デフォルトではスキャン結果が標準出力に表示されるが、-cオプションを指定することで、結果をCSV形式のファイルとして出力させることが可能だ。いずれのプログラムについても、実行には管理者権限が必要である。
RootkitRevealerの実行例 |
レジストリとファイル・システムを走査し、不整合がないかどうかを検査する。 |
この記事と関連性の高い別の記事
- 「悪意のあるソフトウェアの削除ツール」を利用する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- 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をインストールしてみる
|
|