偽のAdobe Flashでユーザーを騙しマルウェアを配信。スパイ組織Turlaによる新たなバックドア
スパイ組織であるTurlaの戦略、技術、手法(Tactics, Techniques and Procedures、TTP)はほとんど変わっていませんが、最近になって、このグループはPythonバックドアを追加したことが判明しました。
スパイ組織であるTurlaの戦略、技術、手法(Tactics, Techniques and Procedures、TTP)はほとんど変わっていませんが、最近になって、このグループはPythonバックドアを追加したことが判明しました。
Turlaは、今回の攻撃で政府機関に属する2つのWebサイトを含む少なくとも4つのアルメニアのWebサイトを乗っ取っています。このことから、標的には政府関係者や政治家が含まれていることが考えられます。
ESETのテレメトリから、次のWebサイトが乗っ取られていることが判明しました。
少なくとも2019年の初めからこれらのWebサイトが乗っ取られていた兆候が見つかっています。ESETは、一般に情報を公開する前に、アルメニアのCERTにこの問題を通知し、分析結果を伝えています。
Turlaのオペレーターは、これらのWebサイトに悪意のあるJavaScriptコードを挿入していますが、その挿入手法の詳細は分かっていません。たとえば、mnp.nkr[.]amの場合、jquery-migrate.min.js(一般的なJavaScriptライブラリ)の最後に難読化されたコードが追加されています(図1を参照)。
このコードは、skategirlchina[.]com/wp-includes/data_from_db_top.phpから外部のJavaScriptをロードします。このコードについては、次のセクションで説明します。
2019年11月末から、skategirlchina[.]comは悪意のあるスクリプトを配信しなくなっており、Turlaのオペレーターは、この水飲み場型攻撃を中断している可能性があります。
攻撃者に乗っ取られたWebページにアクセスすると、第2段階の悪意のあるJavaScriptがskategirlchina[.]comによって配信され、アクセスしたユーザーのブラウザのフィンガープリント(特徴)が取得されます。図2は、このスクリプトの主な機能を示しています。
ユーザーのブラウザで初めてこのスクリプトが実行されると、サーバーから提供される一見ランダムなMD5値を持つevercookieが追加されます。これは、スクリプトの実行毎に異なります。このevercookieの実装は、GitHubで利用可能なコードに基づいています。ローカルデータベース、ローカル共有オブジェクト(Flash Cookie)、Silverlightストレージなど、いくつかのストレージを使用して、このCookie値を保存します。通常のCookieとevercookieを比較した場合、ユーザーがブラウザのCookieを削除しただけでは削除されないため、永続的となっています。
このevercookieは、乗っ取られたWebサイトにユーザーが再度アクセスしたかどうかを追跡するために使用されます。ユーザーがサイトに再びアクセスすると、保存されているMD5値が使用されユーザーが識別されます。
次に、ブラウザプラグインリスト、画面解像度、各種のオペレーティングシステム情報など、いくつかの情報が収集されます。これらの情報は、POST要求によりC&Cサーバーに送信されます。応答があると、JavaScriptコードがあると見なされ、eval関数を使用して実行されます。
アクセスしたユーザーが重要な標的であれば、サーバーからiframeを作成するJavaScriptコードが送られます。ESETテレメトリのデータは、この攻撃は、ごく一部のユーザーだけがTurlaのオペレーターによって重要な標的と見なされたことを示しています。
このiframeは、図3に示すように、ユーザーに偽のAdobe Flashのアップデート画面を表示して、Flashインストーラーをダウンロードさせようとします。
ESETでは、ブラウザの脆弱性が悪用された形跡は確認しておらず、ソーシャルエンジニアリングによる手法でセキュリティが侵害されていると考えられます。iframeのJavaScriptが配信された同じサーバーから悪意のある実行可能ファイルがダウンロードされ、ユーザーが手動でこのファイルを起動すると、Turlaマルウェアの亜種と正規のAdobe Flashプログラムがインストールされます。
乗っ取られたアルメニアのWebサイトに最初にアクセスして、悪意のあるペイロードが配信されるまでのセキュリティ侵害プロセスの概要を図4に示します。
ユーザーが偽のインストーラーを実行すると、Turlaマルウェアの亜種と正規のAdobe Flashインストーラーの両方が実行されるため、ユーザーは更新画面が本物と信じてしまう可能性があります。
2019年8月末までは、正規のAdobe Flash v14インストーラーと第2のRAR-SFXアーカイブを含むRAR-SFXアーカイブがユーザーに配信されていました。第2のRAR-SFXアーカイブには、Turlaが過去に関与していたSkipperバックドアのさまざまなコンポーネントが含まれています。Skipperバックドアは、Bitdefenderの研究者によって2017年に報告されており、2019年5月にはTelsyが新しいバージョンについて報告しています。
報告されているバージョンと最新バージョンでは、わずかな変更しかないため、ここでは詳細な分析結果は説明しません。
興味深い変更点の1つは、Skipperの通信モジュールは、この攻撃で使用されているリモートJavaScriptと悪意のあるバイナリをホストするサーバーをC&Cサーバーに(具体的にはskategirlchina[.]com/wp-includes/ms-locale.php)使用していることです。
2019年8月末から、skategirlchina[.]comから配信されるペイロードが変更されています。
新しいペイロードは、%TEMP%\adobe.exeにAdobe Flash v32のインストーラーを、%TEMP%\winhost.exeにNetFlash(.NETダウンローダー)をドロップする.NETアプリケーションでした。
コンパイルのタイムスタンプから、このマルウェアの検体は2019年8月末と2019年9月の初めにコンパイルされ、その直後に水飲み場型攻撃用C&Cサーバーにアップロードされています。
NetFlashは、ハードコードされたURLから攻撃の第2段階のためのマルウェアをダウンロードし、Windowsのスケジュールタスクを使用し、この新しいバックドアを常駐化します。Error! Reference source not found.は、第2段階のためのPyFlashマルウェアをダウンロードするNetFlash機能を示しています。ESETでは、2019年8月末にコンパイルされた別のNetFlashの検体も入手しています。この検体では、別のC&Cサーバー:134.209.222[.]206:15363がハードコードされていました。
この第2段階のバックドアは、py2exe実行可能ファイルです。py2exeは、PythonスクリプトをスタンドアロンのWindows実行可能ファイルに変換するPython拡張機能です。ESETが知る限り、Turlaの開発者がバックドアでPython言語を使用したのはこれが初めてです。
バックドアは、ハードコードされたC&CサーバーとHTTP経由で通信します。C&CのURLおよびすべてのネットワーク通信の暗号化に使用されるAESキーやIV(初期化ベクトル)などの他のパラメーターは、図6に示すように、スクリプトの最初に指定されます。
図7に示すスクリプトの主な機能が、マシンに関する情報をC&Cサーバーに送信します。これは、図6に示すコマンドリストにある関数による出力です。これには、OS関連のコマンド(systeminfo、tasklist)およびネットワーク関連のコマンド(ipconfig、getmac、arp)が含まれます。
C&Cサーバーは、JSON形式でバックドアコマンドを送信する場合もあります。このバージョンのPyFlashに実装されているコマンドは次のとおりです。
次に、コマンドの出力がPOST要求を介してAESで暗号化されてオペレーターに送信されます。
Turlaは、最初に感染させる方法として、引き続き、水飲み場型攻撃を使用しています。興味深いのは、この攻撃は、ユーザーを騙してマルウェアをダウンロードしてインストールさせるために、ソーシャルエンジニアリングの手法(偽のAdobe Flashアップデート画面)を悪用しています。
一方で、長年使用されてきたペイロードであるSkipperは、おそらく検出を回避する目的で変更され、NetFlashに切り替わりました。NetFlashは、PyFlashと呼ばれるPythonで開発されたバックドアをインストールします。
ESETは、今後も新しいTurlaの活動を監視し、関連情報をブログに公開していきます。お問い合わせは、threatintel@eset.comにご連絡ください。セキュリティ侵害の痕跡は、GitHubリポジトリからも参照いただけます。
SHA-1 | タイムスタンプ | 説明 | ESETの検出名 |
---|---|---|---|
973620A7AB28A2CBA82DC2A613CD24ED43734381 | Thu Aug 29 04:14:46 UTC 2019 | NetFlashドロッパー | MSIL/Turla.D |
B6567F988C9ACC5DF3CBD72409FC70D54EA412BB | Tue Sep 3 11:12:04 UTC 2019 | NetFlash | MSIL/Turla.D |
9F81710B85AA7088505C1EECCE9DA94A39A2DC06 | Thu Aug 29 04:12:33 UTC 2019 | NetFlash | MSIL/Turla.F |
32430B11E42EDEB63A11E721927FFBABE7C9CFEA | N/A | PyFlash | Win32/Turla.EM |
620A669EC0451C9F079FB4731F254AC577902E5E | Wed Aug 29 09:43:18 UTC 2018 | Skipperの通信用DLL | Win32/Turla.EJ |
手段 | ID | 名前 | 説明 |
---|---|---|---|
初期アクセス | T1189 | ドライブバイダウンロードによるセキュリティ侵害 | Turlaは、価値の高いWebサイトを乗っ取り、ユーザーにマルウェアを配信します。 |
実行 | T1204 | ユーザーによる実行 | 偽のFlashインストーラーを使用して、ユーザーをだましてマルウェアを起動させます。 |
常駐化 | T1053 | スケジュールされたタスク | NetFlashとPyFlashは、スケジュールされたタスクを使用して常駐化します。 |
検出 | T1016 | システムネットワーク構成の検出 | PyFlashは、ipconfig/all、getmac、arp -aを実行します。 |
T1057 | プロセス検出 | PyFlashはtasklistコマンドを実行します。 | |
T1082 | システム情報の検出 | PyFlashは、systeminfoを実行します。 | |
C&C | T1032 | 標準暗号化プロトコル | PyFlashは、CBCモードでAES-128を使用してC&Cとの通信を暗号化します。 |
T1043 | 通常使用されるポート | NetFlashは、ポート80を使用します。 | |
T1065 | 通常使用されないポート | PyFlashは、ポート8,000を使用します。NetFlashの検体は、ポート15,363を使用していました。 | |
T1071 | 標準アプリケーションレイヤープロトコル | NetFlashおよびPyFlashは、HTTPを使用します。 | |
情報の盗み出し | T1041 | C&Cチャネルからの情報流出 | PyFlashによる監視とC&Cコマンドの出力は、C&Cプロトコルを使用して外部に送信されます。 |