Win64 / Vabushkyマルウェアは、攻撃者がCarberpソースを使用してプロジェクトを更新する速さの良い例です。 新しいPowerLoaderの2つの64ビットエクスプロイト(CVE-2012-1864およびCVE-2012-0217)は、Carberpソースコードに基づいています。 また、2013年4月に一般公開されたPowerLoaderコードが、それに基づいたドロッパーの急増の新しい波を引き起こしたことも注目に値します。
Win64 / VabushkyドロッパーはMPRESSを使用してパッケージ化されます。これは、このパッカーが64ビットPE32 +ファイルをサポートする数少ない無料配布製品の1つであるためです。 解凍後、ドロッパーは、次のコンパイル時間で元のPE32 +ヘッダーを取得します。
![](https://habrastorage.org/storage3/e0f/e83/b70/e0fe83b70206a544f1517737007b1df6.png)
すべてのファイルには、8月上旬にコンパイルされたペイロードが含まれます。 このバージョンのPowerLoaderのエクスポートテーブルでは、古いバージョンと比較した変更を確認できます。
![](https://habrastorage.org/storage3/55c/e46/328/55ce46328bd523eed2732ad7fb81b963.png)
explorer.exeにコードを挿入した後、PowerLoaderは信頼できるプロセスのコンテキストで次のエクスプロイトを実行しようとします。
![](https://habrastorage.org/storage3/60a/6fa/d7c/60a6fad7c9e1934f6352c3aaee2232b0.png)
これらのエクスプロイトは、有効なWin32 APIを使用してユーザーモードからカーネルオブジェクトを直接操作するため、同様のエクスプロイトセットを使用して、セキュリティ製品で使用されるいくつかのタイプのサンドボックスをバイパスできます。
CVE-2013-3660
3月、GoogleセキュリティチームTavis Ormandy (@taviso)の研究者が脆弱性CVE-2013-3660を発見しました。この脆弱性は7月のセキュリティ情報MS13-053でクローズされました。 PoC x86バージョンは一般に公開されていますが、新しいPowerLoaderの修正が登場するまで、このエクスプロイトの64ビットバージョンは確認されませんでした。
悪用される前に、悪用コードは2番目のデスクトップオブジェクト( user32!CreateDesktopA )を作成して、GDIオブジェクトを操作する事実を隠します。
![](https://habrastorage.org/storage3/59d/926/bd4/59d926bd4f70a05bcc1c741a2191ca78.png)
メインのオペレーティングコードを次の図に示します。
![](https://habrastorage.org/storage3/996/1c1/302/9961c1302886ae14d99540888282fdcb.png)
nt!NtQueryIntervalProfileで実行されるシェルコードは次のとおりです。
![](https://habrastorage.org/storage3/6eb/866/f07/6eb866f076ceb46aa3305d3fef316361.png)
このオペレーティングコードは、新しいOSがソフトウェアをサポートするIntel SMEP(スーパーバイザーモード実行保護)ハードウェアテクノロジをバイパスできないため、64ビットWindows 8では機能しません。 SMEPは、カーネルモードでユーザーアドレススペースコードのページの実行をブロックし、64ビットバージョンのWindows 8でROP を使用してバイパスできます 。 ただし、Intelは既にSMAP(Supervisor Mode Access Prevention)と呼ばれる別の保護技術を発表しており、これはメモリページへのアクセスに追加の制限を導入しています。 これらのSMAPおよびSMEPテクノロジーはどちらも、カーネルモードのNULLポインターの逆参照の脆弱性の悪用を防ぐように設計されていますが、WindowsではSMAPはまだサポートされていません。
CVE-2012-0217およびCVE-2012-1864
これらの脆弱性のエクスプロイトコードは、漏洩したCarberpソースに基づいています。 Carberpのテキストが公開されるまで、CVE-2012-1864 ITWの64ビットバージョンは確認していません。 一般公開されているオペレーションコードCVE-2012-0217は、64ビットバージョンのOSでは安定して動作しません。 Carberpテキストのエクスプロイト実行可能ファイルを調べたところ、ビルドディレクトリへの同じパスを示していることがわかりました。
![](https://habrastorage.org/storage3/7a9/221/5a3/7a92215a3f7be4062b444a26b43c5c67.png)
![](https://habrastorage.org/storage3/336/a89/161/336a891618104159bf69f164cb4f7dab.png)
これは、エクスプロイトが同じシステム上で、おそらく1人によって開発されたことを示唆しています。 エクスプロイトコードCVE-2012-0217は、運用機能を実証する公開されているPoCとは大きく異なります。 Carberpテキストのエクスプロイトバージョンはより安定しており、64ビットOSをサポートしています。 CVE-2012-0217のこれらのエクスプロイトバージョンのコードブロックでの一致を以下に示します(PowerLoaderからのコードは左側に示されています)。
![](https://habrastorage.org/storage3/c75/bf9/62a/c75bf962ad64a1018adff34725499ff0.png)
一見したところ、それらは非常によく似ています。 主な違いは、PowerLoaderの変更には含まれていない追加のデバッグコードにのみ見られます。 さらに、操作をより安定させるための方法がいくつかあります。
![](https://habrastorage.org/storage3/2fc/21b/d06/2fc21bd06bda3314c409d164c8b4b708.png)
このコードは、 nt!HalDispatchTableを変更して、操作中の複数のスレッドによるCPU使用率を100%にしないようにします。
CVE-2012-1864のエクスプロイトも、新しいPowerLoaderの修正まで公開されていませんでした。 脆弱性自体は、Azimuth SecurityのTarjei Mandt (別名@kernelpool)によって発見されました。 脆弱性の詳細は2012年6月のRECon会議での彼のレポート「Smashing the Atom」で公開されましたが、悪用コードは公開されていませんでした。 PowerLoaderのエクスプロイトコードはより最適化されており、デバッグ情報は含まれていません。 以下は、このエクスプロイトのさまざまなバージョンの違いです。2番目のスクリーンショットはPowerLoaderのバージョンで、デバッグ情報の出力はありません。
![](https://habrastorage.org/storage3/92a/d3c/caa/92ad3ccaaba361e3999d9a69aa54cb0f.png)
![](https://habrastorage.org/storage3/f3e/f9b/ab3/f3ef9bab3204a38d3c2e332bad908278.png)
CVE-2012-0217およびCVE-2012-1864の脆弱性に対するこれらのエクスプロイトは両方とも、セキュリティ製品のサンドボックスバイパスの良い例です。 エクスプロイトは、標準のWinAPIを使用してユーザーモードからカーネルモードオブジェクトを操作できます。 これらのタイプの脆弱性を使用したサンドボックスバイパスの適切な説明は、プレゼンテーション「アプリケーションサンドボックス:ペンテスターの視点」で提供されています。
ペイロード
PowerLoaderコードを正常に実行し、権限を引き上げると、 Win64 / Vabushky.Aランサムウェアがユーザーのコンピューターにダウンロードされます。 ランサムウェアファイルは、ブートローダーが現在の特権を最大(SYSTEM)に引き上げた後に実行されます。 Win64 / Vabushkyドロッパーは、正当な自己生成証明書を使用したトリックと、その後のローカルストレージへの麻疹CA、つまりルートCAおよびTrustedPublisherとしてのインストールを使用します。 次のコードは、この手法を示しています。
![](https://habrastorage.org/storage3/f4b/0a3/1da/f4b0a31dac901790b48d7f60fb9ab9a5.png)
このトリックは新しいものではなく、Mandiant の分析「The“ Hikit” Rootkit:Advanced and Persistent Attack”」ですでに言及されています。 さらに、インストールプロセス中に、悪意のあるコードがブート構成データ(BCD)データを変更して、テスト署名モードをアクティブにします。これにより、未署名のドライバーをダウンロードできます。 次の図は、ドライバーがインストールされるレジストリキーを示しています。
![](https://habrastorage.org/storage3/c88/c77/d45/c88c77d45f2f2efcab4564fb439b83c9.png)
次のステップでは、悪意のあるドライバーをシステムにインストールして、システムをブロックし、特定のカバーを含む画面を表示します。この画面は、コード自体に組み込まれたURLの1つからダウンロードされます。
![](https://habrastorage.org/storage3/e06/ea4/179/e06ea4179d8bd17a1516ab805d75a347.png)
悪意のあるプログラムのすべてのアクションの後、ユーザーはロックされたデスクトップを受け取ります。
![](https://habrastorage.org/storage3/a00/8b8/86d/a008b886d46960ec02c87f0b1ed147a7.png)
Win64 / Vabushkyは、Microsoft CryptoAPIを使用してユーザーファイルを暗号化します。 暗号化後、.crypted拡張子がファイルに追加されます。 ドライバーコードは標準の画面ロック技術を使用しており、詳細な説明は必要ありません。
おわりに
Win64 / Vabushkyドロッパーは、PowerLoaderコードの興味深い変更を使用します。 Carberpソースからの64ビットOS用のLPEエクスプロイトを使用します。 Win64 / Vabushkyによって抽出されたすべてのモジュールとコンポーネントは、64ビットバージョンのWindows専用に使用されます。 さらに、CVE-2013-3660はWindows 8の32ビットバージョンを操作できるため、ユニバーサルになります。 同時に、Intel SMEPの制限とWindows 8でのサポートにより、オペレーティングコードは64ビットバージョンのOSでは機能しません。 したがって、ユーザーがエクスプロイトアクションから保護されている場合、Windows 8で追加のセキュリティメカニズムを提供するマイクロソフトの努力は本当に正当化されます。