ナビゲーションをスキップする
BlackBerry ブログ

新たなRaasファミリーのランサムウェアを確認:Windows システムを標的にする LokiLocker RaaS (動画有り)

本ブログ記事は、2022年3月16日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。

 

概要

BlackBerry Threat Intelligence は、新しい RaaS(Ransomware-as-a-Service)のファミリーを特定し、ベータ段階と思われるリリースまで起源をたどることに成功しました。他の多くのランサムウェア株と同様に、LokiLocker もファイルを暗号化して、期限までに身代金を支払わないとマシンを使用できないようにします。しかし、名前の由来となった北欧神ロキのように、この脅威は狡猾な罠を仕掛けてきます。その一つが、脅威アクターとしてイランが疑われるように仕向ける、「偽旗」戦術です。

神話のロキは、あらゆるものに変身できる、トリックスター(巧みないたずらを好む神)として描かれています。怒りっぽい火の神々の一員ではあるものの、他の神々とは敵対関係にあり、しばしば招かれていない祝宴に押しかけては食べ物と酒を要求したといいます。LokiLocker も同じように振る舞います。自分には正当な所有権のないものを執拗に要求するのです。
LokiLocker は英語話者の Windows® PC ユーザーを標的とした比較的新しいランサムウェアファミリーで、最初に発見されたのは 2021 年 8 月半ばでした。2016 年に悪名を馳せた、より古いランサムウェアファミリー Locky や、インフォスティーラの LokiBot と混同しないでください。LokiLocker は LockBit ランサムウェアといくつかの類似点(レジストリ値、身代金要求のファイル名)があるものの、直系の子孫ではないようです。

名前の由来となったロキ神と同じように、LokiLocker は招かれざる客として被害者の生活に入り込み、めぼしい財産がないか探しはじめます。その後、ファイルを暗号化し、再び使用できるようにするための身代金を要求します。このマルウェアは .NET で作成され、KoiVM と呼ばれる追加の仮想プラグインを使用した NETGuard(ConfuserEx の改変版)によって保護されています。KoiVM は、元々 .NET アプリケーション向けにライセンス付きで市販されていた保護機能プラグインでしたが、2018 年ごろからコードがオープンソース化され(または漏洩して)、現在では GitHub で誰でも手に入れることができます。Koi は、ハッキングツールやクラックツールで広く使われていると思われますが、これまでのところ、BlackBerry で確認された他のマルウェアでの使用例は、それほど多くありません。

 

 

破壊神ロキ

LokiLocker は、ファイルの暗号化に AES、鍵の保護に RSA という標準的な組み合わせによって、被害者のローカルドライブとネットワーク共有のファイルを暗号化します。次に、身代金の支払い方法に関する指示を受け取るために、攻撃者にメールを送付するよう指示します。

LokiLocker はワイパー機能を備えていると脅すことも忘れません。指定した期限までに身代金を支払わなかった場合、システムファイル以外のすべてのファイルを削除し、マスターブートレコード(MBR)を上書きすることで、被害者のファイルをすべて消去しシステムを使用できなくするというのです。被害者は誰もが一撃で仕留められます。

LokiLocker は、利用を限定された RaaS(Ransomware-as-a-Service)として機能し、慎重に選ばれた比較的少数の「会員」に秘密裏に販売されているものと思われます。各会員は選ばれたユーザー名で識別され、一意のチャット ID 番号を割り当てられます。BlackBerry の研究者が発見した LokiLocker のサンプルからは、現在およそ 30 の異なる「VIP」会員の存在が確認されています。

このランサムウェアの最も早い時期のサンプルの一つは、当初、トロイの木馬化された次のような総当たりチェッカ(ブルートチェッカ)型のハッキングツールに仕込まれて配付されました。

  • PayPal BruteChecker
  • Spotify BruteChecker
  • PiaVPN Brute Checker By ACTEAM
  • FPSN Checker by Angeal (MR_Liosion によってクラックされたもの)

ブルートチェッカとは、盗まれたアカウントの認証を自動化し、クレデンシャルスタッフィングと呼ばれる技法で他のアカウントへのアクセス権を得るためのツールです。これらのハッキングツールによって配付された LokiLocker は、会員に広く提供する前の、ある種のベータテスト段階にあるバージョンであった可能性があります。

確認された被害者は世界各地に散らばっているものの(会員ごとに標的を選ぶパターンが異なると思われるため当然予想されることです)、主に東欧とアジアに集中しています。

LokiLocker RaaS の信頼できる正確な起源を特定することはできませんでしたが、埋め込まれていたデバッグ用の文字列はすべて英語であったことは特筆すべき事実と言えるでしょう。ロシアや中国を起源とするマルウェアの大半は英語を使用していません。記述されていた英語には、ほとんど誤りやミススペルがありませんでした。

さらに興味深いのは、LokiLocker のごく初期のサンプルの配付に使われたクラッキングツールの一部が、AccountCrack と呼ばれるイランのクラッキングチームによって開発されたと思われる点です。また、既知の LokiLocker 会員の少なくとも 3 名は、イランのハッキングチャネルに固有のユーザー名を使用しています。これが LokiLocker のイラン起源説を裏付けるのか、あるいは本当の脅威アクターがイランの攻撃者に罪を着せようとしているのかが、完全に明らかになったわけではありません。

 

LokiLocker の詳細

C# コードを調査するには、まず DNSpy でファイルを開いてデコンパイルする必要があります。図 1 に示すとおり、元のファイル名 "svchost.exe" と、NETGuard/KoiVM v0.2.0-custom への参照を確認できます。

