今週のSecurity Check(第181回)

 自分の管理するシステムが不正アクセスされた場合には,影響範囲や原因を特定するために攻撃者の“痕跡”を調査する必要がある。対象システムがWindowsマシンであれば,レジストリの解析は不可欠。しかしながら通常のログ・ファイルと異なり,レジストリの調査は骨が折れる作業となる。そこで本稿では,不正アクセスを受けたシステムにおけるレジストリの解析方法をまとめた。

 なお,Windowsマシンにおける失われやすい情報(揮発性の高いデータ)の証拠保全については以前の記事でまとめているので,そちらを参照していただきたい。

レジストリの分析は容易ではない

 Windowsマシンが不正アクセスを受けた場合には,通常,以下の3種類のファイルを調査することになる。

(1)Windowsのイベント・ログ
(2)各種アプリケーションのログ
(3)レジストリ

 (1)と(2)については,通常の運用においても馴染みが深いので,特に問題なく分析できるだろう。問題は(3)のレジストリである。バイナリ形式であることに加えツリー構造が複雑なので,UNIX系の設定ファイルなどとは異なり,全体を俯瞰することがなかなか難しい。

 とはいえ,レジストリはWindows OSの設定ファイルなので,OSレベルでの調査を実施するためにはレジストリの解析は不可欠である。そこで以下,「不正アクセス発生後の調査」という目的に絞って,調査すべきレジストリと調査のポイントについて説明したい。

 なお,レジストリにはユーザーの操作履歴も含まれているので,解析作業によって,肝心の不正アクセスの痕跡を上書きしてしまう恐れがある。そこで通常は,被害を受けたマシン(解析対象マシン)のディスク・コピーを解析用マシンにマウントして解析作業を実施する。本稿でも,その手順で解析することを想定して解説する。以下では,解析用マシンのDドライブに,解析対象マシンのディスク・コピーをマウントしたものとして説明する。

 また,解析用マシンからレジストリを閲覧する場合であっても,Windowsに標準装備されているregeditやregedt32を使うことは避けたい。というのも,一部のregedit/regedt32には,設定されている値を隠蔽される欠陥が見つかっているからだ(デンマークSecuniaの情報)。

 図1に具体例を示す。実際には値が設定されているにもかかわらず,問題のあるregeditでは,値には何も表示されない。


図1 問題のあるregeditで閲覧した例
[画像のクリックで拡大表示]

 図2は,問題のないレジストリ・ビューアで閲覧した例。図1では表示されなかったが,実行ファイルが自動起動するように値が設定されていることが分かる。


図2 問題のないレジストリ・ビューアで閲覧した例
[画像のクリックで拡大表示]

 フリーのレジストリ・ビューアはいろいろ公開されているので,それらのうちから問題のないものを使用するようにしたい。例えば筆者の環境(Windows 2000 Professional SP4日本語版)では,「Registrar Registry Manager」や「MiTeC Windows Registry File Viewer(RFV)」には問題がないことを確認している。

レジストリ・ファイルを収集する

 レジストリを解析するには,まずはレジストリ・ファイルを収集する必要がある。 システム全体のレジストリ情報は,「D:\windows\system32\config」以下の「SAM」「SECURITY」「SOFTWARE」「SYSTEM」「DEFAULT」――のファイルに保存されている。

 ユーザー別のレジストリ情報は,

D:\Documents and Settings\<UserName>\ntuser.dat

および

D:\Documents and Settings\<UserName>\LocalSettings
\Application Data\Microsoft\Windows\UsrClass.dat

に保存されているので,これらのファイルを収集して解析する。

 これらのファイルはバイナリ形式なので,テキスト・エディタでは調べられない。解析には専用のツールが必要となる。フリーの専用ツールは複数存在するが,例えば,前述のRegistrar Registry ManagerやRFVなどがよく利用される。以下の説明では,RFVを利用している。

インストールされたアプリを調査する

 レジストリ・ファイルを収集したら,まずはインストールされたアプリケーションを調査する。攻撃者によってマルウエア(悪質なプログラム)が勝手に仕込まれていないかどうか調べるためだ。

 インストールされたアプリケーションは以下に記録されているので,この情報を調べれば,マルウエアが存在するかどうかが分かる。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Uninstall

 ユーザーが個別にインストールしたアプリケーションについては,以下のキーに記録されている。

HKEY_CURRENT_USER\SOFTWARE

 次に,アプリケーションの実行ファイルへのパスも調査する。具体的には,以下のエントリを調べる。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
\CurrentVersion\App Paths

 前述の「Uninstall」にはエントリがない場合でも,「App Paths」にインストールの痕跡が見られる場合があるからだ。

 図3に,App Pathsのキーと値の正常な設定例を示す。これを見ると,「WRITE.EXE」が「WORDPAD.EXE」へのリンクになっていることが分かる。


図3 「App Paths」の調査例
[画像のクリックで拡大表示]