今回は,Microsoftが無料で提供しているMyDoom駆除ツール(以後,駆除ツール)の使い方と,プログラムの特徴を調べることにします。駆除ツールは「DoomCln-KB836528-ENU.exe」という名称を持ち,MyDoomへの感染の有無を調べ,感染している場合には,報告メッセージを表示し,MyDoomを除去してくれます。

 これから紹介する駆除ツールは,Windows機能の一部ではありませんから,使用したい場合には,こちらから実行プログラムをダウンロードし,自分のマシンにインストール必要があります。現在サポートされているWindows環境は,Windows XPとWindows 2000です。私は,Windows Server 2003にインストールして実行しました。

 この連載をご覧になる皆さんの多くは「ITプロフェッショナル」と呼ばれ,所属する組織内ではそれなりの重要な責任を課されていると思います。そのような立場からすると,ダウンロードする駆除ツールの使い方はもとより,ダウンロード後のシステムへの影響が気になると思います。結論言うと,そのような心配はないといってよいでしょう。今回の駆除ツールは,IExpressテクノロジ採用により,セットアップ手順が単純化され,リモート・コンピュータ上での実行ができないようになっています。表現を変えれば,個々のWindowsユーザーが簡単に駆除ツールを使用できる,と考えてよいでしょう。

 なお,IExpressテクノロジは,ここでは,インストールとアンインストール操作を自動化し,ユーザーへの負担を軽減する技術である,と考えておいてください。IExpressテクノロジの詳しい情報を知りたい方は,こちらをご覧ください。

駆除ツールのプログラム特性

 私たちはこれまでの連載を通して,セキュリティ・ホール発生の原因となるバッファ・オーバラン(BOR)の技術的な背景や,前回紹介したWindowsプログラムの評価ツールなどを詳しく学習してきました。もしかすると,それらの知識は相互に有機的な関連を持たない「点」にすぎないかもしれませんが,各回の内容を(ときには忍耐強く)読破した人は,かなりの基礎知識が身に付いているはずです。ここではそれらの各点を相互に結びつけ,1つの線まで成長させましょう。

 まずは,MyDoomとは何か,を整理しておきます。MyDoomは,メールに添付されるファイルを実行すると動作を開始するワームといわれます。メールを開いただけでは特に問題は発生しませんから,BORには関係がない,つまりセキュリティ・ホール(Windowsシステムの弱点)を悪用するワームではありません。メールに添付されるファイルを実行しなければ,ワームは活動を開始しません。メールに含まれるファイルの拡張子などに関する詳しい情報は,こちらをご覧ください。基本は,メールに添付されているファイルを不用意に実行しない,ことです。

