■あなたのWindowsシステムがハッキングされてしまった時に,どうやってシステムを回復させればよいだろうか。
■レジストリ・キーやサービスをチェックして攻撃の正体を見極め,安全な場所でシステムを復元する方法を解説する。
(2005年1月号「Windowsテクノロジ徹底解説」より)

(Alan Sugano)

 


 システム管理者に,ユーザーからの電話が入った。ネットワークが妙に重く,特にインターネットへのアクセスが遅いと言う。

 確かに,サーバーとネットワークに遅延が発生している。ファイアウオールのトラフィック統計でも,インターネットへのトラフィックが異常に増えている。サーバーで「Netstatコマンド」を実行すると,許可していない接続がいくつも確認できた。どうやらインターネットを介してハッキングされてしまったようだ——。

 ネットワーク攻撃の特性を考慮すると,ハッキングされたかどうかを判断するのは容易ではない。それでも,サーバーのどこを見て何をチェックすればいいかを知っておけば,ハッキングの痕跡を発見して,攻撃者による次なるダメージを被る前に対策を講じる助けになるだろう。

 この記事では,システムに大損害を及ぼしかねない悪意のプログラムを見つけるにはどこから探すのがよいか,そしてハッキングからの復旧計画をどう立案すればよいかを説明する。

不正なプログラムを発見する

 攻撃を阻止してシステムを元に戻すには,ハッキングの手だてを見つけ出さなくてはならない。どのハッキングでも,不正なプログラムを起動する設定がどこかにされているはずだ。

●レジストリ・サブキー
 まずチェックしたいのは,マシンのレジストリにある「Runサブキー」である。Runサブキーには,Windowsの起動時とユーザーのログオン時に合わせて起動されるプログラムが記述されている。


△ 図をクリックすると拡大されます
図1●「ハッキングされたかも」と思ったときにまず調べるレジストリ・キー

 Runサブキーについては,[ファイル名を指定して実行]で「regedit」と入力してレジストリ・エディタを起動し,図1のレジストリ・キーを調査する。この中に記憶にないプログラムが登録されていれば,すべてがハッキング・プログラムと考えられる。Googleなどのインターネット検索エンジンでプログラム名を検索し,不正なものかどうか確認しよう。特に疑わしいのは,「C:\」「C:\windows」「C:\windows\system32」から起動するものだ。


△ 図をクリックすると拡大されます
図2●念のために調べておくべきレジストリ・キー

 また,ハッキング・プログラムの起動に使われることはまだあまりないが,チェックしておいた方がよいサブキーとして図2の項目がある。もし,既定のレジストリ・キーの値が「%1」または「%」以外である場合は,ハッカー・プログラムの可能性が高い。

 これらのレジストリー・キーは定期的に確認して,自動的に起動されるよう設定されているプログラムをすべて把握しておこう。

●サービス
 次にチェックしたいのがサービスだ。サービスとは,Windowsのバックグラウンドで稼働する常駐アプリケーションのことだ。ハッキング・プログラムの中には,サービスとして動作するものがある。

 まずレジストリの「HKEY_LOCAL_MACHINE\SYSTEM\Current-ControlSet\Services」サブキーを確認する。このサブキーは,Windowsのサービスを定義している。OS上でどのサービスが起動されているか確認する際は,GUIツールを使うのではなく,このレジストリを直接確認することをお勧めする。Windowsのサービスの中には,GUIツールに表示されないものもある。

 このサブキーに,見覚えのないプログラムが登録されていないかをチェックする。Servicesサブキーにある値を,ハッキングされていないマシンのものと比較して調査をするのがよい。

●スタートアップ・フォルダ
 スタートアップ・フォルダにショートカットを登録したプログラムも,ログオン時に自動的に起動される。見覚えのないプログラムやプログラムのショートカット,隠しファイルがないかどうか,「C:\Documents and Settings\AllUsers\スタートメニュー\プログラム\スタートアップ」と「C:\Documentsand Settings\<ユーザー名>\スタートメニュー\プログラム\スタートアップ」フォルダをチェックする。

 あるフォルダまたはそのサブフォルダにある隠しファイルの一覧を表示するには,コマンド・プロンプトでそのフォルダに移動して,

dir /a:h /s

と入力する。

●タスク
 不正なプログラムがタスクとして登録されていることもある。タスクとは,登録されたプログラムを登録された時間に起動するというもの。「C:\windows\tasks」フォルダに保存されているので,登録した覚えのないタスクがないか確認する。

●Win.ini/System.ini
 Win.iniとSystem.iniも忘れずチェックしよう。これらはWindows 3.x時代との互換性のためだけに用意されているシステム設定ファイルである。現在はほとんど利用されていないが,ここに登録されたプログラムも,自動的に起動される。

 まずは「C:\windows\win.ini」の以下の部分を確認する。

[windows] Run=<プログラム名> Load=<プログラム名>

 「Run=」や「Load=」に記述されているプログラムが自動的に起動されるものだ。

 一方「C:\windows\system.ini」では[boot]セクションを確認する。

[boot] shell=explorer.exe <プログラム名>

 explorer.exeに続けて記述されているプログラムが自動的に起動される。


△ 図をクリックすると拡大されます
図3●Sysinternals社のフリーソフト「Autoruns」

起動プログラムの一覧ツールを使う
 このように,ハッキング・プログラムの起動を登録する場所はいくつにも分散している。これらを一つひとつ確認するのが面倒なユーザーはツールを使うとよい。例えば,米Sysinternalsの「Autoruns」は,Windows NT系のOSで自動的に起動されるプログラムを一覧表示してくれる(図3)。