2025年に確認されたBlackTechのマルウェアKivarsの亜種

Kivarsは2010年頃から観測されている1、攻撃グループBlackTechが使用するマルウェアです。BlackTechは主に日本や台湾の企業・組織を標的とした攻撃グループです。近年でもバックドア付きCiscoファームウェアを使用した攻撃など、様々な機関および研究者から関連する事案が報告されており、重大な脅威であるといえます。

中国を背景とするサイバー攻撃グループBlackTechによるサイバー攻撃について – 警察庁
https://www.npa.go.jp/bureau/cyber/koho/caution/caution20230927.html

本稿執筆時点である2025年内でも複数のKivarsの検体をIIJでは観測しており、その多くがKivarsバージョン2120.1でした。Kivarsはバージョンごとに機能や設定情報の構造が大きく変化していて、今回の調査では1つ前のバージョンだと考えられるバージョン20.0.12から、プロキシサーバを経由したC2通信を行う機能の追加などの更新点を確認しました。

この記事では2025年に観測されたKivarsを解析して得られた知見、そして解析結果をもとに作成した設定情報 (通信先など) を抽出するためのツールを共有します。

Kivarsローダ

Kivarsは図1のようなフローで実行されます。まず攻撃者 (BlackTech) は侵害済みの環境のシステムディレクトリにKivarsローダおよびデータファイル (暗号化されたKivars) を設置します。そして、永続化用のWindowsサービスを作成して、サービスを開始することでKivarsローダを実行します。後述する処理を経て、KivarsローダはKivars本体をメモリ上で実行します。

Kivarsローダが実行されると、まずローダ先頭からオフセット0x2200に存在する暗号化された設定情報の一部を、カスタマイズされたRC4アルゴリズムを用いて復号します。このアルゴリズムは通常のRC4で使用される共通鍵のほかに、任意の数値 (図2における変数 value) を暗号化および復号時に使用します。

設定情報にはKivarsローダが参照する情報のほか、Kivars本体の通信先や永続化のためのサービス名といった情報も含まれていますが、この段階ではそれらの情報は復号されず、後述するミューテックス名等だけが復号されます。

次に、多重実行を抑制するためのミューテックスの存在を確認します。このミューテックスはKivars本体が作成するものです。ミューテックス名は設定情報内で定義されていて、 Wmi のような文字列のほか、 b7281d9a829c3900x738ba0de81 といった意味をなさない文字列が設定されている事例を確認しています。

最後に、図1のデータファイル (暗号化されたKivars本体のDLLファイル) を復号してロードします。このファイルは前述の設定情報と同様に、カスタマイズされたRC4アルゴリズムによって暗号化されています。

観測したKivarsのデータファイルのファイル名は、以下のように .efi という拡張子が付いているものが過半数でした。攻撃者の意図は不明ですが、後述する通りKivarsに関連するファイルは全てシステムディレクトリ下に設置される為、システム関連のファイルだとユーザに誤認させる目的で設定していた可能性があります。

  • api-ms-win-downlevel-user3b-l1-q-1.efi
  • exd-ms-win-net-isoext-l1-f-0.efi
  • mow64mib.efi
  • offlinglsa.efi
  • sdoglss.efi

設定情報の抽出ツール

今回、分析の効率化のためにKivarsローダからKivarsの設定情報を抽出・復号・解析できるツールを作成しました。ツールは筆者のGitHubリポジトリ上で公開しているため、誰でも利用することができます。インシデント対応や脅威ハンティングでお役立てください。

decrypt_kivars_21201_config.py
https://github.com/mopisec/research/blob/main/decrypt_kivars_21201_config.py

本ツールは今回の調査で解析した検体 (バージョン2120.1) のみを対象としており、これ以外のバージョンの設定情報は抽出できません。これはKivarsのバージョンごとに、設定情報の暗号化方式・構造・サイズなどが大きく異なるためです。

Kivars

Kivars本体が実行されると、まず実行中のプロセスを列挙して解析ツールが実行されていないか確認します。

その後、Kivarsは設定情報内に定義されている通信先 (C2サーバ) と通信します。通信内容はRC4で暗号化されており、鍵はハードコードされた16バイトのバイト列 A378263557322D60B43C2A5E333472 です。通信の暗号化・復号時でもカスタマイズされたRC4アルゴリズムに関する関数が呼び出されますが、前述したパラメータ value が0として呼び出されるため、通常のRC4と同じ暗号化・復号結果が出力されます。

C2サーバとの通信を行うにあたって、設定情報内の値に応じてプロキシサーバを経由して通信を行うことが確認されています。プロキシサーバの情報はレジストリから参照する検体のほか、設定情報内にハードコードされている検体が存在します。

なお、設定情報の中にあるプロキシサーバへのアクセス時に使用されるユーザ名は、なぜか他の値と違い二重に暗号化されていました。逆にパスワードは暗号化されていないことから、この挙動は攻撃者 (マルウェア開発者) のミスであると考えられます。

また、今回調査した検体ではいずれも使用していないようですが、Kivarsには設定情報で定められた時間にしかC2サーバと通信を行わない機能も存在します。このような機能は標的型攻撃で使用されるマルウェアでよく見られるものであり、企業の端末やサーバから業務時間外に通信が発生することで存在を検知されることを防ぐ狙いがあると考えられます。

