多くのエクスプロイトキットの中で、さまざまな不正なファイルを利用しユーザを感染させようとする脅威の最も一般的なものが不正な PDFファイルです。当然ながらセキュリティベンダは、これらの不正なファイルを適切に検出することに労力を注ぎ、その一方で攻撃者たちは、セキュリティベンダからの検知を回避することに労力を注ぎます。
トレンドマイクロのクラウド型セキュリティ基盤「Trend Micro Smart Protection Network」からのフィードバックを用いて、いくつかの一般的な脆弱性を利用する PDFファイルの手法を分析しました。これらの手法については、本稿で説明します。手法に関する知識は、これらの脆弱性利用に対する弊社の検出能力の向上に役立てます。
■一般的な JavaScript を利用した回避手法
脆弱性を利用する PDFファイルの多くは、何らかの形で埋め込まれた JavaScript を利用します。これにより、一般的な JavaScript を利用した回避や難読化の手法が PDFファイルでも利用可能になります。例えば、文字列の差し替えや例外処理「try-catch」、メソッド「fromCharCode」のループなど、すべて PDFファイルでも利用が可能になります。
図1 に表示されるコードの一部は、利用された上述の手法の一例を示しています。
|
この特定のエクスプロイトコードは、脆弱性「CVE-2010-0188」を利用します。
■InfoObject 内の符号化されたプロパティ「Content」と関数「Function Name」
この種の難読化は、暗号化されたコードをタイトルやサブタイトル、作成者などの情報を含む「InfoObject」の一部分に保存します。そして、JavaScript は、この暗号化された不正なコードの復元および復号に利用することができます。
図2 で表示される検体では、InfoObject 内のタイトルおよび作成者欄は通常とは非常に異なります。作成者欄は、膨大な数の感嘆符「!」が挿入された非常に長い英数字の文字列になっています。
|
上述のものと同様に、このエクスプロイトコードは、脆弱性「CVE-2010-0188」を利用します。
■JavaScript ランタイムを狙う
この JavaScript ランタイムを利用した特殊な回避手法は、解析ツールから身を隠すためのものです。PDFファイル内で JavaScript を実行させるには、特定のランタイムライブラリが必要です。このライブラリは、”Adobe Reader” の一部ですが、多くの解析ツールには、このライブラリは含まれていません。不正プログラムが、いくつかの関数が定義されていなかったり、適切な動作を行わないことを確認すると、不正なコードは、復号されません。
上述した関数には、ファイルサイズおよびアプリケーションのバージョンの確認が含まれます。
図3 の例では、関数「app.endPriv」が確認されます。そして、これが正確に定義されない場合、不正なコードは実行されずに終了します。
|
■フィールド属性とスコープ内の関数
いくつかの不正プログラムは、「XML Forms Architecture(XFA)」のフィールド属性を利用し、条件を確認をします。上述の事例のように、解析ツールによって、これらのスコープ内の関数は正確に実装されていません。特定のオブジェクトや関数が見つけられない場合、ここでもまた、不正なコードは実行されません。この事例では、図4 に示される、関数「ZZA」およびオブジェクト「ImageFiled1」を指します。
その他の事例では、幅や高さといった属性が代わりに利用されることがあります。
|
■名前空間の制御
弊社は、2013年、新たな回避手法と組み合わさる新しい脆弱性「CVE-2013-2729」を確認しました。
弊社は、name属性により制御される異なる名前空間内で実行された JavaScript のコードを確認しました。これは、時にツールを使用した解析を難しいものとします。図5 から図7 に示されるコードの一部で 2つの異なるオブジェクト「util」および「spray」、さらに関数と変数がこれら 2つの名前空間でどのように利用されるかを確認することができます。
|
|
|
■関数「eval」内で変更された変数のスコープ
この種の回避手法は、特定の PDFファイルに埋め込まれた JavaScriptエンジンの詳細に基づいています。次のコードの一部をご覧ください。
(function(){var v=”inner”; e=eval; e(“alert(v)”); })();
上記コードの関数の記述は、”Adobe Reader” では正しいため、コード「inner」が実行されます。しかし他の JavaScriptエンジンでは、このコードは実行されず、代わりにエラーが返されます。これは、不正なコードの解析を阻むことになります。
これらの回避手法の中で、今後 JavaScript ランタイムの確認と変数のスコープの変更の 2つの手法がさらに広く利用されると予想します。これらは、サイバー犯罪者たちによる検出回避への最新の試みを表しています。
トレンドマイクロ製品をご利用のユーザは、「Trend Micro Smart Protection Network」によって守られています。特に「Webレピュテーション」技術により、この脅威に関連する不正な Web サイトへのアクセスをブロックします。また、「ファイルレピュテーション」技術により、上述の不正プログラムを検出し、削除します。上述の特定の検体は、トレンドマイクロの製品では、それぞれ「TROJ_PIDIEF.ERP」、「TROJ_PIDIEF.ERQ」、「TROJ_PIDIEF.SMAL」、「TROJ_PIDIEF.SMAP」として検出されます。
参考記事:
by Michael Du (Threats Analyst)
翻訳:木内 牧(Core Technology Marketing, TrendLabs)