KothamineマルウェアがTailcatを活用してステルス性の高いネットワークアクセスを実現
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Kothamineは、悪意のあるnpmパッケージを介して配布される未報告のリモートアクセス型トロイの木馬(RAT)です。オープンソースツールtailcatをTailscaleから利用して暗号化されたコマンドアンドコントロール(C2)チャネルを確立し、従来のネットワーク検査を回避します。このマルウェアは、データ盗難やシステム制御などの機能を拡張するためのモジュール式プラグインシステムを備えています。
調査
研究者たちは、dotnet-runtime-baseなどの悪意のあるnpmパッケージを分析することでKothamineを特定しました。調査により、explorer.exeをターゲットにして頑強な通信を行うためにtailcatを使用する注入ツールを含むマルチステージ実行プロセスが明らかになりました。技術分析では、コマンド暗号化にAES-GCMを使用し、追加のDLLを読み込むためのプラグインアーキテクチャを使用していることが示されました。
緩和策
ユーザーは、インストール前にリポジトリの履歴、メンテナ、依存関係の評価をチェックすることでnpmパッケージを厳密に監査する必要があります。組織は、開発者環境への厳しい制御を実施し、Tailscaleやtailcatのようなネットワーキングツールの不正使用を監視するべきです。無許可のスケジュールタスクやWindows Defenderの除外変更の定期的なスキャンも推奨されます。
対応
検出後、側面移動やtailcatチャネルを介したデータ流出を防ぐために影響を受けたシステムを隔離します。注入されたKothamineエージェントDLLを特定するためにexplorer.exeのメモリフォレンジックを実行します。持続メカニズムとしての’MicrosoftEdgeUpdateTask’のようなものに対するWindows Defender除外リストとスケジュールタスクを監査します。
攻撃フロー
検出
隠しPowerShellコマンドラインを介した実行の可能性(cmdline経由)
システムネットワーク構成の発見の可能性(cmdline経由)
短いスクリプト名を使用した実行の可能性(cmdline経由)
代替リモートアクセス/管理ソフトウェア(process_creationを介して)
スケジュールタスクの作成の可能性(powershell経由)
Windows Defenderの設定変更の不審事項(powershell経由)
代替リモートアクセス/管理ソフトウェア(systemを介して)
代替リモートアクセス/管理ソフトウェア(auditを介して)
Kothamine Tailcatローカルポート通信検出[Windowsネットワーク接続]
KothamineマルウェアのMicrosoftEdgeUpdateCoreとTailcatによる検出[Windowsプロセス作成]
シミュレーション実行
-
攻撃の物語とコマンド: 敵はKothamineマルウェアを展開することで持続性を確立し、ネットワーク検出を回避しようとします。まず、攻撃者は悪意のあるペイロードを
%APPDATA%MicrosoftEdgeUpdateCore.exeに移動して合法的な更新プロセスを模倣します。注入フェーズ中の検出を回避するために、攻撃者は隠しウィンドウフラグを使用してPowerShellコマンドを実行します。このコマンドは、VirtualAllocExandCreateRemoteThreadを呼び出して対象プロセスにコードを注入し、暗号化されたC2通信をtailcat.exe. -
リグレッションテストスクリプト:
# Kothamineシミュレーションスクリプト $appData = [System.Environment]::GetFolderPath('ApplicationData') $targetPath = Join-Path $appData "MicrosoftEdgeUpdateCore.exe" $maliciousPayload = "C:WindowsSystem32calc.exe" # ダミーペイロードとしてcalcを使用 # 1. 悪意のあるバイナリのドロップをシミュレートします (T1218) Copy-Item $maliciousPayload $targetPath -Force Write-Host "[+] ペイロードが$targetPathにドロップされました" # 2. 注入コマンドの実行をシミュレートします (T1055) # 注: ルールが探すコマンドライン文字列をシミュレートしています。 # スクリプトなしで'OpenProcess'を生のCLI文字列から簡単に呼び出せないため、 # Sysmon/EDRがキャプチャするコマンドラインテレメトリをシミュレートします。 $cmd = "powershell -NoP -NonI -W Hidden -Exec Bypass -Command `"`$mem = [Runtime.InteropServices.Marshal]::AllocHGlobal(1024); [Runtime.InteropServices.Marshal]::WriteProcessMemory(...)`"" Start-Process -FilePath $targetPath -ArgumentList $cmd Write-Host "[+] $targetPathから悪意のあるコマンドが実行されました" -
クリーンアップコマンド:
# シミュレートされたアーティファクトをクリーンアップします $appData = [System.Environment]::GetFolderPath('ApplicationData') $targetPath = Join-Path $appData "MicrosoftEdgeUpdateCore.exe" if (Test-Path $targetPath) { Remove-Item $targetPath -Force Write-Host "[+] $targetPathをクリーンアップしました" }