図 1 - KoiVM 難読化機能のバージョン

名前空間を調べると、すぐに 2 つのラベル付きクラス "Koi" と "NETGuard" および難読化された関数名を持つ多数のクラスを突きつけられました。これらの関数名は、いずれも複数文字の "Z" で始まっています(図 2)。これは、他の名前空間にも当てはまることです。

図 2 - Koi、NETGuard、および難読化されたクラス名

その名が示すとおり、KoiVM は仮想マシン(VM)であり、C# の難読化ツール ConfuserEx で動作するよう設計されたものです。仮想化は、難読化の一形態として解析をより困難にします。KoiVM のドキュメントで説明しているように、これは「.NET の opcode を、Koi のマシンだけが理解できる新しいものに変換」することで実現されます。

通常、KoiVM のバニラ実装では、OldRod と呼ばれるツールによる脱仮想化が可能です。このツールは、KoiVM の仮想化を無効にするために専用に開発されたもので、デコンパイルされたコードを人間がより理解しやすいものに変換します。しかし、KoiVM を改変して、OldRod が特定の署名や必要なデータを見つけられなくするのは簡単です。そして、そのような改変に対処できるようツール自体を改良しないかぎり、脱仮想化は失敗するでしょう。

BlackBerry の研究者が解析したサンプルでは OldRod は機能しませんでした。それは COR20 メタデータテーブルのヘッダー内に #Koi ストリームが記述されていなかったためであり、解析は振り出しに戻りました。

興味を引く名前空間がいくつか存在したことは指摘しておく必要があるでしょう。特に図 3 に示したような "Loki" で始まるものです。クラスに含まれるコードを調べる段階で、ある問題に直面します(今のところ)。中身が空であったり、デコンパイルすると DNSpy がエラーをスローしたりするのです。

図 3 - Loki 関数 - 空またはデコンパイル不能

Loki.Pinvoke には、クラス ZZZZX が含まれ(図 4)、クラス自体の中身は、さまざまな Windows API に対するラッパーです。これらのラッパーの 1 つを呼び出すことで、DLL および指定された関数をインポートします。これは、難読化に加え、Windows API の直接呼び出しをすべて排除するというメリットをもたらします。たとえば、Kernel32.dll の FindNextFile に対するすべての呼び出しを、C# 関数 ZZZZZf を呼び出すだけで実現できるのです。

図 4 - WinAPI のラッパー

もう一つの注目すべき点は「会員設定」です。ここには、この後、詳述するいくつかの設定オプションが含まれます。

図 5 - Loki.Config

ここまで、バイナリの主な特徴について、いくつか検討してきました。続いて、より具体的な詳細を掘り下げてみましょう。

 

展開

OldRod ではバイナリを脱仮想化できませんでしたが、まだ、すべての道が閉ざされたわけではありません。昔ながらの力仕事を少々とデバッグの妙技によって、バイナリを旧来の方法で解析することは可能です。DNSpy ではエントリポイントまたはプロセス生成にブレークポイントを設定できないことが判明しました。しかし最初の名前空間コンストラクタ(.cctor))に移動することで、Koi() 関数の初期呼び出しにブレークポイントを設定し、そこからステップインして図 6 のような状態に到達できることがわかりました。

図 6 – KoiVM で仮想化された関数

Koi() クラス内には、324 回の関数呼び出しがあります。しかし、多くは繰り返しで、おそらく VM 環境を設定しているものと思われます。注目した呼び出しのうち重要なのは、最初の呼び出し、最後から 2 番目の呼び出し、最後の呼び出しの 3 つだけです。

 

最初の展開関数

最初の関数は、モジュールのベースアドレスをフェッチし、自分自身をメモリ内にデコードする処理へと進みます。それには、一連の畳み込み XOR と変数割り当てが使用されます。この処理が完了すると、PAGE_EXECUTE_READWRITE 権限で VirtualProtect が呼び出されます。

その後、最後のループで、権限が変更された同じ場所に、さらにデータをデコードします。この最初の関数全体としての目的は、後ほど使用するためのデコード関数をいくつかデコードすることにあるようです。

 

第 2 (最後)の展開関数

最初に大きなバイト配列をグローバル変数内に定義します(図 7)。各バイトは、バイト配列内の位置に対して XOR されます。この演算が完了すると、得られたデータを GZIP で展開します。

図 7 - ByteArray の定義、XOR デコード、GZip 展開

次に、このデータを、以前は空だったか、デコンパイルできなかった関数、つまり最初に確認した図 3 の "Loki.*" クラス内の関数を設定するために使用します。

 

これでも、まだ最終関数ではない

ここまでで重要な関数はデコードされ解決されたものの、実行を Loki のコアに渡す前に、もう一つだけ実行すべき最後の手順があります。その関数は、スキャンソリューションを無効化するために、いくつかの特徴的な手段を用いて実行可能ファイルを破壊します。

最初の関数と同様に、メモリ内のモジュールへのハンドルを取得します。そこから、いくつかの操作を実行します。たとえば CoreExeMain と Mscoree.dll のインポート記述子テーブルに 2 つの文字列、それぞれ NtContinue と Ntdll.dll を上書きします。これが完了すると、ファイルは PE セクションテーブルヘッダーと COR20 メタデータテーブルヘッダーの権限を変更します。これを行うのは、これらのヘッダーを null バイトで上書きできるようにするためです。参考として、図 8 にこの関数のスニペットを示します。

図 8 - IDT 操作とヘッダーの上書き