初回通信時、Kivarsは感染端末の情報や自身のバージョン情報をC2サーバに送信します。

以後、KivarsはC2サーバからコマンドを受信して対応する処理を実行します。実装されていたコマンドの一覧は以下の通りです。

コマンドID処理
0x15最後の入力イベントから経過した時間を取得する
0x82ドライブの情報を取得する
0x83フォルダ内のファイルの情報 (ファイル名や最終更新日時など) を取得する
0x84ファイルをアップロードする (アップロード先の指定)
0x85ファイルをアップロードする (データの書き込み)
0x86ファイルのサイズを取得する
0x87ID 0x84 および 0x85 の処理で使用したファイルハンドルを無効化する
0x88プロセスを実行する (wShowWindow = 0)
0x89フォルダを作成する
0x8Aファイルを削除する
0x8Bフォルダを削除する
0x8Fファイル名を変更する
0x9E特定のレジストリキーにデータを暗号化して設定する3
0xBEプロセスの一覧を取得する
0xBFプロセスを終了して、プロセスの一覧を取得する
0xC0Kivars内部で使用している構造体を取得する
0xC1Kivars関連ファイルおよびサービスを削除して、実行を終了する
0xC2C2サーバに再接続する
0xC6C2サーバに再接続する
0xF6リモートシェルを実行する
0xF7リモートシェルに入力する
0xF8リモートシェルを終了する

コマンドID 0xC1 の処理において、Kivarsは自身に関連するファイルがシステムディレクトリ下に存在すると断定して、ファイルの削除処理を実行しています。このことから、少なくとも今回の調査で解析した検体については、Kivarsは侵害したコンピュータの特権を取得後に使用されていたものと考えられます。

さいごに

今回の記事で公開したインディケータ情報やツールを脅威の検知・対処に役立てていただければ幸いです。

Appendix: IoCs

ファイル

SHA256説明
5a9f96217530b68c2fc7a06f25b52062dbcc8dd2760de0f7dca3456af2dc4becKivars
2b54e557101e778f5971b0904d297b1c57da48c4f27d261c4ccbeee79a503ee9Kivarsデータファイル
35efb2661b580866ef9a29770ff960c105edb1239a5d4279e7e6b4e9f9b6256aKivarsローダ
40e1960d129bd83bcc90c61aed8da26784cb8b03eb046ecf8d172419cb1707b2Kivarsローダ
4d1cdfff1b7e156c4c55f22d4dd33155b44f22dccb19069c154fc1fa0172506dKivarsローダ
59d67814157e262417c7f9cf90ab9dd40fb18c4ecf4aa5ed2595190f81873b6eKivarsローダ
7b2d050eafca7d52a450c935805ab587e21311b590d635e1dd08c2c312497f16Kivarsローダ
073480ac4abd6e0127aba00accbfc4f4caa470b2df24c3a6ed8d1ac8d184b0daKivarsローダ
0957bb8c01bb706b5b2b7744169b44244d8cbaa30504dd957e21f0fe1d78d95fKivarsローダ
c1366506b03bccd50eff6b694e4d6f3897d7cc7c61f8b7a9029efe901d5a79d7Kivarsローダ
c46834d9e5e23032e9d5dbf8095dbdc4f0db4eff8ea08da670d36cf6145bf965Kivarsローダ
e36a71b1cdbec345896b71349dfbf95709af899517ea890ecb9065907643f74bKivarsローダ

通信先

Kivarsは以下の通信先のポート389および443に対して通信を行います。

  • checkout.ikwb[.]com
  • skyworld.gettrials[.]com
  • account-login.dnset[.]com
  • affiliates.justdied[.]com
  • certificates.onedumb[.]com
  • roaming.otzo[.]com
  • sysnet.zzux[.]com
  • isacompany.isasecret[.]com
  • exchange.justdied[.]com
  • 60.249.28[.]219
  • 211.72.113[.]90
  • 211.23.39[.]236
  • 59.125.249[.]97
  • 59.124.69[.]100
  • 59.125.155[.]4
  • 203.69.85[.]116
  • 61.216.160[.]181
  • 61.220.223[.]64
  1. The Trail of BlackTech’s Cyber Espionage Campaigns | Trend Micro (US)
    https://www.trendmicro.com/en_us/research/17/f/following-trail-blacktech-cyber-espionage-campaigns.html ↩︎
  2. こちらのバージョンのKivarsについては、セキュリティリサーチャーのdmpdump氏が解析を行い、自身のブログで詳しく解説されています。
    China-nexus Kivars Backdoor Uploaded from Taiwan | dmpdump
    https://dmpdump.github.io/posts/Kivars/ ↩︎
  3. レジストリキー HKLM:\SYSTEM\CurrentControlSet\Services\[永続化用のサービス名]\Parameters の値 Init に任意のデータを格納することができます。このデータはマルウェアとC2サーバの初回通信時に (格納されていれば) 送信されることから、攻撃者のメモ・キャンペーンコードなどの用途が考えられます。 ↩︎

シェアする