2005年11月28日 - PC-Cleanなるスパイウェア対策ソフト

PC-Cleanとは


 Bottom Dead Centerさんのフォーラムにて以前、PC-Cleanについて…(Bottom Dead Center)のスレッドを読み、大変深い感慨を感じたんですが。最近あぴ♪からお題をいただき改めて読み返してみれば、何と言ったらば良いのかわからず。
 雄輝さんにより紹介された「PC-Cleanの利用約款(http://nwww3.netpia.com/pccleanjp/sub_03.asp)」はkoniさんが指摘したように、大変ユニークなものだ。この部分を多少長いものの引用してみよう。

 本ソフトウェアには日本語インターネットアドレスヘルパー機能が内蔵されております。
 本機能はアドレスバーに日本語が入力された場合にマッチングするサイトやマッチングするサイトが存在しない場合、検索サイトに自動的に誘導する機能、及び、(株)netpia.comがサービスする日本語eメールアドレスの機能を有するもので、同種の機能を有するソフトウェアがお客様のパソコンに既にインストールされている場合にはかかるソフトウェアを自動的に機能停止及び削除する場合がありますのでご注意ください。
 「利用者約款(http://nwww3.netpia.com/pccleanjp/sub_03.asp)」


 これではまともなソフトウェアなのか否か、どうも自分には判断が付きづらい。
 まずPC-Cleanには、そのスパイウェア対策機能とはまるでかけ離れた機能が備わっている。そのような「余計な」、そしてセキュリティなりに敏感な層に対し刺激的な機能を内蔵する理由は何なんだろうか。
 言葉狩りではないのだが、「検索サイトに自動的に誘導する機能」なるものは、一般にサーチハイジャッカー(Search Hijacker)と呼ばれるマルウェアが持つ機能である。もちろん安全なブラウザヘルパーオブジェクトもこのような機能を備えている場合もあるのだが。
 そしてこのPC-Cleanにバンドルされている「検索機能」なるものと競合する他社製品を、(それが悪質なマルウェアか否かを問わず)アンインストールすると明言している。
 有りうるのかどうかはともかく、JWordを自ら希望してインストールし活用しているユーザーが存在すると仮定する。そのユーザーがPC-Cleanを導入したらば、無断でJWordをアンインストールされるのだろうか。またJWordに限らず他のブラウザヘルパーオブジェクトではどうなんだろう。

 またOK Webにてdoki2さんが「「PC-Clean は、スパイウエア対策に有効ですか?」(http://pcsoft.okwave.jp/kotaeru.php3?q=1639363)」に回答しているのを発見。
 問題の無いファイル・レジストリエントリに対する誤検出や、またアンインストールが正常にできない点を指摘なされており、いい勉強になりました。

 また検出されたものを問答無用でいきなり削除するとの意見をいただきましたが、自分の環境では再現せず。一応このようなガイドが公開されているようでした。

PC-Cleanは、ユーザーのコンピューターにスパイウェア、アドウェアと疑われるプログラムを検出しますが、除去するかどうかをユーザーが選択できるようにしています。ですから特定のプログラムを削除するかどうかはユーザーの決定によります。

 「PC-Cleanはスパイウェアやアドウェアを無条件で削除するのですか?(http://www.pc-clean.jp/sub_07.asp#3)」


PC-Cleanをインストール


WindowsXP SP2にPC-Cleanを導入、したのだが


 何だか他の方に既に検証し尽されている感があるんだけど。とりあえず試してみますか。
 WindowsXP HomeEdition SP2(SP無しのGoldより、統合アップデートCDを作成して利用)をセットアップし、チョコチョコと設定。今回はVirtual PCにてテストし、必要に応じてこのバーチャルディスクを他のゲストマシンのスレーブ接続にて調査しました。
 HijackThisにてスキャンしログファイルを保存、レジストリを丸ごとreg形式にて保存。
 この時点ではInternet Explorerのホームページは「http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=msnhome」である。
 「PC-Clean スパイウェア・アドウェア対策(Netpia:ネッピア社)(http://www.pc-clean.jp/index.asp)」よりPC-CleanInst.exeを他のパソコンにてダウンロードし保存。Size=3333029byte、MD5=807bfe03edf06b7e17b656cfdf30ab49であった。
 LAN上にて一応、Vigil Ver2.6.1にてネットワークキャプチャ。

 PC-CleanInst.exeをダブルクリックし、インストール。
 「PC-Cleanの新しいバージョンが出ました。新しいバージョンにアップグレードしますか?」と、アップデートを促すダイアログが出現。

 Vigilのログではplugin.netpia.comにバージョン情報を送信し、より新しいバージョンがあるのかを確認しているようだった。
 素直に「OK」を押して、アップデート。
しかしどうもVigilのログではアップデートは行われない。63.105.207.150宛へこのようなログが残っていたので、この時点ではバージョンを確認するだけなのだろう。
 20050926|PC-Clean.exe|1757184
 20050926|nReport.exe|602112
 IPアドレスからホスト名は逆引きできなかったが、plugin.netpia.comでnslookupしてみたらこのIPアドレスが引けた。なので63.105.207.150はplugin.netpia.comのIP addressなのだろう。
 またwhoisではこのような結果となった。
 Enterprise Networks UU-63-105-192-D4 (NET-63-105-192-0-1)
 63.105.192.0 - 63.105.207.255

 さて、デスクトップ上のPC-Cleanのアイコンをダブルクリックして起動する。
 「PC-CleanのDBがアップデートされダウンロード中です・・・暫くお待ちください。」

 キャプチャしたログでは、この時点になって初めてアップデートが行われているのを確認した。それでは先ほど出た表示は何なんだい?
 最終的に、エンジンバージョン:1.2.20051111、DBバージョン:2005112401
 検査/治療タブには「スタートページに設定したいURL」なる項目があるが、とりあえず無視し「検査」。

 結果として「問題となるアドウエア・スパイウエアは見付かりませんでした。」となった。

 存在しないレジストリエントリなりファイルでも表示してくれれば、相応に盛り上がるんだが。

 さて、Internet Explorerを起動し、アドレス欄に「スパイウェア」と入力した。これでどのような検索結果になるのか、と楽しみにしたのだが。
 PC-Cleanによるブラウザヘルパーオブジェクトではなく、普通にMSN Searchの検索結果が表示されただけだった。
 (これは正常な、インストール前と同じ動作である)
 ここでOSを再起動。
 またまたInternet Explorerを起動し、アドレス欄に「スパイウェア」と入力しEnterキーを押したものの、MSNサーチになっただけである。
 つまらんな、これは。JWordか何かのようなものを期待してたもののツールバーなども作成されず。またアドレスバーからの検索も実際には行われないんだろか。
 またC:\WINDOWS\Downloaded Program Filesフォルダは空なので、JWordのようにInternet Explorerのプラグインをインストールするタイプではないのだろう。

 コントロールパネルの「プログラムの追加と削除」よりアンインストールを試み、OSを再起動。
 しかし一部のレジストリエントリが残ったままの状態である。一例としてこれ。

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
 値の名前:PC-Clean
 値のデータ:C:\Program Files\PC-Clean\PC-Clean.exe /h
 Hijack Thisのログとして言い換えれば、このようになるだろう。
 O4 - HKLM\..\Run: [PC-Clean] C:\Program Files\PC-Clean\PC-Clean.exe /h


PC-Cleanを導入し、アップデートさせずに運用


 ネットワークから隔離した状況にて、予めダウンロードしておいたPC-CleanInst.exeを実行しインストール。
 デスクトップ上のアイコンをダブルクリックして開くと、エンジンバージョン:1.2、DBバージョンは空欄である。
 これでスキャンしたものの、誤検出は確認できなかった。

Googleツールバー導入時の挙動


 まずGoogle ツールバーを他のパソコンにてダウンロードし、これを導入しておいた。
 「検索に使用するGoogleサイトを選択してください。」の項目は、「日本(google.co.jp)」を選択。また「Googleを初期設定のサーチエンジンに設定して、Internet Explorerのアドレスバーで日本語ナビを有効にする」を有効とした。また「拡張機能を有効にする」を選択。
 更には、アドレスバーより一旦検索操作を行い、Googleツールバーの日本語ナビを有効とした。
 ちなみにGoogleツールバーの機能よりアドレスバー検索にてSempliceにて検索すれば「リストランテ センプリチェ」なる店が表示される。まぁ、それは置いておいて。

 PC-Cleanをインストール。インストール後にアップデートを促すダイアログにはOK。ネットワークキャプチャより実際にはアップデートは行われていないのを確認。
 Internet Explorerを起動。アドレスバーより検索すれば、スパイウェアにて先ほどの「Enchanting Sky」が表示されるので、デフォルトのMSNではなくGoogleツールバーが有効になっているのだろう。
 ここでPC-Cleanを起動する。アップデート開始。
 「検査/治療」より「スタートページに設定したいURL」の欄を操作せず、検査。

 「検査/治療」タブでは「131683個の検索DBで総3個のアドウェアが発見されました。」との表示が出た。

 まぁ、Googleツールバーも変な噂があったりするものなんだけどな。

 IE-Setting
 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
 値の名前:Search Page
 値のデータ:http://www.google.com
 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search
 値の名前:SearchAssistant
 値のデータ:http://www.google.com/ie
 DoubleStartPageSet
 HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main
 値の名前:Search Bar
 値のデータ:http://www.google.com/ie


PC-Cleanのテスト結果に不満足


 WindowsXP SP2にて散々試したのだが、どうにもこうにもPC-Cleanにより追加されるはずのキーワード検索機能(?)が追加されないのだ。
 おかしい。

 またWindows2000 SP4にてPC-Cleanを試したのだが。
 インストール後に実行ファイルを直接開けば、「Program FilesCommon FilesInstallShieldProfessionalRunTime0701Intel32DotNetInstaller.exe が必(http://oshiete1.goo.ne.jp/kotaeru.php3?qid=1511957)」と同様のエラーが出る場合・また出ない場合がある。しかし11月25日までではこのようなエラーは表示されたものの、翌11月26日以後は、このようなエラーは表示されないのだ。

 とりあえずは、WindowsXP SP2にて作成されたファイルを見直してみよう。

 C:\Program Files\PC-Clean\
 ndb.ndb
 ndb2.ndb
 ndb_c.ndb
 NliaControl.cpl
 NliaControlRes.dll
 nReport.exe 説明:nReport MFC プログラム
  調査レポート作成ツールらしい
 PC-Clean.exe 説明:PC-Clean
  PC-Cleanの本体
 PC-CleanUP.exe 説明:PC-Clean Update
  これを実行すると、PC-Clean.exeとnReport.exeのバージョンを送信し、最新バージョンを確認する
 pccleanlog.dll

 C:\Program Files\NLIA
 nlia.dll
 Update.exe 説明:NLIA Client
  謎。これをダブルクリックし実行したらば、404エラー
 UpdateRes.dll


C:\Program Files\NLIA\Update.exeを実行してみよう。
plugin.netpia.com(63.105.207.150)宛にリクエストが送信される。レスポンスのステータスコードが404なので、失敗している。
大体これは、何なんだろうね。Program Filesフォルダ中にわざわざPC-Cleanと別フォルダを作成しているし。


GET /nlia/jpn/version.inf HTTP/1.1
User-Agent: Update
Host: plugin.netpia.com
Cache-Control: no-cache

HTTP/1.1 404 Not Found
Date: Sun, 27 Nov 2005 22:02:09 GMT
Server: Apache
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

0


 現時点でのまとめは、このようになる。

  1. この時点で不審な動作は確認できなかった。
  2. アンインストールは失敗した。
  3. 他所様の話を眺め、日本語検索ツールバーでも作成されるのか・もしくはIEのアドレスバーより検索できるようになるのだろうと思い込んでいたのだが、そのような機能は無かった。
  4. Googleツールバーは削除対象となるのだが、その理由がわからない。
  5. パソコンなりOSの違いにより、導入に成功・失敗する例があるのだが、その法則性のようなものが見出せない。
     
  6. Windows2000 SP4にてOKWebでの相談例と同様のエラー表示は11月25日までには出現したが、11月26日以降には出現しなかった。
     
  7. NLIAが何なのかが不明。

 かなり時間をかけてOSを変え何度もテストしたものの。不具合なりが起きる原因が見出せず。
 無念ではありますが、利用するテスト機ごとに挙動なりが微妙に異なる理由がわからない現状にては、これ以上のテストは現時点では中止せざるおえません。
 何か見落としがあるとは思えど、見当つかずで。後日ある程度日数を置いてから再度挑戦する予定。  

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は新しいユーザーアカウントを作成する際に雛形となるテンプレである。これを汚染されると今後作成する全てのユーザーアカウントにて改変された設定が反映されてしまうため、注意を払う必要があるだろう。

  

2005年11月09日 - md5ハッシュ値と、改竄・改変ファイルの検出

MD5(Message Digest 5)とハッシュ


 hashe(ハッシュ)・message digest(メッセージダイジェスト)・フィンガープリント (fingerprint) ・チェックサム (checksum) とは、とあるファイルよりハッシュ関数にて算出される値である。
 このハッシュは一方向関数とも呼ばれる。これはデータよりハッシュ値を求めるのは容易だが、そのハッシュ値より元のデータと同じものを作成するのは極めて困難である点で「一方向」と呼ばれているのだ。
 このハッシュ値を比較すれば、ファイルの同一性・または改竄の有無を確認できるだろう。つまりその中身が改竄されていればハッシュ値が異なってしまい、なおかつ同じハッシュ値のファイルを偽造するのは困難であるため、「ハッシュ値が異なるファイルであれば、オリジナルのファイルとは異なるもの」であると判別できるだろう。

 これを利用したかった一番の目的は、マルウェア感染後のファイルの改変の検出である。マルウェアの感染実験を行う場合に、既存のファイルがマルウェアにより改変されたとする。その際にマルウェアによる偽装工作により作成日時・変更日時・ファイルサイズが変わらない場合、通常の検索では判別するのは困難である。
 しかしハッシュ値を作成し、保存しておいたハッシュ値と比較できるようなソフトウェアを利用すれば、マルウェアによるファイルの改変を容易に検出でき、よってマルウェアの傷跡を簡単に探し出せるだろう。
 (もちろんRootkitにより隠蔽されているファイルは、マルウェアに感染しているOSよりはそうそう簡単には確認できないだろう。そのような場合は、ハードディスクを引っこ抜き調査するか、ブータブルCDよりハッシュ値を作成するソフトを用いるしかない)

 MD5(Message Digest 5)では極めて稀にはこのハッシュ値が他のファイルと同じものとなり衝突(collision:コリジョン)する可能性(synonym:シノニム)はあるそうなんですが。MD5やSHA-1が実際にどれがどれだけ安全なのかは自分にはわからずで。
 詳しい話を知りたい方はIPAのRFC1321の和訳、MD5 メッセージダイジェストアルゴリズム(The MD5 Message-Digest Algorithm)(http://www.ipa.go.jp/security/rfc/RFC1321JA.html)でも読んで下さいな。

VirtualPC利用時での、md5deepによる改変ファイルの検出


 md5deepはJesse Kornblum氏により作成されたツールである。これはフォルダ・ドライブを指定し、それに含まれるファイルのMD5ハッシュを取得できる便利なものである。
 「md5deep-1.7.zip」に含まれる4つの実行ファイル、md5deep.exe、sha1deep.exe、sha256deep.exe、whirlpooldeep.exeはそれぞれ、MD5・SHA-1・SHA-256・Whirlpoolによるハッシュ値を取得するためのツールである。
 この場では作業手順の、具体的な流れを紹介する。

検証用機の準備


 感染テスト機(バーチャルマシン、ゲストPC)からの操作では、感染中ではその結果が正しいとは限らない。これはマルウェアに感染中のマシンでは、ファイルが隠蔽されている可能性があるからだ。
 そのため検証作業用のバーチャルマシンを用意し、これに感染テスト機のバーチャルハードディスクをDドライブとして接続し、作業を進める。
 これは実機での例に置き換えるとしたらば、感染作業用の実機のハードディスクを外し、検証作業用の実機にスレーブ接続するのと同じようなものだ。

1)md5deep-1.7.zipを検証用機のCドライブへ設置し、解凍。「md5deep-1.7」の名称のフォルダが作成される。
(解凍し作成された実行ファイルをダブルクリックしても、何も起きないので注意。)
2)Windows XP SP2のCD-ROMより、Q:\SUPPORT\TOOLS\SUPTOOLS.MSIを開き、Windows Support ToolsをSetupする。
C:\Program Files\Support Tools\Windiff.exeを動作テストしておく。


感染前の状態(Before)にてmd5シグネチャリストファイルを作成



1)感染テスト機(ゲストPC)を設定し、各種設定後に感染前の状態で保存しシャットダウン。
2)感染テスト機のバーチャルハードディスク(Before)を、検証用機のバーチャルマシンのDドライブとしてマウント。
3)コマンドプロンプトより起動。
4)「cd /d C:\md5deep-1.7」
(md5deep.exeを含む「md5deep-1.7」フォルダへ、カレントディレクトリを移動)
5)「md5deep -r D:\ > before.md5」
(Dドライブとして認識されている未感染のボリュームを丸ごと処理。
6)作成されたMD5シグネチャのリストbefore.md5ファイルを、共有ドライブに保存
7)検証用機をシャットダウンし、復元ディスクへの変更を破棄。


