LockBit 5.0に関する本シリーズの前編[a]では、このクロスプラットフォームランサムウェアの最新バージョンのサンプル19個を分析し、ESXi版の詳細な技術的分析を行いました。3部構成のシリーズ中編となる今回はLockBit 5.0のLinux x64版にフォーカスし、詳細を分析していきます。

Linux x64版の分析

まずサンプルに対して「file」コマンドを実行すると、実行ファイルの出力はESXi版と同じくx86-64アーキテクチャであり、バイナリは動的リンクされていることがわかります。このファイルにはELFセクションヘッダーは含まれていません。

file LockBit_LINUX_AMD64

LockBit_LINUX_AMD64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, no section header

ESXi版のサンプルと同様に、Linux版で使われているライブラリも動的にリンクされています。lddで簡単に確認すると、libclibpthreadといったライブラリが使用されていることがわかります。

ldd LockBit_LINUX_AMD64

linux-vdso.so.1 (0x00007f23ac39c000)        

libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f23ac371000)

libc.so.6 => /lib64/libc.so.6 (0x00007f23ac000000)

/lib64/ld-linux-x86-64.so.2 (0x00007f23ac39e000)

ESXi版と比較して、このサンプルにはランサムウェア関連の平文文字列が含まれていません。「strings」コマンドをサンプルに対して実行しても、ライブラリや関数呼び出しといったわずかな情報しか表示されませんでした。

サンプルをさらに詳しく分析すると、ファイルの末尾に読み取り不能な大きなデータのかたまりが含まれていることが確認できました。

このサンプルは、データチャンクの小さな部分を参照していることから、データが何らかの形で難読化されていると推測できます。データチャンクは関数に送られ、さまざまな操作が行われた後、難読化が解除されます。

以下は、コードをデバッグすることなく文字列の難読化を解除できるコードスニペットです。

def rol_5(val):

    “””Performs a bitwise Rotate Left by 5 bits on an 8-bit value.”””

return ((val << 5) & 0xFF) | (val >> 3)

def decrypt_lockbit_blob(blob: bytes) -> str:

    if len(blob) < 5:

        return “”

# 1. Derive the XOR Key from the first 4 bytes

xor_key = blob[0] ^ blob[1] ^ blob[2] ^ blob[3]

# 2. Get the number of segments (chunks)

# The 5th byte (index 4) contains the count, XORed with the key.

chunk_count = blob[4] ^ xor_key

decrypted_string = “”

current_offset = 5 # Start processing after the header

for _ in range(chunk_count):

    if current_offset >= len(blob):

        break

    # Get the length of the current segment

    segment_len = blob[current_offset] ^ xor_key

    # Process the segment payload

    for i in range(segment_len):

        enc_byte = blob[current_offset + 1 + i]

        # Decryption: Rotate Left 5

        decrypted_char = chr(rol_5(enc_byte))

        decrypted_string += decrypted_char

    # Move offset past the length byte and the payload

    current_offset += 1 + segment_len

return decrypted_string

難読化を解除すると、データチャンクが読めるようになります。難読化解除された文字列は、ESXi版で見られたものとほぼ一致します。

図1. 難読化解除された文字列の例

デコードされたチャンクの中から、このマルウェアの内部名が確認できました。

LINUX Locker v1.06

LOCKBIT5.0

マルウェアの内部名(LINUX Locker v1.06)は、ESXi版の分析で確認されたものと似ています。ESXi版のバージョン(v1.07)の方が高いように見えますが、このLinux版で見られるような文字列の難読化はESXi版にはありませんでした。

図2. 難読化解除された文字列「LINUX Locker v1.06」および「LOCKBIT5.0」

マルウェアの全体的な実行フローは、以下のように、ESXi版と類似しています:

1. アンチデバッグチェック

2. 自己削除

3. 引数を解析して初期化

4. 自身をフォークしてデーモン化

5. 暗号化

6. クリーンアップ

