今回は,MyDoomの影響を受けるアプリケーションを調べる方法を紹介しましょう。また,MyDoom駆除ツールはこの1週間の間に2回バージョンアップされましたから,現在利用できる最新版駆除ツールの使い方も合わせて紹介することにします。それではさっそく,本論に入りましょう。

MyDoomの影響を受けるアプリケーションを調べる方法

 Microsoftのこのサイトで公開されている情報を読んでみると,MyDoomはmsasn1.dll経由で感染するワームと定義されています。そこで,拡張子「dll」を持つmsasn1.dllの意味を簡単に整理しておきましょう。

 msasn1.dllの「dll」は,Dynamic Link Libraryの略語であり,アプリケーションの実行時にメモリーにロードされ,必要な機能を提供するライブラリ・ファイルです。例えば,次のような情報を見てみましょう。この情報は一見難しそうな印象を与えますが,実際には,それほど難しいものではありません。

LoadLibraryA("C:\WINDOWS\system32\PSAPI.DLL") called from "DOOMCLN.EXE" at address 0x0100582A.
Loaded "PSAPI.DLL" at address 0x76A60000. Successfully hooked module.
LoadLibraryA("C:\WINDOWS\system32\PSAPI.DLL") returned 0x76A60000.
GetProcAddress(0x76A60000 [PSAPI.DLL],"EnumProcesses") called from "DOOMCLN.EXE" at address 0x0100583F and returned 0x76A6162F.
GetProcAddress(0x76A60000 [PSAPI.DLL],"EnumProcessModules") called from "DOOMCLN.EXE" at address 0x01005851 and returned 0x76A6153D.
GetProcAddress(0x76A60000 [PSAPI.DLL],"GetModuleInformation") called from "DOOMCLN.EXE" at address 0x01005863 and returned 0x76A617D9.

 この情報は,駆除ツール「DOOMCLN.EXE」をDependency Walker(関連記事)でプロファイルした直後の様子を示しています。私たちは,この情報から次のようなことを理解することができます。

「アプリケーションDOOMCLN.EXEは,ダイナミックライブラリであるPSAPI.DLLを動的にメモリーにロード(LoadLibraryA)し,EnumProcessesをはじめとする各種関数の実行開始アドレスを取得している(GetProcAddress)」

 アプリケーションDOOMCLN.EXEから呼び出されているPSAPI.DLLは,機能上,先に触れたMyDoom感染の原因となる問題を抱えたmsasn1.dllに相当します。このため,PSAPI.DLLが何らかのセキュリティ問題を内部に抱えている場合,それを利用しているアプリケーションであるDOOMCLN.EXEは,その問題を表面化させる直接の加害者になってしまいます。

図1●msasn1.dllを内部で利用しているアプリケーション
図2●msasn1.dllが内部に抱える問題の回避策は「なし」
 以上で,拡張子dllとアプリケーションの関係はお分かりいただけたと思います。問題は,ダイナミック・リンク・ライブラリとその機能を利用するアプリケーションの数です。それでは,msasn1.dllを内部で利用しているアプリケーションを調べることにしましょう。まずは,図1[拡大表示]の画面をご覧ください。

 ご覧のように,多数のアプリケーションがその内部でmsasn1.dll機能を活用しています。すでに触れたように,これらのアプリケーションは,msasn1.dllが内部に抱える問題を直接顕在化させる,「潜在的な加害者」です。Windows Explorer(Explorer.exe),Windows Personal Firewall(alg.exe),Internet Information Service(inetinfo.exe),SQL Server(sqlsevr.exe)などの姿もはっきり見えます。alg.exeなどはアプリケーションの中でもWindowsサービスと呼ばれる,高度な特権で動作するプログラムです。客観的に見て,これは絶望的な事態の発生です。Microsoftはこの事態を図2[拡大表示]のように表現しています。

 結論としては,問題のmsasn1.dllを差し替える以外の「回避策はない」,というわけです。すでに感染している場合には,後で紹介するような最新の駆除ツールを実行する必要があります。

 図1の画面はどのように出したのでしょうか。次のような手順でmsasn1.dllを利用しているアプリケーションを調べてください。

手順1:こちらからProcess Explorer Version 8.20という名前のツールをダウンロードする

 現在用意されているツールは,Windows 9x/MeとWindows NT/2000/XP用に分かれていますから,自分の環境に応じたものをダウンロードしてください。プログラムのダウンロード・サイズはいずれも230KBとなっています。

手順2:任意のフォルダーに解凍する

 解凍すると,フォルダ内に「procexpnt8」というサブ・フォルダが作成され,その中に,procexp.exeという名称の実行プログラムが作成されます。

手順3:実行プログラムprocexp.exeを起動し,「Find/DLL」の順にマウスをクリックし,開かれた画面から「msasn1.dll」と入力し,「Search」ボタンをクリックする

 以上の操作を完了すると,msasn1.dllを内部で利用しているアプリケーションのリスト(つまり,潜在的な加害者候補リスト)が表示されます。さて皆さんの環境ではどのようなリストが表示されてくるでしょうか。

 なお,すでにMyDoomに感染している場合,Shimgapi.dllとCtfmon.dllという名称の2種類のライブラリが作成されていると思いますから,これら2つのdllのライブラリの存在有無も確認しておきたいところです。すでに触れたように,Shimgapi.dllとCtfmon.dllはあくまでもライブラリですから,ライブラリ機能を呼び出すアプリケーションを(裏口から)こっそり忍び込まされた場合,私たちのWindowsシステム環境は実害を受けてしまいます。ご承知のように,Shimgapi.dllとCtfmon.dllは一般にはバックドア(裏口)と呼ばれています。

最新MyDoom駆除ツールの使い方

 前回はMyDoom駆除ツールとして,DoomCln-KB836528-ENU.exeという名称のプログラムを紹介しましたが,その後,このツールは「バージョン1」と位置付けられました。現在利用できる駆除ツールの最新バージョンは3で,DoomCln-KB836528-v3-ENU.exeという名称が付けられ,次のようなWindowsシステムで利用できます。私は,Windows Server 2003環境で実行しました。

Windows 98,Windows 98 Second Edition,Windows Millennium Edition,Windows 2000 Windows XP,Windows Server 2003

 Microsoftは,MyDoomの亜種(MyDoom.A(別名Novarg.A,Mimail.R),MyDoom.B,DoomJuice.A(別名Mydoom.C),DoomJuice.B)を考慮し,最新バージョン3の駆除ツールを使用することを薦めています。現在用意されている駆除ツールは英語版のみですが,Microsoftの説明によれば,日本語環境でも問題なく利用できるようです。ダウンロードした駆除ツールの使い方と安全性を確認する場合には,前回の記事を参照してください。なお,駆除ツールのダウンロード方法などの詳しい情報に関しては,こちらをご覧ください。新たな亜種の出現も予想されますから,ぜひ一度公開情報に目を通しておきましょう。

 今回のセキュリティ問題を発見したeEye Digitalの公開情報を一読してみると,msasn1.dll内部で整数オーバー・フロー(integer overflow)が発生しているとされます。この整数オーバー・フローに興味のある開発者の方は,Michael Howard氏のこちらの公開記事をご覧ください。なお,この記事は,2003年4月28日公開となっています。

本日のまとめ

  • 問題を抱えたダイナミックリンクライブラリを使用しているアプリケーションは潜在的な加害者である
  • MyDoom駆除ツールが亜種の出現により1週間のうちに2回バージョンアップされた

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