感染後の状態(After)にてmd5シグネチャリストファイルを作成



1)感染テスト機(Before)よりOSを起動。各種テストを行いマルウェアに感染させ、ファイルを新規作成・改変させる(以後Afterと呼称する)。シャットダウンし、変更を適用。
2)感染テスト機のCドライブ(After)を、検証用バーチャルマシンのDドライブとしてマウントする。
3)検証用バーチャルマシンのOSを起動。
4)コマンドプロンプトを起動。
5)「cd /d C:\md5deep-1.7」
(md5deep.exeを含む「md5deep-1.7」フォルダへ、カレントディレクトリを移動)
6)md5deep -r D:\ -x before.md5 > change.md5
(negative matching。クリーンな状態でのbefore.md5と比較し、変更点をchange.md5として保存)
7)「md5deep -r D:\ > after.md5」
(Dドライブとして認識されている感染中のボリュームより、md5シグネチャリストファイルを作成)
8)Windiff.exeを起動。「file」→「Compare files」より、「before.md5」と「after.md5」をコンペア。
(この後画面の表示がおかしくなるが、気にしない)
9)WinDiffより「Edit」→「Edit Composite File」を選択し、表示された結果をテキストファイルとして保存。


md5deepによるmd5シグネチャリストを検証する


 まずは感染テスト機の感染前(Before)のmd5シグネチャリストファイルと、感染後(After)のmd5シグネチャを比較し、変更点を検証する。
 参考とするために、特に変な操作をせずに再起動した場合のnegative matchingの結果であるchange.md5を、テキストファイルにして公開する。

 実際にファイルの操作をどのようにして探すのか、とりあえずは試してみよう。
 感染前の感染テスト機(Before)にて、以下のテキストファイルを作成しておいた。

  1. C:\md5\md5-1.txt
  2. C:\md5\md5-2.txt
  3. C:\md5\md5-3.txt

 感染テスト機(After)にて、以下の操作を行った。

  1. C:\md5\md5-1.txt →このファイルを削除
  2. C:\md5\md5-2.txt →ファイルを開き、何も編集せず上書き保存。変更日時のみが変わる。
  3. C:\md5\md5-3.txt →含まれる文章を変更し、保存。
  4. C:\md5\md5-4.txtの名称のカラファイルを作成

 change.md5ファイルをメモ帳で開いてみよう。
 この場合、change.md5にてはmd5-3.txtのみ、つまり中身を改変したファイルしかログに表示されなかった。言い換えるとmd5deepによるnegative matchingでは、ファイルの作成・削除は反映されないのだ。
 またファイルの変更日時は、MD5ハッシュには関わりが無かった。

 このnegative matchingでの欠点をやりくりする目的で、サポートツールのWindiff.exeを利用する。Windiffにより相違点を洗い出せば、新規に作成されたファイル・削除されたファイル・改変されたファイルのそれぞれのリストが得られるだろう。このリストから前述のchange.md5での結果を差し引けば、作成・削除されたファイルがいずれなのか判別できるはずである。
 Windiffなどを含むサポートツールは、WindowsXPのCDより「Q:\SUPPORT\TOOLS\SUPTOOLS.MSI」をダブルクリックしインストールする。
 Windiffにて2つのファイルを選択する際に、before.md5、after.md5の順番で選択した場合、上記のテキストファイル作成・削除・改変の結果はこのように表示された。

