脅威アクターがクレジット カード データ攻撃で Windows のゼロデイ エクスプロイトを利用

CVE-2016-0167 Local privilege escalation exploit elevates to system news

2016 年 3 月、金銭目的の脅威アクターが、主に小売業、レストラン、ホスピタリティ業界を標的とした、いくつかのカスタマイズされたスピア フィッシング キャンペーンを開始しました。電子メールには、マクロが埋め込まれMicrosoft Word文書のバリエーションが含まれており、有効にすると、PUNCHBUGGY と呼ばれる悪意のあるダウンローダーをダウンロードして実行しました。

PUNCHBUGGY はダイナミック リンク ライブラリ (DLL) ダウンローダーであり、32 ビット バージョンと 64 ビット バージョンの両方が存在し、HTTPS 経由で追加のコードを取得できます。このダウンローダは、侵害されたシステムとやり取りし、被害者の環境を横方向に移動するために攻撃者によって使用されました。

FireEye は、このキャンペーンの犠牲となった北米の 100 以上の組織を特定しました。 FireEye は、これらの侵害の多くを調査し、脅威アクターが、これまで知られていなかった特権の昇格 (EoP) エクスプロイトや、PUNCHTRACK と呼ばれる以前は無名の販売時点管理 (POS) メモリ スクレイピング ツールなど、比較的高度なツールにアクセスしていることを確認しました。

CVE-2016-0167 – Microsoft Windows のゼロデイ ローカル権限昇格

一部の被害者環境では、脅威アクターは Microsoft Windows のこれまで知られていなかった特権の昇格 (EoP) の脆弱性を悪用して、侵害された限られた数のマシンでシステム権限を選択的に取得しました (図 1)。

CVE-2016-0167 Local privilege escalation exploit elevates to system
図 1: CVE-2016-0167 ローカル権限昇格のエクスプロイトがシステムに昇格

2016 年 4 月 12 日の月例パッチ ( MS16-039 ) で CVE-2016-0167 にパッチを適用した Microsoft と連携しました。私たちは協力して、2016 年 3 月 8 日までさかのぼるこの特定のエクスプロイトの限定的で標的を絞った使用を観察することができました。

攻撃者

この EoP の使用は、金銭目的の攻撃者によるものであると考えています。過去 1 年間、このグループが同様のインフラストラクチャと戦術、技法、および手順 (TTP) を使用していることを確認しただけでなく、ダウンローダー PUNCHBUGGY および POS マルウェア PUNCHTRACK を使用している、これまでに観察した唯一のグループでもあります。 Track 1 と Track 2 の両方の支払いカード データをスクレイピングするように設計された PUNCHTRACK は、高度に難読化されたランチャーによってロードおよび実行され、ディスクに保存されることはありません。

この攻撃者は、大規模かつ急速なペースで作戦を実施しており、作戦意識のレベルとその場で作戦を適応させる能力を示しています。これらの能力は、標的を絞った EoP エクスプロイトの使用と、被害者に合わせてフィッシング メールを個別に調整するために必要な偵察とを組み合わせることで、攻撃者の操作の成熟度と洗練度を潜在的に物語っています。

搾取の詳細

Win32k!xxxMNDestroyHandler Use-After-Free

CVE-2016-0167 は、win32k Windows Graphics サブシステムにおけるローカルでの権限昇格の脆弱性です。リモート コード実行 (RCE) を既に達成している攻撃者は、この脆弱性を悪用して権限を昇格させる可能性があります。野生からの攻撃では、攻撃者は最初に、スピア フィッシング メールに添付されたドキュメント内の悪意のあるマクロで RCE を達成しました。次に、CVE-2016-0167 エクスプロイトをダウンロードして実行し、後続のコードを SYSTEM として実行しました。

