


概要
2025年から継続しているKimsukyによる韓国国内のグループウェア開発会社を狙った攻撃を追跡した。
Kimsukyは外部からアクセス可能なメールサーバーの脆弱性を悪用したり、役職員を対象としたスピアフィッシングを行ったりして社内インフラを掌握した。
Gomir/HttpTroyをベースにした新規マルウェア2種を確保し、BirdTroy、DriveTroyと命名した。
Kimsukyはグループウェア開発会社の侵害後も、顧客企業のグループウェアサーバーを侵害したり、社内インフラの資格情報を奪取したりするなど、攻撃的な企業間伝播とラテラルムーブメントを試みた。
マルウェアの特徴、攻撃インフラ、攻撃ツールなど、過去のKimsukyの攻撃事例との共通点が多数確認された。
1. 概要
ENKI Whitehatの脅威研究チームは、2025年から2026年初頭にかけて、国内企業グループウェア開発企業の内部ネットワークに侵入し、ラテラルムーブメント(横展開)および顧客企業への侵入を試みた北朝鮮を背景に持つ攻撃グループ「Kimsuky」の攻撃事例を追跡した。分析の結果、攻撃者は脆弱性の悪用やスピアフィッシングなどの初期侵入経路を通じて外部ネットワークと接続されたサーバーの制御権を確保し、Gomirおよび様々な亜種のマルウェアをインストールした。
攻撃者はGoogleドライブをC&Cサーバーとして悪用したり、新しいカスタムプロトコルを実装するなどして(Gomir)マルウェアの通信方式を大幅に変更し、検知回避を効果的に試みた。また、侵害したグループウェア開発企業の製品を使用している顧客企業のサーバーに直接侵入したほか、グループウェアのログインページを改ざんして役職員のアカウント情報を流出させるなど、積極的なラテラルムーブメントを試みた。
本レポートは、攻撃に使用されたGomir、BirdTroy、DriveTroyを検出できる検出スクリプトおよびYARAルールを併せて提供する。
2. 背景
本報告書で分析されたGomirマルウェア系統は、過去にKimsukyのTrollStealerキャンペーンで初めて報告された。2024年のS2Wの報告事例では、KimsukyがGo言語をベースに作成されたTrollStealerとGoBearを正常な証明書で署名して流布していた状況が確認された。その後、AhnLabの報告事例でも同タイプのマルウェアが流布されており、Endoorと命名された。その後、Symantecの続報レポートにおいて、WindowsターゲットであるGoBearマルウェアのLinuxターゲットの亜種であるGomirが分析された。
Kimsukyは過去にも、韓国国内企業の新インフラを対象に攻撃を行っていた。2024年にAhnLabが報告したSmallTigerマルウェアの流布事例では、国内の複数企業を対象に攻撃が行われ、過去にKimsukyグループが使用したマルウェアも同時に確認された。前述のTrollStealerキャンペーンにおいても、国内の建設関連協会のホームページにて、セキュリティプログラムのインストールプロセスにマルウェアが挿入されていた事実が確認されている。
3. 初期侵入
2025년 11월に確認されたグループウェア開発会社Aの侵害事例では、外部からアクセス可能なメールサーバーの遠隔コード実行脆弱性を介してGomirがインストールされた事実が確認された。ただし、攻撃者が該当の脆弱性情報を事前にどのような経路で入手したかは確認されていない。