!> d41d8cd98f00b204e9800998ecf8427e D:\md5\md5-1.txt
<! ee9e579d242979bf3e1bdfd2e3a3ca7e D:\md5\md5-3.txt
!> 1bc29b36f623ba82aaf6724fd3b16718 D:\md5\md5-3.txt
<! d41d8cd98f00b204e9800998ecf8427e D:\md5\md5-4.txt


 なおボリュームに含まれるファイルを全てゴッソリと比較するようなソフトウェアもありますが。作成・削除されたファイルのリストをこれにより作成できる場合は、Windiffでの作業は必須ではない。その際には感染前(Before)のボリュームと、Beforeをコピーして作成しテスト作業に供試した感染後(After)のボリュームそれぞれを、検証作業用マシンにて参照して作業する事となる。
 しかしそのような作業を行うに当っては、くれぐれもWindowsOSを利用する上でのライセンスに抵触しないよう、注意を払ってもらいたい。

Acknowledge


 この記事を作成するにあたり、ツールを紹介していただいたmashさんと、必要以上に捻った自身でもわからない文章を校閲していただいたSakaiさんに感謝いたします。

関連記事


 マルウェア・ウイルスの感染実験
  

2005年11月04日 - マルウェア・ウイルスの感染実験

マルウェアの挙動を観察する


 スパイウェアなどに感染した場合、アンチウイルスソフトやスパイウェア対策ソフトには十分に期待できない場合がある。
 これは対策ソフトウェアのシグネチャファイル(定義ファイル)がリリースされるまでのタイムラグの問題のみではなく。作成されたマルウェア関連ファイルをメーカーに検体として提出しようにもどれが本体・ドロッパー・ダウンローダーなのかわからず。またブラウザハイジャッカー経由で複数のマルウェアをインストールされた場合はどうしたらばいいものなんですかね。
 恐らく最も簡単で確実なのは「何かに感染する悪質サイトのURI」を、メーカーにフィードバックする方法のように思われるんですが。これらは数日で消失する場合も多いものです。

 またよくどこかの掲示板などで話題になる話の一つとして、「あるソフトウェアをインストールしたらおかしくなった」、「あるURIを開いたらば何かをインストールされ」などの質問なり体験談なんですが。
 何らかの目的でこのような不具合例を実際に明らかにしようと試みるのは、大変困難なもので。メチャクチャ凄いプログラマーの方が解析するならともかく、自分はそのような経験は無いし。
 ですのでまぁ、とりあえず実際にウイルスなりスパイウェアなりに感染させてみて、その挙動を観察したりはしてみてはいるものの。やってみるとこれが中々難しく、泥沼。
 マルウェアがどのような挙動を示すのか、レジストリの改変やファイルの作成、また個人情報をいずこかに送信するのか。これらを実際に検証するとしたらば、極めて煩雑な準備が必要となります。

