This post is also available in: English (英語)
概要
2015年7月8日、パロアルトネットワークスの調査機関Unit 42は脅威インテリジェンス サービスAutoFocusを活用し、米国政府を標的とするスピアフィッシング攻撃と見られる活動の検出と調査を行いました。
この攻撃は、7月に起きたイタリア企業「Hacking Team」の情報漏えい事件によって明らかになったゼロデイ脆弱性から生じたAdobe Flashの脆弱性を悪用するものです。
スピアフィッシング攻撃は、正式なWebサイト(perrydale[.]com)の2つのサブドメイン(rpt.perrydale[.]comおよびreport.perrydale[.]com)上でホスティングされているFlashエクスプロイトへのリンクを使用しています。
両ドメインは、ウクライナ内の同一IPアドレス、194.44.130.179のものでした。
現時点では、実際のWebサイトでセキュリティ侵害が起きた痕跡は発見されていないため、DNSハイジャックが行われた可能性が高いと思われます。
特に、rpt.perrydale[.]com/en/show.swfとreport.perrydale[.]com/ema/show.swfに存在するFlashエクスプロイトは、Hacking Team社のデータ侵害事件で新たに公表された脆弱性の1つ(CVE-2015-5119)を利用していました。
攻撃に成功すると、影響を受けたホストによって、Flashエクスプロイトが存在する同一の2つのサブドメイン上の二次的なペイロード(b.gif)が取得されることになります。
この攻撃は、以前の標的型攻撃と類似していますが、CVE-2015-3113時点のゼロデイ脆弱性を利用したFlashエクスプロイトもされるようになりました。
これら両方の悪意のあるFlashファイルの分析は、双方の攻撃が、UPSまたはAPT3と呼ばれるAPT攻撃(持続的標的型攻撃)(英語)を行う犯罪グループによって引き起こされていることを示しています。
ActionScript
悪意のあるFlashファイル「show.gif」には、脆弱性の悪用を試行し、最終的にペイロード(ヘッダー部分を除いたデータ本体)をインストールするためにシェルコードを実行するActionScriptが含まれます。
show.swfは、次のActionScriptクラスで構成されます。
- MainClass.as
- MyClass.as
- MyClass1.as
- MyClass2.as
- MyUtils.as
- ShellWin32.as
クラス名の事前分析では、Hacking Team社の情報漏えい事件(英語)の発生後に公表された2件のFlashゼロデイ エクスプロイトの1つと、それらのクラス名が重複していることが明らかになりました。
上記のクラスをHacking Team社の事件で使用されたFlashゼロデイ脆弱性と比較した結果、show.swfとハッキング チームのFlashエクスプロイトの両方で、MyClass.as、MyClass1.as、MyClass2.as、MyUtils.as、およびShellWin32が共有されていることが判明しました。
さらに、UPSのファイルとHacking Team社のFlashファイルの両方のActionScriptクラスでは、複数のログメッセージ、関数、変数名が共通していることも判明しました。
MyClass.as内のTryExpl関数に最も重要な重複が発見されています。ここでは、CVE-2015-5119脆弱性の悪用時に発生する解放済みのメモリー領域を使う状態を作成するために、同じ関数と変数が使用されています。
図1は、UPSのエクスプロイト、およびHacking Team社事件で使われたFlashエクスプロイトの両方で検出されている、解放済みのメモリー領域を使うという脆弱性を引き起こす、TryExpl関数内のコードを示しています。
また、双方のエクスプロイトに、エラー メッセージ「can’t cause UaF」があります。
図1:解放済みのメモリー領域を使うという脆弱性を引き起こすActionScript
show.swfのMainClass部分の分析中に、UPSによる以前の攻撃と同じ関数が使用されていること、またその関数が以前のFlashゼロデイ脆弱性(CVE-2015-3113)を悪用しようとしていることも発見されました。
CVE-2015-3113 ActionScriptは公開されており、次のリンクから入手できます。
https://gist.github.com/mak/bd71962aae98ab0b0441
以下の共通する関数名には、データ型の操作、ロギング、およびエクスプロイト成功時に実行されるシェルコードの復号化に使用される複数の関数が含まれます。
- decode
- hexToIntArray
- logMsg
- func_prepare
- hexToBin
2つのActionScript間で明確に重複しているのは、共通変数名m_scKeyに関するものです。これは、ActionScriptがシェルコードの復号化に使用するRC4キーが格納されている変数です。
シェルコード
Flashの脆弱性が悪用されると、シェルコードが実行されます。これにより、アニメーション化されたGIFイメージに埋め込まれているペイロードが抽出および復号化されます。
分析中に、Unit 42はペイロードを取得することができませんでした。受信したb.gifファイルが暗号化されたペイロードを含んでおらず、攻撃の仕掛けがなかったからです。
これには2つの理由が考えられます。UPSは、攻撃中の非常に短い期間にのみ悪意のあるペイロードを配布することで知られています。またその場合でも、目的のプロファイルに適合する被害者のみにペイロードを配布します。
アニメーション化されたGIFイメージからペイロードを抽出および復号化する手法は、CVE-2015-3113を悪用する攻撃においても、UPSによって使用されていました。
ZynamicのbinDiffツールを使用して比較した結果、5119シェルコードと3113シェルコード間の類似性と信頼性が、99%に及ぶことが判明しました。
各コードの手作業による比較によっても、binDiffが算出した高い類似率と信頼率が正確であることを確認しました。
アニメーション化されたGIFに埋め込まれたペイロードの検出手法は、5119シェルコードと3113シェルコードのどちらでも同じです。
また、それら両方のシェルコードにおいて、暗号化テキストからクリアテキストへのペイロードの復号化にまったく同じアルゴリズムとキー値が使用されています。特に、XOR、減算、2番目のXOR命令で、キー値0x12、0x11、0x85がそれぞれ使用されていることが注目に値します。
実際、2つのシェルコードを並列比較したところ、5119シェルコードには、1つの命令のみが追加されていることが判明しました。以下の図では、この命令が赤色で強調表示されています。
結論
これらの攻撃は、UPSなどの巧妙なAPTグループが、その攻撃において新たな脆弱性をすぐに悪用する手法を明らかにしています。
この脆弱性に対応するパッチは提供されていますが、脆弱性を悪用した仕掛けが明らかになった同じ日に初めてリリースされたため、組織が効果的なパッチ適用を行う時間はほとんどありません。
この種の攻撃は重点的に行われるため、既知のセキュリティ侵害の兆候(IOC)を監視する従来の検出方法で対処するのは困難です。
パロアルトネットワークスのアドバンスド エンドポイント プロテクションTrapsなど、自動化された動作ベースの防御対策を導入することにより、この種の攻撃が組織にもたらすリスクを大幅に削減できます。
セキュリティ侵害の兆候
SHA256
- a2fe113cc13acac2bb79a375f692b8ba5cc2fa880272adc7ab0d01f839e877ff
ドメイン
- rpt.perrydale[.]com
- report.perrydale[.]com
IP
- 194.44.130.179
URL
- rpt.perrydale[.]com /en/show.swf
- report.perrydale[.]com /ema/show.swf
- rpt.perrydale[.]com /en/b.gif
- report.perrydale[.]com /ema/b,gif