caption - 脆弱性を悪用したGomirのインストール事例
2025년 12월に確認されたグループウェア製品開発会社Bの侵害事例では、所属する役職員のPCを介して社内インフラへの初期侵入が行われた。インストールされたマルウェアは、2025년 9월にGen Digitalによって報告された実績があるHttpTroyの亜種であることが確認された。詳細な挙動については、該当の報告書を参照されたい。過去のHttpTroyの流布事例に照らし合わせると、攻撃者はスピアフィッシングなどのソーシャルエンジニアリング手法を使用して、役職員のPCにマルウェアをインストールしたものと推定される。本攻撃事例で使用されたHttpTroyの主要情報は以下の表の通りである。
caption - 攻撃に使用されたHttpTroy亜種の基本情報
攻撃者はHttpTroyを介してDWAgent、プロキシツールなどの追加の攻撃ツールをインストールした。DWAgentは、リモートデスクトップおよびシステム管理のためのオープンソースの遠隔接続ツールであり、攻撃者はこれを悪用して感染した被害者のWindows PCをWeb UIを介して遠隔制御した。攻撃者は config.json に自身の アカウント情報を記録し、DWAgentの構成要素全体をzip圧縮して被害者のサーバーにインストールし、実行した。攻撃に使用されたDWAgentの config.json は以下の通りである。
プロキシツールは、攻撃者が容易なラテラルムーブメント(横展開)およびクローズドネットワークへのアクセスのためにインストールした。このプロキシツールは yamux (TCPセッションマルチプレクサー) ライブラリをベースに実装されており、リレーアドレスにTCP接続を確立し、yamuxストリームを受け入れる。その後、各ストリームに対してターゲットアドレスに
4. マルウェア解析
4.1. Gomir
本キャンペーンにおいて、攻撃者は初期侵入後に社内インフラの制御権を確保した上で、Gomirをインストールした。Gomirは2024年に初めて報告されたGoBearマルウェアのLinuxターゲット亜種であり、Go言語で記述されたRATマルウェアである。分析されたGomirマルウェアはUPX 3.96でパッキングされており、Goモジュールのパスは以下の通りである。
Goモジュール:
local[.]github[.]com/Github-Lin/Main

caption - Gomir Goモジュール関連の文字列
実行時にコマンドライン引数を確認し、引数が install であれば、まず永続性確保のルーチンに進入し、それ以外の場合は即座にC&C通信ループを開始する。永続性確保のルーチンでは、getegidで有効グループIDを確認し、ルート権限であればsystemdサービスを、そうでなければcronジョブを登録する。ルート権限の場合、以下のプロセスを経てsystemdサービス方式で永続性を確保する。
/var/log/rsyslogdへの自己コピー、権限0777/etc/systemd/system/rsyslogd.serviceユニットの作成systemctl daemon-reload→systemctl reenable rsyslogd→systemctl start rsyslogdオリジナル(元ファイル)の削除
ルート権限でない場合、以下のプロセスを経てcrontab方式で永続性を確保する。
crontab -lで既存の内容を読み込み、*/10 * * * * <自己のパス>の項目を追加してcron.txtに記録crontab cron.txtの実行cron.txtを削除した後に再実行
永続性確保の後(またはinstallの指定がない場合は即座に)、C&Cサーバー通信ループに進入し、ボットIDを生成する。ボットIDは、ユーザー名、ホスト名、MACアドレスを結合した文字列のMD5上位5バイトを16進数でエンコードし、固定プレフィックス XX- と結合して XX-[0-9a-f]{10} の形式で生成される。

caption - Gomir ボットID生成ルーチン
マルウェアは、実行時に二重実行を防ぐためにTCPリスナーを並行して駆動する。通常モードはTCP 19838ポート、installモードはTCP 19837ポートを占有し、すでにポートが使用中の場合は二重実行と判断して終了する。

caption - Gomir ポート占有ルーチン
Gomirは、C&Cサーバーとのメイン通信ループにおいてHTTPS POST方式を使用し、C&CサーバーのURLは以下の通りである。
C&Cサーバー:
hxxps://commit[.]hanbiro[.]o-r[.]kr/index.php
POSTパラメータは <プレフィックス>[a-zA-Z0-9]{9} の形式であり、固定プレフィックス1文字の後ろに要求ごとにランダム生成される9文字が追加される。コマンド受信要求パラメータの構成は、下表の通りである。
caption - Gomir コマンド受信要求パラメータ
サーバー応答の最初のバイトが S(0x53)であれば、残りのデータを標準のBase64の "+/" の代わりに "-_" を用いるURL-safe Base64でデコードする。デコード結果の最初の4バイトを復号キーとし、残りのデータに対して (ciphertext - key[i%4]) mod 255 を適用する。ただし、0x00バイトは変換しない。
コマンド結果の送信時には、ランダムな4バイトのキーを生成して各バイトに (plaintext + key[i%4]) mod 255 演算を適用する。ただし、0x00バイトは変換しない。暗号化された結果の前に、暗号化に使用した4バイトのキーを結合した上で、URL-safe Base64でエンコードする。結果送信の要求パラメータ構成は、下表の通りである。
caption - Gomir コマンド結果送信要求パラメータ
GomirがC&Cサーバーから受信したコマンドコードに応じて呼び出すハンドラー関数と、これによって実行される動作は下表の通りである。特徴的な点として、UploadおよびDownloadのハンドラー名がC&Cサーバーを主体として命名されている。
caption - Gomir コマンドコード一覧
14、15のプロキシ機能は、前述のyamuxベースのプロキシツールと事実上同じ機能を実行する。認証キーとして使用された bf215181b5140522137b3d4f6b73544a は github のMD5ハッシュであり、Goモジュールのパス(local.github.com)とともに、攻撃者が一貫して使用するキーワードであることが確認されている。