パケットモニタを導入し、ネットワークを監視する


 こちらの自宅はADSLで、ADSLモデムにルーターを接続し、NATを利用していますが。まずは自分がどうやっているのかを説明します。
 うちのルーターのLAN側セグメントへは複数のEthernetアダプタの差込口がありますが。このうちの1つのみを利用し、それをリピーターハブへ接続。それぞれのパソコンは、リピーターハブよりEthernetケーブルにて接続しております。

 感染実験を行う実験機とは別に、ネットワークを監視する目的のパソコンを設置しまして。この監視用パソコンにパケットモニタソフト、一例としてVIGIL(札幌ソフト開発工場)をインストールし稼動しておいて、と。

 大体こんな感じのトポロジー図(と言うほど偉そうなものではなく)

 このようなSnifferを設置しておくのは、以下のような効果を期待するからなんですが。

  • 感染したパソコンがどのような通信を外部と行うのかを監視する
  • 感染中のパソコンにては、その通信は隠蔽されている可能性もあり信頼できない
  • 感染実験機にて再起動なりシャットダウンを頻繁に繰り返すため、時系列的にまとめて別のパソコンにて観測する必要がある

リピーターハブを使っている理由


 何故にスイッチングハブではなくリピーターハブを用いるのかと言えばですね。snifferにてネットワークを監視する際には、Ethernet上(つまりLAN上)の全てのやりとりを拾う必要があるんですが。スイッチングハブでは宛先以外のパソコンにはフレーム(LAN上で送受信される情報の単位)を送信しないんですね。スイッチングハブでもミラーポートなる全てのフレームが届くポートがある製品もあるんですが。うちの自宅には、ミラーポートが実装されているスイッチングハブがありません(笑。またミラーポートは通信量が凄まじくなれば、稀に取りこぼしが生じるようで(高額なスイッチングハブならばそうでもないんですかね、その辺の知識がやや欠如してるんですが)。それに貧乏だし。
 そこでこのリピーターハブを利用してるんですが、売れ残りで価格は千円ちょいだった記憶です。リピーターハブは、目的以外のパソコンにまで全てのフレームを送信するハブで。5年ほど前は家電量販店で販売されているハブはほぼ全てこのリピーターハブだったものの、時代の流れか消えつつあります。
 (Gigabit Ethernet向けリピーターハブも世の中にはあるんですが、7万円程度で手が届かず)

感染実験機をどう準備するか


 まず悩むのが、どのようなパソコンを人柱なり感染実験機にするのかとの点なんですが。
 幾人かは、実機にてテストしているようで。
 例えばCドライブに普通にOSをインストールし、それをNorton Ghost(Symantec)などでバックアップしておき、一通りテストが済んだらば元に戻すとか。もしくは感染中の状態に戻すため、イメージを元に復旧したりとか。
 Norton GoBack(Symantec)、これはSymantecが買収する前のものを以前はよく利用したんですが。頻繁にハードディスクへの書き込みが発生し、動作が遅くなるし、使い勝手はあまり良くはなかったと記憶しております。
 多少複雑な例として、Cドライブに管理用のOS、Dドライブにデュアルブートで他のOSをインストールし。DドライブのOSより感染実験を行っていた方が居ましたが。この場合はCドライブにてNTFSのアクセス権を設定しておかなければ、Dドライブに感染したウイルスによりCドライブの中のファイルを破壊される危険性があります。

 実機ではなく、エミュレーターを利用しテストしている方も居るようで。
 自分はMicrosoft Virtual PC 2004(Microsoft)(以下、VPC)を利用しておりますが。企業では動作テストのためにVMwareを利用する方が多いようです。
 このようなエミュレーターと実機との違いは、中々難しいんですが。ざっと説明するとしたらば。

  • 実機の方が、エミュレーターよりも動作が快適
  • 復旧・もしくは感染時の状態を再テストするには、エミュレーターの方が簡単
  • エミュレーター上のゲストOSにウイルスが感染しても、エミュレーターをインストールしているゲストOS(実機)には感染しない

    • 以前、ゲストOSより利用したフロッピーディスクが破損してしまった事故はありましたが

  • エミュレーターでは、複数のディスクイメージファイルを容易に比較でき、ハードディスクを物理的に外したりする必要は無い
  • エミュレーターでは、OSのライセンスの問題が生じる可能性があるため注意が必要(ライセンス購入しておけば宜しい)


 なおこの感染テストにおいては、どのOSを利用するのかの判別が難しく。Windows2000のSP未適用機、WindowsXPのSP未適用機、WindowsXP SP2の最新の状態など、それぞれを準備する必要が生じる場合もあるだろう。
 それらは必要に応じ判断してもらいたい。

VPCのゲストOSとしてXP HomeEditionをインストールする



 EドライブにVirtual PC関連ファイルをまとめて管理しているので、その辺は読みかえてもらいたく。

 ファイル→バーチャルディスクウィーザードを起動。
 「新しいバーチャルディスクの作成」→バーチャルハードディスク→F:\ドライブを選択し、バーチャルハードディスク(vhdファイル)を保存。
 「バーチャルハードディスクのオプションの選択」から、「容量固定」を選択、「バーチャルハードディスクのサイズ」で任意のサイズを選択。
 (容量可変の拡張バーチャル ハード ディスクでも構わないんだが)

 ファイル→「新しいバーチャルマシンウィーザード」起動
 「既定の設定を使用してバーチャルマシンを作成する」でなく、「バーチャルマシンの作成」を選択
 「バーチャルマシンの名前と場所」にてそのまま「New Virtual Machine」でなくF:\ドライブにバーチャルマシン構成(vmc)を保存→次へ
 「オペレーティングシステム」にて「その他」→RAMの調整より512B
 「バーチャルハードディスクオプション」より「既存のバーチャルハードディスク」を選択し、「バーチャルハードディスク.vhd」
 「復元ディスクを有効にする」のボックスにチェックを入れる

 WindowsXP Home Edition SP2 CD-ROMにてセットアップ
 (もちろん、目的なり必要に応じSP未適用のXPでもいいし。またWindows2000でも構わない)
 インストール時にCDよりパーティションを作成、「NTFSファイルシステムを使用してパーティションをフォーマット」を選択。
 「バーチャルマシン追加機能は、このバーチャルマシンにインストールされていないようです」のダイアログが出るが無視。
 その後は定法に従いOSをインストール。

 OSが起動し、デスクトップが表示される。
 「バーチャルマシンの追加機能」をインストール。


テスト機向けに、環境を整える


 自分としてはWindows2000 likeな環境の方が使いやすいのだ。そのためチョコチョコと変更する。なおスクリーンセーバーやモニタの電源の設定を操作する理由は、テスト時にこれらが稼動すると面倒との理由だけであり、それほどの意味は無い。まぁアンチウイルスソフトなどの長時間の稼動中にいきなりスタンバイ状態になったりするのは、いい気分ではないし。いずれも無効化しておく。

表示の変更



 画面のプロパティ→デスクトップ→背景→「草原」から「なし」に変更
 画面のプロパティ→スクリーンセーバー→スクリーンセーバー:Windows XP/待ち時間:10分→スクリーンセーバー:無し
  電源設定タブ→モニタの電源を切る→「20分後」から「なし」に変更
 画面のプロパティ→スクリーンセーバー→→モニタ電源→電源→[自宅または会社のデスク]の電源設定→(モニタの電源を切る:20分、(「ハードディスクの電源を切る」は表示されていない)→「なし」に、詳細設定→オプション→「アイコンをタスクバーに常に表示する」にチェックを入れないままにしておく
 画面右下のアイコンより、ライセンス認証→「はい、今すぐインターネット経由でライセンス認証の手続きを行います」を選択
  「Windowsのライセンス認証の手続き中にユーザー登録も行いますか?」にて「いいえ、Windowsのライセンス認証の手続きを行い、ユーザー登録は今行いません」を選択
 コントロールパネル→自動更新より、「自動(推奨)」を「自動更新を無効にする」に変更。
 (自動更新機能については、XPのバージョン次第ではOSインストール時に設定できる)
 光学ドライブのドライブレターがDになっていたので、管理ツール→ディスクの管理から、Qに変更

 Cドライブを開き「表示」→「ツールバー」→「アドレスバー」
 「表示」→「ツールバー」→「ツールバーを固定する」のチェックを外し、右側に押しやられているアドレスバーを動かし表示させた。

 タスクバーの上でマウスを右クリック→プロパティ→「スタートメニュー」タブ→「クラシック[スタート]メニュー」に変更、カスタマイズ→「頻繁に利用するメニューを優先的に表示する」のチェックを外す
 (これによりデスクトップ上に、マイドキュメント、マイコンピュータ、マイネットワーク、Internet Explorerが表示された。)

 シャットダウン、「バーチャルハードディスクへの変更を適用する」



ネットワークとInternet Explorerの設定



 インターネットのプロパティ→接続→セットアップ→新しい接続ウィーザード→次へ
 「ホームネットワークや小規模オフィスのネットワークをセットアップする」→次へ→完了した。
 「ネットワークセットアップウィーザード」が開始される。→キャンセル
 IE起動。「プライバシー」なるダイアログでクッキーの警告が出るが、「このメッセージを今後表示しない」にする。
 IEのプロパティから、Cookie、一時ファイルをクリア、履歴クリア、
 オートコンプリートの設定で、「Webアドレス」「フォームのユーザー名およびパスワード」「パスワードを保存する確認をする」の3つにチェックが入っていたが、[オートコンプリートの使用目的]の4つの項目のチェックを全て外れた状態にした。
 クッキーを「中」より「すべてのCookieをブロック」に変更

 IPアドレスを今後運用するプライベートIP addressに変更
 (ゲストごとに個別のスタティックなIP addressを利用するため)


検索画面をWindows2000と同様にする


 これは個人の好みの問題ではない。XPでの検索は犬が出てうっとおしいし、そして何故かデフォルトのままでは検索に時間がかかるようになるのだ。そこでWindows2000と同じような検索画面に変更する。

 regeditより「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Explorer\CabinetState」を開く。
 新規より名前が「Use Search Asst」の文字列値を作成し、値のデータは「no」とする。


隠しファイルなどを調べやすいよう、フォルダオプションの設定を変更


コントロールパネルを開き、フォルダオプションから表示を選択。

 「システムフォルダの内容を表示する」にチェックを入れる
 「ファイルとフォルダの表示」にて「隠しファイルおよび隠しフォルダを表示しない」から「すべてのファイルとフォルダを表示する」に変更
 「登録されている拡張子は表示しない」のチェックを外す
 「保護されたオペレーティングシステムファイルを表示しない(推奨)」のチェックを外す
 「タイトルバーにファイルのパス名を表示する」にチェックを入れる


レジストリエディタの状態の復元を無効とする


 何度もレジストリエディタを開いて操作する際に感じるんだが、前回開いたキーがそのまま開かれた状態になっているのは大変不便で。
 元ネタはWindows Start 2002年8月号の22pですが、どうも環境により個別に必要とされる操作は異なるようで。その辺は自分で考えてもらいたく。
 (XP HpmeEdition Goldをインストールした際のメモでは、(2)→(5)→(6)→(7)→(8)の手順で設定。)

 Windows XPの初期状態では、レジストリエディタの起動時に前回レジストリエディタを終了した時点で開かれていたキーが開かれる。
 1)HKEY_CURRENT_USER→Software→Microsoft→Windows→CurrentVersion→Applets→Regedit→Favoritesというサブキーが無ければ(2)、あれば(3)
 2)「regedit」キーを選択した状態で(無いのでRegeditの名称で作成した)、<お気に入り>メニュー→<お気に入りに追加>を選択→「お気に入りの名前」欄に半角で「regedit(Regeditの名称でやった)」と入力された状態のままOKボタンを押す。
 3)「Favorites」キーを右クリック→アクセス許可→詳細設定→「Favoritesのセキュリティの詳細設定」→アクセス許可タブ→「子オブジェクトに適用するアクセス許可エントリを〜」のチェックを外し、表示されたメッセージダイアログのコピーボタンをクリック。さらにOK→OK
 4)左ウィンドウでステップ1の「Regedit」キーを選択した状態で、右ウィンドウの「LastKey」アイコンをダブルクリック。値のデータ欄に入力されている文字欄を全て選択して、右クリック→削除を選択。「値のデータ」欄がクリックされたら、OK
  (LastKeyが無い場合はスキップするが、ある場合は実行)
 5)レジストリエディタの左ウィンドウで「Regedit」キーを右クリック→アクセス許可を選択→「Regeditのアクセス許可」ダイアログが表示されるので、「詳細設定」ボタンをクリック
 6)「Regeditのセキュリティの詳細設定」ダイアログが表示されたら、<アクセス許可>タブで「子オブジェクトに適用するアクセス許可エントリを〜」のチェックを外し、表示されたメッセージダイアログの<コピー>ボタンをクリック。さらに<OK>ボタンをクリックして、「Regeditのセキュリティの詳細設定」ダイアログを閉じる。
 7)「Regeditのアクセス許可」ダイアログに戻ったら、画面の上半分の「グループ名またはユーザー名」の一覧で、「System」という項目以外の「フルコントロール」「許可」のチェックを外す
 8)レジストリエディタを終了


