MBSD® MBSD®

2020.08.04

吉川孝志

音声で脅迫するランサムウェア「Mazeランサムウェア」の内部構造を紐解く

7月中旬、Mazeランサムウェアの被害を受けたと思われる日本国内の企業のデータが攻撃者のWebサイトで公開されたことが一部で話題になりました。

Mazeランサムウェアは過去にChaChaランサムウェア(暗号アルゴリズムのChaChaを使用することからの由来)と呼ばれていたランサムウェアの亜種であり、20195月に初めて存在が確認され、感染経路としてはこれまでにスパムメールへの添付や脆弱性の利用、ネットワーク侵入などの経路が確認されています。

Mazeランサムウェアを操る攻撃者の大きな特徴は、ランサムウェアによって暗号化を行う前にすでに被害者端末からデータを盗み出しており、身代金支払いの要求に応じない場合はそれらの窃取データを実際に公開するという点です。最近はMaze以外の他のランサムウェアを用いた攻撃においてもこの流れが見られており、ランサムウェア感染と情報流出の2点は切り離せないものとなってきている現状があります。

以下の図は、Mazeランサムウェアの攻撃者が公開しているWebサイトですが、被害組織から盗み出した情報が多数公開されています。Webサイト上には多くの企業名が並び、それぞれをクリックすると各被害組織から盗み出されたデータが圧縮ファイルなどで誰でもダウンロードできる状態で公開されています。

20200804_01.png図1 Mazeランサムウェアの攻撃者のWebサイト

Mazeランサムウェアに関する解析情報は日本国内ではあまり見られないものの、海外ではすでにいくらか公開されている状況ではありますが、それら他社の記事では言及されていない点や、あまりフォーカスされていないような観点をいくつか盛り込みながら、今回はMazeランサムウェアの全体像を解説していきます。
(※なお、以降で解説する検体は冒頭の国内企業への攻撃とは関係のない別の検体です。)

Mazeランサムウェアの構成

Mazeランサムウェアは一見EXEファイルですが、内部的にはローダーであるEXEと、主な不正機能を行うメインモジュールであるDLLの2つに大きく分かれる構造となっています。
MazeランサムウェアのEXEファイルにはPNG画像がリソースセクションに埋め込まれており、メインモジュール(DLL)はその画像の中に多重に暗号化され保存されています。

Mazeランサムウェアは実行されると、最初のEXEがローダーの役割を持ち、内部の画像から抽出してメモリ上に展開したDLLをロードして、メインの不正活動を行っていきます。

20200804_02.png図2 Mazeランサムウェアの内部構造

以下の図は、Mazeランサムウェアのリソースセクションの構造と、そこに埋め込まれたPNG画像の様子です。PNG画像は101という名前で保存されており、この画像の中にメインモジュールが隠されています。Mazeランサムウェアは動作を開始すると、まずFindResourceA101を指定しLoadResourceでリソースとしてロードします。

20200804_03.png図3 Mazeランサムウェアに埋め込まれた画像

PNG画像の構造は以下のようになっており、バイナリの前半部分は正常なPNG画像となっていますが、バイナリの後半部分(0x50C50のアドレス以降)に暗号化されたデータが隠されています。

Mazeランサムウェアは画像の後半を示す0x50C50のアドレスを明示的に指定してロードし、複数の復号処理を行ったのち、取り出したメインモジュールを新しいスレッドとして開始させます。

20200804_04.png図4 Mazeランサムウェアに埋め込まれた画像の構造

【補足情報】
なお、Mazeランサムウェアには他に以下のような隠しウインドウのリソースデータを保有しています。Mazeに感染してもこのウインドウは表示されません。

20200804_05.png図5 Mazeランサムウェアに埋め込まれた隠しウインドウのリソース

メインモジュールを新しいスレッドとして展開する処理

ここではメインモジュールの復号処理をもう少し踏み込んで解説します。
リソースセクションの画像の後半部分からロードしたデータはまずXORで復号されます。
XORで復号された後のデータはBase64文字列となっています。

20200804_06.png図6 リソースデータのXOR復号

次に、Crypt32.dllが提供するCryptStringToBinaryA APIBase64のデコードを行うWin32API)のアドレスを動的に取得します。

20200804_07.png7 メインモジュールの復号のためのAPIアドレスの取得

取得したCryptStringToBinaryAを用いて、さらにBase64文字列からバイト列へデコードします。