caption - Gomir プロキシ認証キー
30、31のファイル送受信機能は、ハンドラー関数名のUpload、Downloadにおける主体がC&Cサーバーに合わせられている点が特徴的である。コマンド受信後、[a-zA-Z0-9]{10} 形式のセッショントークンを生成してC&Cサーバーに送信し、以降その送信が完了するまでボットIDの代わりにセッショントークンを用いてC&Cサーバーと通信する。ファイル転送時に使用されるコマンドコードは下表の通りである。
caption - Gomir ファイル送受信コマンドコード一覧
4.2. BirdTroy
BirdTroyは、GomirとHttpTroyの特徴を同時に兼ね備えた新しいタイプのRATマルウェアであり、これまで一般に公開された分析事例がないことが確認されている。ビルドモジュールのパスが Bird/module である点から、攻撃者が Bird という名前で開発したマルウェアと推測され、HttpTroyと類似したコマンドコードおよび機能が識別されたため、BirdTroyと命名された。

caption - BirdTroy Goモジュールパス
実行時にコマンドライン引数を解析し、マルウェアの動作に使用する。各引数が担当する機能は下表の通りである。
caption - BirdTroy コマンドライン引数一覧
実行ファイルの絶対パスに .tmp 拡張子を付与したファイルを、二重実行防止に用いる。syscall.Flockによって該当ファイルに対して排他ロック(LOCK_EX|LOCK_NB)を試行し、ロック取得に失敗した場合は終了する。同一ファイルはボットIDの保存先としても活用される。ファイルが存在しないか、空である場合は、<[a-zA-Z0-9]{10}> 形式のボットIDを生成し、同一のパスファイルに保存する。

caption - BirdTroy 二重実行防止ルーチン
-i フラグが指定されている場合、Gomirと完全に同一の永続性確保ルーチンが実行されるが、これはBirdTroyがGomirのソースコードをベースに変更が加えられた亜種マルウェアであることを明確に示している。永続性確保の完了後(または -i が指定されていない場合は即座に)、C&C通信ループに進入する。
BirdTroyは、カスタムパケットを構成してC&Cサーバーと通信する。パケット全体をBase64でエンコードした後に Content-Type: application/json ヘッダーを伴い、HTTP POST方式で送信する。送信プロトコルとしてhttp3を指定すると、github.com/quic-go/quic-go ライブラリベースのHTTP/3(QUIC)送信を使用する。HTTP/3(QUIC)はUDPベースのプロトコルであり、TCPポート443を対象とする従来のネットワークセキュリティ機器によるトラフィック検査を回避することができる。C&Cサーバーとの通信時に使用されるパケットの構造は以下の通りである。
パケットのDataフィールドに対するチェックサムは、MD5ハッシュの上位4バイトをbig-endianのuint32として解釈した値である。パケットの最初の1バイトに保存されるパケットタイプ情報は下表の通りであり、タイプ3は存在しない。
caption - BirdTroy パケットタイプ情報
通信フローの全体概要図は以下の図を参照されたい。