[最近使ったファイル] に履歴が残らないようにする



 [スタート] − [ファイル名を指定して実行] − [regedit] と入力する。
 レジストリエディタが起動したら、 [HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer] を開く。
 右ウィンドウの何もないところで [右クリック] − [新規] − [DWORD値] を選択して、名前を [NoRecentDocsHistory] にする。
 [NoRecentDocsHistory] をダブルクリックして、 [値のデータ] を [1] にする。 ちなみに16進。
 タスクバーの上でマウスを右クリック→プロパティ→[スタート]メニュー→クラシックスタートメニュー→カスタマイズから、最近使ったファイルをクリア
 (即座には反映されないが、OSを再起動してみると反映される)


その他細々と



 タスクトレイよりWindows Messenger起動。
 [ツール] - [オプション] - [設定]タブ - [全般]より「Widnowsの起動時にこのプログラムを実行する」と「常にこのプログラムをバックグラウンドで実行する」のチェックを外す。

 「画面のプロパティ」→「デスクトップ」タブ→「デスクトップのカスタマイズ」→「全般」タブ→「デスクトップのクリーンアップ」→「60日ごとにデスクトップクリーンアップウィーザードを実行する」のチェックを外す
 (この設定をやっておかないと、いずれ起動時に頻繁に出てうっとおしいのだ)

 C:\Windows\Prefetchフォルダの中身を通常モードで削除。
 (一旦この操作をしないと、次の操作にて失敗するファイルが生じるから。)
 マイコンピューターからハードディスクのプロパティを開き、「このディスクにインデックスを付け、ファイル検索を速くする」のチェックを外す → 「C:\、およびサブフォルダとファイルに変更を適用する」のまま、OK
 (万が一失敗した場合、インデックスをまた付けてから、セーフモードでOSを起動してPrefefetchフォルダの中身を削除し、インデックスを外す)