20200804_08.png図8 Base64文字列のデコード処理の前後の様子

その後、ChaCha20アルゴリズムを使用してさらに複数回復号されるとメインモジュールが現れ、確保したメモリ領域に1バイトずつ展開されていきます。

20200804_09.png図9 メモリ上に展開されていくメインモジュール

その後、展開したメインモジュールのメモリのコード領域に実行アクセス権を付与し、新しいスレッドとして実行することで、ようやくMazeランサムウェアのメインの不正活動が開始されます。

20200804_10.png図10 展開されたメインモジュールをスレッドとして実行する処理

Mazeランサムウェアのキルスイッチ

Mazeランサムウェアには感染を停止させる「キルスイッチ」が2つ存在します。
1つ目は、端末内に「C:\JDUIHiuf\IDisjopjcnb」というファイルが存在した場合、感染を行わずすぐに終了します。
2つ目に用意されているのは、実行引数に「--DIdsjdjdj」という文字列が含まれていた場合で、こちらも同様に感染を行わずすぐに終了します。
ただし、これらのキルスイッチは検体によって異なる可能性があるため、常に有効とは限りません。

20200804_11.png図11 Mazeランサムウェアに存在するキルスイッチ

以下は、Mazeランサムウェアのキルスイッチの処理の遷移となりますが、上記2つのチェックを順に行っていることがわかります。

20200804_12.png図12 Mazeランサムウェアのキルスイッチの遷移

特定の言語設定を持つ端末では感染しないMazeランサムウェア

Mazeランサムウェアは、感染端末の言語を取得し、ロシアなどの独立国家共同体(CIS)の周辺諸国のものであるかどうかをチェックし、該当した場合は感染せずにすぐに終了します。具体的には以下の国名が確認されます。

  • ロシア語 (0x0419)
  • ウクライナ語 (0x0422)
  • ベラルーシ語 (0x0423)
  • タジク語 (0x0428)
  • アルメニア語 (0x042B)
  • アゼルバイジャン語 (0x042C, 0x82C)
  • グルジア語 (0x0437)
  • カザフ語 (0x043F)
  • キルギス語 (0x0440)
  • トルクメン語 (0x0442)
  • ウズベク語 (0x0443, 0x0843)
  • タタール語 (0x0444)
  • モルドバ語 (0x0818, 0x0819)
  • セルビア語 (0x7C1A, 0x6C1A, 0x281A, 0x081A)

20200804_13.png図13 特定国の言語を持つ端末には感染しないMazeランサムウェアの挙動

特定のマルウェア調査/解析者への隠された挑発的なメッセージ

MazeランサムウェアはEXEをデバッグした際にしか目にすることのないデバッグ文字列に特定のマルウェア解析者らへ向けた挑発的なメッセージを隠しています。
このメッセージは、MicrosoftのフリーツールであるSysinternals SuiteDebugViewなどのツールを起動させた状態でMazeランサムウェアを実行することで以下のように確認することができます。

20200804_14.png図14 マルウェア調査者/解析者らへの挑戦的なメッセージ

上記で表示されるメッセージの全文は以下となります。

@malwrhunterteam, good last discussion in twitter thread.
Answering to @MalwareTechBlog @kravietz_ @hasherezade @f0wlsec and others, It is unfortunately neither paranoia nor insulting nor marketing etc. It serves like honeypots on shitty AV which are 90% of AVs used in enterprise (anyway they dont read your twitter as it is painful for them), who just places signatures on data section in packer layer. It is funny to change these strings everytime and see how it is FUDing packer. Keep doing it, conspiracy theory adepts :)
@hasherezade, I dont know why you took this as insulting, but indeed I always liked your tools. I even use some of them in my regular malware analysis. Also, lets play some game. Write IDAPython script to deobfuscate the code of the core payload working for all samples correctly without breaking conditional jumps and then you can write whatever you want about us, right?
Finally, literally all researcher mentions in both Maze and other malwares are neither insulting nor fan-syndrome or air conditioner. It is just like to have some fun&games with each other, otherwise it takes to be too boring, doesnt it? FUDing sample for each target on the one side and reversing shit-packers (literally what all Maze analysis do) on the daily basis on the other side of infosec. So Fuck infosec. Without malware your work will be boring as hell, what will you cover? Breaches? (Oh wait...) I know you hate us, but you need to know that we love you researchers, without you our job also would be fucking boring as hell.