caption - BirdTroy 通信フロー概要図
タイプ5で受信したコマンド文字列は空白で分割され、最初のトークンがコマンドコードとして使用される。ファイル送受信機能のコマンドコードおよびハンドラー関数名は、Gomirと同様にC&Cサーバーを主体として記述されている。コマンドコードに応じて呼び出されるハンドラー関数および実行される動作は、下表の通りである。
caption - BirdTroy コマンドコード一覧
4.3. DriveTroy
DriveTroyはGoogleドライブをC&Cサーバーとして悪用するバックドアであり、永続性確保やコマンドコード等においてGomirとの多くの類似性が確認されていることから、攻撃者が新たに作成したGomirの亜種マルウェアであると判断される。ビルドパスは C:/Users/jira/go/src/jira/payload/ と記録されている。

caption - DriveTroy Goモジュールパス
実行時に、自分自身のファイル末尾部分からGoogleドライブ通信に使用される設定データを抽出する。ファイル末尾の4バイトをASCII文字列として読み取って設定のサイズ(バイト数)を取得し、該当サイズ分だけ前に遡って暗号化された設定データを読み取る。設定データはRC4暗号化された後、Gomirで使用されたものと同様のURL-safe Base64 (”+/“ の代わりに “-_”) でエンコードされた状態であり、RC4キーと復号された設定情報は以下の通りである。
RC4キー:
@st34GMEgfesy4R#r21f
caption - DriveTroy Googleアカウント認証情報
上記認証情報によって確認された攻撃者のGoogleアカウント情報は下表の通りである。
caption - DriveTroy Googleアカウント情報
Engineの初期化後、CreateSessionを呼び出して hxxps://api[.]ipify[.]org に対しHTTP GET要求を送信し、被害システムの外部IPアドレスを問い合わせる。取得したIPをRC4で暗号化し、さらにURL-safe Base64でエンコードしてGoogleドライブに E8C46207.ses というファイル名でアップロードする。通信データの暗号化に使用されるRC4キーは、設定データの復号に使用されたキーと同じである。

caption - セッションファイルアップロードルーチン
その後の通信ループにおいて、Googleドライブの E8C46207.cmd ファイルを1秒間隔でダウンロードしてコマンドを受信する。受信データはURL-safe Base64でデコードされた後にRC4で復号され、先頭の2バイトがASCII形式のコマンドコード、残りの部分がコマンドデータとなる。実行結果は同様にRC4で暗号化され、URL-safe Base64でエンコードされて E8C46207.res というファイル名でGoogleドライブにアップロードされる。

caption - Googleドライブポーリング(polling)ルーチン
コマンドコードの構成はGomirに類似しているが、まだコマンドコードおよび機能のうち8種のみが実装されており、GomirおよびBirdTroyとは異なりRecvやUploadの主体が被害システム基準で記述されている。コマンドコードに応じて実行される動作は、下表の通りである。
caption - DriveTroy コマンドコード一覧
コマンド 05 を受信した際、永続性を確保する動作を実行する。GomirおよびBirdTroyの永続性確保ルーチンとは、下表のような違いがある。
caption - 永続性確保ルーチンの比較
5. 後続の後戻り攻撃活動
5.1. 顧客企業の被害事例
分析の過程で、攻撃者が制御権を確保したグループウェア開発企業の内部情報を流出させ、当該企業の製品を使用する顧客企業のインフラに侵入した事例が多数確認された。これらの事例から、攻撃者がグループウェア開発企業を主なターゲットに据え、内部設定情報やソースコードを確保した上で、企業間の感染拡大を狙っていたことが明らかになった。
5.1.1. ケースA
メールサーバーの脆弱性によりGomirマルウェアがインストールされていたグループウェア開発企業AのSaaS型顧客企業グループウェアサーバーに、Gomirマルウェアがインストールされた形跡が確認された。詳細な侵入経路を確認することはできなかったが、グループウェア開発企業のインフラを探索してSaaS型グループウェアサーバーに対する設定情報などを確保した後、追加の侵入を進行したと推定される。本顧客企業の被害事例における侵入のタイムラインは以下の通りである。

caption - ケースAのタイムライン
5.1.2. ケースB
DriveTroyの実行ログがアップロードされる攻撃者のGoogleドライブを監視していたところ、侵害されたグループウェア開発企業Bの顧客企業に対する追加の侵害の兆候が確認された。DriveTroyのインストールが確認された日の翌日に、別の被害サーバーにおけるidコマンドの実行結果が捉えられた。

