HOMEKit製の出来立てCookles―DarkHotelとの共通部分も

By and

Category: Threat Prevention, Unit 42

Tags: , , , , ,

This post is also available in: English (英語)

概要

脅威の攻撃者は特定のツールを再利用する傾向がある、ということがMNKitに関する最近のUnit 42リサーチを通して分かりました。この記事では、外見上はMNKitに似ているが機能は全くの別物であると判明した新しいツールキットについて報告します。

私たちが「HOMEKit」と名付けたこのツールキットは、CVE-2012-0158に関するエクスプロイトを含む武器化したMicrosoft Word文書を生成するように設計されているという点においてMNKitに似ていますが、MHTMLファイルではなくOLEを利用しています。また、2013年以降、私たちはオペレータが個別の亜種をいくつか使いながら、さまざまな攻撃活動においてHOMEKitを利用している事を追跡することができました。この記事に関して、有名な攻撃活動であるDarkHotelと明らかになった興味深い共通点とともに、HOMEKitツールキットの最新例を中心に取り上げます。続編では、私たちが発見したHOMEKitの別の亜種とともに、HOMEKitと関連のあるその他の攻撃活動を取り上げます。

HOMEKitの分析の他に、HOMEKitが作成した悪意のある文書に埋め込まれていることが明らかになった新型ペイロードについても考察します。なお、この新型ペイロードを「Cookle」と呼ぶことにします。これはきわめて単純なダウンローダーですがこれまで公にされたことがありません。Cookleは自己の活動を悟られないようにするため興味深い戦略をいくつか採用しています。

遠隔測定

2016年6月下旬、私たちは電子メール ファイル(図1)を1つ収集しました、これは悪意のある添付ファイルを使ってフィッシング攻撃を仕掛けるようなものでした。送信者アドレスは国際連合環境計画(UNEP)に関する調整担当者のIDを使って偽装されていました。電子メールの内容は本物らしく見えます、これは件名が「平壌の国際電話帳およびメーリングリスト(6月)」となっていて、UNEPのもとでの朝鮮民主主義人民共和国の在住者に関する国際的な名簿のように見えるよう企てられていたためです。本物らしさをこのフィッシング攻撃に加えるため、脅威の攻撃者は調整担当者のシグネチャ ブロックのコピーもしていました。

図1 HOMEKitエクスプロイト ファイルを含むフィッシング電子メール
図1 HOMEKitエクスプロイト ファイルを含むフィッシング電子メール

電子メールには2個の添付ファイルが含まれていましたが、それらはMicrosoft Word文書ファイルとMicrosoft Excel文書ファイルでした。Excel文書は良性と判明しましたが、Word文書はCVE-2012-0158脆弱性を攻撃するものでした。被害者がこのWord文書を開いた場合、Wordで書かれたおとり文書(図2)が開かれ、予想通りの内容の文面を被害者が目にしている間に、Cookleトロイの木馬がこっそりとインストールされます。

図2 平壌在住者に向けてのメッセージが含まれているおとり文書
図2 平壌在住者に向けてのメッセージが含まれているおとり文書

良性のExcel文書およびおとりとして使われたWord文書は、どちらも本物の内部向け文書のようにみえます。Word文書の中に北朝鮮のUNEP在住者全員の電子メールが特定の話題に関して使われるメーリング リストとともに含まれていたからです。Excel文書には北朝鮮UNEP在住者に関する緊急連絡先情報のほかに、別の関連機関に関する連絡先も含まれていました。この2個のファイルに関するメタデータを調査したところ、Excel文書は偽装された送信者のIDを使って2016年6月22日に更新されたのが最後で、おとりのWord文書は元の作成者を2012年における調整事務官として表示しており、作成時のタイムスタンプが2012年7月19日となっていることが判明しました。しかし、おとり文書の「最終更新」フィールドから真相が明らかになりました。「Windows User」によって2016年4月5日に更新されたのが最後だったことが分かったことから、おとり文書が脅威の攻撃者によって最後に更新された可能性の高いことが示されたのです。

この攻撃で観察されている特定の文書を用いることで、脅威の攻撃者は自分がすでにある程度不正にアクセスすることができたかもしれないということを実証しました。また、この内部文書の内容を見ると、関連のある標的に対するフィッシング攻撃をさらに編み出すのに活用可能なデータに、脅威の攻撃者が現在アクセスできる状態にあることが分かります。

HOMEKit

HOMEKitツールキットは、CVE-2012-0158の脆弱性を突いたMicrosoft Word文書(OLE)を作成します。HOMEKitツールキットによって作成されたすべての悪意のある文書では、図3に示すように、OLE文書のSummaryInformationストリームとDocumentSummaryInformationストリーム内に同じメタデータが含まれています。