tmp、tempなどの一次ファイルを処分しておく



 以下のフォルダのdesktop.iniとindex.datを除く全てのものを削除。
 これらのフォルダは通常はフォルダオプションより設定したとしても表示されないので、スタートメニューからの「temp」検索結果またはディレクトリをファイル名を指定して実行に入力し開き処理する。
 C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5
 C:\Documents and Settings\Default User\Local Settings\Temporary Internet Files\Content.IE5
 C:\Documents and Settings\LocalService\Local Settings\Temporary Internet Files\Content.IE5
 C:\Documents and Settings\NetworkService\Local Settings\Temporary Internet Files\Content.IE5
 C:\WINDOWS\system32\config\systemprofile\Local Settings\Temporary Internet Files\Content.IE5

 また全てのtmpファイルを削除する。


感染テストのために、ソフトをインストールしておく


 以下の項目でインストールしておくソフトウェアは感染実験機のみではなく、場合によってはそのハードディスクを引っこ抜いて接続し調査したり、またVPCであれば感染したディスクイメージをDドライブとして設定・起動し調査するための他のゲストOSにも導入しておくのが望ましい。

アンチウイルスソフトの準備


 まずは常駐監視機能が備わっているアンチウイルスソフトが必要だ。個人的に推奨するのは、McAFEE製品である。これはMcAFEE製品はWindows・Internet Explorerの脆弱性に、Microsoft以上に早く対応している、ような気がするからだ。
 これは好みにより、Nortonでもウイルスバスターでも好きなものを用いても良いし。必要に応じてそれぞれ複数の製品をインストールした個別のディスクイメージを作成し、それぞれの製品により検出できるか否かを検証しても良いだろう。
 注意すべきは、これらの製品のアップデートを行い不具合が生じるのか否かを確認しなければならない点である。万が一の事態を避けるならば、発売された直後の新バージョンよりもむしろ、一つ前の旧製品の方が望ましい場合もあるだろう。
 実際にテストする際には、常駐監視機能を無効化したり、また起動時スキャンを無効にする場合もあるだろう。それらは目的に応じ設定してもらいたい。

 なお実際にテストを行う前には、インストールするアンチウイルスソフトとは別に、最新のANTIDOTE for PC AntiVirus SuperLite - 簡易版ウイルス検索ユーティリティを準備するよう推奨する。


セキュリティ対策製品の準備


 このブログを読む方はそれぞれ含蓄があるだろうし、それについてはサラっと。
 パーソナルファイアーウォールソフトを導入しておけば、意図しない通信を監視できるだろう。しかしマルウェアの感染によりこのようなソフトが機能しなくなる場合もあると留意してもらいたい。

 Ad-aware、SpyBotなど、スパイウェア対策ソフトも必要となるだろう。

NTFSのADS(代替データストリーム)


 まず目にする機会は無いものの、一応念のためNTFS代替データストリームを利用するマルウェア検出の準備をしておく。
 断っておくが、このADSを利用しているファイル・フォルダが検出されたとしても、それが即怪しいものとは限らない点には注意してもらいたい。
 このNTFS代替データストリームを含むファイルはAd-awareSEにて検出されるのだが、他にも有用なソフトウェアは複数あり、またどのようなものなのかを判別するために、NTFS 代替データストリームに関するメモ(B-) の独り言)などを参考としてもらいたい。

 これを利用するマルウェアとしてはW2K.Stream(Symantec)(Symantecでの発見日は2000年9月5日)が最も最初のものであり、その後はそれほど多くは無いが誕生しているようだ。

 まずはADSを含むファイルが検出されるか否かをテストする目的で、予め以下の手順に従いテストファイルを作成し実験してもらいたい。
 テスト用ファイルの作成方法は、NTFS 代替データストリームに関するメモ(B-) の独り言)にて紹介されていた方法を少し改変した。

echo "Stream test" > c:\a.txt:stream1.txt

 これでCドライブにa.txtの名称のファイルが作成される。

 今気付いたんだが)この原稿を書くに当ってAd-awareSEにてスキャンしたところ、保存していた怪しいファイル中にこのADSのデータストリームを含むものを発見した。何と言ったらばいいんだろうか・・・・・・・・・・・・