caption - 攻撃者のGoogleドライブにある顧客企業のサーバー情報
この時に確認されたユーザー名が、前日にアップロードされたグループウェア開発企業BのVOC(Voice of Customer)サーバーのディレクトリ一覧結果におけるディレクトリ名と同一であった。追加感染したサーバーは、既存で感染していたグループウェア開発企業Bの製品を使用するオンプレミス型の顧客企業のサーバーであることが確認された。これは、攻撃者がグループウェア開発企業BのVOCサーバーに保存されていた顧客企業のサーバー情報や認証キーなどを通じて顧客企業のインフラへの侵入に成功した後、DriveTroyをインストールしてリモートコマンドを実行した痕跡であると推定される。

caption - 攻撃者のGoogleドライブにある開発企業VOCサーバーのディレクトリ情報
その後、追加で確認された情報によると、攻撃者は数日後に同一のグループウェア製品を使用している別の顧客企業Zのメールを、グループウェアのアカウントを使用して不正に閲覧した。本顧客企業の被害事例における侵入のタイムラインは以下の通りである。

caption - ケースBのタイムライン
5.2. グループウェアログインページの改ざん
分析の過程で、侵害されたグループウェア開発企業のうち1社の社内グループウェアログインページのHTMLコードから、入力されたIDとパスワードの情報を攻撃者のC&CサーバーへHTTPS POSTで送信するコードが確認された。

caption - 従来のグループウェアログインページ

caption - 改ざんされたグループウェアログインページ
攻撃者がグループウェアサーバーの制御権を確保したとしても、役職員のパスワードはサーバーにハッシュ化された状態で保存されているため、DBの奪取だけでは平文のパスワードを直接確保することはできない。したがって、攻撃者は直接グループウェアにログインして追加の探索を継続するためにログインページを改変し、役職員のグループウェアログイン情報の流出を試みた。侵害された当時、当該被害サーバーのログインプロセスにはOTPなどの二要素認証システムが存在していなかったため、攻撃者は流出したアカウント情報を利用して社内インフラを容易に探索できたと推定される。
6. Kimsukyとの関連性
6.1. マルウェアの特徴
前述の背景セクションで言及したように、Gomirマルウェアは過去、KimsukyのTrollStealerキャンペーンで初めて報告された。分析の過程で新たに確保したBirdTroyとDriveTroyは、C&Cインフラおよび詳細な動作方式に変化が見られたものの、Gomirマルウェアといくつかの機能的な類似性が確認された。以下は、3つのマルウェアの類似点を比較した表である。
caption - マルウェアの特徴比較
6.2. 攻撃インフラの関連性
本レポートで分析されたすべてのマルウェアには、同一のC&CサーバHTTPS証明書が適用されていた。これは、最近のKimsukyの攻撃事例で繰り返し確認されているXAMPPデフォルトのHTTPS証明書である。当該HTTPS証明書の詳細情報は以下の表の通りである。
caption - HTTPS証明書情報
IPの観点でも、Kimsukyが好むASNとの一致が確認された。本レポートで識別されたC&CサーバIPは、すべてKimsukyが繰り返し使用してきた以下の2つのASNに属している。
ASN:
19318,26666
XAMPPデフォルト証明書と確認された2つのASNは、個別にはKimsuky独自の指標とは言えないが、両方の要素が同時に現れた場合、Kimsukyインフを識別する有効な根拠となった。
さらに、DriveTroyのビルドパスで確認されたWindowsユーザー名 jira は、2026年にENKI Whitehatが報告したKimsukyのHttpSpy配布事例で分析されたマルウェア loadDll.dll のpdbパスおよび、おとり文書の「最終保存者」項目にも現れていた。これは、同じ攻撃者が2種類の攻撃キャンペーンを運営しているか、あるいは2つのキャンペーンの脅威アクターが同じ開発環境を共有している近い関係にあるという事実を明らかにしている。

