ESET/マルウェア情報局

アジアのゲーム開発者がサプライチェーン攻撃の対象に

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はキヤノンマーケティングジャパンが提供する「マルウェア情報局」に掲載されたアジアのゲーム産業が再び攻撃のターゲットにを再編集したものです。

 ゲーム産業がサイバー攻撃のターゲットとなるのは、今回が初めてではない。その手口は、まずゲーム開発者の端末を感染させて、ゲームの開発環境にバックドアを設置するというものが一般的だ。そして次のステップで、正規のソフトウェアに偽装したマルウェアを配布する。2013年4月のカスペルスキー・ラボの報告によると、2011年にある人気のゲームタイトルにバックドアが仕掛けられていたようだ。この攻撃は、カスペルスキー社がWinntiグループと呼ぶ犯罪集団によるものであった。

 ESETのリサーチャーは新たなサプライチェーン攻撃に再び注目している。今回、二つのゲームタイトルと、ひとつのゲームプラットフォームアプリにバックドアが仕掛けられていることが判明した。これら攻撃のほとんどがアジアおよびゲーム産業をターゲットにしていることを考慮すると、「Winntiはゲームだけではない」とカスペルスキー社が評するように、Winntiグループによる犯行だったことは特に意外性もなかったのではないだろうか。

3つの事例で同じバックドアを使用

 これらマルウェアの構成はいずれも異なっている。しかし、被害を受けた3つのソフトウェア製品は同じバックドアコードが用いられ、同じメカニズムで起動されていた。感染した製品のうち2つはバックドアが排除されているが、被害を受けた開発者のうち残るひとつは今なおトロイの木馬と化したバージョンを拡散し続けている。 皮肉にも、そのゲームは「Infestation (感染という意味)」というタイトルで、タイの開発者であるエレクトロニクスエクストリーム社が作成したものである。ESETは2月初旬以来、同社に対してさまざまな方法で通知をおこなっているが、いまだに被害は収束していないようだ。

 次に、悪意のあるペイロード(*1)がどのように埋め込まれるのか。バックドアとはどのようなものなのかを詳しく見ていこう。

*1 マルウェアの動作部分のコード自身を指す。

ペイロードの埋め込み

 バックドアを含むファイルを実行するとすぐに、ペイロードのコードが開始される。PEエントリーポイントの直後に、Cランタイム初期化 (図1の__scrt_common_main_seh) の標準的な呼び出しがフックされ、真っ先に悪意のあるペイロードを起動する (図2)。つまり、攻撃者がソースコード自体ではなくビルド構成を変更している可能性を示唆している。

図1 感染していない実行ファイルのエントリーポイント

図2 感染した実行ファイルのエントリーポイント

 実行ファイルに追加されたコードは、メモリー内のバックドアを復号化して起動する。その後、Cランタイムの初期化コードとホストアプリケーション(*2)の次のコードから通常どおり実行を再開する。埋め込まれたペイロードデータは特殊な構造となっており (図3)、追加された「unpack(バイナリデータから元の値を取り出すこと)」によって解析される。

*2 ペイロードが埋め込まれたアプリケーションのことを指す。

図3 埋め込まれたペイロード構造

 これには、ファイル名と埋め込まれたDLLファイルを復号化する (「0x37」でXOR演算(*3)を実行する) RC4キーが含まれている。

*3 論理演算のうちのひとつで、「排他的論理和」のことを指す。

悪意のあるペイロード

 実際の悪意のあるペイロードは非常に小さく、約17KBのコードとデータしか含まれていない。

構成

 図4のとおり、構成データは単に空白文字で区切られた文字列のリストである。

図4 ペイロードの構成データ

 構成は次の4つのフィールドから成る。

1. C&CサーバーのURL
2. 実行を継続する前に、スリープ状態になるまでの時間 (単位:ミリ秒) を決定するための変数
 (t)待機時間は、「2/3 t」から「5/3 t」までの範囲で任意に選択
3. キャンペーンを識別する文字列
4. セミコロンで区切られた実行ファイル名のリスト。そのいずれかを実行すると、バックドアが実行を停止する

 ESETの研究員が特定したペイロードのバージョンは、次の5つである。

省略されたSHA-1 PE(*4)コンパイル時 (UTC) C&CサーバーのURL
a045939f 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_bsod.php
a260dcf1 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_Include.php
dde82093 2018-07-11 15:45:57 https://bugcheck.xigncodeservice[.]com/Common/Lib/common.php
44260a1d 2018-08-15 10:59:09 https://dump.gxxservice[.]com/common/up/up_base.php
8272c1f4 2018-11-01 13:16:24 https://nw.infestexe[.]com/version/last.php