サンプルの特徴

このサンプルは、ESXi版の分析で述べたものと同じアンチデバッグ技術を使用しています。

図3. 自己トレースのためのptrace呼び出し

例えば、実行プロセスの冒頭で、ptrace関数を呼び出して自身をトレースします。これは、プロセスが他のソフトウェアによってデバッグされていないかを確認するために行われます。Linuxでは、1つのプロセスは一度に1つのデバッガしかトレースできないため、自己トレースに失敗するとマルウェアは実行されません。

ESXi版のサンプルと同様に、このマルウェアはチェック対象のプロセスのリストを埋め込んでいるほか、OSの安定性を維持するために暗号化を避けるべきシステムフォルダのブラックリストも持っています。これには、/etc、/EFI、/boot、/mbrや、前編でのハイパーバイザー版の分析で述べたその他のシステムディレクトリが含まれます。

Linuxマシン上で実行すると、以下の結果が得られます。

図4. ランサムウェアの実行

このランサムウェアは、まず自身を削除してから/homeディレクトリ内のフォルダを走査し、ファイルを暗号化して、元の拡張子の後ろにランダムな拡張子を追加します。.config/、.local/、.cache/などの隠しディレクトリ内のファイルも暗号化します。デフォルトでは、影響を受けたすべてのフォルダに身代金要求ノートをドロップします。

図5. 暗号化されたファイルと身代金要求ノート

このランサムウェアでは、身代金要求ノートをすべてのフォルダに書き込むか、ルートディレクトリのみに書き込むか、あるいは身代金要求メッセージを全く作成しないかをユーザーが指定できます。

また、新規ファイル作成ダイアログも変更し、フォルダに身代金要求ノートをドロップするオプションを追加します。

身代金要求ノートに含まれていたテキストの内容は下記の通りです。(※原文は英語)

~~~ あなたはLockBit 5.0に攻撃されました – 2019年以来、最も高速かつ安定した不滅のランサムウェアです ~~~~

>>>>> あなたは支払いが必要です。

盗まれた情報が公開されるTorブラウザのリンク:

http://********************************************************.onion

>>>>> 我々が詐欺を働かないという保証について

我々は地球上で最も古くから活動する恐喝集団であり、評判以上に重要なものはありません。政治的な動機を持つグループではなく、求めているのは金銭的報酬のみです。もし我々が一件でも顧客を騙せば、他の顧客は支払いに応じなくなるでしょう。この5年間、我々と取引した顧客で不満を抱いたまま終わった方は一人もいません。身代金をお支払いいただければ、交渉過程で合意したすべての条件を履行します。今回の事態は、単に貴社のシステム管理者向けの有償トレーニングセッションだとお考えください。なぜなら、我々が攻撃できたのは貴社のネットワークの設定ミスが原因だからです。貴社がシステム管理者に給与を支払うのと同じように、我々のペネトレーションテストサービスにも対価が支払われるべきです。我々の詳細については、Wikipediaをご参照ください。 https://en.wikipedia.org/wiki/LockBit

>>>>> 警告!暗号化されたファイルを削除・変更しないでください。ファイルの復号において、取り返しのつかない問題が発生します!

>>>>> 警察やFBIに助けを求めたり、攻撃されたことを誰かに話したりしないでください。彼らは身代金の支払いを禁じるだけで、何の助けにもなりません。結局、ファイルは暗号化されたまま残され、貴社のビジネスは破綻するでしょう。

>>>>> ビットコインを購入する際は、その真の目的を誰にも伝えないでください。一部のブローカー、特に米国のブローカーは、身代金支払いのためのビットコイン購入を許可しません。購入理由としては、暗号資産への個人投資、贈り物としてのビットコイン、ビットコインを使った事業用資産の購入、コンサルティングサービスの暗号資産での支払い、その他のサービスへの暗号資産での支払い、暗号資産での寄付、ドナルド・トランプ氏が選挙に勝つための暗号資産での寄付、ICO参加や他の暗号資産購入のためのビットコイン購入、子供への遺産として残すための暗号資産購入など、別の理由を伝えてください。あるいは、購入目的を尋ねない適切な暗号資産ブローカーを利用することもできます。