この関数が終了すると、バイナリは LokiLocker コアの main 関数の先頭にジャンプします(図 9)。

以上でサンプルの展開は完了です。続いて LokiLocker のコア機能を見てみましょう。

 

機能性

デバッグロギング

LokiLocker は --log パラメータを付けて実行できます。これによって感染の詳細な verbose ログが "\logs.txt" に保存されます。

図 9 - ラベルを付けなおした "main" 関数と実行パラメータ "--log"

コアのサンプルは、依然としてある程度難読化されていますが、中身を十分に説明する、これらのデバッグ文字列の存在により、骨の折れる解析が若干容易になります。

 

永続性

マルウェアは実行されると、自分自身を "%ProgramData%/winlogon.exe" にコピーし、隠しファイルとシステムファイルの属性を設定し、"LokiLocker" という名前のミューテックスを作成します。

永続性は、いくつかの方法で実現しています。

  • ログオンごとにマルウェアのバイナリを実行するスケジュールされたタスクを作成する:

schtasks /CREATE /SC ONLOGON /TN Loki /TR %ProgramData%\winlogon.exe /RU SYSTEM /RL HIGHEST /F

  • HKCU と HKLM の両キーの下の Software\Microsoft\CurrentVersion\Run に次の値を追加する:

“Michael Gillespie” = %ProgramData%\winlogon.exe

  • マルウェアの実行可能ファイルを共通スタートアップフォルダにコピーする

上記の例で引用されている Michael Gillespie 氏は、ランサムウェアと闘う有名な研究者であり、Twitter や Bleeping Computers フォーラムで活発に発言しています。マルウェアの作者が、このようにセキュリティ研究者に「挨拶」する例は初めてではないものの、稀です。同様の例として Maze ランサムウェアがあります。このランサムウェアでは、その「キルスイッチ」ファイル名に、別の有名なランサムウェア対策の研究者の名前が使用されました。

 

準備

暗号化のプロセスが開始される前に、マルウェアは以下の操作を実行します。

  • 構成を読み取る - デフォルトの設定オプションはバイナリの Config クラスにハードコードされていますが、設定ファイルから読み取られた値によって抑止できます。
  • loki.txt という名前の設定ファイルが存在する場合、これを %ProgramData%\config.Loki にコピーし、そこから設定値を読み取る
  • 偽の Windows Update 画面を表示する(そのように設定されている場合)
  • 指定されたプロセスを強制終了する
  • 指定されたサービスを停止する
  • Windows のタスクマネージャーを無効化して(そのように設定されている場合)、以下の内容を含む wvtymcow.bat ファイルをスタートアップフォルダに投下する

REG add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System /v DisableTaskMgr /t REG_DWORD /d 1 /fac

  • システムバックアップとシャドーコピーを削除する
  • Windows エラーリカバリを無効化する
  • 内蔵ファイアウォールを無効化する
  • システム復元ポイントを削除する
  • Recycle.bin を空にする
  • Windows Defender を無効化する
  • ユーザーログイン通知を変更する(図 10、11)
図 10 - ユーザーログインを変更するコード
 

図 11 - LokiLocker のユーザーログイン通知

  • レジストリ SOFTWARE\Microsoft\Windows\CurrentVersion\OEMInformation 内の OEM 情報を変更する(図 12)

図 12 – OEM 情報を変更するコード

 

ネットワーク通信

マルウェアは、コマンドアンドコントロール(C2)サーバーでホストされる index.php スクリプトに対する POST 要求内で、下記の情報を含むビーコンを送信します(図 13)。C2 の URL はバイナリの設定に loki-locker[.]one としてハードコードされます。"user" と "chat-id" フィールドはハードコードされていますが、その他の情報は被害者のシステムプロパティに基づいて生成されます。

  • unique-id=<volume_serial_number>
  • disk-size=<size_of_main_drive>
  • user=<hardcoded_affiliate_username>
  • cpu-name=<cpu>
  • ram-size=<physical_memory>
  • os-name=<name_of_operating_system>
  • chat-id=<hardcoded_number>

図 13 - ネットワーク通信コードの一部(index.php への POST)

URL は 91[.]223[.]82[.]6 に解決されます。すべての通信に使用されるユーザーエージェントは Loki/1.0 です。

C2 からの応答としてマルウェアが想定するのは、JSON オブジェクトの形態を取る、難読化された公開鍵です。応答バッファの最大サイズは 0x100000(1048576 バイト)まで可能です。


{
    “public” : ”[ base64(xor(attackers_public_key, 0x0652)) ]”,

    “message_id” : [int]

}

マルウェアは同じサーバー上の "tg.php" スクリプトとも通信します(図 15)。これは、ボットからのステータス更新を目的とした API エンドポイントと思われます。主に、暗号化プロセスの進捗を C2 に知らせるために使用されます。このスクリプトには、次のパラメータを渡すことができます。

  • unique_id
  • action
  • msg-id
  • chat-id
  • status
  • elapsed-time

最終的な要求は次のようになります。

図 14- LokiLocker の POST 要求
 

図 15 - ネットワーク通信コードの一部(tg.php への POST)

 

暗号化

マルウェアは被害者の RSA-2048 鍵ペアを作成し、それを攻撃者の RSA 公開鍵で暗号化してレジストリに保存します。

レジストリには、キー HKCU\Software\Loki と次の値を作成します。

  • Public – XML フォーマットによる被害者の RSA 公開鍵を格納し、その後、XOR 0x11 によって難読化されます。

