Broadband Watch logo
バックナンバー
第3回:
サーバー(IIS)にアタックするウイルスの仕組みと対策
[2001/12/20]
第2回:
“見ただけで感染する”ウイルスの仕組みと対策
[2001/12/19]
第1回:
個人でできるウイルス対策をしよう
[2001/12/18]
【Click Here!】

【短期集中連載】

大和 哲の
コンピュータウイルス対策入門

第3回:サーバー(IIS)にアタックするウイルスの仕組みと対策


サーバーにアタックするウイルス

 コンピューターウイルスとして今年猛威を振るったのが、CodeRed(II)、Nimdaだ。

 Nimdaに関してはメールウイルスやWindowsファイル共有を経由しての感染ルートも存在するのだが、この2つに共通するのはWebサーバーへの通常のWebアクセスに見せかけたアタックによって、感染するケースがある、ということだ。

 現在では、多くのWindows系OS、特にWindows NT/2000/XPといったOSではWebサーバーを運営していることも多い。最近では、インターネットも常時接続が珍しいものではなくなり、またIISのように専門知識がなくても手軽にセットアップでき、使えるサーバーソフトが存在しているためか非常に気軽にサーバーを動かしているようだ(「気がつかないうちにセットアップされて動いていた」というユーザーもいるようだが)。

 サーバーソフト、特にWebサーバーは正しく使えばいろいろ使い道のある便利なものだが、“インターネットに長時間接続する=悪意あるアクセスを受ける可能性も増える”、ということを理解しておかなくてはならない。

 サーバーを運営している以上、セキュリティ情報に気を使い、こまめなアップデートを行なってセキュリティホールを塞いでおくのは義務でもあり、当然のことなのだが、CodeRed、Nimdaでどこが弱点としてつかれたのかをもう一度見直して特に、この点に気をつけてWebサーバーを利用しよう。

 サーバーでは任意のコマンドが実行できてしまう、というタイプのセキュリティが特に問題となる。IIS(とWindows NTの組み合わせ)では、サーバーが管理者権限で動いているため、このセキュリティホールは即座にサーバーの乗っ取りにつながるからだ。こうなってしまうとコンテンツの書き換えやシステムの破壊などもウイルスのお好みのままになってしまう。



IISへのアタックの仕組み

サーバーへのアタック
 Code Red II、NimdaなどはIISのセキュリティホールをついて、通常のHTTPアクセスを利用してのサーバーへのアタックを行なう。

 バージョンの古いIISには既知のセキュリティホールが複数あり、そのうち「特定の文字を使ってHTTPアクセスをすると任意のコマンドを実行できる」というセキュリティホールがこうしたアタックに使われているのだ。

 たとえば、「サーバー内部にある文字データを変換するバッファからわざとデータをあふれさせ、それを利用して文字列に見せかけたプログラムをサーバー上で実行させる」、「サーバー上のアクセスできるフォルダやデータの制限を破ってシステム内の“任意の渡された内容を実行する”」、「シェルなどのプログラムを呼び出して本来使えないコマンドを使う」などという方法は、よくウイルスの感染やクラッキングの手段として使われているようだ。

 具体的な例を見てみよう。Webサーバーの管理をしたことがあるなら、こんなアクセスの形跡をログなどの形で見たことがあるかもしれない。

GET /scripts/..%5c../winnt/system32/cmd.exe

 これは、IISの動いているWindows NTサーバー上の「DOSプロンプト」プログラムであるcmd.exeに、Nimdaウイルスがアクセスしようとした形跡だ。

 クライアントからHTTPリクエストが送信された場合、Webサーバーはその指定されたファイルにアクセスしてインターネット上のクライアントに送る。

保護されているシステムファイルを不正実行してしまう
 本来、Webサーバーソフトでは、HTTPでクライアントから送信リクエストがあった場合、WebコンテンツやCGIなどのスクリプトが入っているフォルダ以外の部分のデータやコマンドの実行は行なわない。

 また、リクエストがあっても、Webコンテンツの入っているデータの先頭のフォルダよりも上の階層(たとえばルートが\InetWebでその上の\など)をアクセスすることはない。この制限されたフォルダの外にはいろいろなWindowsの実行ファイルやコマンドが存在しているので、どんな危険な操作をされるかわからないからだ。

 ところが、IIS 4.0/5.0にはある操作をすると、この壁を越えてサーバー内の任意のファイルをアクセスできてしまうセキュリティホールがある(あった)のだ。これが、「MS01-044」として知られるセキュリティホールで、リクエストされるURLの中にUnicode文字列が混じっていると、このWebコンテンツのフォルダの外もアクセスできてしまうのである。

 たとえば、/ScriptsはC:\InetPub\Scriptsのようなディレクトリ上に実体があり、ここには各種のスクリプトが入れられている。当然、この上のレベルであるc:\InetPubやC:\にはアクセスできないはずだ。ところが、..%5c..を../..であると解釈した際に、..%5c..(../..)がコンテンツのフォルダであることを忘れてしまい、その先のフォルダのアクセスを許してしまう。

