※本記事は2016年10月25日に米国で掲載されたブログ記事の抄訳を基にしています。

Unit 42は、複数の攻撃で使用されているHworm (または、Houdini)の新しいバージョンを発見しました。このブログでは、この新しいHwormバージョンの技術的な詳細の要点と、バックドアを利用した攻撃活動について説明します。この攻撃に使用されているサンプルについて、私たちが最初に観測したのは2016年6月でしたが、それ以降も公表しているとおり、10月中旬の最近まで引き続き攻撃が目撃されています。つまり、これはアクティブな継続した攻撃活動であると推測されます。

脅威の分析

AutoFocusWildFire実行レポートを通じて検索しながら、このマルウェアの調査を開始しました。ファミリ ラベルのない新たに送信された悪意のあるサンプルを探していると、独自のミューテックス“RCSTEST”が姿を現しました。このミューテックスの作成、その他の動的な動作、ゆっくりと出現し始めたサンプルのグループに着目してみます。サンプルのグループは、共通の配信メカニズム、擬似餌とおとりファイルのテーマ、ペイロード(Hworm)、および制御インフラストラクチャを備えています。

この攻撃のサンプルは、SFXファイルの形式でやってきます。これらの配信ファイルの元のファイル名は、中東と地中海の政治家や政治団体に関連しています。それらには以下が含まれています。

Mohamed Dahlan Abu Dhabi Meeting.exe
فضيحة من العيار الثقيل اردوغان يشرب الخمر.exe
صراعات داخلية في صفوف الاخوان المسلمين.exe
عملية اغتيال الدكتور محمد كمال.scr
الملك عبد الله يهدد دول الخليج ويتوعد دحلان.exe
بالفيديو امير سعودي يهين مواطنين على الهواء.scr

実行された各SFXファイルがおとり文書、ビデオまたはURLを開くと、最終的にバックグラウンドでHwormペイロードが実行されます。おとりファイルは、上記の配信ファイル名と比べると、同様のテーマになっています。図1に、サンプルがおとりとして開いたビデオのスクリーンショットを示します。

図1 おとりビデオ
 

別のサンプルは、.urlショートカットをドロップし、システムのデフォルトのWebブラウザを使用してそれを開くことで、YouTubeビデオを表示します。図2に、.urlファイルのコンテンツを示します。

図2 .urlファイル
 

.urlファイルが開かれると、上記のYouTubeビデオがおとりとして表示されます。この時点では、このビデオのアップローダーがこの特定の攻撃と関連しているかどうかはわかりません。

おとりに加え、サンプルはHwormペイロードも実行します。それらはすべて圧縮されています。Hwormペイロードごとに一意のミューテックスが作成されました(ただし、一部のSFXファイルは同じHwormペイロードを配信していました)。サンプルはすべて、図3に示す3か所のネットワーク位置のいずれかにビーコンを送信しました。

図3 C2インフラストラクチャ
 

私たちは、以前にもHwormに関するレポートを公表してきましたが、Hwormのこの特定のバージョンの詳細は識別できませんでした。以前のいくつかのバージョンは、PEファイルのリソース セクションにAutoITスクリプトが埋め込まれていましたが、その他は難読化されたVBSスクリプトを実行していました。Hwormが埋め込まれた以前のいくつかのバージョンでは、コマンド アンドコントロールの方法として、HTTPリクエストのヘッダーまたはPOST本文にデータが埋め込まれていました。そのHTTPプロトコル例のビーコンは、リクエストのURLと、区切り文字として‘<|>’を使用することで簡単に認識できます。この新バージョンのHwormはTCP上でバイナリとASCIIを混在させたプロトコルを使用しています。図4は、この攻撃でHwormサンプルが使用したプロトコルのパケット キャプチャです。それには、文字列“new_houdini”、埋め込みによって使用されるミューテックス、ユーザーの名前、オペレーティング システムのバージョン、埋め込みのバージョン、フォアグラウンド プロセスの名前が含まれています。

図 4 新しい通信プロトコルのパケット キャプチャ
 

このマルウェアの調査中に、アラビア語のテクノロジおよびセキュリティ フォーラム、dev-point[.]comへの“Houdini”というハンドル名のユーザーによるフォーラム投稿で、Delphiでのバックドアの書き換えに関する計画の概要が述べられました。これは、2015年7月頃に投稿されました。

2015年10月頃に、Delphi Hwormの埋め込みを作成するために使用されたパスワード保護されたベータ バージョンのビルダー(a4c71f862757e3535b305a14ff9f268e6cf196b2e54b426f25fa65bf658a9242)がVirusTotalにアップロードされました。残念ながら、上記の攻撃で説明したサンプルを作成するために使用されたビルダーは見つかりませんでした。Unit 42は、上記の攻撃で使用されたサンプルはベータ バージョンの後にリリースされたバージョンだと確信しています。