caption - HttpSpy配布事例のおとり文書情報
6.3. 攻撃ツール
攻撃に使用されたDWAgentは、以前から北朝鮮を背景に持つ攻撃グループが侵入したWindows環境に便利にアクセスするためにしばしば使用してきたリモート制御ツールである。KasperskyのPebbleDashクラスター分析でも、Kimsukyが当該ツールを使用した事例が確認されている。
さらに、分析の過程で確保したプロキシツールのうち、認証キーとして「아무도몰라(誰も知らない)」のハングル英字入力キー変換文字列である dkanehahffk が使用されたバージョンが確認された。これは、当該ツールの開発者が韓国語(ハングル)に精通しているという事実を示している。

caption - プロキシツール ハングル英字キー変換認証キー
7. 対応策
今回の事例における初期侵入の一部は、外部からアクセス可能なメールサーバーのリモートコード実行脆弱性を介して行われた。このような経路を事前に防ぐためには、定期的な模擬ペネトレーションテスト(Pentest)によって、外部の攻撃対象領域(アタックサーフェス)と横方向の移動(ラテラルムーブメント)経路を点検する必要がある。
また、攻撃者はログインページを改ざんして資格情報を窃取し、さらなる侵入に悪用したが、侵害当時は二要素認証が導入されていなかったため、窃取されたアカウントで即座にログインできる状態であった。TOTPなどの二要素認証を導入することで、資格情報が流出したとしても、それを利用した内部への侵入を遮断することができる。
最後に、攻撃者はVOCサーバーに保存されていた顧客企業のディレクトリ情報を足がかりにして、顧客企業へと侵入を拡大させた。企業向けソフトウェア開発会社は、顧客企業のインフラを保護するために以下のような措置を講じる必要がある。
保存された顧客企業の認証キーおよびアクセス情報の暗号化
内部管理システムと運用サーバー間のアクセス分離
顧客企業サーバーへのアクセスに関する監査ログの強化
侵害発生時に顧客企業へ通知するプロセスの確立
分析されたGomir、BirdTroy、DriveTroyの検知ルールは、付録Dに添付している。
8. おわりに
本報告書は、2025年から2026年初頭にかけて、北朝鮮を背景に持つ攻撃グループが韓国国内の企業インフラに侵入し、ラテラルムーブメント(横展開)およびサプライチェーン攻撃を実行した事例を分析したものである。攻撃者はスピアフィッシングや脆弱性の悪用を通じて初期侵入に成功した後、Gomirをはじめとする多様なマルウェアを活用してLinuxサーバー環境まで攻撃範囲を拡大した。特に、グループウェア開発会社のVOCサーバーから顧客企業のサーバー情報を窃取し、顧客企業のインフラまで侵害した痕跡が確認された。また、グループウェアのログインページを改ざんして役職員の認証情報(クレデンシャル)を収集するなど、単一の侵害を組織全体へと拡散させる積極的なラテラルムーブメントの痕跡が観察された。
マルウェアの側面においては、Google ドライブをC&Cチャネルとして活用したり、カスタムプロトコルを実装したりするなど、検知回避のための通信方式の進化が顕著であった。新たに確認されたBirdTroyとDriveTroyは、GomirやHttpTroyとコマンドコード構造およびコードパターンを共有しており、同一の脅威アクターが継続的にツールを開発・拡張していることを示している。
9. 付録
付録 A. MITRE ATT&CK
キャプション - MITRE ATT&CK
付録 B. IOC(侵害指標)
MD5
caption - MD5
IP
69[.]10[.]50[.]165
208[.]73[.]202[.]29
163[.]245[.]195[.]172
URLs
hxxps://auth[.]samecloud[.]o-r[.]kr/index.php
hxxps://commit[.]hanbiro[.]o-r[.]kr/index.php
hxxps://oobe[.]webjine[.]o-r[.]kr/index.php
hxxps://global[.]webjine[.]o-r[.]kr/index.php
hxxp://www[.]ilskdeid[.]o-r[.]kr:8000/
hxxps://oauth[.]shacloud[.]o-r[.]kr:8443
hxxps://69[.]10[.]50[.]165:8443
付録 C. メタデータ
攻撃者のGoogleアカウントトークンおよび情報
キャプション - 攻撃者のGoogleアカウントトークンおよび情報
RC4 キー
@st34GMEgfesy4R#r21f
付録 D. YARA ルール

人気の記事