>>>>> ブローカーから暗号資産を購入した後は、https://electrum.org/ などのコールドウォレット、またはその他のコールドウォレットに保管してください。詳細は https://bitcoin.org をご覧ください。個人のコールドウォレットから身代金を支払うことで、規制当局、警察、ブローカーからのいかなる問題も回避できます。

>>>>> 法的な影響を恐れる必要はありません。あなたは非常に恐怖を感じ、そのために我々の指示にすべて従ったのです。もしあなたが非常に怖かったのなら、それはあなたのせいではありません。我々に支払った企業で問題になったところは一社もありません。いかなる言い訳も、保険会社が支払義務を免れるための口実にすぎません。

>>>>> 貴社の個人IDを使い、TORサイト経由で我々に連絡する必要があります

Torブラウザをダウンロードし、インストールしてください。 https://www.torproject.org/

チャットルームに書き込み、返信をお待ちください。我々からの返信は保証します。誰にも知られない、我々との連絡用の固有IDが必要な場合は、チャットでその旨を伝えてください。秘密のチャットを生成し、プライベートなワンタイムメモサービス経由でIDをお渡しします。このIDはあなた以外には誰にも分かりません。返信に時間がかかる場合がありますが、これは我々が多忙であり、世界中の何百もの企業を攻撃しているためです。

我々とのチャット用Torブラウザリンク:

http://********************************************************.onion

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

>>>>> 我々との連絡用個人識別子 ID: 763DB13******************1E6D379 <<<<<

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

>>>>> 広告:

ランボルギーニ、フェラーリ、そしてたくさんの巨乳美女を手に入れるには?登録して、5分で我々と共にペンテスターとして億万長者への道を歩み始めよう。

http://********************************************************.onion

登録後、地球上のほぼすべてのオペレーティングシステムを暗号化するための最も完璧で信頼性の高いツールと、攻撃した企業と交渉するためのプラットフォームが手に入ります。

バージョン: LINUX v1.08 | Linux amd64

身代金要求ノートのフッターにあるように、記載されたバージョンv1.08は、文字列解析で観測されたバージョン(1.06)よりも新しいものです。しかし、この亜種はESXi版(v1.07)と比較して、文字列の難読化といった静的解析対策技術の実装によって解析への耐性が強化されていることから、v1.08というバージョンは整合性が取れています

総じて、Linux版はESXi版と非常によく似ています。使用ライブラリやデバッグ対策技術、ブラックリストはいずれも共通していますが、主な違いは、特に何を標的とするかという点です。ESXi版がハイパーバイザーのプロセスとファイルを標的とするのに対し、Linux版はより汎用的で、デフォルトでは/homeフォルダを標的にします。また、ESXi版はOS固有のハードコーディングされたチェック機能が組み込まれているため、Linux上では実行されないことにも留意すべきです。

Linuxファミリーのサンプルの解析レビュー

特定されたファイルは多様なアーキテクチャのサンプル群であり、このランサムウェアが複数のプラットフォームやハードウェアアーキテクチャで実行できるようにしていることを示唆しています。これらのサンプルの動作フローは、以前に詳細にレビューしたLinuxおよびESXiのサンプルと酷似しています。

図6. 発見されたLockBit 5.0のサンプルのリスト。

ビルド間の最も重要な違いは機能ではなく、解析のしやすさ(可視性)です。一部のサンプルは、広範な平文の動作文字列(使用法に関するメッセージ、ログ参照、パストークンなど)を保持しており、静的トリアージの際に機能の洗い出しが容易です。しかし、特にx86_64、ARM64、PPC64LE、s390xなどでは、マルウェア解析で重要となるテキストは暗号化されて保存されており、実行時にのみ再構築されるため、解析しやすさを抑制しています。この暗号化は保護のためではなく、アナリストの解析を妨害するためのものです。これに加えて、ストリップされたバイナリや欠損したELFセクションヘッダなども工夫も、マルウェア解析を大幅に遅らせる要因であり、大量の文字列ベースの探索(ハンティング)の有効性を低下させています。