<RSAKeyValue><Modulus>modulus</Modulus><Exponent>exponent</Exponent></RSAKeyValue>

  • Full – 攻撃者の公開鍵によって暗号化された被害者の完全な鍵ペアを格納します。base64 でエンコードされたコピーが、各ドライブのルートディレクトリおよびユーザーの特殊ディレクトリの "cpriv.Loki" ファイルにも保存されます。

<RSAKeyValue><Modulus>modulus</Modulus><Exponent>public_exponent</Exponent><P>prime_1</P><Q>prime_2</Q><DP>exponent_1</DP><DQ>exponent_2</DQ><InverseQ>coefficient</InverseQ><D>private_exponent</D></RSAKeyValue>

  • Timer – yyyyy,MM,dd,HH,mm,ss のフォーマットで記述され、XOR 0x54 でエンコードされた身代金の支払期限の日時値です。これは、マルウェアがシステムファイル以外のファイルを削除し、MBR を上書きすることでドライブを消去しはじめる厳密な時刻です。デフォルトの日時は、最初にマルウェアが実行されてから 30 日後ですが、設定ファイルで変更できます。

LockBit ランサムウェアのバージョンでも同様のレジストリエントリが使用されています。

マルウェアのバイナリには、5 つの異なる RSA 公開鍵が保存されていますが、攻撃者が C2 を介して別の公開鍵を供給することも可能です。この C2 サーバーはすべての会員に共通していることから、これは RaaS の所有者が、被害者の秘密鍵を確保するために独自の公開鍵を送信するオプションを、自分のために用意していることを示唆しています。つまり RaaS の所有者は、全会員の被害者のファイルを復号できるということです。

マルウェアは、利用できるネットワーク共有がないかネットワークをスキャンします(そのように設定されている場合)。続いてローカルユーザーディレクトリ内の以下の特殊フォルダを皮切りに暗号化プロセスを開始します。

  • Favorites
  • Recent
  • Desktop
  • Personal
  • MyPictures
  • MyVideos
  • MyMusic

LokiLocker は次に、ローカルドライブおよびネットワーク共有(または、そのいずれか一方)を暗号化するスレッドを、設定に応じてそれぞれ独立に生成します。

ランダムに生成される鍵により各ファイルを GCM モードの AES-256 で暗号化したうえで、鍵を被害者の RSA 公開鍵によって暗号化します。

暗号化スレッドは、次のような操作も実行します。

 

  • 暗号化したボリュームのラベルをすべて "Locked by Loki" に変更する
  • 暗号化した各フォルダに身代金要求を投下する
  • "info.Loki" という名前の HTA ファイルを投下する
  • %ProgramData% ディレクトリにランダムな名前の HTA ファイルランチャを投下して実行する
  • デスクトップ壁紙を図 16 に示したものに変更する
  • cmd.exe、taskmgr.exe、regedit.exe のプロセスが起動されると、それらを即座に強制終了するスレッドを生成する
  • 暗号化の完了後にシステムをシャットダウンする(そのように設定されている場合)

図 16- LokiLocker の デスクトップ壁紙

 

ワイパーの機能

マルウェアは、指定した期限内に身代金が支払われないと、システムの消去を試みます(そのように設定されている場合)。図 18 に示したように、被害者のすべてのドライブ上のファイルを、システムファイルを除いてすべて削除します。さらに、システムドライブのマスターブートレコード(MBR)を上書きしてシステムを使用不能にすることも試みます。続いて、リブート後に、攻撃者からの次のようなメッセージを表示します。

図 17 - 消去されたシステムのリブート後に表示される LokiLocker のメッセージ

MBR の上書き後、LokiLocker はブルースクリーンエラー(BSOD)を強制することで、システムクラッシュを試みます。

図 18- LokiLocker のワイパーのコード

 

設定

LokiLocker には、複数の設定可能なセクションがあります。設定可能な情報のほとんどは、ビルド処理中にクライアントバイナリにハードコードされますが、一部の設定は簡単なテキストファイルによって実行時に変更できます。

会員関連の情報と実行オプションを除き、ビルド処理中の設定が可能と思われるその他のフィールドとして、cmd.exe によって実行されるコマンドのリストと、マルウェアが強制終了を試みるプロセスとサービスのリストがあります。BlackBerry で確認されたサンプルについては、現在までこれらのフィールドには一貫性があります。

 

会員設定

「会員」の主な設定セクションには、会員の名前、メールアドレス、C2 の URL、readme ファイルの名前と内容、暗号化ファイルに付加する拡張子などの情報が含まれます。攻撃者に連絡してきた被害者の特定に使用されると思われるチャット ID 番号と、マルウェアがシステム消去を試みるまでの期限(日数)の設定もあります。

会員設定は Loki.Config クラスに保存され、クライアントバイナリの生成時にランサムウェアのビルダーによって組み込まれるものと思われます。

設定キー

設定値

メール 1

“d4rkw4ve[at]tutanota[.]com”

メール 2

“dark4wave[at]yandex[.]com”

キャンペーンまたは会員の名前

“darkwave”

チャット ID

<編集済み>

拡張子

“. Loki”

Readme ファイルの名前

“Restore-My-Files.txt”

身代金要求文

図 21 参照

ワイパー期限

30

C2 URL

"loki-locker.one"


実行オプション

Config クラスにはその他の実行オプションのデフォルト値も保存されています。これらのオプションは、ランサムウェアのバイナリと同じフォルダ内に配置する必要がある、簡単なテキストファイルによって変更できます。

設定オプション

説明

デフォルト設定

update

