2005年11月18日 - ERD CommanderでWindowsを調査する

ERD Commanderとは


 ERD Commander(Emergency Repair Disk Commander)はWinternals Software社より販売されている、Windowsの障害対策ツールである。
 Windows OSを利用していれば、稀にMicrosoftのパッチ導入後に動作不良となったり、ドライバのインストールに失敗しOSが起動しなくなったり、ウイルスなどのマルウェアに感染し正常な動作が期待できなくなる場合もあるだろう。
 このERD CommanderはブータブルCDを作成し、これよりWindowsPEの英語版を起動し、起動しない・また障害が起き動作不良となったシステムを復旧するツールである。
 自分としてはERD Commanderは、諸般の事情によりあまり書きたくはなかったのだが。代替となるものが全く無いため、この場にてサラっと紹介する。

 このERD Commanderを利用するに当っては、以下のような問題がある。

  • 有料。1万数千円。
  • 日本語環境には対応していない。ファイル・フォルダの名称は全て文字化けするし、日本語環境下で作成されたテキストなどはまともに表示されない。
  • そのため日本語版OSの復旧を試みた場合には、かなり不便である。
  • だから感染実験などを行う際に利用するならば、英語版OSを導入している実機なりVirtualPCのバーチャルマシンでなければ、使い勝手が悪すぎる。
  • Autoruns、Service and Drive Manager機能では一覧をエクスポートできないため、その場限りの修復作業はともかく、じっくり腰を据え扱い修復作業を進める際には大変不便。このような理由にて、各タイミングでのレジストリやファイルを調査する必要がある感染実験などを行うにはこの機能は不向き。(まさかこれを全てメモったり、キャプチャして比較するとでも?)


ERD Commanderを購入・導入する


 ERD Commander 2005:Emergency Download Versionを開き、WorkstationもしくはServerいずれかのカートを開いて購入する。支払いはクレジットカードで行う。
 この後「Order Time」「Order ID」を連絡するメールの後に、5日間有効な SHORT TERM KEYを連絡するメールが届く。今後利用するならば、「http://www.winternals.com/license」よりレジストが必要だ。
 登録時には、「Enter Each (NETBIOS) Domain/Workgroup or Computer name: 」の項目に注意してもらいたい。ここでコンピュータ名(「システムのプロパティ」よりコンピュータ名タブを開き表示される「振るコンピュータ名」を指定すると、利用できる実機パソコンが同一のホスト名のパソコンだけになってしまうので注意。ホームユーザーであればワークグループ名の方がいいのではなかろうか(自分はうっかりとWorkgroupではなくホスト名で登録してしまい、そのため後々面倒なのだ)
 その後3通目のメールが送られてくる。ERDを利用時には、この登録情報を後々まで利用する事となる。

 注意するべき点として、SATAもしくはSCSIのハードディスクをブータブルCDより参照するには、場合によってブータブルCDを作成する段階にて個別にドライバを導入する必要がある点だ。自分はATA133の環境でのみ利用しているので、何とも言えないんだが。
 ウィーザードに従っていけば、ブータブルCDのISOイメージファイルが作成される。これをB's Recorderか何かでCD-Rに焼けば完成だ。
 また詳しい利用法は、ERD2005EDV.pdfを閲覧してもらいたい。

ERD Commanderを利用する


 作成したERD Commander 2005のBootable CDより起動してみよう。
 テスト機はWindowsXP Professional Service Pack2英語版である。これをVirtual PC 2005のバーチャルマシンとして利用しテストした。

 なおこのERD Commander利用時には、Virtual PCの共有フォルダ(実機のハードディスクを共有化)する機能は利用できないようだ。

 テスト機のWindowsXP 英語版にて日本語名のテキストファイルを取り込んだのだが、ファイルの名称は文字化けはしないものの、これを開き日本語の文章を閲覧する際には文字化けで判別できない状態である。
 不思議な事に、regファイルであればレジストリエントリ中の日本語は怪しいフォントできちんと認識できるのだが。

下準備として、テスト機に以下のような設定の変更を加える。
1)手動で以下の起動エントリを手動で追加。
 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
 Mozilla Quick Launch="\"C:\\Program Files\\Netscape\\Netscape\\Netscp.exe\" -turbo"
 2)スタートアップフォルダにメモ帳のショートカットを設置した。
 3)日本語版WindowsXPより、「HKLM_LOCAL_MACHINE\SOFTWARE\テスト」のサブキーを作成。その中に「テスト」の名前の文字列値を作成し、値のデータは「テスト値」とした。
 これをテスト.regの名前でエクスポートした。
 テスト機の英語版OSにてこのRegファイルをダブルクリックし、「Are you sure you want to add the information in Z:\テスト.reg to the registry?」のダイアログが出るがYESを押す。
 これは英語版WindowsOSにて、正しく表示された。
 4)日本語版WindowsXPより、HKLM_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」に「テスト起動エントリ」名の文字列を作成し、値のデータを「テスト」とした。
 これをテスト2.regの名前でエクスポートした。
 これも同様にテスト機にインポートし、テスト機であるWindowsXP 英語版にて正しく認識・表示されたのを確認した。

 準備が整ったので、テスト機をシャットダウンして保存する。さて光学ドライブにERD Commander 2005のCD-Rを入れて、テスト機を起動しよう。
 「ERD Commander 2005」ダイアログにて、「REgistering networking componets」なるダイアログが出るが、ネットワークに接続する必要が無い場合は「Skip Network Configuration」を選択する。
 「Select the Windows installation you wish to repair:」の項目では、大抵の場合はCドライブを選択するだろう。デュアルブート環境下の実機を修復する場合には、適切なSystem Rootを選択する。