図7. 解析されたビルドの1つで特定された解析対策関連のアーティファクト。

文字列を復元してみると、このファミリーの解析対策の姿勢がより明確になり、著しく一貫していることがわかります。複数のビルドで、確立されたデバッグ対策技術として/proc/self/statusTracerPidフィールドを参照しているほか、/proc/<pid>/comm/proc/<pid>/cmdlineを介したプロセス列挙のための足掛かりも確認できます。これは、普及型から産業レベルのランサムウェアによく見られる実用的な防御策です。つまり、インタラクティブなデバッグや一部のサンドボックス環境における自動解析を妨げるには十分な強度を持ちつつも、多様な実行環境での安定した動作を損なわないよう、軽量な設計に抑えられているということです。

復元されたファイルシステム関連の文字列群からも、安定性重視の成熟したファイル探索モデルの存在がうかがえます。アーキテクチャを問わず、同じカテゴリのディレクトリが暗号化除外対象、あるいは特別な処理の対象候補として現れます。具体的には、/proc、/sys、/run、/devなどの仮想/揮発性ファイルシステム、/var/runなどのランタイムディレクトリ、/boot、/etc、共有ライブラリパス(/lib、/lib32、/lib64)といったシステムの安定動作に不可欠なディレクトリ、さらには/selinuxなどのマーカーやapt/dpkgパス配下にあるパッケージマネージャーのフットプリントなどです。これらは完全に除外対象として実装されているか、設定によってスキップしているのかはさまざまですが、意図は一貫しています。サービスのクラッシュやOSの不安定化、暗号化処理の中断を招きかねない対象には手を出さないということです。

LockBit 5.0のエコシステムは、互いに関連のない複数のフォーク(派生版)の集合体ではなく、移植性の高い単一のコードベースを巧みにクロスコンパイルし、多様なプラットフォームに対応する「ガワ」を被せたものと見るのが最も的確です。x86_64/i386、各種ARM、MIPS/MIPSEL、PPC64LE、s390x、さらにはFreeBSD AMD64版まで、アーキテクチャを問わず、同じ設計思想が繰り返し見られます。具体的には、高スループットを目的としたマルチスレッドのファイル処理パイプライン、迅速な被害拡大を優先する高速な暗号化モード(またはファイルの一部のみを暗号化するモード)、仮想ファイルシステムやシステムの安定稼働に影響する領域を避けるための慎重なファイル探索ロジック、そして解析妨害や自身の状態確認のために一貫して/procファイルシステムを利用する点です。

これらの組み合わせは、実践的なランサムウェア開発思想を反映しています。すなわち、暗号化の速度を最大化し、潜伏時間を短縮し、暗号化が完了する前にホストが不安定になって処理が中断してしまうという自滅的な事態を避ける、という思想です。

推奨事項

  • ESXiとLinuxを常に最新のパッチが適用されたサポート対象の状態に保つ:
  • 常にサポート対象バージョンのESXiを実行し、セキュリティパッチを迅速に適用する。
  • 多要素認証(MFA)を強制する:
  •  vCenterおよびESXiのすべての管理者アクセスにMFAを設定する。
  • 使っていないサービスを無効化する:
  •  必ずしも必要のないサービスは無効化しておき、攻撃対象領域を削減する:
  • SSH(必要な場合にのみ一時的に有効化する)
  • ESXi Shell
  • 使用していない場合はCIMサービス
  • 不要なAPIやリモート管理インターフェース
  •  管理インターフェースの公開を制限する:
  • ESXiの管理インターフェースは、決してインターネットに直接公開してはならない。
  • 最小権限アクセスを適用する
  • オフラインかつイミュータブル(不変)なバックアップを維持する
  • コマンドを監視する:

