ファイアウオールやIDS(侵入検知システム)から出力されるログを眺めていると,まるで川の流れを見ているような気分になることがある。出力される無機質な文字列は,日光が乱反射する川面(かわも)のようだ。同じパターンの繰り返しのようでもあり,まったく異なるパターンが次から次へと生み出されるようでもある。

 そしてその中には,様々なアクティビティの記録が含まれている。最近よく目にするのは,「バックドア」を仕掛けられたコンピュータを探しているポートスキャンの記録である。「バックドア」とは,その名の通り「裏口」であり,一般には,コンピュータへの侵入に成功した攻撃者が,次回も侵入できるように仕掛けるプログラムのことである。今話題の「Code Red II」ワームもバックドアを仕掛ける。

 そこで今回のコラムでは,バックドアに焦点を絞り,(1)バックドアにはどのようなものがあるのか,(2)どのように見つければよいのか,そして,(3)発見した場合にはどうすればよいのか---などについて,解説したい。

知らないうちに存在しているバックドア

 筆者が周囲の人に,「『バックドア』という用語から何を連想するか」---という問いかけをしたところ,「Netbus」や「Back Oriffice」,あるいは「SubSeven」といった,バックドア・プログラム(ツール)を連想するとの答えが多かった。しかし,バックドアはこういったツールによってのみ作成されるわけではない。正規の製品にあらかじめ組み込まれてしまっているケースも存在する。実際,過去には次のような例がある。

【事例1】
 PDA(Personal Digital Assistants)の OS のひとつ,「Palm OS」のバージョン 4.0 以前にバックドアが存在した。開発者用のツールを使えば,パスワードで保護されたデータに誰でもアクセスできるというものであった。このバックドアは,Palmのソフトウエア・エンジニアやアプリケーション開発者がデバックをするために設けられたものであった。

【事例2】
 米Borlandのデータベース・ソフト「InterBase」のバージョン4.x/5.x/6.0/6.01には,出荷時にあるユーザー・アカウントが登録されており,それを使えばアクセス権限がないユーザーでもシステムに入り込めることが確認された([関連記事])。そのユーザー・アカウント名とパスワードはプログラムに書き込まれているので,設定変更によって削除することはできない。

 正規のプログラムには存在しないものの,不正なコードを組み込んで,“バックドア付き”のプログラムにされてしまうケースもある。あるプログラムにバックドアを組み込むツールも出回っており,近年比較的多く見られるケースである。過去の事例としては,次のようなプログラムにバックドアが仕掛けられた。

  • IRC(インターネット・リレー・チャット)ソフト「irc II」クライアントのバージョン2.2.9
  • ユーザーのディスク使用状況と使用限度をチェックするUNIX用ツール「quota」
  • アクセス制御やログの記録を行う「TCP Wrappers」のバージョン 7.6

 この他にも,暗号化ソフト「PGP」にバックドアを組み込むことが技術的に可能であるとの報告もある。バックドアはどのようなソフトにも組み込まれる恐れがある。ユーザーは,常にバックドアの危険にさらされているかもしれないという自覚を持つ必要があるだろう。

バックドアを見つける

 では,「バックドアが仕掛けられたかもしれない」と感じたときには,どのように確認したらよいだろうか。まず考え付くのは,現在実行中のプロセス情報を表示する「ps」コマンドや,ネットワーク情報を表示する「netstat」コマンドでチェックすることである。

 しかし,ps や netstat などのコマンドが,同名の不正なものに置き換えられている場合もある。例えば,psコマンドを不正なものに置き換えられて,バックドアのプロセスを表示しないようにしている恐れがある([関連記事])。こういった場合,これらのコマンドから出力される情報には,まったく信頼性がない。それを防ぐため,バックドアの検出作業で使用するシステム・コマンドなどは,正常なホストからコピーすることをお勧めする。

 ただし,これだけでは不十分な場合もある。inetd や login,システム・コマンドなどが使用する共有ライブラリが改ざんされている可能性もあるからだ。この可能性まで考えた場合には,バックドアが含まれる可能性があるハード・ディスクを,別のオペレーティング・システムからマウントして調査することが望ましい。

 使用するコマンドなどが正規のものであると確認できたら,バックドアの確認作業を開始する。具体的な手順は以下の通り。

(1)ログインしているユーザーなどを表示する「last」や「who」コマンドの出力結果や「syslog」などのログを確認する

(2)psコマンドで稼動中のプロセス情報を出力し確認する
 ※(1)および(2)で,不審な出力結果やログが確認できたら,至急ユーザーや接続元に問い合わせる。