図3 HOMEKitメタデータ
図3 HOMEKitメタデータ

HOMEKitは、TreeView ActiveXコントロール内の脆弱性、特に、9368265E-85FE-11d1-8BE3-0000F8754DA1のCLSIDをエクスプロイトするように設計された文書を作成します。エクスプロイトに成功すると、悪意のある文書はシェルコードを実行しておとり文書(~.doc)を開く一方、システムにペイロード(~.dat)をインストールして実行します。

このHOMEKitの亜種によって実行されたシェルコードは、関数シェルコードの復号化を担当する復号化スタブから始まります。復号化スタブは、暗号化テキストの各バイトで、ビットの右シフト(ROR 3)とXOR演算(0xAFのキー)の組み合わせを使用します。

復号化スタブによって明らかにされた関数シェルコードは、ファイル サイズがゼロより大きいファイルを探すオープン ファイル ハンドルを列挙することから始まります。その後、各ファイルの最後の20バイトを読み取り、ファイルの最後の最後にある値「0xDEADFOOD」を探して、配信文書を見つけます。該当するファイルが見つかると、ファイルの最後の20バイトを解析して、次の構造を使用しているペイロードとおとり文書を見つけ出します。

ペイロードとおとり文書を復号化するために、シェルコードは暗号化テキストの末尾から始まるアルゴリズムを使用します。このアルゴリズムは、初期値「0xDEADFOOD」の最下位バイトと最初のバイトとをXOR演算し、後続の演算ごとにキー値を1ずつ巡回します。シェルコードは、復号化ルーチンの終了後、ペイロードを%TEMP%\~.datに、おとり文書を%TEMP%\~.docに保存します。ペイロードとおとり文書がシステムに保存されると、シェルコードは、%TEMP%\~.datを使用するプロセスを作成してペイロードを実行し、次のコマンド ラインでプロセスを作成しておとり文書を開きます。

cmd.exe /c dir /s %windir%\system32\*.sys&&taskkill /im winword.exe /f&dir /a /s %windir%\system32\*.msc && DOCUME~1\ADMINI~1\LOCALS~1\Temp\~.doc

ペイロードを実行し、おとり文書を開くためのプロセスを作成する際に、シェルコードはGetCurrentProcessを呼び出して現在のWordプロセスに対するハンドルを取得し、その後、OpenProcessTokenを呼び出してWordプロセスのトークンにアクセスします。最後に、このトークンを使用して、CreateProcessAsUserAを呼び出し、現在のWordプロセスと同じコンテキストで、ペイロードとおとり文書を実行します。

Cookleトロイの木馬

この攻撃で配信されるペイロードは、私たちがマルウェアによって作成されたHTTPリクエスト内のヘッダー値に基づいて「Cookle」として追跡しているダウンローダー トロイの木馬です。

初期実行の後、トロイの木馬はミューテックス「LDE_160425」を作成し、それ自体を%TEMP%\~.datから%APPDATA%\Microsoft\WindowsUpdate\~.exeにコピーします。持続性を確立するために、トロイの木馬は新たにコピーされたトロイの木馬へのパスとともに、次のレジストリ キーを作成します。

SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Startup

トロイの木馬に埋め込まれた関連テキストの大半は符号化されており、トロイの木馬は、base64アルファベットの大文字を小文字に、またはその逆に変換する変更されたbase64デコード関数を使用してそれらをデコードします。このカスタムbase64デコーダを使用して、次の文字列をデコードします。

トロイの木馬には、上記の符号化された文字列内に2つのコマンド アンド コントロール(C2)ドメイン、dyn.kaleebso[.]comとdyn.pwnz[.]orgが含まれています。トロイの木馬は、スリープ タイマーを20分にセットして、ネットワーク ビーコンが生成され、C2サーバに送信されるまで待機します。図4に示す初期ビーコンには、スペルの間違った「Cookie」フィールドが含まれ、このフィールドにはトロイの木馬がミューテックスとして使用する値と同じ値が含まれています。

図4 Cookleトロイの木馬から送信されたC2ビーコン
図4 Cookleトロイの木馬から送信されたC2ビーコン

このトロイの木馬は、C2サーバからこのビーコンへの応答を受信すると、いくつかのシステム コマンド、具体的にはsysteminfo、tasklist、netstat /ano、およびipconfig /allを実行します。次にこれらのシステム コマンドから出力を取得し、その出力を%TEMP%フォルダのテキスト ファイルに保存し、「<年><月><日><時><分><秒>.tmp」というファイル名を付けます。次にこのトロイの木馬は、このファイルの内容を、以下に似たHTTP POSTリクエスト内のクリアテキストとしてC2サーバに送信します。

