CVE-2017-11882エクスプロイトを使用した、イランの脅威グループと疑われるAPT34による中東での新たな標的型攻撃

Disassembly of overwritten function address news

Microsoft が 2017 年 11 月 14 日にCVE-2017-11882のパッチを発行してから 1 週間も経たないうちに、FireEye は攻撃者が Microsoft Office の脆弱性を悪用して中東の政府機関を標的にしていることを確認しました。この活動は、目的を達成するためにカスタム PowerShell バックドアを使用して、APT34 と呼ばれるイランのサイバー スパイ脅威グループと疑われるものによって実行されたと評価しています。

APT34 は、主にイランの国家利益に利益をもたらす偵察活動に重点を置いた長期的なサイバー スパイ活動に関与していると考えられ、少なくとも 2014 年から活動を続けています。政府、エネルギー、化学、電気通信の分野で事業を展開しており、主に中東での事業に重点を置いています。 APT34 は、イランへの言及を含むインフラストラクチャの詳細、イランのインフラストラクチャの使用、および国家の利益と一致するターゲティングに基づいて、イラン政府に代わって活動していると評価しています。

APT34 は公開ツールと非公開ツールを組み合わせて使用し、多くの場合、侵害されたアカウントを使用してスピア フィッシング操作を実行し、ソーシャル エンジニアリング戦術と組み合わせることもあります。 2016 年 5 月、マイクロソフトは、中東地域の銀行を標的としたスピア フィッシング キャンペーンの詳細を説明するブログを公開しました。このキャンペーンは、マクロ対応の添付ファイルを使用して POWBAT マルウェアを配布していました。現在、そのキャンペーンは APT34 によるものであると考えています。 2017 年 7 月には、マルウェア内の文字列に基づいて、POWRUNER と呼ばれる PowerShell ベースのバックドアと、BONDUPDATER と呼ばれるドメイン生成アルゴリズム機能を備えたダウンローダーを使用して、中東の組織を標的とする APT34 を観測しました。バックドアは、 CVE-2017-0199を悪用する悪意のある .rtf ファイルを介して配信されました。

この最新のキャンペーンでは、APT34 は最近の Microsoft Office の脆弱性 CVE-2017-11882 を利用して、POWRUNER と BONDUPDATER を展開しました。

APT34 に関する完全なレポートは、 MySIGHT カスタマー コミュニティで入手できます。 APT34 は、グループ「OilRig」に関連する公開レポートと大まかに一致しています。個々の組織はさまざまなデータ セットを使用して攻撃者を追跡する可能性があるため、活動の分類が完全に一致しない可能性があります。

CVE-2017-11882: Microsoft Office スタック メモリ破損の脆弱性

CVE-2017-11882 は Microsoft Office のいくつかのバージョンに影響を与え、悪用されると、メモリ内のオブジェクトを不適切に処理した結果、リモート ユーザーが現在のユーザーのコンテキストで任意のコードを実行できるようになります。この脆弱性は、2017 年 11 月 14 日にマイクロソフトによってパッチが適用されました。完全な概念実証 (POC) は、脆弱性の報告者によって 1 週間後に公開されました。

この脆弱性は、数式の挿入と評価に使用される Microsoft Office のコンポーネントである古い数式エディター (EQNEDT32.EXE) に存在します。数式エディターは、オブジェクトのリンクと埋め込み (OLE) テクノロジを使用して Office ドキュメントに埋め込まれています。 Office アプリケーションの子プロセスではなく、別のプロセスとして作成されます。巧妙に細工された数式が数式エディタに渡されると、データのコピー中にデータ長が適切にチェックされず、スタック メモリが破損します。 EQNEDT32.exe は古いコンパイラを使用してコンパイルされており、アドレス空間レイアウトのランダム化 (ASLR) (メモリ破損の脆弱性の悪用を防ぐ技術) をサポートしていないため、攻撃者はプログラムの実行フローを簡単に変更できます。

分析

APT34 は、被害組織に送信された悪意のあるスピア フィッシング メールの添付ファイルとして、悪意のある .rtf ファイル (MD5: a0e6933f4e0497269620f44a083b2ed4) を送信しました。悪意のあるファイルは CVE-2017-11882 を悪用して、スタック上のメモリを破壊し、悪意のあるデータをスタックにプッシュします。その後、マルウェアは関数アドレスを EQNEDT32.EXE からの既存の命令のアドレスで上書きします。上書きされた命令 (図 1 に表示) は、「WinExec」関数を呼び出す 00430c12 の命令に示されているように、kernel32.dll から「WinExec」関数を呼び出すために使用されます。

Disassembly of overwritten function address
図 1: 上書きされた関数アドレスの逆アセンブル

