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

【短期集中連載】

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

第2回:“見ただけで感染する”ウイルスの仕組みと対策


メールプレビューのみで感染する「W32/Badtrans」

 感染したPCから、メールの添付ファイルとしてウイルス本体がユーザーの知らないうちに送付されるという感染方法をとるウイルスは、現在のウイルスとしては一般的なものだ。

 しかし、最近流行して問題となっているウイルスは、このようなメールに添付されたウイルスのなかでも、「メールをプレビューするだけでウイルスプログラム本体が起動する」タイプのものだ。流行したBadtrans.Bもこのタイプのウイルスで、ウイルスファイルを実行しなくても、“メールを見ただけで感染する”点が、急速に感染が広まった原因となっている。

 このメールプレビューのみで感染するBadtransの仕組みを見る前に、メールウイルスとは、そもそもどのようにできているのかを見てみよう。



メールウイルスの一番簡単な仕組み

 メールウイルスはその名の通り、メールに添付されるウイルスプログラムだ。このプログラムがウイルスとして働くためには、以下に挙げる3つの機能が最低限備わっている。

  1. システムを書き換える

  2. 自分自身のコピーをPC上に残す

  3. 自分自身のコピーをばらまく

 ウイルスプログラムは、PCが起動しているときにはいつでもウイルスプログラム自身が実行されるように、システム中の、以下に挙げるような部分を書き換える。

  • Windows 95/98では以下のレジストリにプログラムを登録する
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

  • 以下のファイルにWindowsのサービスとして利用したいプログラム(この場合はウイルスプログラム)を書きこむ
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\
            CurrentVersion\RunServices

  • win.iniファイル中の以下の部分に利用したいプログラムへのパスを書くことで、Windowsが起動すると同時にプログラムを起動する
    [windows]
    run=

 多くのWindows用ウイルスでは、ウイルスを実行するとまず、Windows起動と同時にウイルスプログラムも起動し活動できるようにするために、これらのレジストリを書き変える。

 次に、ウイルスプログラムは自分自身を他のPCにコピーする(ウイルスを他のPCに感染させる)ために、ウイルスのコピーのついたメールを他のPCに送るなどの作業を行なうわけだ。

 以上が、最も基本的なウイルスの仕組みだ。

 このタイプのメールウイルスは、これまではメールに添付されているファイルそのものを開く(実行する)ことがない限り、ウイルスが活動することはなかった。

 しかし、流行したW32/Badtrans.Bなどが問題になっているのは、さらに、この添付されたウイルスプログラムが「プレビューで表示させるだけでウイルスプログラムが活動を開始してしまう」ことにある。



プレビューで感染するウイルスの仕組み

 猛威をふるったBadtrans.Bウイルスが含まれるメールはいわゆるMIMEメールとなっていて、以下のような構成となっている。これは、添付ファイル形式のメールウイルスであればどのウイルスメールでも同様だ(ただし、Outlookではシンプルメールにuuencodeでエンコードしたものを貼りつけたメールも、添付ファイル付きのメールとして解釈されるので、必ずしもこの構造になっているとは限らない)。


ヘッダ
メール本体のヘッダ
メールの本体の内容
添付ファイル部分のヘッダ
添付ファイルの内容