上記のメッセージ内にある「I even use some of them in my regular malware analysis.」という一文は、Mazeランサムウェアの開発者がマルウェア解析を日常的に行っている可能性を示唆します。また今回の一連の解析を通しても、多数のアンチデバッグ機能を備えており、実際にマルウェア解析側の観点をよく知る人物により開発されたであろうことが伺えます。

また、マルウェア解析者が開発者の環境を調査するためにチェックするpdbファイルのパス文字列にも、わざと中国の特定のマルウェア解析者への暴言を埋め込んでいます。

20200804_15.png図15 pdbファイルのパスで表現された特定解析者への暴言

多数のアンチデバッグテクニックを使用

Mazeランサムウェアが他のランサムウェアと比較してより特徴的な点として、多数のアンチデバッグテクニックを使用している点が挙げられます。ここではそのいくつかをピックアップしてご紹介します。

一つ目に挙げるのは、アンチアタッチのテクニックです。Mazeランサムウェアはデバッガでアタッチ(解析するためにプロセスを読み込む作業)されないようにするために、特定のWin32APIの処理の命令を強制的に書き換えます。
具体的には、VirtualProtectを使用してntdllDbgUiRemoteBreakinという関数のアドレス帯のアクセス権をPAGE_EXECUTE_READ(読み/実行)からPAGE_EXECUTE_READWRITE(読み/書き/実行)に変更し、開始アドレスの命令を0x6Cから0xC3(ret命令)1バイト書き換えます。

この背景としては、通常デバッガが解析対象のプロセスにアタッチする際、デバッガはDebugActiveProcessを呼び出しますが、その際、内部的にはDbgUiRemoteBreakinというAPIをエントリポイントに持つリモートスレッドを作成する処理を行う動きがあります。

つまり、該当APIの命令を1バイト書き換えられてしまうことでDbgUiRemoteBreakinが呼び出せなくなり、結果的にデバッガによるプロセスアタッチが正常に行えなくなります。

その後、MazeランサムウェアはVirtualProtectを使用し、上記メモリアドレスが修正されないよう書き込みのアクセス権を外したPAGE_EXECUTE_READのアクセス権に戻します。
以下の図はその流れを順に示したものです。

20200804_16.png図16 アンチアタッチのテクニック

以下の図は、実際にMazeランサムウェアによってアクセス権を変更された直後のメモリ状態を確認した様子ですが、通常は「読み/実行」のみであるはずのメモリ領域のアクセス権が「読み/書き/実行」となっていることがわかります。

20200804_17.png図17 VirtualProtectによるアクセス権の変更

Mazeに改変される前後で、ntdl.dllDbgUiRemoteBreakin APIの開始位置のデータを確認した様子が以下ですが、0x6Aから0xC3へ変更されてしまっていることがわかります。

20200804_18.png図18 改変される前後のDbgUiRemoteBreakinAPIの開始命令

【補足情報】
これを回避してデバッガでアタッチするには色々な方法がありますが、例えば以下のような作業を行うことで解析が継続できます。

書き込みアクセス権がないメモリ領域はそのままではメモリの書き換えができないため、先にアクセス権を変更しておきます。手順としては、Process Hackerのプロセス一覧からMazeランサムウェアのプロセスを選択し、プロパティから「Memory」タブを選択します。その後、書き換えたいアドレスを右クリックし「Change protection」をクリックします。すると、アクセス権の変更ウインドウが表示されるため、0x40など書き込みアクセス権を持つ値に変更します。これで書き換えられる状態になったので、メモリタブの該当アドレスをダブルクリックし、手動で値を書き換えます。この操作により、Mazeランサムウェアによるアンチアタッチを解除して解析を進めることができます。

20200804_19.png図19 改変されたDbgUiRemoteBreakinAPIの戻し方

もう一つご紹介するMazeランサムウェアのアンチデバッグテクニックに、Windows APIの呼び出しの隠蔽があります。Mazeランサムウェアはメインモジュールの多くの処理においてWindows APIを直接コールせず、ジャンプ命令を重ねることでそれを実現しています。これは動的解析でWindows APIを単純に追えなくするという効果と、静的解析でコードが煩雑になるという効果があります。このアンチデバッグテクニックは解析側として地味に厄介であり、効果的な手口といえるでしょう。
以下はプロセス検索を行う際に使用するCreateToolhelp32SnapshotAPIを呼び出す際の処理を抜粋していますが、無駄なジャンプを重ねAPIコールが簡単に見えないようにしています。