vmware -v 2> /dev/null

ps | grep vmx | grep * | grep -v grep | awk * | sort -u

LockBitランサムウェアへの対応方法

封じ込め対策[b]

もし発生した場合は、まず封じ込めが最優先です。ESXi/Linuxを標的としたランサムウェア攻撃が進行中であると疑われる場合は、単一ホストへの感染としてではなく、インフラ全体のインシデントとして対応してください。影響を受けているシステムをネットワークから直ちに隔離し、横展開(ラテラルムーブメント)に利用される可能性のあるアクセス経路(VPNアカウント、SSOセッション、SSHキー、APIトークン)を無効化し、「クリーンアップ」作業に入る前に、必ず証拠を保全してください。

ESXi/vCenter環境では、ESXiホストのサポートバンドルとvCenter/VCSAのサポートバンドルを収集し、タスク/イベントログと認証ログをエクスポートします。さらに、VCSA、踏み台サーバー、および特権管理者のワークステーションのフォレンジックスナップショットを保全してください。Linux環境では、プロセスの親子関係、開かれているファイル、ネットワーク接続、ファイルシステムのタイムライン(監査ログ/syslog/journald)をキャプチャします。ランサムウェアの実行は、より大規模な侵害における最終段階に過ぎないことが多いため、その後、認証情報を速やかに無効化してください。

ESXiでの予防策

予防の観点からは、最も重要な対策は、管理プレーンの強化とセグメント化です。ESXiの管理インターフェースは、専用の管理者用ネットワーク(または堅牢化された踏み台サーバー)からのみアクセスできるようにしておき、ファイアウォールやホストのルールで明示的な許可リストを設定すべきです。ESXi Shell/SSHは無効化するか、厳しく制限し、RBAC(ロールベースのアクセス制御)によって最小権限を徹底し、管理者アクセスにはMFAを要求するようにします。

ESXiには常に最新のパッチを適用し、ハイパーバイザースタックおよびリモート管理コンポーネントに対して規律ある脆弱性管理を継続的に実施します。クラスターとストレージネットワークをセグメント化し、単一の管理者アカウントが侵害されたとしても、即座にすべてのホストとデータストアにアクセスされることがないようにしてください。

Linuxサーバーでの予防策

Linuxサーバーでは、初期アクセスを阻止し、被害範囲(ブラスト半径)を限定するための対策を優先します。具体的には、SSHの鍵認証のみを強制し(パスワード認証は無効化)、可能な限り特権アクセスにMFAを要求し、sudoコマンドの実行権限を特定の管理者グループに限定し、インターネットに公開されている不要なサービスを削除します。

ホストのファイアウォールを使用して、管理ポートへのインバウンド通信をデフォルトで拒否し、必要のないサーバーからのアウトバウンド接続も制限します。永続化を困難にするために、cronやsystemdによるサービスの作成を保護し、書き込み可能な場所から実行される新しいバイナリを監視し、現実的な範囲でアプリケーションの許可リスト(アローリスティング)を適用します。

ランサムウェアのペイロード自体はアーキテクチャを越えて移植可能であっても、侵入経路はそうとは限りません。多くの場合、盗まれた認証情報、外部に公開された管理パネル、設定不備のあるVPN/RMMといった脆弱なアクセス経路を塞ぐことが、最もROI(投資対効果)の高い修復策です。

バックアップでの対策

バックアップは、ただ存在するだけでは不十分で、ランサムウェアへの耐性を備えている必要があります。ESXi環境では、ホストレベルのアクセス権を持つ攻撃者がスナップショットを削除し、バックアップエージェントを改ざんし、バックアップリポジトリを侵害することまでできると想定するべきです。

