ESET/マルウェア情報局
スパイ組織「Turla」が、Adobe Flashのアップデートを偽装したマルウェアを配信
本記事はキヤノンマーケティングジャパンが提供する「マルウェア情報局」に掲載された「Adobe Flashのアップデートを偽装しマルウェアを配信、Turlaが新たなバックドアを仕掛ける」を再編集したものです。
ESETの研究者は、いくつかの著名なアルメニアのWebサイトを標的とした水飲み場型攻撃(戦略的なWebのセキュリティ侵害)を発見しました。この攻撃は、偽のAdobe Flashアップデートにによってユーザーを騙して、これまで検出されていなかった2つのマルウェアを配信します。ESETでは、これらの2つのマルウェアをNetFlashおよびPyFlashと命名しました。 この攻撃のさまざまな側面を分析した結果、10年以上にわたって活動を続けている悪名高いスパイ組織であるTurlaがこの攻撃を実行していることをESETは突き止めました。この組織の主な標的には、政府および軍事組織が含まれます。ESETでは、MosquitoとLightNeuronなど、この組織が実行したいくつかの攻撃について過去にも報告しています。 最近の攻撃は、過去数年間にわたってESETが追跡してきたTurlaのいくつかの水飲み場型攻撃に類似しています。特に、今回の攻撃手法は2017年にESETが発見した攻撃手法に似ています。過去に使用されていたJavaScriptのさまざまな部分は、今回の攻撃とほとんど同じですが、標的とペイロードは異なります。
標的となったWebサイト
Turlaは、今回の攻撃で政府機関に属する2つのWebサイトを含む少なくとも4つのアルメニアのWebサイトを乗っ取っています。このことから、標的には政府関係者や政治家が含まれていることが考えられます。
ESETのテレメトリから、次のWebサイトが乗っ取られていることが判明しました。
・armconsul[.]ru:ロシアのアルメニア大使館の領事局
・mnp.nkr[.]am:アルツァフ共和国自然保護天然資源省
・aiisa[.]am:アルメニア外交政策および安全保障問題研究所
・adgf[.]am:アルメニア預金保険基金
少なくとも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年9月以前に利用されていたSkipper
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年9月から利用されているNetFlashおよびPyFlash
2019年8月末から、skategirlchina[.]comから配信されるペイロードが変更されています。
NetFlash(.NETダウンローダー)
新しいペイロードは、%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がハードコードされていました。
PyFlash
この第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に実装されているコマンドは次のとおりです。
・指定されたHTTP(S)リンクから追加のファイルをダウンロードします。
・Python関数subprocess32.Popenを使用してWindowsコマンドを実行します。
・実行するタイミング(遅延)を変更します。マルウェアを定期的に(X分ごと、デフォルトでは5分ごと)起動するWindowsタスクを変更します。
・マルウェアを削除(アンインストール)します。この命令を確認するために、マルウェアは次の文字列を含むPOST要求をC&Cサーバーに送信します。
I'm dying :(
Tell my wife that i love her...
次に、コマンドの出力がPOST要求を介してAESで暗号化されてオペレーターに送信されます。
結論
Turlaは、最初に感染させる方法として、引き続き、水飲み場型攻撃を使用しています。興味深いのは、この攻撃は、ユーザーを騙してマルウェアをダウンロードしてインストールさせるために、ソーシャルエンジニアリングの手法(偽のAdobe Flashアップデート画面)を悪用しています。
一方で、長年使用されてきたペイロードであるSkipperは、おそらく検出を回避する目的で変更され、NetFlashに切り替わりました。NetFlashは、PyFlashと呼ばれるPythonで開発されたバックドアをインストールします。
ESETは、今後も新しいTurlaの活動を監視し、関連情報をブログに公開していきます。セキュリティ侵害の痕跡は、GitHubリポジトリからも参照いただけます。
セキュリティ侵害の痕跡(IoC)
乗っ取られたWebサイト
・www.armconsul[.]ru/user/themes/ayeps/dist/js/bundle.0eb0f2cb2808b4b35a94.js
・mnp.nkr[.]am/wp-includes/js/jquery/jquery-migrate.min.js
・aiisa[.]am/js/chatem/js_rA9bo8_O3Pnw_5wJXExNhtkUMdfBYCifTJctEJ8C_Mg.js
・adgf[.]am
C&Cサーバー
・http://skategirlchina[.]com/wp-includes/data_from_db_top.php
・http://skategirlchina[.]com/wp-includes/ms-locale.php
・http://37.59.60[.]199/2018/.config/adobe
・http://134.209.222[.]206:15363
・http://85.222.235[.]156:8000
検体 | |||
---|---|---|---|
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 |
MITRE ATT&CKの手法 | |||
---|---|---|---|
手段 | 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プロトコルを使用して外部に送信されます。 |