20200804_20.png図20 WindowAPIを直接コールしないアンチデバッグ手法

複数の実行引数が用意されているMazeランサムウェア

Mazeランサムウェアは以下にあげる複数の実行引数を認識するように作られています。なお、これらの実行引数は複数組み合わせても動作します。

  • --nomutex:多重感染を防ぐためのMutexを登録しない
  • --path <PATH>:特定のフォルダのみを暗号化
  • --logging:暗号化処理の過程をコンソールウインドウに表示
  • --noshares:ネットワーク共有を暗号化しない
  • --DIdsjdjdj:感染を行わない

例えば、何も実行引数をつけていない場合、Mazeランサムウェアは端末固有の値となる文字列を生成してシステムにMutexとして登録することで自身の多重感染を防ぎますが、「--nomutex」の引数を渡すことで、以下のようにMutexの登録を行わず使用しなくなります。これは「--path」引数などと併用することで、Mazeをランサムウェアとしてではなく暗号化ツールの役割として並行起動させて使用したい場合などの用途で用意されたオプションであると推測します。

20200804_21.png図21 Mutexの登録と引数による挙動の変化

--logging」という引数を渡すと以下のようなコンソールウインドウが自動的に開き、暗号化したファイルのログが次々と表示されていきます。暗号化以外の挙動についてはログに表示されないため、暗号化処理の進捗チェックに使用する目的で付けられたものと推測します。

20200804_22.png図22 ログ出力の実行引数をつけた場合の挙動

また、「--path」という引数に続き特定のフォルダパスを渡すと、指定されたフォルダだけを暗号化するツールとして動作する機能を持ちます。なお、この際に存在しない誤ったフォルダパスを渡すと以下の図のように、正しい使い方(Syntax)を丁寧に表示する機能も備わっています。このことから、このような細かい部分に対しても律儀にエラーハンドリングをしていることがわかります。

20200804_23.png図23 -pathオプションに誤ったパスを渡した場合の挙動

特定のプロセスを強制終了する挙動

Mazeランサムウェアのメインモジュールは動作を開始すると、特定のプロセスを強制終了します。

20200804_24.png図24 特定のプロセスを強制終了する挙動

この際、プロセス名を単縦に文字列比較するのではなく、独自ハッシュ値に変換した上で比較します。この手口により強制終了する処理を特定しづらくなります。

20200804_25.png図25 独自ハッシュ値によるプロセス比較

強制終了するプロセスの一部は以下となりますが、解析ツールが多く含まれている特徴があります。

agntsvc.exe mysqld-opt.exe sqlservr.exe
dbeng50.exe mysqld.exe sqlwriter.exe
dumpcap.exe ocautoupds.exe steam.exe
encsvc.exe ocomm.exe synctime.exe
excel.exe ocssd.exe tbirdconfig.exe
Fiddler.exe onenote.exe thebat.exe
firefoxconfig.exe oracle.exe thebat64.exe
ida.exe powerpnt.exe thunderbird.exe
ida64.exe procexp.exe visio.exe
infopath.exe procexp64.exe winword.exe
isqlplussvc.exe procmon.exe wordpad.exe
msaccess.exe procmon64.exe x32dbg.exe
msftesql.exe python.exe x64dbg.exe
mspub.exe sqbcoreservice.exe xfssvccon.exe
mydesktopqos.exe sqlagent.exe
mydesktopservice.exe sqlbrowser.exe

データ復旧を困難にさせる挙動と特殊なファイルパスによる難読化

Mazeランサムウェアのメインモジュールはその後、WMIクエリを使用してボリュームシャドウコピーを削除します。これによってシステムの復元によるデータ復旧が行えなくなります。

20200804_26.png図26 ボリュームシャドウコピーの削除

その際、以下のようにwmic.exeのファイルパスを特殊な手口で難読化して呼び出します。
wmic.exeのフルパスが、一つ上のフォルダを指し示す「..」とランダムな文字列を複数組み合わせて難読化された状態のファイルパスとなっていることがわかります。これは文字列マッチングやEDRなどを用いた挙動調査などから追いづらくさせる目的があると思われます。

20200804_27.png図27 wmic.exeのファイルパスを特殊な手口で使用