ERD Commanderより、アプリケーションを起動する


 さて、実機(もしくはバーチャルマシン)のCドライブにアプリケーションのフォルダを設置。その実行ファイルをダブルクリックし、テストしてみよう。
 起動できなかったアプリケーションは以下のものであった。
 BlackLight
 HijackThis
 まめFile2
 起動できたアプリケーションは
 RegDiff ver0.12d
 起動できたものの、正常に動作しなかったアプリケーションとして
 md5deep(スタートメニューのConsolより起動できたものの、ログファイルとしてmd5形式ファイルを保存できなかった)

Autorunsより起動エントリを調査する


 さて、スタートメニューより「Administrative Tools」と辿り「Autoruns」を開く。
 ERD Commander 2005 Computer Managementが開く。展開するとこのようになる。

 「Action」→「All Task」より必要に応じ「Show Explorer Addons」「Show Appinit DLLs」「Show Winlogon Notifications」を選択してもらいたい。
 表示されたAutoruns項目を見てみよう。
 まずは「System」を開く。
 HijackThisのログとは、表示される名称はやや異なる。
 また「VPCUserServices」の下に表示されている文字化けした項目は、下準備にてインポートした「テスト起動エントリ」名の文字列である。
 このERD CommanderのAutoruns機能では、日本語を含むレジストリエントリは正常には表示されないのだ。


 次にこのXP SP2をインストールし常用しているユーザーアカウント「main-user」を選択。なおAdministratorアカウントは、実機(もしくはVirtual PCのバーチャルマシン)にてまだログオンしていなければユーザープロファイルが作成されないため、ここでは表示されないだろう。
 手動追加したNetscape関連のレジストリエントリと、スタートメニューのショートカットが確認できた。
 これよりここで表示されるのは、実機(バーチャルマシン)でのOSのレジストリであると判断できる。


 個人的に不満な点なのだが、ここで表示された起動エントリは削除はできるものの、編集する事ができないのだ。これを何とかやりくりするためには、直接レジストリを操作するしかない点は、大変不便極まりない。
 またこれらの一覧をエクスポートしファイルとして保存できれば便利なのだが、そのような機能が備わっておらずやや不便である。これでは感染実験などを行うに当って、感染前・後の比較ができないではないか。

