APT-Q-27 ドラゴンブレス: RONINGLOADERとGh0st RATの分析
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
Dragon Breathは、アジア太平洋地域全体の中国語を話すユーザーを攻撃する中国のサイバー犯罪APTです。このグループは、トロイ化されたインストーラー、DLLサイドローディング、署名されたカーネルドライバーを使用してRONINGLOADER感染チェーンとカスタマイズされたGh0st RATのバリアントを展開するなど、先進的な技術を駆使します。彼らはまた、証明書提供者を侵害し、マルウェアのコードサイニング素材を取得する能力を示しています。
調査
報告書は、Dragon Breathの2020年から2026年までの進化を調査し、ウォータリングホール攻撃から先進的なDLLサイドローディングとProtected Process Light (PPL) 悪用への移行を文書化しています。2026年のDigiCertを巻き込んだ侵入で、グループがコードサイニング素材を入手したとされる事例を特記しています。この分析では、スレッドプールオブジェクトの悪用やカーネルモードのプロセス終了を含む複数のインジェクション技術もカバーしています。
軽減策
組織はDragon Breathの攻撃技術をシミュレートし、エンドポイントセキュリティコントロールを検証し、アプリケーション実行に関する保護を強化する必要があります。厳格なアプリケーション制御ポリシーを実施し、未承認のサービス作成や疑わしいDLLサイドローディングを監視する必要があります。Protected Process Light (PPL) の悪用や未承認または署名されていないWDACポリシーの検出も重要です。
対応
Dragon Breathの活動が検出された場合、影響を受けたホストは直ちに隔離し、未承認のローカルアカウントやWindowsサービスを通じた持続性を調査すべきです。レスポンダーは TrustedInstaller.exe or taskhostw.exe などの信頼されたシステムプロセスを含むプロセスインジェクション活動を綿密に調査する必要があります。コードサイニング証明書を検証し、Windows Defenderや地域のセキュリティ製品への変更をレビューする必要があります。
攻撃フロー
検出
遅延実行挙動の可能性 (cmdline経由)
フォルダリダイレクト技術のための疑わしいハードリンク作成 (cmdline経由)
ClipUpを悪用してセキュリティソリューションを改ざんしようとする可能性 (cmdline経由)
Dragon Breath持続性:ローカルバックドアアカウント作成 [Microsoft Windowsセキュリティイベントログ]
Golden Gh0st RAT WebSocket C2通信の検出 [Windowsネットワーク接続]
Dragon Breath持続性:Winlogonレジストリ修正 [Windowsレジストリイベント]
Dragon Breathシステムバイナリプロキシ実行:regsvr32.exeとappR.exe経由 [Windowsプロセス作成]
シミュレーション実行
前提条件:Telemetry & Baseline Pre-flight Checkが合格している必要があります。
根拠:このセクションでは、検出ルールを引き起こすために設計された敵の技術(TTP)の正確な実行を詳細に説明します。コマンドとナラティブは、確認されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリを生成することを目指します。抽象的または無関係な例は誤診を招きます。
-
攻撃のナラティブとコマンド: 攻撃者が初期アクセスを獲得し、持続的なコマンド&コントロール(C2)チャンネルを確立しようとしています。従来のシグネチャベースの検出や標準HTTP/Sリクエストのみを対象とするファイアウォールを回避するために、攻撃者は軽量エージェントを展開し、 WebSocketアップグレードリクエストを開始します。標準のHTTP GETリクエストからWebSocket接続に移行することで、攻撃者はフルデュプレックス通信チャンネルを確立し、コマンドを発行してデータ(キー入力やファイルの流出など)をリアルタイムで受信することが可能になります。これにより、持続的なウェブトラフィックを装って情報をやり取りできます。
-
回帰テストスクリプト:
# WebSocketハンドシェイク/接続を模倣するシミュレーションスクリプト # これはPowerShellソケット実装を使用して、WebSocketスタイルの接続を開始します。 # 注意:成功にはアクティブなリスナーまたは共有WebSocketエコーサービスが必要です。 $wsUri = "wss://echo.websocket.org" # シミュレーションのために公共のエコーサービスを使用 Write-Host "[*] $wsUriへのWebSocket接続を試みています..." try { $ws = New-Object System.Net.WebSockets.ClientWebSocket $ct = New-Object System.Threading.CancellationTokenSource $connectTask = $ws.ConnectAsync($wsUri, $ct.Token) # 'ネットワーク接続'イベントをシミュレートするために接続を待機 if ($connectTask.Wait(10000)) { Write-Host "[+] WebSocket接続が正常に確立されました。" Write-Host "[!] SIEMで'Protocol: WebSocket'アラートを確認してください。" # ソケットを開いたままにするために小さなハートビートを送信 $buffer = [System.Text.Encoding]::UTF8.GetBytes("Ping") $sendTask = $ws.SendAsync((New-Object ArraySegment[byte]($buffer)), [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct.Token) $sendTask.Wait(5000) # テレメトリのキャプチャを確実にするために接続を短時間保持 Start-Sleep -Seconds 10 $ws.CloseAsync([System.Net.WebSockets.WebSocketCloseStatus]::NormalClosure, "Closing", $ct.Token).Wait() } else { Write-Host "[-] 接続がタイムアウトしました。ターゲットがWebSocket URIに到達できることを確認してください。" } } catch { Write-Error "[-] シミュレーション中のエラー:$($_.Exception.Message)" } finally { if ($ws) { $ws.Dispose() } } -
クリーンナップコマンド:
# PowerShellスクリプトによる持続的なアーティファクトは作成されません。 # 手動で開いた接続が閉じられていることを確認。 Write-Host "[*] シミュレーション環境のクリーンアップ中..." Stop-Process -Name "powershell" -ErrorAction SilentlyContinue