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
) を暗号化および復号時に使用します。

value
が使用されている
設定情報にはKivarsローダが参照する情報のほか、Kivars本体の通信先や永続化のためのサービス名といった情報も含まれていますが、この段階ではそれらの情報は復号されず、後述するミューテックス名等だけが復号されます。
次に、多重実行を抑制するためのミューテックスの存在を確認します。このミューテックスはKivars本体が作成するものです。ミューテックス名は設定情報内で定義されていて、 Wmi
のような文字列のほか、 b7281d9a829c390
や 0x738ba0de81
といった意味をなさない文字列が設定されている事例を確認しています。

最後に、図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 | ファイルのサイズを取得する |
0x87 | ID 0x84 および 0x85 の処理で使用したファイルハンドルを無効化する |
0x88 | プロセスを実行する (wShowWindow = 0 ) |
0x89 | フォルダを作成する |
0x8A | ファイルを削除する |
0x8B | フォルダを削除する |
0x8F | ファイル名を変更する |
0x9E | 特定のレジストリキーにデータを暗号化して設定する3 |
0xBE | プロセスの一覧を取得する |
0xBF | プロセスを終了して、プロセスの一覧を取得する |
0xC0 | Kivars内部で使用している構造体を取得する |
0xC1 | Kivars関連ファイルおよびサービスを削除して、実行を終了する |
0xC2 | C2サーバに再接続する |
0xC6 | C2サーバに再接続する |
0xF6 | リモートシェルを実行する |
0xF7 | リモートシェルに入力する |
0xF8 | リモートシェルを終了する |
コマンドID 0xC1
の処理において、Kivarsは自身に関連するファイルがシステムディレクトリ下に存在すると断定して、ファイルの削除処理を実行しています。このことから、少なくとも今回の調査で解析した検体については、Kivarsは侵害したコンピュータの特権を取得後に使用されていたものと考えられます。

0xC1
の処理の一部さいごに
今回の記事で公開したインディケータ情報やツールを脅威の検知・対処に役立てていただければ幸いです。
Appendix: IoCs
ファイル
SHA256 | 説明 |
---|---|
5a9f96217530b68c2fc7a06f25b52062dbcc8dd2760de0f7dca3456af2dc4bec | Kivars |
2b54e557101e778f5971b0904d297b1c57da48c4f27d261c4ccbeee79a503ee9 | Kivarsデータファイル |
35efb2661b580866ef9a29770ff960c105edb1239a5d4279e7e6b4e9f9b6256a | Kivarsローダ |
40e1960d129bd83bcc90c61aed8da26784cb8b03eb046ecf8d172419cb1707b2 | Kivarsローダ |
4d1cdfff1b7e156c4c55f22d4dd33155b44f22dccb19069c154fc1fa0172506d | Kivarsローダ |
59d67814157e262417c7f9cf90ab9dd40fb18c4ecf4aa5ed2595190f81873b6e | Kivarsローダ |
7b2d050eafca7d52a450c935805ab587e21311b590d635e1dd08c2c312497f16 | Kivarsローダ |
073480ac4abd6e0127aba00accbfc4f4caa470b2df24c3a6ed8d1ac8d184b0da | Kivarsローダ |
0957bb8c01bb706b5b2b7744169b44244d8cbaa30504dd957e21f0fe1d78d95f | Kivarsローダ |
c1366506b03bccd50eff6b694e4d6f3897d7cc7c61f8b7a9029efe901d5a79d7 | Kivarsローダ |
c46834d9e5e23032e9d5dbf8095dbdc4f0db4eff8ea08da670d36cf6145bf965 | Kivarsローダ |
e36a71b1cdbec345896b71349dfbf95709af899517ea890ecb9065907643f74b | Kivarsローダ |
通信先
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
- 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 ↩︎ - こちらのバージョンのKivarsについては、セキュリティリサーチャーのdmpdump氏が解析を行い、自身のブログで詳しく解説されています。
China-nexus Kivars Backdoor Uploaded from Taiwan | dmpdump
https://dmpdump.github.io/posts/Kivars/ ↩︎ - レジストリキー
HKLM:\SYSTEM\CurrentControlSet\Services\[永続化用のサービス名]\Parameters
の値Init
に任意のデータを格納することができます。このデータはマルウェアとC2サーバの初回通信時に (格納されていれば) 送信されることから、攻撃者のメモ・キャンペーンコードなどの用途が考えられます。 ↩︎