偽の Windows Update 画面を表示する

false

nostartup

ランサムウェアの実行可能ファイルをスタートアップにコピーしない

true

nons

ネットワーク共有をスキャン / 暗号化しない

false

nocdrive

C ドライブを暗号化しない

true

justns

ネットワーク共有のみをスキャン / 暗号化する

false

nofuck

システムと MBR を消去しない

true

disabletask

タスクマネージャーを無効化する

false

clast

C ドライブを最後に暗号化する

false

full

完全な暗号化

false

norun

プロセスを終了する

false

shutdown

身代金要求文の表示後にシステムをシャットダウンする

false

 

カスタムの設定ファイル名

“loki.txt”

 

設定ファイルの保存先

“config.Loki”


実行されるコマンド

netsh firewall set opmode mode=disable

netsh advfirewall set currentprofile state off

bcdedit /set {default} bootstatuspolicy ignoreallfailures

bcdedit /set {default} recoveryenabled no

wbadmin DELETE SYSTEMSTATEBACKUP

wbadmin delete catalog -quiet

vssadmin delete shadows /all /quiet

wmic shadowcopy delete

schtasks /CREATE /SC ONLOGON /TN Loki /TR %APPDATA%\winlogon.exe /RU SYSTEM /RL HIGHEST /F


強制終了するプロセスとサービス

強制終了するプロセスとサービス

wxserver

wxserverview

sqlservr

ragui

supervise

culture

rtvscan

defwatch

winword

qbw32

qbdbmgr

qbupdate

qbcfmonitorservice

axlbridge

qbidpservice

httpd

fdlauncher

msdtsrvr

tomcat6

zhudongfangyu

vmware-usbarbitator64

vmware-converter

dbsrv12

msftesql

sqlagent

sqlbrowser

sqlwriter

oracle

ocssd

dbsnmp

synctime

agntsvc

mydesktopqos

isqlplussvc

xfssvccon

mydesktopservice

ocautoupds

agntsvc

agntsvc

agntsvc

encsvc

firefoxconfig

tbirdconfig

ocomm

mysqld

mysqld-nt

mysqld-opt

dbeng50

sqbcoreservice

excel

infopath

msaccess

mspub

onenote

outlook

powerpnt

steam

thebat

thebat64

thunderbird

visio

winword

wordpad

defwatch

ccevtmgr

ccsetmgr

savroam

sqlserv

sqlagent

sqladhlp

culserver

rtvscan

sqlbrowser

sqladhlp

qbidpservice

quickboooks.fcs

qbcfmonitorservice

sqlwriter

msmdsrv

tomcat6

zhundongfangyu

vmware-usbarbitator64

vmware-converter

dbsrv12

dbeng8

wrapper

mssqlserver

mssql

contoso1

msdtc

sqlserveragent

vds

 


国のリスト(スキップする国 ?)

マルウェアは文字列配列を定義します。これには、暗号化から除外する国のリストが含まれているものと思われます。これまでに解析したすべてのサンプルで、この一覧に含まれているのは Iran (イラン) 1 つだけでした(図 19)。コード内にこの配列を参照する部分がないため、この機能はまだ実装されていないようです。しかし、イランの攻撃者やハッキングツールに対する示唆と同様に、これも注意を逸らすための偽旗かもしれません。

図 19 文字列 "Iran"

 

ドロップされるファイル

HTA ファイル

プレーンテキストの readme ファイルの他に、マルウェアは図 20 に示すような HTA ファイルも投下します。このファイルは、被害者のデスクトップに HTML フォーマットの身代金要求文を表示します。

図 20 - HTA ファイルによって表示されるメッセージ

あなたのファイルは、すべて LokiLocker によって暗号化されました !

あなたのすべてのファイルは PC にセキュリティ上の問題があるために暗号化されました。

復元する必要がある場合は、{EMAIL_1} までメールをお送りください。

復号するには、Bitcoin による支払いが必要です。値段は、当方への問い合わせが来るまでの時間に応じて変化します。

支払い後に、当方より復号用のツールをお送りします。

問い合わせの期限は 48 時間後(2 日)です。これより遅れる場合は倍額を支払う必要があります。

24 時間(1 日)以内に返信がない場合は、このアドレス {EMAIL_2} にメールを送信してください。

一意の ID は、次のとおりです。{UNIQUE_ID}

ファイルを取り戻すには期限があります。

期限を過ぎても支払いがない場合、すべてのファイルが削除されハードディスクが徹底的に破壊されます。

タイマーの第 2 日目に一部のデータが失われます。

支払いの猶予期間を購入することも可能です。メールを送信してください。

これはイタズラではありません。期限が来るのを待って、ファイルが削除されるのを目の当たりにしたいですか :)

 

復号の保証はあるのか ?

支払いの前に、テスト用のファイルを最大 3 個送付すれば、無料で復号します。ファイルの総容量は 2Mb 未満(アーカイブされていないもの)とし、重要な情報が含まれていてはなりません。(データベース、バックアップ、大容量の Excel シートなど)

 

注意 !

テスト用のファイルを復号する前に、料金を支払わないでください。

仲介を申し出る者は一切信用してはなりません。彼らは助けにはならず、詐欺の被害に遭います。とにかく我々にメールしてください。手順はすべて指示します。

他のメールアドレスに返信しないでください。役に立つのは、この 2 つのメールアドレスだけです。

暗号化されたファイルの名前を変更しないでください。

サードパーティソフトウェアによるデータの復号を試みないでください。永久にデータが失われる恐れがあります。