図1●Dependency Walkerで駆除ツールを分析する
図2●駆除ツール内で旧式のAPIが呼び出されていることが分かる
 では早々,過去の連載で紹介したツールを用いて,駆除ツールを分析してみましょう。図1[拡大表示]は,第9回で紹介したDependency Walkerから駆除ツールを開いた直後に取得したものです。画面情報から分かるように,駆除ツールは,USER32.DLLライブラリ機能を内部で呼び出しています。このライブラリは,GUI(ビジュアル表現)を可能とするウインドウ資源を管理する機能を提供していますから,今回の駆除ツールはGUIアプリケーションということが分かります。

 日頃,標準C++などで開発している人は,標準ライブラリに加えて,Windowsシステムに固有なUSER32.DLLライブラリを使用(専門的にはインクルード)すれば,Windows GUIアプリケーションが作れる,と考えると分かりやすいと思います。なお,中ほどの画面の「Subsystem」欄には,「GUI」という値が入っていますね。これは,駆除ツールがGUIプログラムであることをはっきり示しています。

 ところで皆さん,せっかくダウンロードした駆除ツール自身が潜在的なセキュリティ・ホールを抱えていたらどうしましょうか? このような不安は,前回紹介したApp Verifier(検証)ツールを活用すれば,かなり払拭できるのでしたね。図2[拡大表示]をご覧ください。

 ご覧のように,この駆除ツール内では旧式のAPIが呼び出されています。私は検証ツールを使用するとき,「ObsoleteAPICalls」と「SecurityChecks」という2つの検証オプションを有効にしておきました。図2は「ObsoleteAPICalls」検証時に問題が検出されたことを示しています。「SecurityChecks」検証時には問題が検出されていませんから,潜在的なセキュリティ問題はないと考えてよいでしょう(もちろん,保証されたわけではありません)。なお,検証ツールの使い方については,前回を復習しておいてください。

 今,私たちは駆除ツール内で旧式のAPIが使用されていることを知り,「旧式のAPIで大丈夫かな?」と,少なからぬ不安を抱えています。このため,「このような駆除ツール内では,可能な限り,安全な新しいAPIを呼び出してほしい」とMicrosoftの開発関係者に強くお願いしたいところです。

 しかしここは落ち着きましょう。この駆除ツールは,すでに触れたように,IExpressテクノロジーを基に配布されています。実は,図2に表示されている「DoomCln-KB836528-ENU.exe」というプログラムは,駆除ツールの本体ではない,のです。DoomCln-KB836528-ENU.exeは,本体となる駆除ツールを包み込み,本体のインストール,実行,アンインストールを自動化する補助プログラムにすぎないのです。例えば,次のようなコマンドを実行すると,DoomCln-KB836528-ENU.exe内部にある本体を取り出すことができます。

DoomCln-KB836528-ENU.exe /T:c:\itpro /c

図3●駆除ツール本体(doomcln.exe)を検証ツールで分析する
 このコマンドを実行すると,doomcln.exeという駆除ツール本体が取り出され,「c:\itpro」フォルダ(フォルダ名はご自分の環境の合わせて自由に変更してください)内部に格納されます。ここで,図3[拡大表示]をご覧ください。

 図3は,駆除ツール本体(doomcln.exe)を取り出し,それを検証ツールで評価した直後に取得しています。評価項目としては,先ほどと同じように,「ObsoleteAPICalls」と「SecurityChecks」オプションを選択しておきました。結果としては,駆除ツール本体は旧式のAPIを呼び出していません。おそらく,駆除ツール本体を開発した人は,出荷前に,自分のコードを検証ツールで評価したのでしょう。

 ところが,すでに確認したように,本体ではないDoomCln-KB836528-ENU.exeは,その内部で旧式のAPIを呼び出しています。このため,その事実を基に,「このような駆除ツール内では,可能な限り,安全な新しいAPIを呼び出してほしい」と要求を出すことは可能です。しかし,駆除ツール本体であるdoomcln.exeの担当開発者は,私たちから出された要求を,おそらく,理解できないでしょう。なぜだと思いますか? その理由を説明しましょう。

 IExpressテクノロジは,基本的には,インターネット経由で配布するプログラムのインストールとアンインストールを単純化し,私たちWindowsユーザーの作業負担を軽減する技術です。しかし開発者側の立場に立つと,その技術を習得し,実際に利用することは結構な負担になります。しかも,動作結果はユーザー環境に直接的な影響を与えますから,背負うべき責任は重くなります。

 このような場合,Microsoftは両者の利便を配慮し,一定の開発プロセスを自動化してくれるWizard(ウィザード)を用意します。統合開発環境(IDE)であるVisual Studioは,このようなウィザードを満載していることで有名です。駆除ツール本体doomcln.exeを内包するDoomCln-KB836528-ENU.exeは,IExpressテクノロジ・ウィザードが作り出していると考えてよいと思います。すでに確認したように,DoomCln-KB836528-ENU.exeはその内部で旧式のAPIを呼び出していますから,IExpressテクノロジ・ウィザード自体のロジックは更新されていない,ということが想像できます。

 ウィザードは一定のコードを自動生成し,開発作業を効率化するのがその役割です。駆除ツール本体doomcln.exeの担当開発者は,用意されているウィザードを使用しただけですから,「このような駆除ツール内では,可能な限り,安全な新しいAPIを呼び出してほしい」という要求は,IExpressテクノロジ・ウィザード開発チームに出されるべきものです。もしかすると,doomcln.exeの担当開発者は現在発生している事実(ウィザードが自動作成したコードの内部で旧式のAPIが呼び出されていること)を知らない可能性があります。

 以上で駆除ツールのプログラム特性は理解できましたから,今度は駆除ツールを実際に使用してみます。