プレビューするだけで感染するウイルスの仕組み
 メール本体部分はHTMLメールとなっている。HTML形式のメールでは、HTMLタグを書くことによって、メール表示と同時にメール中に指定された画像表示や音楽再生が自動的に行なわれる機能を持つ。再生対象の画像や音声ファイルそのものは添付されていなくても、インターネット上にあるものを指定することが可能だ。

 メールがこのHTML形式であった場合、実はOutlookやOutlook Expressは自分自身が、このHTMLを解釈して表示するわけではない。

 Outlook/Outlook Expressなどのメールソフト(メールユーザーエージェント)はメールのデータ中にHTMLテキストがあると判断すると、そのデータを表示するためにInternet Explorerを呼び出す。これは、Outlook/Outlook ExpressにHTMLデータを表示させるためのプログラムを組み込むよりも、HTMLを表示するためのブラウザソフトInternet Explorerを呼び出す方が、プログラムサイズの面でも開発工数の面でもメリットがあるからだ。

 余談になるが、WindowsというOSには、このようにそれぞれのソフトの機能を共有するための仕組みがいろいろなレベルで実装されている。たとえば、おなじみのDLL(ダイナミックリンクライブラリ)は、単に利用する時にダイナミックに読み込むだけでなくライブラリや関数レベルで機能を共有できるし、Active XやOLEはそれぞれのソフトの機能を、別のソフトが扱うドキュメントのビューに埋め込むことができる。

 本題に戻ろう。OutlookがInternet Explorerを呼び出して、Internet Explorerがこのメールの解釈を行なう。そして、メール中に<IFRAME>タグなどで呼び出されるファイルがあった場合は、Internet ExplorerはそのMIMEヘッダやファイルの拡張子に関連付けられているアプリケーションなどからそのファイルの表示を行なったりプレイヤを呼び出したりといった処理をする。

 たとえば画像ファイルのGIF、音声ファイルのwavなどは対応するプレイヤーを呼び出すが、プレイヤーとの関連付けのない形式や、exe形式、pif形式などはファイル読み込みダイアログが通常呼び出されるようになっている。実行ファイルの形式に関しては、自動的に実行されてしまうと、そのファイルがたとえばウイルス感染やシステムの破壊プログラムなど悪意のあるプログラムだった場合には非常に危険なため、このような仕組みになっている。

 ところが、このInternet Explorerのファイルの性質によって処理を変える部分には、バージョンによってセキュリティホールがあり、この「実行ファイルはダイアログが表示され、自動的には実行されない」という原則が通じないことがあるのだ。これは、「MS01-020」として知られる、以前のInternet Explorer(5.01 SP1、5.5 SP1以前)にあるセキュリティホールで、これが原因で以下のような現象が起こってしまう。

 「その添付ファイルが Internet Explorer が正しく処理しない MIME 形式であると指定されるように MIME ヘッダー情報を変更した場合、Internet Explorer がその電子メールを再現する際に、添付ファイルを自動的に起動してしまう。」

 たとえば、MIMEメール上の添付ファイルのヘッダに以下のような指定があったとする。

Content-Type: audio/mpeg
(MPEG形式のオーディオファイル)

 実体はウイルスであるメール添付ファイルが、上記のように他のプレイヤーを利用するものである、と書かれているわけだ。そうすると、Internet Explorerがそのファイルを実行しようとしてしまう。もちろん、添付ファイルがMP3形式ファイルで、本当にWindows Media Playerで再生可能なファイルであれば問題はない。しかし、実際のファイルがexe、com、pif、bat、dll、scrのような拡張子を持つ、実行可能なファイルであった場合には、このファイルがそのまま実行されてしまうわけだ。

 Badtrans.Bとして知られるコンピューターウイルスの場合には、メール本体には以下のような指定が書かれている。

<iframe src=cid:EA4DMGBP9p height=0 width=0>

 Outlookから呼び出されたInterenet ExplorerはIFRAME(浮遊フレーム。ブラウザ上の好きな位置にファイルをフレームとして表示する)としてメール内の添付ファイルを表示しようとする。一方、添付ファイルの中身は以下のようなものとなっている。

Content-Type: audio/x-wav;
          name="YOU_are_FAT!.MP3.exe"
Content-ID: <EA4DMGBP9p>

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA8AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm
5vdCBiZSBydW4gaW4gRE9TIG1v
(以下BASE64エンコードされたウイルスプログラム)

 コンテントタイプとしては、Windows Media Playerなどを呼び出す、wave形式の音声ファイルとされており、ファイルの拡張子は「exe」となっている。これにより前述の仕組みで、実行形式としてファイルが実行されてしまう。そして、ウイルスプログラムがPC上で活動を開始する仕組みだ。

 なお、メールに添付されたウイルスファイルをメニューなどから開く(実行する)場合でも、Internet Explorerが自動実行する/しないにかかわらず起動され、実行されることになる。



プレビューのみで感染するウイルスへの対策

 このBadtrans.Bなどで使われている「プレビューやメールを表示するだけでウイルスが起動してしまう」現象は、Internet Explorerのセキュリティホールをつくもので、「Internet Explorerのバージョンを5.01 SP2/5.5 SP2にする。あるいはInternet Explorer 6を最小インストール以外の方法でインストールする」ことで、予防することが可能だ。

 ちなみに、実はこのMS01-020は、セキュリティホールとして発見されてからかなり月日がたっており、セキュリティパッチがリリースされてから既に半年以上が経過している。つまり、サービスパックやセキュリティパッチなどをこまめにチェックし、導入さえしていれば、昨今のウイルスに感染する可能性はほとんどなかったわけだ。

 「使っているソフトウエア(特に最近よくウイルスのターゲットになっているInternet Explorer、OutlookおよびOutlook Express、IIS)のサービスパックやパッチが出ているかをまめにチェックし、リリースされたら早めに導入する」ことこそが、まずはこれから流行すると思われる、ウイルスに対して第一の防御策になる、ということがわかる。

 なお、現在までのところ、このInternet Explorerのセキュリティホールで、ウイルスの自動実行など、メール添付型ウイルスに使われそうなものは、Internet Explorer 5.0/5.5 SP2以降には発見されていない(ただし、バッファオーバーランやクッキーの漏洩、コピーバッファ内容の漏れなど、他の種類のセキュリティホールはある)。しかしこれから、未知の弱点がWindowsや他のソフトウエアのセキュリティホールとして発見される可能性もある。IE5.01 SP2、IE 5.5 SP2、IE 6を利用しているからと安心してしまわず、アップデートプログラムはまめにチェックしたい。