サードパーティの助けを借りて復号すると、料金の割増しが発生する(我々の料金に彼らの料金が上乗せされる)場合や、詐欺の被害に遭う場合があります。

図 21 :身代金要求文

HTA コードは図 22 に示す偽の Windows Update ボックスも表示し、その後 "C:\ProgramData\winlogon.exe" から新しいランサムウェアプロセスを実行し、https[:]//picc[.]io/X8GRzsw.gif へのアクセスを試みます。この URL は 3[.]64[.]163[.]50 に解決されますが、執筆時にはもはやそのコンテンツを入手できなくなっていました。

図 22 - HTA コードの一部

HTA コードは、いくつかのメタデータを保存するために、図 23 のように Google Tag Manager(gtag)のデータレイヤーを作成します。

図 23 - HTA コードによる gtag の利用

 

HTA ランチャー

LokiLocker は、図 24 のコードに含まれるメッセージを表示し、mshta.exe を使用して HTA ファイル "info.Loki" を起動するための小さなバイナリを投下します。このバイナリは、埋め込まれた C# コードから C# コンパイラにより、その場でコンパイルされます。

図 24 - HTA ランチャーのコード

このファイルと、コンピューター上の他のすべてのファイルは、LokiLocker によって暗号化されています。

このファイルと、残りのファイルを復元するには、次のメールアドレスにメッセージを送信してください。 <attackers_email>

メッセージの件名に、次の ID を記載してください。<victim_id>

手順はすべて指示します。

24 時間以内に返信がない場合は、次のアドレスにメールを送信してください。<attackers_email_2>

図 25:メッセージボックスのテキスト

 

ネットワークスキャナ

LokiLocker では 2 つの形態のネットワークスキャンが使用されることを突き止めました。第 1 の形態は組み込みネットワークスキャナで、マウントして暗号化するためにネットワーク共有を識別します。

LokiLocker を配付する脅威アクターが、被害者の環境に投下した「NS」という名前のネットワークスキャナユーティリティを使用するケースも確認されました。このツールは、マウントおよびアンマウントされているローカルドライブとネットワーク共有のリストを表示する、簡単なコマンドラインスキャナです(図 26)。

図 26 :NS.exe ツール

NS.exe は 2018 年から VirusTotal に掲載され、次のような複数の異なるランサムウェアキャンペーンで見つかっています。DharmaPhobosLockBitRevil、その他多数このツールに関しては十分な情報がありませんが、多くの RaaS ベースの脅威に組み込まれたり、添付されたりしてダークネット上で配付されているようです。

 

まとめ

LokiLocker は巧妙な方法でユーザーのエンドポイントに大混乱を発生させ、その名前の由来である北欧神のように、(経済的な)供物によって宥めないと報復と破壊をもたらすことが判明しています。.NET アプリケーションを仮想化して保護するために KoiVM を使用するという LokiLocker の手法は、解析を複雑化する方法としては珍しいものです。他の脅威アクターがこの手法を取った例はまだ少ないため、これが新しいトレンドの始まりになるかも知れません。

「イラン」関連のコードが含まれていることも興味深い点です。このスニペットの使用目的が完全には明らかになっていないからです。通常、国のリストは「同盟国」を除外して危害が及ばないようにする目的があります。しかし、このコードは未使用と思われるため、研究者が LokiLocker の作成者としてイランを名指しすることを狙った策略かも知れません。ごく初期に確認された LokiLocker の会員の一部には、イランのハッキングチャネルでしか見られないユーザー名を使用しているという事実もあります。さらに、このランサムウェアの初期サンプルの配付にはイランのクラッキングツールが使用されました。こうした詳細情報が、事態をさらに混乱させます。ペテン師や脅威アクターの手にかかると、意味のある手がかりと偽装工作の区別が難しくなり、このまやかしの「落とし穴」が、どこまで続いているのか誰にもわからない場合もあります。

LokiLocker や類似の RaaS サービスによる感染を防御するための最適のルールは、常にデータ(企業データも含む)のバックアップコピーを作成しておくことです。バックアップはオフラインに保存し、なるべくプラグも抜いておきましょう。バックアップドライブまで LokiLocker に攻撃され暗号化されるという事態を避けるためです。

新しいプログラムやソフトウェアなど、ファイルをダウンロードする場合は、信頼できる公式サイトのみを使用し、サードパーティやピアツーピア(海賊版)サイトは避けます。これらのサイトはしばしば、無害または「クラックされた」ソフトウェアを装った悪意あるファイルの隠れ場所となるからです。メールの添付ファイルも同様です。信頼できる連絡先からの添付ファイルであっても、相応の注意を払って処理する必要があります(可能ならば開く前に最新のアンチウイルスプログラムでスキャンしましょう)。

本稿の執筆時点では、LokiLocker によって暗号化されたファイルを復号する無料のツールは存在しません。LokiLocker ランサムウェアに既に感染したという場合、FBI をはじめとする、ほとんどの公的治安機関は身代金を支払わないことを推奨しています。被害者が身代金を支払うことが、ランサムウェアの世界的な増加を助長しているという事実をおいても、自分が犯罪に巻き込まれているという認識を持つ必要があります。そして、たとえ身代金を支払ってもデータに再びアクセスできるようになる保証は一切ないのです。最後に、データが復元できたとしても、脅威アクターが将来簡単にアクセスできるよう、マシンのどこかにバックドアを仕込んでいないかどうかを知る方法はありません。結局、身代金を支払った被害者は、その後もたびたび支払いに応じる場合が少なくありません。