ファイルの暗号化

次に、Mazeランサムウェアのメインモジュールは、ランサムウェアとしての主な目的であるファイルの暗号化を行っていきます。
ファイルの暗号化におけるファイル操作では一般のランサムウェアが行うようなReadFile/WriteFileの組み合わせではなく、ファイルマッピングを使用する点も特徴的です。

20200804_28.png図28 Mazeランサムウェアのファイル暗号化時のファイル操作の流れ

また、WNetEnumResourceなどでネットワークリソースを列挙し、ネットワーク共有なども暗号化の対象となります。

20200804_29.png図29 ネットワークリソースの列挙

ファイルの暗号化にはMazeランサムウェアが当初ChaChaランサムウェアと呼ばれていた名前の由来にもなったChaCha20アルゴリズムが使用されます。以下はChaCha20アルゴリズムにおける定数となる「expand 32-byte k(256ビット)expand 16-byte k(128ビット)という文字列です。

20200804_30.png図30 ChaCha20アルゴリズムの定数

暗号化されるファイルは拡張子の末尾にランダムな文字列が追加されます。

20200804_31.png図31 暗号化されるファイルの拡張子の末尾

また、Mazeランサムウェアに暗号化されたファイルの末尾には以下のように4バイトの固定マーカー「66 11 61 66」が記録されます。このマーカーはMazeランサムウェアが既に自身が暗号化したファイルであるかどうかの判別に使用されます。

20200804_32.png図32 暗号化されたファイル内の末尾に確認できる固定マーカー

暗号化を行う際、以下のフォルダ名や拡張子・ファイル名のものは暗号化対象から除外します。システム系のフォルダなどが除外されているため、感染後も端末は最低限の動作を行えます。

20200804_33.png図33 ファイル暗号化の除外対象

NTFS拡張ファイル属性を悪用した隠蔽

Mazeランサムウェアはファイルの暗号化処理に入る際、以下のファイルを作成しMazeのマーカーである「66 11 61 66」という4バイトのデータを書き込みます。

  • C:\ProgramData¥data1.tmp

20200804_34.png図34 ProgramDataに保存された「data1.tmp

一見このファイルは、バイナリエディタで見える範囲では上記のように4バイトのマーカーしか記載されていないように見えますが、実はファイルの暗号処理で使用する鍵情報を公開鍵で暗号化し、NtSetEaFileというAPIを使用して見えないように上記のファイルのNTFSファイルシステムの拡張ファイル属性(extended file attribute)という隠された領域に中に埋め込んでいます。

拡張ファイル属性に埋め込まれたデータは通常は閲覧することはできませんが、「data1.tmp」に隠された該当の拡張ファイル属性を取り出したものが以下の図となり、「NAOSEC」というEaName2616バイトのデータが隠されていることがわかります。

20200804_35.png図35 「data1.tmp」の拡張ファイル属性に隠されたデータ

以下は、NtSetEaFile APIにより「data1.tmp」の拡張ファイル属性にデータを隠蔽する際の処理の様子です。

20200804_36.png図36 「data1.tmp」の拡張ファイル属性に隠されたデータ

こうした挙動からNTFSのファイルシステムについてもよく理解しており、調査から逃れようとあらゆる対策を入念に考慮している攻撃者像がうかがい知れます。

脅迫文の作成

Mazeランサムウェアはファイルの暗号化の処理と並行して、全てのフォルダ内に以下のような脅迫文をテキストファイルとして作成していきます。

20200804_37.png図37 Mazeランサムウェアが作成する脅迫文テキスト

上記を日本語翻訳したものが以下となります。
攻撃の中ですでにデータを盗んでいることを冒頭で主張していることがわかります。

20200804_38.png図38 Mazeランサムウェアが作成する脅迫文テキストの日本語訳

脅迫文テキストはNetwork Shortcutsフォルダにも作成されるため、PC(マイコンピュータ)を開いた際に、以下のように「ネットワークの場所」の一覧にアイコンとして表示されます。

20200804_39.png図39 Network Shortcutsフォルダにも作成される脅迫文テキスト

スタートアップフォルダ内にも例外なく脅迫文テキストが作成されるため、これによって感染端末を起動した際に自動的に脅迫文が表示されるようになります。

20200804_40.png図40 スタートアップフォルダに作成された脅迫文テキスト