悪用後、「WinExec」関数が正常に呼び出され、現在ログオンしているユーザーのコンテキストで子プロセス「mshta.exe」が作成されます。図 2 に示すように、プロセス「mshta.exe」は、hxxp://mumbai-m[.]site/b.txt から悪意のあるスクリプトをダウンロードして実行します。

破損したスタック バッファにコピーされた攻撃者のデータ
図 2: 破損したスタック バッファにコピーされた攻撃者のデータ

実行ワークフロー

悪意のあるスクリプトは、一連の手順を経て正常に実行され、最終的にコマンド アンド コントロール (C2) サーバーへの接続を確立します。エクスプロイト ドキュメントから始まる一連のイベント全体を図 3 に示します。

CVE-2017-11882 および POWRUNER 攻撃シーケンス
図 3: CVE-2017-11882 と POWRUNER の攻撃シーケンス
  1. 悪意のある .rtf ファイルは、CVE-2017-11882 を悪用します。
  2. マルウェアは、関数アドレスを EQNEDT32.EXE からの既存の命令で上書きします。
  3. このマルウェアは子プロセス「mshta.exe」を作成し、hxxp://mumbai-m[.]site/b.txt からファイルをダウンロードします。
  4. b.txt には、hxxp://dns-update[.]club/v.txt からドロッパーをダウンロードするための PowerShell コマンドが含まれています。また、PowerShell コマンドは、ダウンロードしたファイルの名前を v.txt から v.vbs に変更し、スクリプトを実行します。
  5. v.vbs スクリプトは、4 つのコンポーネント (hUpdateCheckers.base、dUpdateCheckers.base、cUpdateCheckers.bat、および GoogleUpdateschecker.vbs) をディレクトリ C:ProgramDataWindowsMicrosoftjava にドロップします。
  6. v.vbs は、証明書サービスの一部としてインストールされる正規の Microsoft コマンドライン プログラムである CertUtil.exe を使用して、base64 でエンコードされたファイル hUpdateCheckers.base および dUpdateCheckers.base をデコードし、hUpdateCheckers.ps1 および dUpdateCheckers.ps1 をステージング ディレクトリにドロップします。 .
  7. cUpdateCheckers.bat が起動され、GoogleUpdateschecker.vbs 永続化のためにスケジュールされたタスクが作成されます。
  8. GoogleUpdateschecker.vbs は、5 秒間スリープした後に実行されます。
  9. cUpdateCheckers.bat と *.base がステージング ディレクトリから削除されます。

図 4 には、実行ワークフロー セクションに関連する v.vbs スクリプトの抜粋が含まれています。

v.vbs の実行ワークフロー セクション
図 4: v.vbs の実行ワークフロー セクション

実行ワークフロー セクションに記載されている手順が正常に実行されると、タスク スケジューラは毎分 GoogleUpdateschecker.vbs を起動し、次に dUpdateCheckers.ps1 および hUpdateCheckers.ps1 スクリプトを実行します。これらの PowerShell スクリプトは最終段階のペイロードです。これらには、ドメイン生成アルゴリズム (DGA) 機能を備えたダウンローダーと、C2 サーバーに接続してコマンドを受信し、追加の悪意のあるアクティビティを実行するバックドア コンポーネントが含まれています。

hUpdateCheckers.ps1 (POWRUNER)

バックドア コンポーネントである POWRUNER は、C2 サーバーとの間でコマンドを送受信する PowerShell スクリプトです。 POWRUNER は、タスク スケジューラによって毎分実行されます。図 5 には、POWRUNER バックドアの抜粋が含まれています。

POWRUNER PowerShell スクリプト hUpdateCheckers.ps1
図 5: POWRUNER PowerShell スクリプト hUpdateCheckers.ps1

POWRUNER はまず、ランダムな GET リクエストを C2 サーバーに送信し、応答を待ちます。サーバーは、「not_now」またはランダムな 11 桁の数字で応答します。応答が乱数の場合、POWRUNER は別のランダム GET 要求をサーバーに送信し、応答を文字列に格納します。次に、POWRUNER は格納された乱数応答の最後の桁をチェックし、値をコマンドとして解釈し、そのコマンドに基づいてアクションを実行します。コマンド値と関連するアクションを表 1 に示します。

指示

説明

アクション

0

サーバー応答文字列にはバッチ コマンドが含まれています

バッチ コマンドを実行し、結果をサーバーに送り返す

1

サーバーの応答文字列はファイル パスです

ファイル パスを確認し、ファイルをサーバーにアップロード (PUT) します。

2

サーバーの応答文字列はファイル パスです

ファイル パスを確認し、ファイルをダウンロード (GET) します。

表 1: POWRUNER コマンド

コマンドの実行に成功すると、POWRUNER は結果を C2 サーバーに送り返し、実行を停止します。