あらゆる種類のランサムウェアに対する最大の防御策は、複雑で根気のいる作業が伴うとわかっていても、常に脅威アクターの一歩先を行くように、あらゆる努力を惜しまないことです。

ランサムウェアの被害に遭われた方は、次のような対策を講じてください。

付録

侵入の痕跡(IOC)

0684437b17ae4c28129fbb2cfe75b83cc8424ba119b9ca716ad001a284d62ead

SHA256

15d7342be36d20ce615647fac9c2277f46b6d19aa54f3cf3d99e49d6ce0486d0

SHA256

1a4a3bfb72f3a80e4b499ecebe99f53a2b7785eace7f612b3e219409d1e1ffc7

SHA256

2a7f01d924a4fc38c9fad586634eccbc28de07d97531c4a02eb6085359093a45

SHA256

37702b94f9fc14a406312a2a392ad9553cf05c4b6870d94b5cf4781c02c29414

SHA256

4215b5ce91deb97011cba2dd94d5bac1a745d6d55f6938b86e209eaaf8e655df

SHA256

52c045b57e24585467be13454c5db551987fd23bfa931a7f6ab41e6f11b8a7ec

SHA256

55da12a82c8e0b9fda5dbba6612627c0ee5d13d55e3bcc1df2ca9785c97caf64

SHA256

5ccee068daf8a672d0e63e334e00985aa7fe56aa26b6c036d562728fdf968237

SHA256

6205056cd92c75579f56bd0ce7159fae9f360d4c183beb10743330952bf22056

SHA256

630e24cc1c4c95321965ad967e77e1888c48c4b1f653d800c7df08e879814787

SHA256

75a5d27c77cf8515cff84d789f0e8f849b37e15b9b5f1c0801bab414061048a6

SHA256

78a530f35d1cc89fc757b7661cbd57b2e9e46aeed53e2e66247db66c214a2ba0

SHA256

7f23ea1e5ab087ba2c4e0ea251d680ef5190d49181efcc222702075b276d5990

SHA256

8630df622ee773c3d9c934fe9d925c019b43232e8f2810ee651dcf5f3ec79893

SHA256

88acae18f2cf7de7bb76784d45d9612561c8890872ea3629f0608577928745a5

SHA256

8de5b9332556da8f401c5cbf3cea1dbc1e1ba277c0efa85dce8cd36310c2936c

SHA256

8f78555f0f62b4f280a77109dbaa4aeb5c347d1ea38b521f98c57a7acea8087e

SHA256

8f8cf6b8cd0c789d3f67f6291bb7c0c5416e27320631c852152a63513185941e

SHA256

a1e30ea263ba21d656717f7f7824ecb2dc90896f55eae134afaf7691209979fd

SHA256

ac1b326f23e17726a2b90ce8a9d29c6e44a2cb37b431e2b94734bdd17618ae26

SHA256

adacbc5402326f87c76cc7737ad924ce5bd7394400ef86a48fa754af9d22da66

SHA256

b01a96892f3efdaa6682078339b23d8954d571c27ee15a4ce9ef8ad6c415f06d

SHA256

b8996e435ba229837d13f9837f6c0451f50a5767b0d1f1bb715670c802a1d564

SHA256

c3fe7ee5451108c16d7730d0bf589f70b841f3846908c1761d827a70f3462ef0

SHA256

c80513aaff11a2a2914d3a674737f63fbc04c6d5de7fda6f8b6e07df580664cf

SHA256

c8e8599e8d86ff7daf02ea9c01d31f4cdcf829314c76b84d1b1b8a982d1299c5

SHA256

cb17673f3cde6e542db3ff5facee2a01fdec462be275e9274c512038470009d1

SHA256

da0a82d322502cd6d156649dee1e0a45348df0dce272b6ae2dd81af25f774c62

SHA256

df24b04f6ff0ac50fbf1c01ee02f809c1c3f9fbe9d14eefc3306b1b586bf943e

SHA256

e28b0a93649010788bbeda883a08254fefe3710700fc2c5a8dea94ec39402ec3

SHA256

f2da3d1410c5058720a4307acf5fec7fc2b54285be9dd89eae108cce368dcde7

SHA256

fe930861d5eec95a3ea1239e7a8f4182a2cf5b094ac3a48c4cb2f0ef39facd05

SHA256

fffcf4be17e732aa3a5387e747290236d0f75ff3a24cb43eca793668d7772ddd

SHA256

4e6471c4574152d0eb2d2c608e540e505f3db41b50997d1f06c47e587a355d80

SHA256

7c890018d49fe085cd8b78efd1f921cc01936c190284a50e3c2a0b36917c9e10

SHA256

9ab1694c978f11521c6bca73d40256e4b433f3279792db8ae1fecc5e0ad174c9

SHA256

ebc955f12b0a2b588efca6de0af144dd00e33ead80185a887bf7c97329b28ec6

SHA256

1e6ecdb54224eea50476be03d5a48083deae15301f26ba3519e0c0a5eb77b1f4

SHA256

268c2924d45c0c7be9b67b85f03ddf5df97f2bc8963faefe1bec244e0cb95225

SHA256

36b5fe49cd81393f8c60c70c941a1e6aaf181775b0614f1c4a142f38c7af1a81

SHA256

42088f0e3e9c70b7d1d238f7e3b03a3ca177748ba2568adba9104bbed2827734

SHA256

6d1ecc48069eae14a831af05d29d2d25c0fa9f7c62f1f51c44d0d70fb014a590

SHA256