図5 システム情報をC2サーバに送信するCookleによって発行されたHTTP POSTリクエスト
図5 システム情報をC2サーバに送信するCookleによって発行されたHTTP POSTリクエスト

C2サーバは、トロイの木馬が解析するコマンドを使用してこのリクエストに応答します。トロイの木馬のコマンド ハンドラには、次の3つのコマンドがあります。

図6 Cookleのコマンド ハンドラ内のコマンド
図6 Cookleのコマンド ハンドラ内のコマンド

トロイの木馬内で使用できる機能は制限されていますが、攻撃者はセカンダリ ペイロードを配信する前にシステムを偵察できます。セカンダリ ペイロードは‘d’コマンドを使用して配信されます。ここで、トロイの木馬は、C2の応答の各バイトで0xA7を使用してXOR演算を行って実行可能ファイルを復号化します。分析期間中、C2サーバはセカンダリ ペイロードで応答しませんでした。

DarkHotelとの共通性

HOMEKit配信文書を追加で収集することによって、少なくとも2013年以降、最近では2016年6月下旬にこのツールキットがオペレータによって使用されたことが明らかになりました。HOMEKitツールキットによって作成されたこれらの悪意のある文書それぞれが、PlugX、Sutr、HIMAN/Mirageなどの異なるペイロードをインストールしました。前述のとおり、この投稿の続編を公開し、これらの以前の攻撃の詳細を説明する予定です。

収集したサンプル セットの一部として、Cookleペイロードを配信する攻撃で使用された配信文書と非常によく似た構造を持つが、エクスプロイト コードがわずかに異なる2つの文書を発見しました。これら2つの文書の最も興味深い側面は、これらに埋め込まれていたペイロードでした。

追加のHOMEKitサンプルは両方とも、同機能のシェルコードを持ち、DarkHotel脅威グループに関連のあるツールであるTapaouxトロイの木馬に関連付けられたダウンローダーをインストールします。HOMEKit配信文書に埋め込まれたシェルコードをDarkHotelに関連付けられた以前のサンプルと比較し、顕著な類似性を発見しました(図7)。

図7 CookleをインストールするHOMEKit文書内の顕著な静的属性とDarkHotelをインストールするHOMEKit文書内の顕著な静的属性との比較
図7 CookleをインストールするHOMEKit文書内の顕著な静的属性とDarkHotelをインストールするHOMEKit文書内の顕著な静的属性との比較

Cookleを配信するHOMEKit文書とDarkHotelを配信するHOMEKit文書との主な相違点は、図7に示すように、スタブ復号化で始まります。このスタブ復号化は、この投稿でこれまでに説明したように、主な機能を実行するシェルコードの2つ目のピースを復号化します。図8の緑色で強調された命令で示されているとおり、復号化ルーチン自体が異なっています。図8の黄色で強調された「mov cx」命令で示されているとおり、復号化されたシェルコードのサイズも2つのサンプル間で異なっています。

図8 CookleサンプルとDarkHotelサンプル内のシェルコードで見つかったスタブ復号化の比較
図8 CookleサンプルとDarkHotelサンプル内のシェルコードで見つかったスタブ復号化の比較

CookleサンプルとDarkHotelサンプルでシェルコードのサイズは異なっていますが、シェルコード自体は非常によく似ています。2つの機能シェルコード間の単純なバイナリの相違を確認すると、90パーセントを超える類似性を示しています。静的分析によって、2つのシェルコードは同じAPI関数を解決し、これらを同じ順序でスタックに保存することがわかりました。また、2つのシェルコードには多くの同じコード ブロックが存在し、結果として共通のコードが多数存在します。シェルコードが類似していることから、Cookleトロイの木馬の配信に使用したHOMEKitツールキットの亜種の作成者がDarkHotelのインストールに使用したHOMEKitツールキットと同じシェルコードにアクセスできたことが示唆されます。

CookleおよびDarkHotelをインストールする各関数シェルコードの違いは、プロセスを作成し、ペイロードを実行しておとり文書を開く方法にあります。2つの間の違いはごくわずかですが、Cookleシェルコードの作成者が、おそらく分析回避手段としてDarkHotelシェルコードを意図的に改変したことを示唆しているため、説明する価値があります。図9は、DarkHotelとCookleの各シェルコード内にあるプロセス作成関数を並列比較したもので、違いがある箇所を強調表示しています(赤色と青色で強調表示された命令と、灰色の新しいコードブロック2つ)。