C2 サーバーは、PowerShell コマンドを送信して、被害者のシステムのスクリーンショットをキャプチャして保存することもできます。 「fileupload」コマンドが発行されると、POWRUNER はキャプチャしたスクリーンショットの画像ファイルを C2 サーバーに送信します。図6は、C2サーバーから送信されたPowerShellの「Get-Screenshot」関数を示しています。

PowerShell のスクリーンショット機能
図 6: PowerShell のスクリーンショット機能

dUpdateCheckers.ps1 (BONDUPDATER)

APT34 による最近の進歩の 1 つは、DGA を使用してサブドメインを生成することです。ハードコーディングされた文字列「B007」に基づいて命名された BONDUPDATER スクリプトは、カスタム DGA アルゴリズムを使用して、C2 サーバーと通信するためのサブドメインを生成します。

DGA の実装

図 7 は、サンプル ドメイン (456341921300006B0C8B2CE9C9B007.mumbai-m[.]site) が BONDUPDATER のカスタム DGA を使用して生成される方法の内訳を示しています。

BONDUPDATERが作成したサブドメインの内訳
図 7: BONDUPDATER によって作成されたサブドメインの内訳
  1. これは、次の式を使用して作成されたランダムに生成された数値です。 $rnd = -join (Get-Random -InputObject (10..99) -Count (%{ Get-Random -InputObject (1..6)}));
  2. この値は 0 または 1 です。最初は 0 に設定されています。最初に解決されたドメイン IP アドレスが 24.125.XX で始まる場合、1 に設定されます。
  3. 最初は 000 に設定され、DNS 要求ごとに 3 ずつ増加します
  4. システム UUID の最初の 12 文字。
  5. 「B007」ハードコードされた文字列。
  6. ハードコーディングされたドメイン「mumbai-m[.]site」

BONDUPDATER は、結果の DGA ドメインを解決しようとし、IP アドレスの解決に基づいて次のアクションを実行します。

  1. %temp% の場所に一時ファイルを作成します
    • 作成されたファイルには、解決された IP アドレスの最後の 2 オクテットがファイル名として含まれます。
  2. BONDUPDATER は、ファイル名の最後の文字を評価し、表 2 にある対応するアクションを実行します。

キャラクター

説明

0

ファイルにはバッチコマンドが含まれており、バッチコマンドを実行します

1

一時ファイルの名前を .ps1 拡張子に変更します

2

一時ファイルの名前を .vbs 拡張子に変更します

表 2: BONDUPDATER アクション

図 8 は、BONDUPDATER の DGA 実装のスクリーンショットです。

ドメイン生成アルゴリズム
図 8: ドメイン生成アルゴリズム

実行時に観察される、生成されたサブドメインの例には次のものがあります。

143610035BAF04425847B007.ムンバイ-m[.]サイト

835710065BAF04425847B007.ムンバイ-m[.]サイト

376110095BAF04425847B007.ムンバイ-m[.]サイト

ネットワーク通信

図 9 は、POWRUNER バックドア クライアントとサーバー間のネットワーク通信の例を示しています。

ネットワーク通信の例
図 9: ネットワーク通信の例

この例では、POWRUNER クライアントがランダムな GET リクエストを C2 サーバーに送信し、C2 サーバーは乱数 (99999999990) を応答として送信します。応答は「0」で終わる乱数であるため、POWRUNER は別のランダム GET 要求を送信して、追加のコマンド文字列を受信します。 C2 サーバーは、Base64 でエンコードされた応答を返します。

図 10 に示すように、サーバーが文字列「not_now」を応答として送信した場合、POWRUNER はそれ以上の要求を停止し、実行を終了します。

"not now" サーバー応答の例
図 10: 「not now」サーバー応答の例

バッチ コマンド

POWRUNER は、C2 サーバーからバッチ コマンドを受信して、システムからホスト情報を収集することもあります。これには、現在ログインしているユーザー、ホスト名、ネットワーク構成データ、アクティブな接続、プロセス情報、ローカルおよびドメインの管理者アカウント、ユーザー ディレクトリの列挙、およびその他のデータに関する情報が含まれる場合があります。バッチ コマンドの例を図 11 に示します。

図 11: POWRUNER C2 サーバーによって送信されるバッチ コマンド
図 11: POWRUNER C2 サーバーによって送信されるバッチ コマンド

POWRUNER / BONDUPDATER の追加使用

APT34 は、2017 年 7 月に POWRUNER と BONDUPDATER を使用して、中東の組織を標的にしました。2017 年 7 月、FireEye Web MPS アプライアンスは、APT34 POWRUNER / BONDUPDATER ダウンローダー ファイルを取得してインストールする要求を検出し、ブロックしました。同月、FireEye は、悪意のある .rtf ファイル (MD5: 63D66D99E46FB93676A4F475A65566D8) を使用して、別の中東組織を標的とする APT34 を観測しました。 CVE-2017-0199 を悪用したもの。このファイルは、以下から悪意のあるファイルをダウンロードするための GET 要求を発行しました。

