Linux向けのマルウェア駆除ツール
Chkrootkit
Chkrootkitは、さまざまな方法でシステムの整合性をチェックするスクリプトおよびプログラムの集まりだ。最新のバージョンは2007年12月にリリースされた0.48で、すぐにでもダウンロードして、インストールと実行ができる。
ダウンロードしたファイルを展開し、展開先のディレクトリに移動して、「make sense
」と入力する。すると同じディレクトリに実行ファイルが作られるので、rootで実行すればよい。Ubuntuであれば、インストール先のディレクトリで「sudo ./chkrootkit
」と入力するだけだ。
オプションなしで実行すると、用意されているすべてのテストが行われる。特定のテストだけに関心がある場合は、オプションの指定によってそれらだけを実行できる。実施可能なテストの一覧を表示するには「./chkrootkit -l
」とする。また、たとえばslapperのテストだけを行いたければ、「./chkrootkit slapper
」とする。
私のデスクトップシステムでは、Chkrootkitをオプションの引数なしで実行するのに15秒かかり、115行ほどの出力結果が得られた。「-q
」オプションを使えば、テスト結果の出力を制限することができる。それで実行が速くなることはないが、問題を示唆する出力や、疑わしい部分だけが表示される。
そうした方法にあきたらず、Chkrootkitによる解析内容を自分でチェックしたければ、「-x
」オプションを使ってエキスパートモードで実行するとよい。ただし、私のシステムだと出力結果が30,000行近くにもなったので注意が必要だ。
Rootkit Hunter
Rootkit Hunter(RKHやrkhunterとも呼ばれる)のバージョン1.3.0がリリースされたのは昨年9月で、Chkrootkitより少し古いことになる。もともとの開発者はMichael Boelen氏だが、プロジェクトの管理権は2006年にほかの人々に移り、Boelen氏は生計を立てることも開発を続けることも困難になった。このバージョン1.3.0は、新たな開発陣による最初のメジャーリリースにあたる。
2004年4月、バージョンが1.0.3のときのRootkit Hunterをレビュー(翻訳記事)したことがある。最新バージョンでは、あらゆるマルウェアを捉えるためにテスト内容の追加と洗練化が行われている。これもインストールは簡単で、tarballを展開し、「rkhunter-1.3.0」ディレクトリに移動して、rootで「./installer.sh --layout default --install
」を実行するだけでよい。
Rootkit Hunterをインストールせずに済ませたければ、「rkhunter-1.3.0」ディレクトリ内の「files」サブディレクトリに移動し、rootとして「./rkhunter --check
」と入力することで、スタンドアロンツールとして実行することも可能だ。インストールしたRootkit Hunterを実行するには、プログラム名の前にある「./
」を除いて同じように入力すればよい。
RKHはChkrootkitよりも高機能で、ルートキット向けのテストがより充実している。私の環境だと、実行に2分半ほどかかり、およそ300行の出力結果が得られた。デフォルトモード(上記のコマンド)では、対話的に実行が進み、あるテスト群から次のテスト群に進む際に「Enter」キーの入力待ち状態になる。この待ち時間を避けるには、「-sk
」オプションを指定する。
ほかにも、よく使う基本的なオプションとして、マルウェア検出用にローカルに保存されているデータファイルを最新のものにする「--update
」(ただし、wget、lynx、curlなど、RKHがサポートする、インターネットからのデータ取得用ツールが必要)、使っているバージョンが最新かどうかを確認する「--versioncheck
」がある。その他のオプションと設定手順の詳細については、「files」サブディレクトリのREADMEを参照してもらいたい。
OSSEC
ルートキット以外の検出もできるとはいえ、ChkrootkitとRootkit Hunterの双方が力を入れているのはルートキットの検出だ。これに対し、OSSECは完全なホスト型侵入検知システム(Host Intrusion Detection System)であり、侵入を試みるあらゆるものを検知するように作られている。2006年にOSSECをレビューしたときのバージョンは0.9だった。先の2つのツールに比べてずっと大規模で複雑なものだが、OSSECも簡単にインストールできる。
OSSECはChkrootkitやRootkit Hunterと少し違ったカテゴリに入る、というのが私の意見だ。インストール先としてはデスクトップマシンよりもサーバのほうがずっとふさわしいのだが、ローカルにインストールすることもできる。このツールを今回の比較に含めた唯一の理由は、積極的にメンテナンスが行われているLinux向けのルートキット検出ツールがほかに見当たらなかったことにある。つまり、それだけOSSECがルートキット検出のツールとして優れているということだ。今回、非公式に比較した結果では、ほかの2つのツールよりも多くのルートキットとワームを検出している。
OSSECをインストールするには、ダウンロードページから最新版を入手して展開し、展開先のディレクトリでrootユーザになって「install.sh」を実行すればよい。gccコンパイラがインストールされていれば、このインストールスクリプトによってコンパイル、設定、インストールが行われ、OSSECの実行が開始される。
まとめ
これら3つのツールのセキュリティテストは、合計80種類のルートキットのほか、各種のワーム、トロイの木馬、バックドアを用意して行った。私の非公式な比較(実施条件やバージョンが若干異なるため、厳密な調査になっていないことは明らか)では、Chkrootkit、Rootkit Hunter、OSSECによってそれぞれ64、60、56種類のマルウェアのテストが実施された。ただし、それぞれの厳密な件数よりも、ほかのツールでは実施されないマルウェア向けのテストが行えることのほうが重要である。
私の考えでは、SOHOのLANで複数のマシンをチェックするならOSSECが、単体のデスクトップPCまたはノートPCで使うならほかの2つのどちらかが適している。では後者の場合、ChkrootkitとRootkit Hunterのどちらを選べばよいのだろうか。もっともな質問だが、私としてはオリジナルのRootkit Hunterを開発したMichael Boelen氏の意見を参考にしたい。彼は、Rootkit HunterがChkrootkitの置き換えではなく、「セカンド・オピニオン」を提供するものとして書かれたことを明言している。ということで、両方とも利用してはどうだろうか。それで問題が生じることはないし、そうすれば一方が見逃すかチェックできないルートキットを他方が見つけてくれるはずだ。