Hwormマルコードの分析

サーバの設定および構築時に、ビルダーはVBSファイルを保存するようにユーザーに要求し、スタブ ファイルを変更して埋め込みを作成します。VBSファイルは、埋め込みを読み込み挿入するために使用されます。上記の攻撃の背後にいるオペレータは、VBSローダーを使用しないことを選択するか、または、もはやVBSスクリプトを生成しない新しいバージョンのビルダーを選択するかのいずれかのようです。

VBSローダー

スクリプトには、base64で符号化された3つのファイルが含まれます。最初のファイルはDynamicWrapperX (DCOM_DATA)、2番目のファイルはRunPEシェルコード (LOADER_DATA)、そして、3番目のファイルはホスト プロセスに挿入されるファイル(FILE_DATA)です。DynamicWrapperXを使用すると、このVBSスクリプトに広範な機能を提供しているVisual BasicスクリプトからすべてのWindows APIにアクセスできます。

スクリプトの設定はファイルの先頭にあります(図5)。

図5 スクリプトの設定セクション
 

上の例において、スクリプトはスタートアップ方法にレジストリを使い、自分自身をシステムの%appdata%ディレクトリにmyhworm.exeという名前でドロップし、svchost.exeの中に自分自身をインジェクトします。

実行されると、このスクリプトはまずWindowsスタートアップのスクリプトを実行する3つのスタートアップ方法のうち1つを追加します。

永続性に関するインストール作業を終えると、引き続きスクリプトは現在の環境がWOW64であるか否か確認します。該当する場合、次を実行します。

次に、設定したインストール先ディレクトリの中にDynamicWrapperXを拡張子“.bin”付きでドロップします。

それからすぐ、スクリプトはDynamicWrapperXを登録します。

次に、スクリプトは登録したオブジェクトをロードします。

/load VirtualAllocおよびCallWindowProcWを関数として登録しますが、これらはスクリプト内で“dcom.VirtualAlloc <arguments>”を使って直接呼び出すことができます。

VirtualAllocを使って新たにメモリを割り当て、RunPEシェルコード(LOADER_DATA、loader.hex)およびインジェクト対象のバイナリ(FILE_DATA)をメモリにコピーします。

スクリプトがCallWindowProcWを使ってこのRunPEにジャンプすると、シェルコードは上記のファイル(FILE_DATA)をホスト プロセスにインジェクトします。ホスト プロセスはデフォルトではsvchost.exeですが、.NETファイルに関しては次のファイルの中へのインジェクションが発生します。

図6は、スクリプトのメイン ルーチンを示しています。

図6 メイン ルーチン
 

図7はLOADER_DATA (RunPEシェルコード)の16進ダンプを示しています。

図7 LOADER_DATAの16進ダンプ
 

以前のバージョンのHworm VBSスクリプトと、このベータ ビルダーで提供されているVBSスクリプトとの間に見られる、コメントおよびコーディング スタイルの類似点が図1から分かります。冒頭部はHTTPバージョンのHworm由来のVBSファイルをベータ ビルダーのHwormが生成するVBSスクリプトと比較したものです(下図)。

図8 HWormバージョン間の類似点
 

ベータ サーバ

ビルダーが生成するメイン サーバはDelphiで開発されており暗号化はされていません。Unit 42は亜種がVMProtectおよびASPackでパックされていることを認識しています。発見されたDelphi Hwormインプラント(解凍されたベータ バージョン)の一部のバージョンでは、設定がリソース セクションRCData\“CONFIG”の中に平文形式で保存されています(図9)。

図9 設定
 

また、一部のバージョンでは終了していないPEスプレッダがリソースセクション(a65fd78951590833904bd27783b1032b7cc575220a12c6d6f44cb09061999af3)にあります。このスプレッダは名前が“sm?rtp.exe”である動作中のプロセスをすべて終了させ、wscript.exeを使ってVBSファイルを実行します。

図10 スプレッダ
 

サーバは使われない関数(いずれも中身はRET命令しかない)をいくつかエクスポートします。“wrom.exe”および“server.exe”がエクスポート テーブル内で名前として使われているのが分かります(図11)。

図11 エクスポート テーブル
 

作成者はオープン ソース ライブラリのIndyコンポーネントをネットワーク通信に使っていました。メモリから(ディスクへの保存を行わずに)DLLをロードするのにBTMemoryModuleも使っていました。

Hwormインプラントは通信にコネクト バックを使います。つまり、サーバ(インプラント)はクライアント(リモートで制御するシステム)に折り返しの接続をします。サーバ内に実装されているモジュールがいくつかあり、各モジュールはそれぞれのソケットを使って(設定によって定義された同一のポート上で)通信します。