*4 PEとは「Portable Executable」の省略で、Windowsの実行ファイルフォーマットのことを指す。

 最初の3つの変数において、コードは再コンパイルされていないが、構成データはDLLファイル内で編集されていた。残りのコンテンツはバイト単位でコピーされたものである。

C&Cインフラストラクチャー

 ドメイン名は、ゲームやアプリケーション作成者かのようなものが選ばれている。Apexドメインは、リダイレクトサービス「Namecheap」を利用し正規のサイトにリダイレクトするように設定されていたが、サブドメインは悪意のあるC&Cサーバーを指定していた。

ドメイン名 登録日 リダイレクト先
xigncodeservice.com 2018-07-10 09:18:17 https://namu.wiki/[w]/XIGNCODE
gxxservice.com 2018-08-14 13:53:41 None or unknown
infestexe.com 2018-11-07 08:46:44 https://www.facebook.com/infest.[in].[th]
サブドメイン名 IPアドレス プロバイダー
bugcheck.xigncodeservice.com 167.99.106[.]49, 178.128.180[.]206 DigitalOcean
dump.gxxservice.com 142.93.204[.]230 DigitalOcean
nw.infestexe.com 138.68.14[.]195 DigitalOcean

 本稿執筆時点(編集部注:2019年2月末と思われる。)で、いずれのドメインも名前解決をおこなっておらず、C&Cサーバーは応答していない。

調査報告

 ボット識別子は、端末のMACアドレスから生成される。バックドアは、ユーザー名、コンピューター名、Windowsのバージョンやシステム言語といったマシンに関する情報をC&Cサーバーに伝え、コマンドの要求まで待機する。データはキー「*&b0i0rong2Y7un1」でXOR暗号化され、「Base64(*5)」でエンコードされている。C&Cサーバーから受信したデータは、同じキーで暗号化される。

*5 データのエンコード方式の一つで、64種類の英数字に限定して通信を行う。

コマンド

 このシンプルなバックドアにおいて攻撃者が使用できるコマンドは次の4つのみである。

・DownUrlFile
・DownRunUrlFile
・RunUrlBinInMem
・UnInstall

 これらのコマンドは、ほぼその名の通りである。これらのコマンドを使えば、攻撃者は特定のURLから別の実行ファイルを実行することができる。

 最後のコマンドは、分かりにくいかもしれない。「UnInstall」コマンドを実行しても、マルウェアはシステムから削除されない。実行が必要な正規のファイル内に埋め込まれているからだ。何も削除せず、次のレジストリー値を1に設定することで、マルウェアのコードを無効化するのだ。

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlag

 ペイロードが開始されると、レジストリーの値が照会され、実行は中止される (ただし、設定している場合に限る)。攻撃者は興味のない被害者からのコールバックを回避し、C&Cサーバーの負荷を減らそうとするだろう。

第二段階

 ESETのテレメトリデータによると、被害者に配信される第二段階のペイロードのひとつは「Win64/Winnti.BN」である。恐らく、そのドロッパーはHTTPSを介して「api.goallbandungtravel[.]com」からダウンロードされたようである。Windowsのサービスや次のファイル名を用いる「C:\Windows\System32」のDLLとしてインストールされたと考えられる。

・cscsrv.dll
・dwmsvc.dll
・iassrv.dll
・mprsvc.dll
・nlasrv.dll
・powfsvc.dll
・racsvc.dll
・slcsvc.dll
・snmpsvc.dll
・sspisvc.dll

 実際にESETで分析したサンプルは非常に大きく、それぞれ約60MBの容量であった。しかし、これは表向きそのように見せかけているだけで、実際のPEファイルのサイズは、バージョンによって63 KBから72 KBの間である。マルウェアファイルには感染していないファイルが多く追加されている。これは、感染ファイルを多くのファイル群の中に紛れ込ませることで、判別を免れてようとする意図だと思われる。

 このサービスが実行されると、拡張子「.mui」をそのDLLパスに追加し、該当のファイルを読み出し、RC5を用いて復号化する。このMUIファイルには、オフセット(*6)が0の位置に存在しないはずのコードが含まれている。RC5キーは、ハードドライブのシリアル番号と文字列「f@Ukd!rCto R$」から作成されている。ESETではMUIファイルも、これらを最初にインストールするコードも入手できなかったため、この悪意のあるサービスの正確な目的は不明のままとなっている。

*6 配列または他のデータ構造オブジェクトの中の、所定の要素または位置までの、先頭からの距離を示す整数(Wikipediaより引用)

 このマルウェアの最新バージョンには、C&Cサーバーである「http://checkin.travelsanignacio[.]com」を用いた「自動アップデート」機能が採用されている。このC&Cサーバーは、静的なRC5キーで暗号化されたMUIファイルの最新バージョンに対応していた。ESETの分析時点では、C&Cサーバーは応答していなかった。

