ESET/マルウェア情報局
アジアのゲーム開発者がサプライチェーン攻撃の対象に
本記事はキヤノンマーケティングジャパンが提供する「マルウェア情報局」に掲載されたアジアのゲーム産業が再び攻撃のターゲットにを再編集したものです。
ゲーム産業がサイバー攻撃のターゲットとなるのは、今回が初めてではない。その手口は、まずゲーム開発者の端末を感染させて、ゲームの開発環境にバックドアを設置するというものが一般的だ。そして次のステップで、正規のソフトウェアに偽装したマルウェアを配布する。2013年4月のカスペルスキー・ラボの報告によると、2011年にある人気のゲームタイトルにバックドアが仕掛けられていたようだ。この攻撃は、カスペルスキー社がWinntiグループと呼ぶ犯罪集団によるものであった。
ESETのリサーチャーは新たなサプライチェーン攻撃に再び注目している。今回、二つのゲームタイトルと、ひとつのゲームプラットフォームアプリにバックドアが仕掛けられていることが判明した。これら攻撃のほとんどがアジアおよびゲーム産業をターゲットにしていることを考慮すると、「Winntiはゲームだけではない」とカスペルスキー社が評するように、Winntiグループによる犯行だったことは特に意外性もなかったのではないだろうか。
3つの事例で同じバックドアを使用
これらマルウェアの構成はいずれも異なっている。しかし、被害を受けた3つのソフトウェア製品は同じバックドアコードが用いられ、同じメカニズムで起動されていた。感染した製品のうち2つはバックドアが排除されているが、被害を受けた開発者のうち残るひとつは今なおトロイの木馬と化したバージョンを拡散し続けている。 皮肉にも、そのゲームは「Infestation (感染という意味)」というタイトルで、タイの開発者であるエレクトロニクスエクストリーム社が作成したものである。ESETは2月初旬以来、同社に対してさまざまな方法で通知をおこなっているが、いまだに被害は収束していないようだ。
次に、悪意のあるペイロード(*1)がどのように埋め込まれるのか。バックドアとはどのようなものなのかを詳しく見ていこう。
*1 マルウェアの動作部分のコード自身を指す。
ペイロードの埋め込み
バックドアを含むファイルを実行するとすぐに、ペイロードのコードが開始される。PEエントリーポイントの直後に、Cランタイム初期化 (図1の__scrt_common_main_seh) の標準的な呼び出しがフックされ、真っ先に悪意のあるペイロードを起動する (図2)。つまり、攻撃者がソースコード自体ではなくビルド構成を変更している可能性を示唆している。
実行ファイルに追加されたコードは、メモリー内のバックドアを復号化して起動する。その後、Cランタイムの初期化コードとホストアプリケーション(*2)の次のコードから通常どおり実行を再開する。埋め込まれたペイロードデータは特殊な構造となっており (図3)、追加された「unpack(バイナリデータから元の値を取り出すこと)」によって解析される。
*2 ペイロードが埋め込まれたアプリケーションのことを指す。
これには、ファイル名と埋め込まれたDLLファイルを復号化する (「0x37」でXOR演算(*3)を実行する) RC4キーが含まれている。
*3 論理演算のうちのひとつで、「排他的論理和」のことを指す。
悪意のあるペイロード
実際の悪意のあるペイロードは非常に小さく、約17KBのコードとデータしか含まれていない。
構成
図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)。いずれの場合も、マルウェアは実行を中止する。攻撃者はこれらの言語で構成されたコンピューターを狙っていないものと推測される。
分布統計
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 | バイナリパディング |
[引用・出典元]