hxxp://94.23.172.164/dupdatechecker.doc。

図 12 に示すように、dupatechecker.doc ファイル内のスクリプトは、同じサーバーから dupatechecker.exe という名前の別のファイルをダウンロードしようとします。このファイルには、マルウェアの作成者によるコメントも含まれていますが、これはセキュリティ研究者にとって明らかな挑発のようです。

dupdatechecker.doc スクリプトの内容
図 12: dupdatechecker.doc スクリプトの内容

dupatechecker.exe ファイル (MD5: C9F16F0BE8C77F0170B9B6CE876ED7FB) は、BONDUPDATER と POWRUNER の両方をドロップします。これらのファイルは C2 の proxychecker[.]pro に接続します。

展望と影響

APT34 による最近の活動は、APT34 が独自の開発リソースに潜在的にアクセスできる有能なグループであることを示しています。過去数か月の間に、APT34 は少なくとも 2 つの公開された脆弱性 (CVE-2017-0199 および CVE-2017-11882) に対するエクスプロイトを迅速に組み込むことができました。 中東の組織を標的にする。 C2 に DGA を組み込むなど、マルウェアを継続的に更新しようとする APT34 の取り組みは、検出を抑止するための戦略を追求するというグループのコミットメントを示していると評価しています。 APT34 は、中東地域のエンティティへのアクセスを追求し続けるため、マルウェアと戦術を進化させ続けると予想されます。

IOC

ファイル名 / ドメイン / IP アドレス

MD5 ハッシュまたは説明

CVE-2017-11882 エクスプロイト ドキュメント

A0E6933F4E0497269620F44A083B2ED4

b.txt

9267D057C065EA7448ACA1511C6F29C7

v.txt/v.vbs

B2D13A336A3EB7BD27612BE7D4E334DF

dUpdateCheckers.base

4A7290A279E6F2329EDD0615178A11FF

hUpdateCheckers.base

841CE6475F271F86D0B5188E4F8BC6DB

cUpdateCheckers.bat

52CA9A7424B3CC34099AD218623A0979

dUpdateCheckers.ps1

BBDE33F5709CB1452AB941C08ACC775E

hUpdateCheckers.ps1

247B2A9FCBA6E9EC29ED818948939702

GoogleUpdateschecker.vbs

C87B0B711F60132235D7440ADD0360B0

hxxp://ムンバイ-m[.]サイト

パウランナーC2

hxxp://dns-update[.]club

マルウェア ステージング サーバー

CVE-2017-0199 エクスプロイト ドキュメント

63D66D99E46FB93676A4F475A65566D8

94.23.172.164:80

マルウェア ステージング サーバー

dupdatechecker.doc

D85818E82A6E64CA185EDFDDBA2D1B76

dupdatechecker.exe

C9F16F0BE8C77F0170B9B6CE876ED7FB

プロキシチェッカー[.]プロ

Q2

46.105.221.247

mumbai-m[.]site と hpserver[.]online を解決済み

148.251.55.110

mumbai-m[.]site と dns-update[.]club を解決済み

185.15.247.147

dns-update[.]club を解決しました

145.239.33.100

dns-update[.]club を解決しました

82.102.14.219

ns2.dns-update[.]club & hpserver[.]online & anyportals[.]com を解決済み

v7-hpserver.online.hta

E6AC6F18256C4DDE5BF06A9191562F82

dUpdateCheckers.base

3C63BFF9EC0A340E0727E5683466F435

hUpdateCheckers.base

EEB0FF0D8841C2EBE643FE328B6D9EF5

cUpdateCheckers.bat

FB464C365B94B03826E67EABE4BF9165

dUpdateCheckers.ps1

635ED85BFCAAB7208A8B5C730D3D0A8C

hUpdateCheckers.ps1

13B338C47C52DE3ED0B68E1CB7876AD2

googleupdateschecker.vbs

DBFEA6154D4F9D7209C1875B2D5D70D5

hpserver[.]オンライン

C2

v7-anyportals.hta

EAF3448808481FB1FDBB675BC5EA24DE

dUpdateCheckers.base

42449DD79EA7D2B5B6482B6F0D493498

hUpdateCheckers.base

A3FCB4D23C3153DD42AC124B112F1BAE

dUpdateCheckers.ps1

EE1C482C41738AAA5964730DCBAB5DFF

hUpdateCheckers.ps1

E516C3A3247AF2F2323291A670086A8F

anyportals[.]com

C2

参照: https://www.mandiant.com/resources/blog/targeted-attack-in-middle-east-by-apt34

Comments

Copied title and URL