Web表示だけで感染するウイルスも原因は同じ

HTMLを表示させるだけで感染するウイルス
 今年猛威をふるったコンピューターウイルスに「W32/Nimda(とその亜種)」がある。このウイルスの特徴は、「非常に多様な手段を使って感染を試みる」ことだ。

 たとえば、メールウイルスとして、Webコンテンツの一部としてクライアントPCに常駐しようとする、あるいは後に述べるようなWebサーバーへのHTTPアクセスでIISのセキュリティホールをつく、CodeRedの作ったバックドアを利用するなどの手段でPCにウイルスを感染させようとする。

 これらの中でも、一般のパソコンユーザーにとっても、またサーバーやネットワークの管理者にとっても脅威なのは、Web閲覧による感染だろう。ユーザーの使っているInternet Explorerのバージョンによっては、Webページを閲覧しただけでPCがウイルスに感染するからだ。

 実は、このNimdaウイルスのWeb経由の感染の仕組みは、前述の「プレビューしただけで感染するウイルス」とほぼ同じものだ。Nimdaに感染したサーバーのHTMLファイルには、追加でJavaスクリプトが書き込まれ、またウイルス入りのメールデータがサーバー内に置かれている。

 コンテンツに書き込まれたJavaスクリプトは次のような内容だ。

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

 つまり、「readme.emlというファイルを表示せよ」と書かれているのである。eml形式ファイルはメールデータファイルだ。通常はOutlook/Outlook Expressに関連付けされていて、Outlook/Outlookファイルを起動してファイルが開かれるわけだ。

 このページをアクセスしたパソコンのブラウザソフトにセキュリティホールがあった場合、Javaスクリプトが無条件に実行されてしまう。このメールデータは先に挙げた「プレビューするだけでPC上で活動を開始するウイルスメール」とまったく同じ仕掛けを使うものだ。

 つまり、Javaスクリプトがパソコン上で実行されると、ウイルスメールを表示する。そこでセキュリティホールをつかれて、メールファイルがPC上で実行されてしまい、この手順でパソコン上のシステムファイルにはウイルスがばらまかれて、パソコンのシステムはウイルスに感染した状態になるのだ。

 このタイプのウイルスに対する、一番手軽で確実な予防方法は、メールウイルスのプレビュー感染を防ぐのと同様「Internet Explorerを最新のものにする」ことだ。

 NimdaがWebコンテンツを経由してPCに感染するために利用するのも、メールのプレビュー感染で悪用されているセキュリティホール(MS01-020)と同じものだ。つまり、メールのプレビュー感染を防ぐための手立てをほどこしておけば、自動的に、「Webコンテンツをブラウザで表示させただけでウイルスに感染」ということは防げる、ということになる。

 現在のInternet Explorerの最新版はそれぞれ以下の通りだ。

  • Internet Explorer 5.01 SP2
  • Internet Explorer 5.5 SP2
  • Internet Explorer6(最小構成以外のインストール方法で)

 これらの最新版のInternet Explorerをインストールすることで、Nimdaが利用したセキュリティホールを塞ぐことができる。不測の事態を避けるためにも、Internet Explorerのサービスパックを導入しておくことをお勧めする。

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

 その場合もreadme.exe自体がウイルスプログラムであることに変わりはないので、ダウンロード後、ユーザーが実行してしまうと、対策済みのInternet Explorerを使っていても、結局はPCがウイルスに感染してしまうことになるので注意してほしい。

 このような事態を防ぐためには、やはり人間の注意力のみに頼るのではなく、アンチウイルスソフトなどを利用することが重要だろう。

(明日につづく)

(2001/12/19)

□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.