駆除ツールの使い方

 駆除ツールの使い方には次のように2通りの方法があります。

使い方1:DoomCln-KB836528-ENU.exeをダブルクリックする
使い方2:doomcln.exeをダブルクリックする

 一般のWindowsユーザーは,「使い方1」を採用すればよいでしょう。しかし,皆さんの多くは「ITプロフェッショナル」と呼ばれる立場にありますから,「使う技術を持っている」だけではなく,「今後の傾向」も把握している必要があります。開発者の立場であれば「この配布方法は使えるかな?」と評価する必要もあります。「使い方2」を採用し,各種の知識を習得することは決して無駄ではないでしょう。IT業界にいる限り,常に,「技術をものにする」姿勢は必要です。

 駆除ツールが動作を開始すると,MyDoomへの感染の有無を調べ上げ,その結果をダイアログ・ボックスで表示した後,最終的に「%WINDIR%debug」フォルダに「doomcln.log」というファイルを作成します。私の環境で作成されたログ・ファイルには,次のような情報が書き込まれていました。

Microsoft MyDoom removal tool started on Tue Feb 10 11:07:31 2004
Checking 42 processes.
Checking startup registry keys for current user.
Checking keys for 7 other users
Checking known MyDoom filenames.
**** No MyDoom infection found ****
Microsoft MyDoom removal tool stopped on Tue Feb 10 11:07:31 2004

 さて,皆さんの環境ではいったいどのような情報が書き込まれているでしょうか? 私の環境で作成されたログ・ファイル情報から判断する限り,今回配布された駆除ツールは大変高速です。開始時刻と終了時刻を見ると分かるように,作業は1秒もかかっていません。皆さんの環境でも,「**** No MyDoom infection found ****」というレポートが報告されるとよいですね。一部の開発者の中には,「Checking 42 processes.」という文章に目を留め,「42個のプロセスとはいったいなんだろう?」,あるいは,「そのロジックはどのようなAPIで実装されているのだろう?」と前向きの興味が湧いてきていると思います。

駆除ツール使用上の注意点

 何らかのツールをインターネットからダウンロードし,それを使用する場合,既存ツールとの機能上の整合性が問題になることがあります。具体的に言えば,今回紹介した駆除ツールの場合,各種ウイルス対策製品との整合性問題が心配になります。こちらの公開情報を読む限り,現在使用しているウイルス対策ソフトを正しく使用していれば,整合性問題は発生しない,とされています。

 また,この駆除ツールは,必要に応じてシステム・レジストリなどを書き換えますから,実行する際には,管理者権限が必要になります。駆除ツール使用後は,管理者グループから抜け出るなどして,実行権限レベルを落としておくとよいでしょう。実行権限などのいろいろな知識を身に付ける必要があり,「大変だな」と思っているかもしれません。ここは1つ,「自分はさらに成長し,一人前のITプロフェッショナルになるのだ」と前向きに考えることにしましょう。

本日のまとめ

  • IExpressテクノロジを用いた駆除ツールが用意された
  • 駆除ツールは,本体コードとウィザード・コードで構成されている
  • ITプロフェッショナルは本体コードの評価技術を習得しておくと便利である
  • 新しい技術の変化は,前向きに理解することが大切である

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!