Adobe Flashのアップデートを偽装しマルウェアを配信、Turlaが新たなバックドアを仕掛ける

この記事をシェア

政府機関や軍事組織をターゲットにスパイ活動を続けているTurlaの戦略、技術、手法(Tactics Techniques and Procedures、TTP)はほとんど変わっていませんが、最近になって、このグループはPythonバックドアを追加したことが判明しました。

本記事はESET Japanが提供する「ESETブログ」に掲載された「偽のAdobe Flashでユーザーを騙しマルウェアを配信。スパイ組織Turlaによる新たなバックドア」を再編集したものです。

Adobe Flashのアップデートを偽装しマルウェアを配信、Turlaが新たなバックドアを仕掛ける

ESETの研究者は、いくつかの著名なアルメニアのWebサイトを標的とした水飲み場型攻撃(戦略的なWebのセキュリティ侵害)を発見しました。この攻撃は、偽のAdobe Flashアップデートにによってユーザーを騙して、これまで検出されていなかった2つのマルウェアを配信します。ESETでは、これらの2つのマルウェアをNetFlashおよびPyFlashと命名しました。 この攻撃のさまざまな側面を分析した結果、10年以上にわたって活動を続けている悪名高いスパイ組織であるTurlaがこの攻撃を実行していることをESETは突き止めました。この組織の主な標的には、政府および軍事組織が含まれます。ESETでは、MosquitoLightNeuronなど、この組織が実行したいくつかの攻撃について過去にも報告しています。 最近の攻撃は、過去数年間にわたって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を参照)。

図1. Webサイト(mnp.nkr[.]am)に挿入された難読化されたJavaScriptコード

図1. Webサイト(mnp.nkr[.]am)に挿入された難読化されたJavaScriptコード

このコードは、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関数を使用して実行されます。

図2. フィンガープリンティングのためのスクリプト(悪意のあるURLは削除しています)

図2. フィンガープリンティングのためのスクリプト(悪意のあるURLは削除しています)

アクセスしたユーザーが重要な標的であれば、サーバーからiframeを作成するJavaScriptコードが送られます。ESETテレメトリのデータは、この攻撃は、ごく一部のユーザーだけがTurlaのオペレーターによって重要な標的と見なされたことを示しています。

このiframeは、図3に示すように、ユーザーに偽のAdobe Flashのアップデート画面を表示して、Flashインストーラーをダウンロードさせようとします。

図3.偽のAdobe Flashアップデート画面を表示するiframe

図3.偽のAdobe Flashアップデート画面を表示するiframe

ESETでは、ブラウザの脆弱性が悪用された形跡は確認しておらず、ソーシャルエンジニアリングによる手法でセキュリティが侵害されていると考えられます。iframeのJavaScriptが配信された同じサーバーから悪意のある実行可能ファイルがダウンロードされ、ユーザーが手動でこのファイルを起動すると、Turlaマルウェアの亜種と正規のAdobe Flashプログラムがインストールされます。

乗っ取られたアルメニアのWebサイトに最初にアクセスして、悪意のあるペイロードが配信されるまでのセキュリティ侵害プロセスの概要を図4に示します。

図4.水飲み場型攻撃の概要

図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がハードコードされていました。

図5. NetFlashの主な機能

図5. NetFlashの主な機能

PyFlash

この第2段階のバックドアは、py2exe実行可能ファイルです。py2exeは、PythonスクリプトをスタンドアロンのWindows実行可能ファイルに変換するPython拡張機能です。ESETが知る限り、Turlaの開発者がバックドアでPython言語を使用したのはこれが初めてです。

バックドアは、ハードコードされたC&CサーバーとHTTP経由で通信します。C&CのURLおよびすべてのネットワーク通信の暗号化に使用されるAESキーやIV(初期化ベクトル)などの他のパラメーターは、図6に示すように、スクリプトの最初に指定されます。

図6. PyFlash Pythonスクリプトのグローバル変数

図6. PyFlash Pythonスクリプトのグローバル変数

図7に示すスクリプトの主な機能が、マシンに関する情報をC&Cサーバーに送信します。これは、図6に示すコマンドリストにある関数による出力です。これには、OS関連のコマンド(systeminfo、tasklist)およびネットワーク関連のコマンド(ipconfig、getmac、arp)が含まれます。

図7. PyFlashの主な機能

図7. PyFlashの主な機能

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プロトコルを使用して外部に送信されます。
この記事をシェア

業務PCのセキュリティ対策に

サイバーセキュリティ
情報局の最新情報を
チェック!