/scripts/..%5c../winnt/system32/cmd.exe

というURLリクエストが来た場合、

C:\InetPub\Scripts\..\..\WinNT\System32\cmd.exe
 = C:\WinNT\System32\cmd.exe

にアクセスされてしまう。

 さらにいえば、アクセス先が通常のHTMLコンテンツのあるフォルダならばまだしもだが、この例ではサーバーは\Scriptsのフォルダにあるもの、つまり実行可能なスクリプトやプログラムであると認識して、そのままcmd.exeを実行してしまうのだ。

 cmd.exeはいわゆるWindowsの「DOSプロンプト」で、コマンド文字列を渡せば、任意のコマンドが実行できる。結果、システムをウイルスプログラムに悪用されてしまうということになる。



サーバーでの対策も「最新のものを使う」に限る

 Code Red、Nimdaで利用されたのはIISの「MS01-044」として知られるセキュリティホールだ。これも、既に半年ほど以前からセキュリティパッチが出ており、Windows、IISに最新のセキュリティロールアップ、サービスパックを導入することで防ぐことが可能だ。

 サーバーOSにWindows NT 4.0を利用している場合は、NT 4.0 のセキュリティ ロールアップ パッケージ (SRP) を導入する。IIS 4.0の場合はWindows NT 4.0 Service Pack 5以上にし、MS01-026の修正モジュールを導入する。また、Windows 2000の場合は、この問題に対する修正は Windows 2000 Service Pack 2 以降に含まれている。

 サーバーソフトの場合も、ウイルスを予防するには、早め早めにセキュリティパッチをあてることが肝心だ。その前提として、こうした対策プログラムを適切に導入するには、どのようなサービスが動いているか、などサーバーの状態を正しく管理者が把握しておくことが必要なのは言うまでもない。



ウイルス感染歴のあるサーバーでは「バックドア」の危険

 「外部から任意のコマンドを受けて悪用される」件に関しては、出荷段階のIISから存在するものに関してはマイクロソフトのWebサイト・TechNet OnLineの「マイクロソフト・セキュリティ情報」に掲載される。しかし、サーバーが過去にコンピューターウイルスに感染したことがある場合には、これ以外の問題にも注意が必要だ。

 というのも、PCがウイルスに感染すると、その時点で外部からの侵入をたやすくするために「バックドア」と呼ばれる仕組みをWindows内に作っていくことがあるからだ。

 「バックドア」は、先に述べたIISのセキュリティホールと同様、外部からWindowsに任意のコマンドを実行させることを可能にするものだ。たとえば、Code Redの亜種であるCode Red IIウイルスは、バックドアとして外部から侵入できるよう、explorer.exeを改ざん版のexplorer.exeに書き変えるほか、さまざまな実行ファイルをバックドア付きのものに書き変えてしまう。そして、その後登場したNimdaウイルスは、これらのバックドアもPCへの感染経路として利用するのだ。

 このCode Red IIの作るバックドアに関しては、マイクロソフトが提供している、以下のツールを使用して塞ぐことができる。

・Code Red II ワームの既知の影響を排除するツール
 http://www.microsoft.com/japan/technet/security/redfix.asp

 ただし、一度感染を受けたシステムはこのようなバックドアを作られやすいこと、ウイルス対策ソフトメーカーやマイクロソフトの対策も完全とは限らないので、基本的に感染歴のあるシステムは信用しない、という姿勢が必要だろう。

 したがって、もしウイルス感染が判明したら、できるだけ早くシステムを一からインストールし直し、最新のサービスパックを導入して、サーバーシステムを構築し直すくらいの慎重さが望まれる。

(おわり)

(2001/12/20)

□IPA情報セキュリティセンター
http://www.ipa.go.jp/security/index.html
□Microsoft TechNetセキュリティセンター
http://www.microsoft.com/japan/technet/security/

大和 哲
 1968年生まれ東京都出身。88年8月、Oh!X(日本ソフトバンク)にて「我ら電脳遊戯民」を執筆。以来、パソコン誌にて初歩のプログラミング、HTML、CGI、インターネットプロトコルなどの解説記事、インターネット関連のQ&A、ゲーム分析記事などを書く。兼業テクニカルライター。ホームページはこちら
(イラスト : 高橋哲史)
Broadband Watch ホームページ
Copyright (c) 2001 impress corporation All rights reserved.