Service and Driver Managerを利用する


 「Start」→「Administrative Tools」より「Service and Drive Manager」を利用する。
 「Drivers」では実機にインストールされているドライバファイルの場所(Path to executable)を確認し、これをBoot・System・Automatic・Manual・Disabledと設定を変更できるのだが、どうも障害が起きた際にどれをどうすべきなのかが判然としない。今後の課題としよう。
 「Services」では実機にインストールされているWindows OSのサービスを「Automatic・Manual・Disabled」と設定できるだろう。これは「コントロールパネル」→「管理ツール」→「サービス」からの操作と同様であった。サービスとして登録される悪質なソフトウェアに感染し修復する場合には、これより修復する事となるだろう。
 しかしここでもまた、これらの一覧をエクスポート・保存はできないのは不便な感がある。

Consolよりregeditを起動する


 次に「Start」より「Consol」を選択。regeditと入力しEnterキーを押し、「Registry Editor」を開く。

 変な警告ダイアログがでるが、気にしない。

The application you are launching is not part of the ERD Commander 2005 environment. It may behave incorrectly or fail to 'un.
Are you sure you want to start the application?


 さて、こちらで開いたRegistry Editorでは、最上位のレジストリサブツリーは5つ。つまり「HKEY_CLASSES_ROOT」「HKEY_CURRENT_USER」「HKEY_LOCAL_MACHINE」「HKEY_USERS」「HKEY_CURRENT_CONFIG」であった。


 ここでは「My Computer」を選択し、丸ごとExportできた。
 だがよく眺めてみると、以下のテスト目的で追加したレジストリエントリは存在しない。
 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
 Mozilla Quick Launch="\"C:\\Program Files\\Netscape\\Netscape\\Netscp.exe\" -turbo"
 つまりこれは、実機(バーチャルマシン)にインストールされているOSのレジストリではなく、ブータブルCDにより起動されているOSのレジストリなのだろう。

Administrators ToolsのRegEditを利用する


 Administrative Toolsより「RegEdit」を開いてみよう。

 レジストリの最上位のレジストリ サブツリーは「HKEY_CLASSES_ROOT」「HKEY_LOCAL_MACHINE」「HKEY_USERS」の3つしか表示されない。

 まずは「HKEY_LOCAL MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run」
 次に、「HKEY_USERS\Username\Software\Microsoft\Windows\CurrentVersion\Run」
 これらのレジストリエントリをエクスポートするに当って、「My Computer」をポイントしてもExportできない点には注意してもらいたい。「HKEY_CLASSES_ROOT」「HKEY_LOCAL_MACHINE」「HKEY_USERS」を選択しなければ、regファイル形式でエクスポートできないのだ。
 更にはExport時に動作が遅くなり固まうため、数分間ほど操作ができなくなる。コーヒーでも飲みつつじっくり待ってもらいたい。

 念のため注意してもらいたいのだが、ここでは常用しているユーザーアカウント「main-user」と「Administrator」のみが表示される。
 Administratorアカウントは、過去にこのアカウントでログオンしていなかった場合は、ユーザープロファイルが作成されないため表示されないだろう。
 また通常ならば表示され得ると期待された、以下のシステムアカウントは表示されなかった。
 .DEFAULT
 Local System(S-1-5-18)
 NT AUTHORITY\LOCAL SERVICE :S-1-5-19
 NT AUTHORITY\NETWORK SERVICE :S-1-5-20
 つまりこれらのシステムアカウントへのレジストリエントリが変更された場合、このERD Commanderではレジストリの直接の編集は難しいようだ。
 また.DEFAULTは新しいユーザーアカウントを作成する際に雛形となるテンプレである。これを汚染されると今後作成する全てのユーザーアカウントにて改変された設定が反映されてしまうため、注意を払う必要があるだろう。