下記のモジュールはこのマルウェアの機能を提供します。

  • スクリーンショット: JPEG/BMP形式でスクリーンショットを撮る機能を提供します。
  • キーロガー: キー ストロークを記録する機能を提供します。
  • インターネット入出力: インターネットからファイルのダウンロードし、実行する機能を提供します。RunPE手法により実行形式ファイルをロードする機能も提供します。
  • ファイル マネージャー: ファイルやディレクトリの一覧を表示する機能、ファイルを削除、リネーム、実行する機能、およびTCPまたはHTTPによりファイルをアップロードまたはダウンロードする機能を提供します。
  • パスワード: Firefox、Opera、Chromeブラウザからパスワードを盗む機能を提供します。
  • その他: プロセスまたはモジュールの一覧を表示する機能または動作中のプロセスをkillする機能を提供します。
  • USB通知機能: USBデバイスが接続されたときにコントローラに通知する機能を提供します。
  • Houdiniクライアント: メインのクライアント(サーバの設定を含んでいる)を提供します。

最終考察

コーディング スタイルやサーバの機能における類似点のほか、マルウェアの作成者が使っている言語およびハンドルから、ベータ ビルダーは、HTTPバージョンと、上で概説した攻撃で利用されているバージョンとの間の、どこかの時点で作成されたものに違いないと思われます。

このRATはネットの準公開サイトで見つけることができるため、マルウェアは標的を絞った脅威の攻撃者やたまたま狙った相手に対する侵害のどちらにも使われるおそれがあります。上記の攻撃はUnit 42が発見した攻撃活動でDelphi版のHwormを使用している唯一のものです。

Palo Alto Networksのお客様は、“Hworm”タグによりAutoFocusを使ってすべてのバージョンのHwormサンプルを見つけることができます。

兆候:

Delphi Hwormベータ ビルダー
a4c71f862757e3535b305a14ff9f268e6cf196b2e54b426f25fa65bf658a9242

配信ファイル
70c55fef53fd4bdeb135ed68a7eead45e8d4ba7d17e0fd907e9770b2793b60ed
9af85e46344dadf1467c71d66865c7af98a23151025e7d8993bd9afc5150ad7d
773716bc2d313e17326471289a0b552f90086a2687fa958ef8cdb611cbc9a8c9
e0db0982c437c40ceb67970e0a776e9448f428e919200b5f7a0566c58680070c
1f45e5eca8f8882481b13fd4a67ffa88a1aa4d6e875a9c2e1fbf0b80e92d9588
5e42e61340942fc0c46a6668a7f54adbbb4792b01c819bcd3047e855116ae16f
fec925721b6563fec32d7a4cf8df777c647f0e24454fa783569f65cdadff9e03
106934ff7f6f93a371a4561fff23d69e6783512c38126fbd427ed4a886ca6e65
ba739f3f415efe005fbed6fcfcb1e6d3b3ae64e9a8d2b0566ab913f73530887c
0672e47513aefcbc3f7a9bd50849acf507a5454bc8c36580304105479c58772a

ペイロード
386057a265619c43ef245857b66241a66822061ce9bd047556c4f3f1d262ef36
44b52baf2ecef2f928a13b17ba3a5552c32ca4a640e6421b8bc35ef5a113801b
8428857b0c7dfe43cf2182dd585dfdfd845697a11c31e91d909dc400222b4f78
d69e0456ddb11b979bf303b8bb9f87322bd2a9542dd9d9f716100c40bd6decd1
bd5d64234e1ac87955f1d86ee1af34bd8fd11e8edf3a449181234bb62816acab
774501f3c88ebdd409ec318d08af2350ec37fdbc11f32681f855e215e75440d7
c66b9e8aaa2ac4ce5b53b45ebb661ba7946f5b82e75865ae9e98510caff911a7

おとりファイル
7916ca6ae6fdbfb45448f6dcff374d072d988d11aa15247a88167bf973ee2c0d
947d264a413f3353c43dafa0fd918bec75e8752a953b50843bc8134286d6f93f
9ddf2f2e6ac7da61c04c03f3f27af12cb85e096746f120235724a4ed93fac5aa
3d287cce7fe1caa5c033a4e6b94680c90a25cb3866837266130ba0fd8fab562c
444b82caf3c17ea74034c984aeca0f5b2e6547af88a0fb15953f2d5b80e3b448
3d3db84b6ad760540f638713e3f6a8daf8a226bd045351bcc72c6d22a7df8b3a
fffda1e2d794a5645f973900083a88ef38c3d20a89c5e59ca21412806db28197

コマンド アンド コントロールのネットワークの所在
start.loginto[.]me
samah.sytes[.]net
52.42.161[.]75
78.47.96[.]17
136.243.104[.]200