図9 DarkHotelおよびCookleをドロップするシェルコード(特にプロセスの作成に使用されるコード)の並列比較
図9 DarkHotelおよびCookleをドロップするシェルコード(特にプロセスの作成に使用されるコード)の並列比較

図9は、強調表示された命令と追加のボックスを使用して2つの関数の違いを示していますが、ここからでは、機能面から見てシェルコードの変更にどのような意味があるかはわかりません。そこで、2つの関数がどのような方法でプロセスを作成し、この2つがどのように異なるかについて説明します。

DarkHotelシェルコードは、Cookleシェルコードと同じように、まずGetCurrentProcess関数を使用してWordプロセスのハンドルを取得してからOpenProcessTokenを使用し、最後にCreateProcessAsUserAを使用し、おとりを開いてペイロードを実行します。しかし、DarkHotelシェルコードは、極めて明快に、はっきりとCALL命令を使用してAPI関数を呼び出しています(図9の赤色で強調表示された部分)。

対照的にCookleシェルコードは、CALL命令を使用してGetCurrentProcess関数とOpenProcessToken関数を呼び出しますが、JMP命令を使用してCreateProcessAsUserA関数にジャンプしています。CALLの代わりにJMPを使用できるようにするには、シェルコードで、呼び出し元の関数に戻る方法を提供しなければなりません。JMP命令はCALL命令と異なり、自動的にはこの処理を行わないためです。その代わりに、このシェルコードは、特定の場所(青色で強調表示された先頭の4つの命令)を参照し、値「0xC3」 (図9の最初の灰色のボックス)の検索を開始し、これが命令「RETN」の値になります。値が見つかると、シェルコードはスタックにプッシュされ、JMP命令を使用してCreateProcessAsUserA関数を呼び出し、呼び出し元に戻ることができるようになります。

CookleおよびDarkHotelの各ペイロードをドロップする配信文書の類似点から、使用バージョンに若干の違いはあるにせよ、どちらもHOMEKitツールキットを使用して生成されたことがわかります。悪意のある文書内にあるスタブ暗号化解除および関数シェルコードが若干異なることは、攻撃者が同じコードベースを使用して、Cookle攻撃用にHOMEKitの改変バージョンを作成したことを示唆しています。

結論

過去に何度も取り上げたように、さまざまな攻撃者グループの間でツールが流用されることは非常に一般的です。次回の記事では、HOMEKitに関係のあるさまざまなキャンペーンと併せて、数年間に発見された複数の亜種についてさらに細かく説明します。ただし、DarkHotelペイロードは、私たちが特定できたペイロードの分類において特異的な興味深い存在です。DarkHotelの攻撃者は何らかの方法でHOMEKitコードベースのコピーを入手できた可能性があるばかりか、HOMEKitにアクセスできるオペレータがトロイの木馬Tapaouxを入手していた可能性すらあります。また、HOMEKitは、つながりを持つ仲介人を介して複数の攻撃者が入手可能なツールキットになっているとも考えられます。残念ながら現時点ではデータが足りないため、最終的な答えを出すことはできません。にもかかわらず、ツールが共有されていて重複していることを示す例がまた一つ得られたことになり、今回は驚くべき結果になりました。

  • Palo Alto Networksのお客様は保護されており、次のリソースで詳細を参照できます。
  • このHOMEKitの亜種およびCookleはWildFireによって悪意があるものとして検出されます。
  • この記事で説明したすべてドメインは悪意があるものとして分類されています。
  • HOMEKitおよびCookleのAutoFocusタグが作成されました。
  • CookleペイロードはIPSシグネチャCookle.Genコマンド アンド コントロール トラフィックによって検出されます。

セキュリティ侵害の兆候

HOMEKit SHA256

ed676d191684fa03b2b57925fe081cf32d5d6b074637f6f2a6401dd891818752
ab7b5c35786813ed874483d388edbee3736eb6af7bc4946c41794209026eeac4
f9bf645a3a7d506136132fcfa18ddf057778d641ff71d175afd86f1a4fed7ee9

Cookle SHA256

4a5807bab603d3a0a5d36aaec75729310928a9a57375b7440298fb3f3e4a2279

Cookle C2s

dyn.kaleebso[.]com
dyn.pwnz[.]org

DarkHotel SHA256

2437d0a9cc019e33fe8306fceed99605dd5ab67a8023da65fa20b9815ec19d06
bb06bfad96535ad04a6e65a6e68f34cb51f311cae48a2ff1c305f3957b2c8a4b

DarkHotel C2s

apply-wsu.ebizx[.]net
apply.ebizx[.]net