84d9ef8cb92d57b178cce655f3f7808c6f5cf42f15c468f741b253f37ffc39fc

SHA256

bb382bbc0756832748b33f0d7f7ec218d570afa031937259e69237df4945d074

SHA256

ca478cb334360bef31d394438cba1449dfe0b8d751cc8eb679f09e12e5068d1a

SHA256

e9e80fd3fe71d133609f5bc75081b13123e4f9a5ed1920050727955185f3ce52

SHA256

fe40e5c6244c7e0a256689b6ea0881998fef897cece79a2add3ba8f7a23f4f2b

SHA256

8cb1e9c99ad716a2541697a6d4ada32433b56e11dfe6aa1cb7c4fbc72b4bad2e 

SHA256

c1e8c720da2297aa4432364441b341ec85e6f7f571cf6348ffdc51f4ae96418a

SHA256

loki-locker[.]one

C2 ドメイン

194.226.139[.]3

C2 IP

91.223.82[.]6

C2 IP

Software\Loki\public

レジストリ値

Software\Loki\full

レジストリ値

Software\Loki\timer

レジストリ値

Software\Microsoft\CurrentVersion\Run\Michael Gillespie

レジストリ値

%ProgramData%\winlogon.exe

実行可能ファイル

%ProgramData%\config.Loki

設定ファイル

<malware_path>\loki.txt

設定ファイル

<malware_path>\logs.txt

ログファイル

Restore-My-Files.txt

Readme ファイル

Info.Loki

HTA ファイル

Cpriv.Loki

データファイル

Loki/1.0

ユーザーエージェント

.Loki

ファイル拡張子

.Adair

ファイル拡張子

.Boresh

ファイル拡張子

.Rainman

ファイル拡張子

.Spyro

ファイル拡張子


既知の会員名

AbolSpyro

AdairFile

Ahmad_C4

Darwin

Fardinyps

Fuck3r_life

Helpmezeus

John

Kingbo

LokiBlack

Mindnear

Miracle

Miveh_sabzikosher

Roxlock

Shadow

ShreAzm0

Sirer

darkages

darkkiller

arkwave

ghost

h33shmat

hijack

jhnvjfygbjdhf

mjid4MB

mr_noobx

numbervpss

optimus982

pf9922

qazw

sidewinder


既知のメールアドレス

BlackSpyro[at]mailfence[.]com

BlackSpyro[at]tutanota[.]com

DecNow[at]MsgSafe[.]io

DecNow[at]TutaMail[.]Com

Decoder[at]firemail[.]cc

Decryptfiles[at]goat[.]si

Filemanager[at]mailfence[.]com

Helpingdecode[at]tutanota[.]com

Miiracle11[at]yandex[.]com

Miracle11[at]keemail[.]me

PayForDecrypting[at]gmail[.]com

PayForDecrypting[at]outlook[.]com

Rdpmanager[at]airmail[.]cc

RoxLock[at]keemail[.]me

RoxLock[at]mailfence[.]com

Shadow0[at]mailfence[.]com

Shadow11[at]mailfence[.]com

Skydancerf5[at]cock[.]li

Sapphire01[at]keemail[.]me

Sapphire02[at]mailfence[.]com

Unlockpls.dr01[at]protonmail[.]com

Unlockpls.dr01[at]yahoo[.]com

adairfile[at]mailfence[.]com

adairfile[at]tutanota[.]com

admindec[at]rape[.]lol

anoniran[at]protonmail[.]com

badlamadec[at]msgsafe[.]io

d4rkw4ve[at]tutanota[.]com

dark4wave[at]yandex[.]com

dark.killer[at]mailfence[.]com

darkkiller[at]cock[.]li

decryptyourfiles[at]firemail[.]cc

decsup[at]tuta[.]io

falcon9[at]cyberfear[.]com

filemanager[at]cock[.]li

jesushelp01[at]techmail[.]info

jesushelp02[at]mailfence[.]com

kingbo[at]tutanota[.]com

kingboo[at]mailfence[.]com

kingvps1[at]mailfence[.]com

kingvps[at]mailfence[.]com

lockirswsuppurt[at]mailfence[.]com

lockteam[at]cock[.]li

lockteam[at]keemail[.]me

loki.black[at]mailfence[.]com

loki.black[at]msgsafe[.]io

loki.help[at]bingzone[.]net

loki.help[at]mailfence[.]com

loki.support01[at]techmail[.]info

loki.support02[at]mailfence[.]com

loki01[at]keemail[.]me

loki02[at]mailfence[.]com

lordpdx[at]tutanota[.]com

mrcrypt2[at]mailfence[.]com

mrcrypt[at]msgsafe[.]io

mrrobot13[at]cock[.]li

pf2536[at]protonmail[.]com

pf2536[at]tutanota[.]com

puffcrypt[at]gmail[.]com

rain.man13[at]mailfence[.]com

rain_man13[at]keemail[.]me

skydancerf5[at]tutanota[.]com

tran9ino00[at]protonmail[.]com

wannayourdata[at]gmail[.]com

xmagic22[at]tutanota[.]com

xmaster22[at]tutanota[.]com
 

 

・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows

・サイバーセキュリティチームによるコンサルティング: https://www.blackberry.com/ja/jp/services/blackberry-cybersecurity-consulting/overview

・BlackBerry Japan:https://www.blackberry.com/ja/jp

The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

BlackBerry の Research and Intelligence Team は、新たに生じている脅威と持続的な脅威を検証し、セキュリティ担当者とその所属企業のために、インテリジェンス解析を提供しています。