各種ユーティリティソフトの準備


 案外忘れがちなのが、感染中に表示されるダイアログなどをキャプチャするソフトウェア。このようなソフトにより作成される画像はメモにも役立つし、またテスト結果を公表する場合にも必須となります。
 Printscreenキーを利用してそれを貼り付けるのも、まぁ、いいんですが。
 マルウェアに感染中のマシンでは大変パフォーマンスが落ちており、中々これが難しい。
 自分はWinShotを推奨。これはショートカットキーによりキャプチャ画像が作成でき、そしてアクティブウィンドウのみ、また指定した範囲のみをキャプチャなど、大変便利なのでして。

 レジストリ関連としては、まずはRegDiff(清水 洋平's Valuable Softwares)。これは感染前と感染後のレジストリの改変を探す目的で利用するんですが、使い方はとりあえずRegDiffでレジストリを簡単に管理しましょう♪(Tef-room)を参考としてもらいたい。感染実験機以外のパソコンにも導入しておき、別マシンでレジストリの差分ファイルを作成し、修復用regファイルを作成する際にも役立つ。
 次に、レジストリ番犬バロンレジストリ番犬バロン(アーリバードのシェアウエアサポート)
 ここで一応断りを入れておくのだが。感染中のパソコンにてregeditを起動しても、一部の値などは隠蔽されている可能性もあるのには注意してもらいたい。

 レジストリの修正を監視するのに最も役立つツールは、Regmon(Sysinternals)である。レジストリの改変がチェックできるため、Rootkit固有のレジストリをログファイルより探したり、また修復作業がうまくいかない場合に見直す際に役立つだろう。しかしログファイルのサイズなりが膨大になるため、これをじっくりと調べるにはかなりの時間を要する可能性がある。


作成・改変されたファイルの検出


 感染時に生じるファイルの作成・改変を監視するには、Filemon(Sysinternals)が最良なのだが、これも前述のRegmonと同様、ログファイルが膨大となる。利用に当ってはある程度の時間を区切ってログのチェックを行うのがスマートである。
 TRIPWIREなどはサーバー向けだし、どうも違うような気がする。

 また感染中のOSでは、その結果がどこまで信頼できるのかが判別できない。そのため感染実験を行うマシンのハードディスクを外し、検証作業用マシンにスレーブ接続・もしくは外付けハードディスクケースを利用し、作成・削除・改変されたファイルの有無を検証する必要がある。

 CompDirなるツールもあるんだけど、これもなぁ。
 まめFile(AMA Soft)などは便利であるものの、作成・変更日時が誤魔化されている場合にはどうも。

 感染前・感染後のVPCのゲストOS用ディスクイメージファイルを他のゲストOSより参照して比較し調査したいのだが。
 ドライブ単位で丸ごと比較し扱え。ファイル・フォルダの作成・変更日時、またファイルサイズに変更点が無かった場合でもMD5シグネチャなどを利用し改変の有無を調査できるソフトがあれば大変ありがたいと考えていたらば、md5deepなるソフトを紹介していただいた。
 「md5ハッシュ値と、改竄・改変ファイルの検出(Semplice)」に使い方をまとめたので、参照していただきたい。

起動エントリを調査するソフトの準備


 予め断っておくんですが。レジストリのRun設定なりスタートアップフォルダを利用し、特定のソフトを起動するよう設定するとして。それらの設定、つまりHijackThisのログに表示されるようなものをこの場では「起動エントリー」と呼称しときます。
 そしてこれらのソフトウェアは、感染実験機のみにインストールしときます。

 まずはHijackThis。基本でしょうこれは。
 ただどうも違和感を感じている話なんですが。このHijackThisにしても他のユーティリティソフトにしても、起動エントリーをチェックしそのログを作成したとしても、「それが本当に正しいのか」は判別できない場合がある。
 この手のユーティリティソフトによっては、既存のファイルの改変・置換はわからない場合もあるし。また安全であると一般に考えられるようなファイルの名称と同じ名称の危険なファイルがあった場合、それを安全なものと勘違いしログより見逃す可能性があるだろう(擬態・偽装するマルウェア - ファイル名・エントリ名とHijackThisによる修復の難(Semplice))。
 また一般にRootkitと呼ばれるようなタイプのマルウェアが存在する場合、HijackThisでは検出できない起動エントリが存在する可能性もある点には、注意を払わなければならない。

 またサービス管理のため、SDELIST(有限会社 軟式)

Rootkit対策


 Rootkitに感染した場合、感染中のパソコンよりは関連ファイル及びレジストリを確認できなくなる可能性がある。これらRootkitの対策として、以下のツールを利用できるようにしておく。
 RootkitRevealer(Sysinternals)を準備しておこう。
 BlackLightはF-Secure社のRootkit対策ツールである。2006年1月には配布が終了する可能性があるが、どうなるんですかね。詳しい情報はPCに潜むRootkitを検出する新技術「F-Secureブラックライト」(ITmedia)を。
 このBlackLightは最近では、Sonyのコピー防止機能にRootkitが用いられていた件にて話題となっている(The "Sony rootkit" case)。


トラップ用メールアドレスの準備


 テスト前にOutlook Explessを起動し、example@example.comなどのメアドを登録し、Vigilのパケットキャプチャのログにて個人情報の漏洩の有無を確認する目的で走査していたのだが。
 マルウェアごとに捨てアドを作成し、そこにテスト後に何らかのメールが届くか否かを確認する手法を採る事にする。この場合のメールアカウントはmzcizaeaなど全く無意味で冗長なアカウント名とし、「偶然の一致」を避けるようにする。
 これはスパムや何らかの罠メールが、ユーザーのパソコンより抜かれたメールアカウント宛に届くのか否かを確認する目的である。

 イカさんの投稿を見て思いついたのだが。
 Regmonにて得たログをチェックする際に、デフォのメールアカウント及び送信者名を検索するのも一手だろう。

ブータブルCDの準備


 感染中のシステムよりは確認できないファイル・レジストリ・サービスなどが存在する可能性を考慮し、CDより起動し感染中のシステムのハードディスクを調査する方法がある。
 この方法では、Rootkitに感染しているシステムであっても、その隠蔽行為を回避できるだろう。

 サービスでは、Windows OSのCD-ROMより回復コンソールを起動し、LISTSVCコマンドより不審なサービスが無いか確認する方法が挙げられる。感染中のシステムでは見つからなかったサービスがこれにより発見できた場合、「disable サービス名」によりそのサービスが起動しないように処置できる。

 PE Builderなるツールを用いて、WindowsXPのブータブルCD-Rを作成する方法も考えられる。しかしWindowsOSのライセンスはどうなるのかな。実際にろくに試していないため、ここでは参考となるサイトを紹介するに留める。
 PE BuilderでWindowsXPブータブルCDROM(BartPE)を作ろう(NN SPACE)
 自分好みの緊急用ブートCDをつくろう! 〜Bart's PE Builder〜(MYCOM PC WEB)

 その他、Linspire(旧称:Lindows)のブータブルCDなど。これは削除できないファイルを処理したり、またWindows上から確認できないファイルを探し削除するには役立つ。
 またERD Commander 2005などの有料のユーティリティツールもあるのだが。その辺は自分で試行錯誤してもらいたい。

作業の前に


 まずは感染実験前に、tmpファイル・フォルダ、またIE関連ファイルなりの削除を確実に行わなければならない。更にはスタートメニューのプロパティより、最近使ったドキュメント、プログラム、Webサイトの記録を削除。
 またアプリケーションのインストールや更新は、テストを行う前日までに済ますのがベター。これは日付を元にファイルを検索する場合の利便性のためである。

 WindowsXPであるならば、最終的なセットアップが完了した時点で、システムの復元のバックアップポイントを作成しておく。
 これはシステムの復元機能により修復が可能なのか否かを判別するにも役立つ。

 何を目的とするのかにより、インストールし準備するソフトウェアなり、また設定は異なると思われるんだけど。
 一例としてWindowsのあるパッチを導入しなければどうなるのかを検証するならば、それを除きセットアップし。最新の状態でテストしたいならば、Service Packを導入後にWindows Updateを行うなど。
 基本的な作業の手順としてまず考えるべきは、「感染中のパソコンにて操作するソフトウェア」、または「感染中のハードディスクイメージファイルを他ゲストOSにて利用」もしくは「感染中のハードディスクを引っこ抜いてスレーブ接続・外付け接続」した場合に、どのようなソフトウェアを利用するのかの判断で。
 まずは感染中のシステムにより得られる情報は、必ずしも正しいものではないとの前提にて、「感染中のパソコンにて実行すべき操作・またはソフトウェア」と、それを外から眺め検証する環境より利用する操作、これを切り分け判別しなければならない。


課題


 マルウェア感染中のパソコンは、世の中の他のパソコンに対して感染活動を行う可能性がある。マスメーリングな(大量のメールを送信)などはルーターのポートフィルタリングにより予防できるのだが。その他の手段により他所を攻撃するような場合は、これを防止しなければ第三者に迷惑をかける可能性がある。
 ルーターとWANとの接続を切断してテストを行うと、マルウェアのアップデートもしくはその他のマルウェアの「呼び込み」を阻止してしまう可能性がある。
 マルウェアの中には、実機でテストした場合にはともかく、エミュレーター上でのテスト時には正常に動作しない(?)ものもあるようだ。
 Virtual PCでは、個別・もしくはひとまとめにて数ギガ単位のファイルを共有フォルダにて利用する場合、ファイルが破損したりゲストOSが固まる例がある。

関連記事


 隠蔽されているマルウェア・ウイルス・スパイウェアを発見する
  

2005年11月01日 - ASC(Anti-Spyware Coalitionm)のスパイウェア等の定義

 スパイウェアの発展はより一層異様な事態となり、またスパイウェア配布者の悪質さもエスカレートしつつある現状なんですが。
 Anti-Spyware Coalitionはそのような状況に対応する目的で設立され、メンバーは消費者団体・業界団体・学者・アンチスパイウェアソフトメーカーとその販売元で構成されまして。それらの知識を持ち寄り、共通の定義を作ったりまた対策ソフトの向上を図るのが目的のようです。
 この団体が今回マルウェアスパイウェアについてのこのような共通の定義を設定した理由として、各対策ソフトメーカーごとに用語の定義なりマルウェアスパイウェアに対する扱いが異なっていれば、マルウェアスパイウェア配布者に対して十分な対応がとれないのみだけではなく、「自分の会社が配布しているのはスパイウェアではないのにスパイウェア扱いされた、どうしてくれる!」などの怪しい抗議を避ける目的もあるようです。
 (過去にもそのような訴訟がありましたな)
 もちろん、マルウェア作成者が、この定義に抵触しないように悪質なソフトウェアを作成・配布する可能性は否定されていないんですが。それはこれからの経緯を見守りますか。

 このASC(Anti-Spyware Coalition)なる団体がスパイウェアの定義を設定しようと試みているのは、以前2005年06月25日 - Anti-Spyware Coalitionとスパイウェアの定義(Semplice)にて紹介したんですが。これが様々な協議を重ね、ある程度完成したようです。
 まぁとりあえず。Definitions and Supporting Documents(ACS)を眺めてみましょうか。
 (なおAnti-Spyware Coalition、スパイウェアを定義した文書を公表(INTERNET Watch)にて永沢 茂記者は、「ASCはスパイウェアの定義として」と記述したが、後述する通りこれは広義のスパイウェア、つまり「スパイウェア及びその他の困った技術」についての言及であるのに注意してもらいたい。)


Spyware and Other Potentially Unwanted Technologies
Technologies deployed without appropriate user consent and/or implemented in ways that impair user control over:

Material changes that affect their user experience, privacy, or system security;
Use of their system resources, including what programs are installed on their computers; and/or
Collection, use, and distribution of their personal or other sensitive information.
Definitions and Supporting Documents(ACS)


 和訳してみたものの、わかりづらい和訳の結果は、こちらの英語力の至らなさによるのではないような気がする。
 (and/orは、これらに一つでも抵触したらばそれは、「Spyware and Other Potentially Unwanted Technologies」となるの意味として受け止めてもらいたい)
 スパイウェアとその他の潜在的に望まれない技術(後述するがこれは広義でのスパイウェアに該当する)としてこのように公表した。
 以下のうち一点にでも抵触すれば、それは歓迎されないソフトウェアとの趣旨なのだが。

 ユーザーの適切な同意を得ず。
 そして/もしくは以下の項目にて、ユーザーの管理を害するもの

 user experience(ユーザーの経験とは何ぞや?)、プライバシー、システムセキュリティへ実質的に変化を与え。システムリソースを利用し、プログラムをインストール。
 そして/もしくは個人的・機密性が高い情報の収集・利用・配布。

 
 「Examples of Spyware and Potentially Unwanted Technologies」の項目には(狭義の)Spywareのみではなく、Snoopware、Keylogger、Screen Scraper、Nuisance or Harmful Adware、Backdoors、Botnets、Droneware、Unauthorized Dialers、Hijackers、Rootkits、Hacker Tools (including port scanners)、Tricklers、Unauthorized Tracking Cookiesについての簡単な特徴及びその弊害と、またユーティリティツールとして用いられた場合の視点が記述されている。
 細かい個別のマルウェアについての定義は、Glossary(Anti-Spyware Coalition)を読んでもらいたい。

 例としてSpyware(スパイウェア)は、このように記述されている。

Spyware: The term Spyware has been used in two ways.
In its narrow sense, Spyware is a term for Tracking Software deployed without adequate notice, consent, or control for the user.
In its broader sense, Spyware is used as a synonym for what the ASC calls “Spyware and Other Potentially Unwanted Technologies.”
In technical settings, ASC uses the term Spyware only in its narrower sense and always marks it as such [spyware(narrow)]. However, we understand that it is impossible to avoid the broader connotations of the term in colloquial or popular usage, and we do not attempt to do so. For example, we refer to the group as the Anti-Spyware Coalition and vendors as makers of anti-spyware software, even recognizing that their scope of concern extends beyond tracking software. Therefore, the term spyware, when used generally in an ASC document will always refer to the broader colloquial usage.
Glossary(Anti-Spyware Coalition)


和訳してみる。

 スパイウェアの定義は二つの方法で用いられる。
 狭義の意味では、スパイウェアはユーザのために適切な通知、同意、あるいはコントロールなしで設置されるトラッキングソフトウェアのための用語である。
 広義では、スパイウェアはASCが「Spywareと他の潜在的に望ましくない技術」と呼ぶもののために同義語として用いられる。
 専門的な状況では、ASCはスパウェアを狭義の意味だけで用いて、常にそのような(狭義の意味での)スパイウェアとして表記する。
 しかしながら、私達は口語もしくは一般的用法における広い意味を忌避しようと試みるのは無理であり、そしてそのように試みたりはしない(「広義でのスパイウェアの用法にケチをつけるような行動はしない」の意味)。
 例として、我々はanti-spyware softwareであるAnti-Spyware Coalitionのグループやベンダーが、トラッキングソフトウェアの範疇を超えて(スパイウェアとして)認識していると言っておく。
 そのため、スパイウェアなる用語は、ASCの文書にて一般的に利用される場合には、広く口語的に広く利用されている利用法(広義でのスパイウェア)を参照するだろう。


 これをざっと眺めただけでは、広義・狭義でのスパイウェアなる用語の使い分けがわからない方も多いものと思われますので。自分の推定なり推測を挟む解説を。
 何故にこのような「(広義での)スパイウェアの定義」にわざわざ言及し、それについてベンダーなりに口を挟まないとし、そして狭義のスパイウェアと広義でのスパイウェアを混在させた内容にしたのかとの謎が残るんですが。
 
 ASCに参加しているベンダーなどを眺め事情を鑑みるとですね。一例としてトレンドマイクロ社は2004年10月23日 - トレンドマイクロ広報からスパイウェアの定義について返信が来たにて紹介したように、スパイウェアでも何でも無いものを、「スパイウェア」として呼称しております。トレンドマイクロ社の広報担当者によればどうもあやふやな話を繰り返すだけで、結局いつの間にかあちらのページを改訂なされ、まともな回答はいただけなかったんですが。
 これはどうもトレンドマイクロ社の話を伺った限りでは、「スパイウェア」の語感の悪さを利用した、FUD的マーケティングの産物のようにしか考えられないんですね(FUDとは何ぞやとは、「2005年02月14日 - FUD-恐怖(fear)・不安(uncertainty)・疑念(doubt)-悪質なマーケティング(Semplice)」を参照してもらいたい)。

 多少底意地が悪い話になりますが。一部のメーカーが「スパイウェアでは無いものをスパイウェアとして呼び、ユーザーの不安を煽っている」現状を、ASCは(放置すると明言している事により結果として)後押ししているとしか思えないのです。

ASCによる広義のスパイウェアへの追認は失敗だった


 スパイウェアであろうがなかろうが、スパイウェアなる語感の悪さを利用(悪用)し、エンドユーザーの不安感を煽り立てるために広義のスパイウェアは悪用されてきた。ASCはマーケティング目的で悪用された用語に対し、後追いで追認してしまった。これが広義のスパイウェアなる定義が誕生した経緯である。

 ASCによる広義のスパイウェアは「Spyware and Potentially Unwanted Technologies」、和訳すると「スパイウェアと潜在的に望ましくはない技術」である。

 ASCの最大の失敗は、一部メーカーによるマーケティング目的の不可思議な分類 - 「スパイウェア」として(狭義の)スパイウェアではないものや、更には「スパイウェアと呼べるのか?」と首をひねるものをスパイウェアに含めている - そのような混沌とした状況を追認してしまった点だ。
 (反論を持つ方も多いとは思われるが、自分はASCのスパイウェア定義は失敗だと考えている)

 ASCは意図的な混同に対し是正を求めるだけの力を持っておらず、歪んだ状況を追認するしかなかったのだ。

編集履歴


 2006年10月22日、「ASCによる広義のスパイウェアへの追認は失敗だった」を付記。

関連記事


 マルウェア(Malware)の定義(ウイルス・スパイウェア・アドウェア)
 スパイウェア(Spyware)の解説と定義、概論