イミュータブル(不変)ストレージ(オブジェクトロック/WORM/堅牢化されたLinuxリポジトリ)を使用し、バックアップ用の認証情報をドメイン管理者のものとは分離し、バックアップ管理ネットワークを隔離してください。オフライン、または論理的にエアギャップされたコピーを少なくとも1つは維持し、VM全体および重要なアプリケーションスタックのリストアを定期的にテストしてください。「スナップショット」はあくまで便宜的な機能と考え、復旧戦略の柱とは見なさないでください。復旧計画は、単なる想定ではなく、検証済みのリストア作業を前提に構築する必要があります。

検知による対策

Linux/ESXiへの攻撃において重要となる挙動に焦点を当て、検知と検証を強化してください。Linuxの場合、大量の書き込み/リネーム処理に先立つ、/procファイルシステムの異常な調査やプロセス列挙を監視します。ESXiの場合は、通常とは異なる管理者ログイン、ロールの変更、ホスト構成の編集、データストア全体にわたるファイルの変更、ベースラインから逸脱したVMの一括操作などを監視します。ここでの目的は、特定の文字列やハッシュ値を検知することではなく、インフラ全体に影響を及ぼす挙動を早期に、つまり暗号化が共有ストレージや仮想マシン上の本番サービスに及ぶ前に検知することです。

結論

今回のESXiおよびLinuxのサンプル群から、LockBit 5.0は一部のLinuxを狙った特殊なペイロードではなく、企業環境全体に広範囲な影響を与えることを目的に設計されていることがわかります。対象アーキテクチャやプラットフォームの広がりは、組織を支えるシステム、すなわち仮想化ホストやサーバーワークロード、共有ストレージ、アプリケーションのバックエンド、ファイルを多用するインフラを意図的に網羅しようとする姿勢を示しています。

実際の脅威として見ると、これらのサンプルは、ESXi上のVMで稼働する本番システム、Linuxサーバー上の共有ファイルや設定ストア、そして認証、監視、運用を支える周辺エコシステムの可用性を支えるデータとサービスを暗号化することで、中核的な業務を妨害する位置付けにあると言えます。これによって攻撃者は最小の労力で最大の効果(レバレッジ)を得ることができるのです。インフラ層への打撃はそれに依存するビジネスプロセスへとまたたく間に波及していきます。

同時に、これらのサンプルは速度と回復性の間で高度なエンジニアリングによるバランスが取れていることを示しています。暗号化機能は、スループットを重視したマルチスレッド実行、高速または部分的な暗号化モード、制御された実行パスに対応するよう明確に設計されています。

一方、「解析妨害」層は比較的軽量かつ実用的な設計となっています。ステルス性のためにパフォーマンスを犠牲にするのではなく、主に初期トリアージを複雑化し、多様な環境で不安定な動作を回避するために、文字列保護や解析を妨害する機能を備えています。その結果としてでき上がったのが、オペレーターが実行モードを制御でき、VM検知ロジックや高速暗号化、ログ記録、自己削除機能に加え、軽量な解析妨害チェック機能を備えたLockBit 5.0のESXi/Linux版ランサムウェアなのです。これは、初期解析や迅速な攻撃者特定を困難にしながらも、幅広いアーキテクチャで安定して動作するよう設計されています。

最終回となる後編[c]では、LockBit 5.0のWindows版について技術的な詳細を解説します。

MITRE ATT&CKマッピング

IOCs

LevelBlueについて

LevelBlueは、インテリジェンス主導のセキュリティによって可視性とスピードを提供し、脅威をより迅速に封じ込めることで、次世代のセキュリティを実現します。世界最大かつアナリストから高い評価を得たマネージドセキュリティサービスプロバイダー(MSSP)として、AIを活用したマネージドサービスと、マネージド・アドバイザリー・インシデントレスポンスの各サービスにわたるサイバーセキュリティの専門知識により、お客様が自信を持って事業を運営できるよう支援します。詳細はこちらをご覧ください。