CVE-2016-0167 は 2016 年 4 月 12 日の時点でパッチが適用されており、完全に更新されたシステムでは攻撃者の EoP エクスプロイトが機能しなくなります。 Microsoft は、2016 年 5 月 10 日に追加の更新プログラム ( MS16-062 ) をリリースし、同様の問題に対して Windows をさらに改善しました。

脆弱性の設定

まず、エクスプロイトは CreateWindowEx() を呼び出してメイン ウィンドウを作成します。 WNDCLASSEX.lpfnWndProc フィールドを、WndProc という名前の関数に設定します。これは、SetWindowsHookEx() と SetWinEventHook() をそれぞれ使用して、アプリケーション定義のフック (MessageHandler という名前) とイベント フック (EventHandler という名前) をインストールします。

次に、SetTimer() で IDEvent 0x5678 のタイマーを作成します。タイムアウトが発生すると、WndProc は WM_TIMER メッセージを受け取り、TrackPopupMenuEx() を呼び出してショートカット メニューを表示します。 EventHandler は xxxTrackPopupMenuEx() から EVENT_SYSTEM_MENUPOPUPSTART イベントをキャプチャし、メッセージをカーネルに送信します。メッセージを処理する際、カーネルは最終的に脆弱な関数 xxxMNDestroyHandler() を呼び出します。この関数は、ユーザーモード コールバック MessageHandler を呼び出します。次に、MessageHandler は DestroyWindow() を呼び出して解放後の使用シナリオを引き起こします。

ヒープ制御

このエクスプロイトは、SetSysColors() を使用して、慎重にヒープ割り当てを行うことでヒープのレイアウトを操作するヒープ風水を実行します。次のスニペットでは、重要なフィールドの 1 つがアドレス fffff900`c1aaac40 にあります。ここで、ffffff900`c06a0422 は、ウィンドウ カーネル オブジェクト (tagWND) のベース アドレスに 0x22 を加えたものです。

0日-1

メモリ破損

以下に示すように、USE 操作は HMAssignmentUnlock()+0x14 で発生します。

0日-2

RDX には tagWND のベース アドレスと 0x22 が含まれているため、この命令は win32k!tagWND.state フィールドに 0xffffffff を追加し、その値を 0x07004000 から 0x07003fff に変更します。 0x07004000 は、bServerSideWindowProc フラグが設定されていないことを示します。変更が発生すると、以下に示すように bServerSideWindowProc フラグを設定します。

0日-3

コード実行

ウィンドウがサーバー側としてマークされている (bServerSideWindowPro が設定されている) 場合、lpfnWndProc 関数ポインターは既定で信頼され、これはユーザー モードのシェルコードにすることができます。次のバックトレースは、エクスプロイトのシェルコードを呼び出すカーネルを示しています。

0日-4

次に、シェルコードはシステム プロセス トークンを盗み、子の cmd.exe プロセスを昇格させます。

緩和

FireEye の製品とサービスは、ユーザー インターフェイス内でこのアクティビティを Exploit.doc.MVX、Malware.Binary.Doc、PUNCHBUGGY、Malware.Binary.exe、および PUNCHTRACK として識別します。

最新の Windows 更新プログラムは CVE-2016-0167 に対処し、CVE-2016-0167 を標的とするエクスプロイトからシステムを完全に保護します。

さらに、Office マクロを利用したソーシャル エンジニアリング攻撃を防ぐための効果的な緩和策が存在します。個々のユーザーは設定で Office マクロを無効にすることができ、エンタープライズ管理者はグループ ポリシーを適用して、すべての Office 2016 ユーザーのマクロの実行を制御できます。 Office マクロ攻撃と軽減策の詳細については、 こちらを参照してください。

謝辞

Elia Florio と Microsoft の Secure@ スタッフ、FireEye の Dimiter Andonov、Erye Hernandez、Nick Richard、Ryann Winters の協力に感謝します。

参照: https://www.mandiant.com/resources/blog/windows-zero-day-payment-cards

Comments

Copied title and URL