OceanLotus (APT32) 解説: 戦術、マルウェア、および TTPs
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
OceanLotus、APT32とも呼ばれるこのグループは、少なくとも2014年から活動している、ベトナム政府の利益に沿った高度なサイバー諜報グループです。このグループは、東南アジア全域の政府、メディア、民間部門の組織を標的として、カスタムマルウェアツールと高度な作戦手法を使用しています。その侵入方法には、スピアフィッシング、サプライチェーンの妥協、DLLサイドローディングなどがあり、被害者の環境に長期的にアクセスすることを可能にしています。
調査
このレポートは、自動車企業に対する産業スパイから、FireAnt MetaKitプラットフォームを利用した最近のサプライチェーン活動までを網羅しています。また、SPECTRALVIPERやZiChatBotといったマルウェアファミリーについても、これらがどのように配信され、WindowsやmacOSシステムで使用されているかを検討しています。
軽減策
組織は、サプライチェーン攻撃の露出を減らすためにソフトウェア更新の整合性チェックを強制し、DLLサイドローディング活動を検出するために強力なエンドポイント検出を展開すべきです。不正なスケジュールされたタスク、cronジョブ、疑わしいレジストリの変更を監視することも重要です。厳格なメールフィルタリングとユーザー意識向上の訓練が、スピアフィッシングによる初期妥協のリスクをさらに減らすことができます。
対応策
OceanLotusの活動が検出された場合、横移動とデータ盗難を制限するために、影響を受けたシステムを直ちに隔離してください。不審なプロセス、たとえば OneDrive.Sync.Service.exe や意外なmacOSの起動エージェントに対して、深いフォレンジック分析を実施します。コンプロマイズされた資格情報は無効化し、DropboxやGoogle Driveといったクラウドストレージプラットフォームが許可されていないステージングやデータ流出の兆候がないか確認してください。
"graph TB %% Class Definitions Section classDef recon fill:#e1f5fe %% Light Blue classDef resource fill:#fff9c4 %% Light Yellow classDef access fill:#ffccbc %% Light Orange classDef execution fill:#d1c4e9 %% Light Purple classDef persistence fill:#c8e6c9 %% Light Green classDef escalation fill:#f8bbd0 %% Light Pink classDef stealth fill:#cfd8dc %% Light Grey classDef discovery fill:#b2dfdb %% Teal classDef command_control fill:#ffecb3 %% Amber classDef exfiltration fill:#d7ccc8 %% Brown %% Reconnaissance Section recon_track["<b>Action</b> – <b>T1598: Phishing for Information</b><br/>Gathering victim identity and email addresses via tracking links."] class recon_track recon recon_profile["<b>Action</b> – <b>T1592: Gather Victim Host Information</b><br/>Browser and OS profiling using web-profiling frameworks on fake news sites."] class recon_profile recon %% Resource Development Section res_dev_infra["<b>Action</b> – <b>T1583: Acquire Infrastructure</b><br/>Registering look-alike domains and abusing web services like Dropbox, Amazon S3, and Google Drive."] class res_dev_infra resource res_dev_malware["<b>Malware Suite</b><br/>Custom malware suite including WINDSHIELD, KOMPROGO, SOUNDBITE, PHOREAL, and SPECTRALVIPER."] class res_dev_malware resource %% Initial Access Section acc_supply["<b>Action</b> – <b>T1195: Supply Chain Compromise</b><br/>Malicious PyPI wheel packages and compromising FireAnt MetaKit update servers."] class acc_supply access acc_spear["<b>Action</b> – <b>T1566.001: Spearphishing Attachment</b><br/>Weaponized Office documents sent via email."] class acc_spear access acc_driveby["<b>Action</b> – <b>T1189: Drive-by Compromise</b><br/>Use of fake news sites to deliver payloads."] class acc_driveby access %% Execution Section exec_macro["<b>Action</b> – <b>T1059.005: Command and Scripting Interpreter: Visual Basic</b><br/>VBA macros in Office documents."] class exec_macro execution exec_python["<b>Action</b> – <b>T1059.006: Command and Scripting Interpreter: Python</b><br/>Execution via malicious PyPI wheel packages."] class exec_python execution exec_perl["<b>Action</b> – <b>T1059: Command and Scripting Interpreter</b><br/>Perl scripts utilized on macOS."] class exec_perl execution %% Persistence Section pers_task["<b>Action</b> – <b>T1053: Scheduled Task/Job</b><br/>Cron jobs on Linux and Windows Scheduled Tasks."] class pers_task persistence pers_macos["<b>Action</b> – <b>T1543: Create or Modify System Process</b><br/>Modifying macOS LaunchAgents and LaunchDaemons."] class pers_macos persistence pers_registry["<b>Action</b> – <b>T1547.001: Registry Run Keys / Startup Folder</b><br/>Utilizing registry run keys for persistence."] class pers_registry persistence pers_sideloader["<b>Action</b> – <b>T1574.002: Hijack Execution Flow: DLL Side-Loading</b><br/>Hijacking execution flow to maintain presence."] class pers_sideloader persistence %% Privilege Escalation Section esc_token["<b>Action</b> – <b>T1134: Access Token Manipulation</b><br/>Token impersonation and theft to elevate privileges."] class esc_token escalation %% Stealth Section stealth_obf["<b>Action</b> – <b>T1027: Obfuscated Files or Information</b><br/>Heavy obfuscation of files and information."] class stealth_obf stealth stealth_masq["<b>Action</b> – <b>T1036: Masquerading</b><br/>Matching filenames and locations to appear as legitimate resources."] class stealth_masq stealth stealth_inject["<b>Action</b> – <b>T1055: Process Injection</b><br/>Hiding within trusted processes like OneDrive."] class stealth_inject stealth stealth_remov["<b>Action</b> – <b>T1070: Indicator Removal On Host</b><br/>File deletion and timestomping."] class stealth_remov stealth %% Discovery Section disc_sysinfo["<b>Action</b> – <b>T1082: System Information Discovery</b><br/>Collecting hardware details including serial numbers and UUIDs and OS versions."] class disc_sysinfo discovery %% Command and Control Section c2_web["<b>Action</b> – <b>T1071.001: Application Layer Protocol: Web Protocols</b><br/>Resilient C2 channels using HTTPS."] class c2_web command_control c2_nonapp["<b>Action</b> – <b>T1095: Non-Application Layer Protocol</b><br/>Communication via TCP and ICMP."] class c2_nonapp command_control c2_web_svc["<b>Action</b> – <b>T1102: Web Service</b><br/>Bidirectional communication via Zulip and other web services."] class c2_web_svc command_control %% Exfiltration Section exfil_data["<b>Action</b> – <b>T1041: Exfiltration Over C2 Channel</b><br/>Collected data is exfiltrated over established C2 channels."] class exfil_data exfiltration %% Connections Section %% Recon leads to Resource Development recon_track –>|leads_to| res_dev_infra recon_profile –>|leads_to| res_dev_infra %% Resource Development leads to Initial Access res_dev_infra –>|supports| acc_supply res_dev_infra –>|supports| acc_spear res_dev_infra –>|supports| acc_driveby res_dev_malware –>|used_in| acc_supply res_dev_malware –>|used_in| acc_spear %% Initial Access leads to Execution acc_supply –>|triggers| exec_python acc_spear –>|triggers| exec_macro acc_driveby –>|triggers| exec_perl %% Execution leads to Persistence exec_macro –>|enables| pers_task exec_python –>|enables| pers_registry exec_perl –>|enables| pers_macos exec_macro –>|enables| pers_sideloader %% Persistence leads to Privilege Escalation pers_task –>|allows| esc_token pers_registry –>|allows| esc_token %% Privilege Escalation leads to Stealth and Discovery esc_token –>|facilitates| stealth_inject esc_token –>|facilitates| stealth_obf %% Stealth and Discovery lead to C2 stealth_inject –>|hides| c2_web stealth_obf –>|hides| c2_nonapp disc_sysinfo –>|identifies_targets_for| c2_web_svc %% C2 leads to Exfiltration c2_web –>|transports| exfil_data c2_nonapp –>|transports| exfil_data c2_web_svc –>|transports| exfil_data "
攻撃フロー
検出
持続性の可能性があるポイント [ASEPs – ソフトウェア/NTUSERハイブ] (レジストリイベントを通じて)
表示
第三者のサービスやツールを介したデータ侵入/流出/C2の可能性 (DNSを通じて)
表示
MacOSでの疑わしい一時フォルダーのファイル許可修正 (cmdlineを通じて)
表示
直達実行のためのCrontab使用の可能性 (cmdlineを通じて)
表示
OceanLotus (APT32) C2通信の検出 [Windowsネットワーク接続]
表示
OceanLotus PowerShellスクリプト難読化の検出 [Windows Powershell]
表示
OceanLotus JavaScript犠牲者プロファイリング [Webサーバー]
表示
OceanLotus mshta.exeの実行を検出して悪意あるスクリプト実行を行う [Windowsプロセス作成]
表示
OceanLotus macOSバックドアのコマンド実行の検出 [Linuxプロセス作成]
表示
## Simulation Execution
Prerequisite: The Telemetry & Baseline Pre-flight Check must have passed.
Rationale: This section details the precise execution of the adversary technique (TTP) designed to trigger the detection rule. The commands and narrative MUST directly reflect the TTPs identified and aim to generate the exact telemetry expected by the detection logic. Abstract or unrelated examples will lead to misdiagnosis.
-
Attack Narrative & Commands: The adversary has gained initial access to the workstation. To avoid detection by the existing EDR, they attempt to use the
Invoke-Obfuscationframework to mask their subsequent discovery commands. They download the framework (simulated here by direct command invocation) and attempt to run a command that triggers the specific detection rule by including the stringInvoke-Obfuscationin the process command line. -
Regression Test Script:
# This script simulates the invocation of the Invoke-Obfuscation tool # to trigger the 'CommandLine|contains: Invoke-Obfuscation' detection rule. Write-Host "[+] Starting Simulation: Triggering OceanLotus Detection Rule" # Simulating the execution of a command that contains the target string # In a real scenario, this would be the actual module being called. Start-Process powershell.exe -ArgumentList "-Command `"Invoke-Obfuscation -Command {Get-Process}`"" Write-Host "[+] Simulation command sent. Check SIEM for 'Detection of OceanLotus PowerShell Script Obfuscation'." -
Cleanup Commands:
# No persistent changes were made by the simulation script. # To clean up any temporary files if they were created: Remove-Item -Path "$env:TEMP*" -ErrorAction SilentlyContinue Write-Host "[+] Cleanup complete."