次に、以下のようにWMIクエリを使用して感染端末内にインストールされているアンチウイルス製品の情報を取得します。

20200804_41.png図41 インストールされているアンチウイルス製品の取得

ネットワーク通信の挙動

Mazeランサムウェアはロシアに割り当てられている20個のIPアドレスに対して、ランダムな文字列の組み合わせでURLを生成して接続を行います。

20200804_42.png図42 IPアドレスと文字列が組み合わされたURLが生成

URLの生成時に使用する文字列は以下のようなリストからランダムに選択されます。

20200804_43.png

図43 ランダムなURLの生成に使用される文字列

以下は、実際の通信ログの様子ですが、検証のたびにURLがランダムになることがわかります。

20200804_44.png図44 起動毎にURLがランダムに変化する様子

上記の通信では、感染端末の環境に関わる情報(コンピュータ名やOS情報、ネットワーク情報、先ほど取得したアンチウイルス製品情報)が送信されます。

感染環境によって動的に変化する脅迫メッセージを記した壁紙

Mazeランサムウェアにおける特徴的な挙動の一つが、壁紙の動的な生成です。
一般的なランサムウェアにおいても脅迫文を記した壁紙をデスクトップの背景に設定する動きが多々ありますが、それらの多くは固定されたメッセージとなります。しかし、Mazeランサムウェアは脅迫文の文章を動的に変更した上で壁紙に設定する動きがあります。

20200804_45.png図45 動的に作成されるMazeランサムウェアの壁紙

上記の壁紙を見ても分かる通り、感染端末の種類によって脅迫文に表示する文字列が決まります。

20200804_46.png図46 壁紙のメッセージはコンピュータの種類によって変化させる

Mazeランサムウェアはその後、メモリ上で不可視の画像を作成し、上記のように生成した文字列を書き込んだ上で画像をキャプチャしBMP画像として生成、デスクトップの壁紙に設定します。

20200804_47.png図47 生成した文字列を画像として保存する処理

以下はその結果設定された壁紙のレジストリ値と%temp%に作成されたBMP画像の様子です。

20200804_48.png図48 Mazeランサムウェアによって設定された壁紙

合成音声で脅すMazeランサムウェア

Mazeランサムウェアにおいてあまり知られていないと思われる挙動が以降で解説する合成音声による脅迫です。
音声で脅迫するランサムウェアは初めてではありませんが珍しい部類に当たるでしょう。

Mazeランサムウェアはここまでに解説した全ての不正挙動を行なった後、最後に合成音声を使用して脅迫メッセージを繰り返し読み上げます。
その際、システムにデフォルトでインストールされている合成音声(Microsoft Speech)の設定情報を取得して使用します。

20200804_49.png図49 デフォルトでシステムにインストールされている合成音声を取得

どの合成音声が使用されるかは環境によって異なり、例えばデフォルトの英語環境では「David」(男性ボイス)が使用されますが、日本語環境では「Haruka」(女性ボイス)が使用されます。

20200804_50.png図50 デフォルトの英語環境では「David」(男性ボイス)が使用される

以下はWindows10にデフォルトでインストールされているMicrosoft Speechの合成音声のレジストリ設定を比較した様子ですが、英語環境では「Microsoft David Desktop」が、日本語環境では「Microsoft Haruka Desktop」が選択されます。

20200804_51.png図51 デフォルトでインストールされているボイスの比較

ボイスの再生はwaveOutWriteで行われ、再生処理と終了処理が複数回ループすることで、繰り返し合成音声による脅迫がサウンドとして再生されます。

20200804_52.png図52 繰り返し再生される脅迫ボイス

Mazeランサムウェアに感染中、Windowsの「アプリの音量とデバイスの設定」を確認すると、Mazeランサムウェアがサウンドを再生している様子がわかります。

20200804_53.png図53 Mazeランサムウェアがサウンドを再生させていることがわかる様子

合成音声として喋らせるセリフですが、以下のフォーマットが使用されます。

20200804_54.png

例えば、ユーザ名が「Taro」の場合、以下のようなセリフが合成音声により繰り返し再生されます。

Taro Alert! Taro Alert!
Dear Taro Your files have been encrypted by Maze ransomware!
Attention! You need to buy decryptor in order to restore the files.

また注意をひく目的で、合成音声を再生する前にビープ音を鳴らす挙動もあります。