(3)netstatコマンドでコネクション情報を確認する
 ※(3)で,不審なポートが開かれているようならば,「fuser」コマンドでオーナー・プロセスを調べる。
 ※これらの作業は正常時の環境と比較できるように,普段からチェックしておく。

(4)デーモンの設定ファイル「/etc/initd.conf」を確認し,不自然なエントリが追加されていないかを確認する

(5)パスワード・ファイル「/etc/passwd」を確認し,不明なアカウントが追加されていないかを確認する

(6)起動用のスクリプトを収めた「/etc/rc.d/init.d」ディレクトリを確認し,タイム・スタンプが新し過ぎるなどの不審なファイルがないかを確認する。併せて,チェックサムも確認する

(7)(6)と同様に,「/etc/rc.d/rc*.d」(RedHat系)あるいは「/etc/rc*.d」(Solaris)ディレクトリ下の全てのスクリプトを確認する

(8)定期的にプログラムを実行させる「cron」の内容を確認する

(9)バックドアのバイナリ・ファイルを目視で探す

 以上の手順でバックドア(トロイの木馬)を発見できるケースもあるが,手間がかかり地道な作業を強いられる。また,手動では発見が困難である場合も多い。なぜならば,オリジナル・プログラムと同じファイル・サイズやタイム・スタンプに変更するなどの“工夫”を凝らしていることが多いからである。

 やはり,ツールの利用が有効だ。「Tripwire」や,「md5sum」などのチェックサム・ツールがよく用いられる。これらのツールはプログラムのハッシュ値(シグネチャ)を記録し,以前の情報と比較することで,攻撃者がいつファイルを変更したのかなどを特定できる。

 システムによっては,改ざんなどを検出するための管理機能を組み込んでいる。例えば,RedHat系のLinuxではRPM(RedHat Package Manager)フォーマットを採用している。md5sumもRPM仕様の一部である。RPM では,これからインストールしようとするパッケージが変更されていないかどうかを容易に確認できる。

 また,Solarisシステムには「MD5 sums」と呼ばれるデータベース「Solaris Fingerprint Database」が用意されている。

 しかし,これらのツールにも限界がある。Tripwireなどのツールは,ハッシュを計算する際にユーザー・モードで実行される。そのため,カーネル・モードで実行されるクラッキング・ツールを使われると,検知ツールにチェックされることなくバックドアを仕掛けたりすることが可能になってしまう。

バックドアを発見したら

 バックドアを発見した場合,もしくは仕掛けられていることがほぼ確実な場合は,そのホストを全てフォーマットし,OSなどを再インストールすることをお勧めする。侵入者がバックドアをインストール際には,発見され削除されてもいいように,一度に複数のバックドアを仕掛ける可能性があるからだ。1つ発見して削除したからといって,安心はできないのである。

 侵入されたホストとまったく同じ構成で再構築すると,同じように再び侵入されてしまう恐れがある。そのため,侵入された原因やそのルートを解析し,要塞化を施す必要がある。加えて,毎日のメンテナンスを欠かさないことが重要となる。

 フォーマットをしたくない管理者はどうしたらよいだろう。その場合には,シングル・ユーザー・モードでシステムを起動し,rc*.dディレクトリ内で実行しているプロセスを一つずつ起動して,確認するぐらいしか方法はないように思う。それでも発見できない場合には,やはり再構築するしかないだろう。

バックドアの被害に遭わないために

 バックドアによる被害に遭わないためには,システムに侵入されないようにすることがまず第一であるが,万一バックドアを仕掛けられとしてもすぐに発見できるように,日々システムを調査することが望ましい。日々の調査により,プログラム開発者のミスによるバックドアについても,早急に対処できる。

 また,内部の人間にバックドアを仕掛けられる可能性もある。これについては,フロッピ・ディスクなどから直接インストールされないように,ホストから離れる場合にはログオフまたはパスワード・ロックすることや,メールの添付ファイルを不用意に実行しないといった,基本的なことで対処できる。


岩井 博樹(Iwai Hiroki)
株式会社ラック 不正アクセス対策事業本部 技術部
iwai@lac.co.jp


 IT Proセキュリティ・サイトが提供する「今週のSecurity Check [一般編]」は,その週に起きたUNIX関連およびセキュリティ全般のニュースや動向をまとめた週刊コラムです。セキュリティ・ベンダーである「株式会社ラック」のスタッフの方を執筆陣に迎え,専門家の立場から解説していただきます。