攻撃のターゲット

 攻撃のターゲットについて検討してみよう。ペイロードの初期段階で、マルウェアはシステム言語がロシア語や中国語ではないかをチェックする(図5)。いずれの場合も、マルウェアは実行を中止する。攻撃者はこれらの言語で構成されたコンピューターを狙っていないものと推測される。

図5 ペイロードを実行する前の言語チェック

分布統計

 ESETのテレメトリデータによると、被害者はほとんどアジアに分布しており、最大の割合を占めているのはタイである。感染したゲームタイトルは人気が高く、開発者が今でも配布し続けていることを考えると、被害者が何万人や何十万人に達する可能性すら考えられる。

結論

 ユーザーの立場からすれば、こうしたサプライチェーン攻撃を検出することは極めて難しいといわざるをえない。普段利用しているソフトウェアをくまなく分析するのは不可能に近いからだ。中には定期的なアップデートを推奨するものやインストールまで要求するソフトウェアもある。そのため、私たちはソフトウェア会社が提供するものにマルウェアが侵入していないことを信じるしかない。そしてこのことこそが、いくつもの攻撃グループがソフトウェア開発者をターゲットにする理由となってしまっている。ゲーム提供者を感染させれば、ボットネットはハッキングしたソフトウェアと同じように拡散できてしまう。しかし、このような方法でも攻撃者の狙いが明らかにった時点で効力は失われる。ユーザーは端末を定期的にアップデートすることで、コンピューターをクリーンな状態に保つことができる。

 この記事の執筆時点で、攻撃者の動機ははっきりしていない。金銭の窃取を目的としているのだろうか。ターゲットにされた3つの製品がアジアの開発者による、アジア市場向けのものであった理由とはなんだろう。そして、攻撃者は、より大規模なスパイ活動の一環としてボットネットを使用しているのか。真相はまだわかっていない。

 ESET製品では、この脅威を「Win32/HackedApp.Winnti.A」、「Win32/HackedApp.Winnti.B」として、ペイロードを「Win32/Winnti.AG」として、第二段階を「Win64/Winnti.BN」として検出する。

感染の疑いを確認するための指標 = (危殆化指標、IoC)

感染したファイルの例 (「Win32/HackedApp.Winnti.A」と「Win32/HackedApp.Winnti.B」)

SHA-1 コンパイル時(UTC) RC4Key ペイロードSHA-1
7cf41b1acfb05064518a2ad9e4c16fde9185cd4b Tue Nov 13 10:12:58 2018 1729131071 8272c1f4
7f73def251fcc34cbd6f5ac61822913479124a2a Wed Nov 14 03:50:18 2018 19317120 44260a1d
dac0bd8972f23c9b5f7f8f06c5d629eac7926269 Tue Nov 27 03:05:16 2018 1729131071 8272c1f4

 一部のハッシュ値はベンダーからの依頼に応じて編集済みである。

ペイロードの例 (「Win32/Winnti.AG」)

SHA-1 C&CサーバーのURL
a045939f53c5ad2c0f7368b082aa7b0bd7b116da https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_bsod.php
a260dcf193e747cee49ae83568eea6c04bf93cb3 https://bugcheck.xigncodeservice[.]com/Common/Lib/Common_Include.php
dde82093decde6371eb852a5e9a1aa4acf3b56ba https://bugcheck.xigncodeservice[.]com/Common/Lib/common.php
8272c1f41f7c223316c0d78bd3bd5744e25c2e9f https://nw.infestexe[.]com/version/last.php
44260a1dfd92922a621124640015160e621f32d5 https://dump.gxxservice[.]com/common/up/up_base.php

第二段階の例 (「Win64/Winnti.BN」)

「api.goallbandungtravel[.]com」で提供しているドロッパー

SHA-1 コンパイル時(UTC) C&CサーバーのURLプレフィックス
4256fa6f6a39add6a1fa10ef1497a74088f12be0 2018-07-25 10:13:41 None
bb4ab0d8d05a3404f1f53f152ebd79f4ba4d4d81 2018-10-10 09:57:31 http://checkin.travelsanignacio[.]com

サイバー攻撃の行動を体系化した「MITRE ATT&CKマトリックス」

ID 説明
T1195 サプライチェーンの感染
T1050 新サービス
T1022 暗号化データ
T1079 多層暗号化
T1032 標準的な暗号プロトコル(RC4、RC5)
T1043 一般的なポート(80、443)
T1009 バイナリパディング

[引用・出典元]

Gaming industry still in the scope of attackers in Asia by Marc-Etienne M.Léveillé 11 Mar 2019 - 11:27AM