実際に再生されるMazeランサムウェアの合成音声は以下の感染様子を録画した動画をご覧ください。英語環境と日本語環境での感染様子と音声を収録しています。
(また、ロシア語環境で感染しない様子も最後に併せて載せています。)

以上がMazeランサムウェアの一連の挙動となります。
(検体によっては実行時に古い権限昇格の脆弱性を使用するものもあるようですが、本解析で確認した範囲では権限昇格の挙動は特に確認されませんでした。)

Mazeランサムウェア攻撃者側の迅速なチャットサポート

Mazeランサムウェアが作成した脅迫文の本文には感染環境ごとに動的に生成されたURLが記載されていますが、Torブラウザを使用してそのURLへアクセスすると以下のようなサポートページが表示されます。
そこには「DECRYPT-FILES.txt」(脅迫文テキスト)をアップロードしてくださいとの文章が記載されており、感染端末に作成される脅迫文テキストの末尾には端末の固有識別情報が記録されているため、それを取得する目的であると考えられます。

20200804_55.png図55 脅迫文のリンク先にアクセスすると表示されるWebサイト

以下は実際に感染端末の「DECRYPT-FILES.txt」をアップロードしてみた際の様子です。

20200804_56.png図56 「DECRYPT-FILES.txt」をアップロードした様子

DECRYPT-FILES.txt」のアップロードが完了すると、以下のような被害者個別のサポートページが表示されます。さらに攻撃者と会話できるチャット画面と、無料のお試し復号ができるメニューなどが表示されています。

20200804_57.png図57 「DECRYPT-FILES.txt」をアップロードすると表示される個別のサポートページ

上のメニューにある「Test Decrypt」をクリックすると、3つまでファイルを復号することができる画面が表示されますが、本調査時点では「一時的に利用できないためチャットで確認してください」との趣旨のコメントが記されていました。

20200804_58.png図58 「Test Decrypt」のページ

Buy Bitcoins」のページには以下のような記載が確認できます。

20200804_59.png図59 「Buy Bitcoins」のページ

なお、上記のようにファイルの復号機能が動作していなかったため、「お試しの復号を試すにはどうすれば良いか」という質問をチャットで実際に質問してみたところ、5分以内に「自己紹介と企業名を教えてほしい」旨の返事が返ってきました。

20200804_60.png図60 迅速なMazeランサムウェアの攻撃者のチャット応答

こちらがリサーチャーである旨と復号機能が動作するのかを試したい旨を質問すると、「セキュリティの観点からリサーチャーからはファイルを受け取らないようにしている」という趣旨などの比較的しっかりとした回答が返ってきました。(どちらかと言うと、正直にリサーチャーであることを明かすと無視か適当な応対が返ってくるものかとなんとなく想定していたため少々意外でした。)
どちらにしても、Mazeランサムウェアの攻撃側がこのように迅速な応答が返ってくるサポート体制を持っていることを実際に確認することができました。

20200804_61.png図61 比較的しっかりと回答してくる攻撃者のコメント

まとめ

標的型攻撃ランサムウェアに関する一般のニュースに普段目を通していると、Mazeなども含め、ランサムウェア自身がデータを盗むと取れるようなニュアンスで記載されたニュース記事をたまに見かけます。しかし実際に解析してみるとランサムウェア自身にデータ窃取の機能がついたものは今のところあまり見られず、ランサムウェアとデータ窃取のハッキング(もしくは別途感染する情報窃取マルウェアによるデータ窃取)は分離しており、ランサムウェアが放たれる前にすでにランサムウェアの攻撃者によってあらかじめデータが窃取されているケースがやはり多い印象を受けます。つまり、近年の標的型攻撃ランサムウェアは「Human-operated ransomware」とも呼ばれているように、人の手による一連の攻撃の中の1道具に過ぎない側面があり、ランサムウェアが動きだした時点で(データ窃取という観点に絞れば)場合によってはすでに手遅れといえる状況も中にはあるでしょう。そのような背景もあり、ランサムウェア単体での解析結果を持って全てを語ることは当然できませんが、検体の挙動を細かく把握することがそうした背景を理解することに繋がることもまた事実です。こうした解析情報が少しでもお役に立てれば幸いです。

ハッシュ値:
c1142340db4f1f423fc1cce14e657dd5861c9eb59788dec6d4c54ea227a437b9

コンサルティングサービス事業本部
サイバーインテリジェンスグループ

吉川孝志

シェアする ツイートする