SOC Prime Bias: Critical

15 May 2026 13:51 UTC

FrostyNeighbor: 新たないたずらとデジタル脅威

Author Photo
SOC Prime Team linkedin icon フォローする
FrostyNeighbor: 新たないたずらとデジタル脅威
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

ESETは、またの名をゴーストライターとして知られるFrostyNeighbor APTグループが、ウクライナ政府組織に対する攻撃を再開したと報告しています。これは、最終的にCobalt Strikeビーコンを展開するPicassoLoaderと呼ばれるJavaScriptベースのダウンローダーを提供するスピアフィッシングPDFを使用しています。キャンペーンは、地理的な検証、スケジュールされたタスクの永続性、および複数のファイルドロップ技術に依存して、視認性を低減し、検出を回避します。そのインフラストラクチャは、Cloudflareの背後に配置され、いくつかの needbinding.icu のドメインを使用しています。

調査

研究者たちは、悪意のあるPDFのルアーから始まり、JavaScriptドロッパーとPicassoLoaderダウンローダーを経て、Cobalt Strikeペイロードの配送に至るまでの完全な攻撃チェーンを再構築しました。彼らは、ファイル名、レジストリの変更、およびコマンド&コントロールURLなどのインディケーターを抽出し、それらを既知のFrostyNeighborの手法と関連付けました。報告書はまた、 CVE-2023-38831 のWinRARおよび CVE-2024-42009 のRoundcubeの悪用についても強調しています。

緩和策

組織は、疑わしい添付ファイルの種類をブロックし、マクロおよびスクリプト実行に対する厳格な制御を強化し、不明なバイナリによって作成されたスケジュールされたタスクを監視し、既知の悪意のあるドメインへのアウトバウンドHTTPSトラフィックを制限する必要があります。参照された脆弱性は迅速にパッチ適用され、 rundll32.exe の使用には最小特権制限が適用されるべきです。

対応策

関連するインディケーターが検出された場合は、影響を受けたシステムを即座に分離し、法医学的アーティファクトを収集し、Cobalt StrikeビーコンおよびPicassoLoaderコンポーネントの存在を追跡してください。漏洩した資格情報をリセットし、スケジュールされたタスクおよびRunキーのエントリをレビューして永続性の兆候を探してください。

"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#c2f0c2 classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Nodes – Actions attack_initial_access["<b>Action</b> – <b>T1566.001 Phishing: Spearphishing Attachment</b><br/>Malicious PDF email with link to a RAR archive."] class attack_initial_access action action_user_execution["<b>Action</b> – <b>T1204.002 User Execution</b><br/>Victim opens the PDF which runs a JavaScript dropper."] class action_user_execution action %% Nodes – Files file_malicious_pdf["<b>File</b> – <b>Name</b>: malicious.pdf<br/>Contains JavaScript dropper."] class file_malicious_pdf file file_rar["<b>File</b> – <b>Name</b>: payload.rar<br/>Delivered via link in the PDF."] class file_rar file file_scheduled_xml["<b>File</b> – <b>Name</b>: scheduled_task.xml<br/>XML used to register a scheduled task."] class file_scheduled_xml file file_reg["<b>File</b> – <b>Name</b>: persistence.reg<br/>Registry file that creates a Run key.""" class file_reg file file_lnk["<b>File</b> – <b>Name</b>: launcher.lnk<br/>Shortcut placed in Startup folder.""" class file_lnk file %% Nodes – Malware / Tools malware_javascript_dropper["<b>Malware</b> – <b>Name</b>: JavaScript Dropper<br/>Executes base64u2011encoded scripts and embeds secondu2011stage payloads."] class malware_javascript_dropper malware tool_picasso_loader["<b>Tool</b> – <b>Name</b>: PicassoLoader<br/>Collects system info, process list and victim identity data."] class tool_picasso_loader tool malware_cobalt_strike["<b>Malware</b> – <b>Name</b>: Cobalt Strike Beacon<br/>Provides remote control capabilities.""" class malware_cobalt_strike malware %% Nodes – Techniques technique_obfuscation["<b>Technique</b> – <b>T1027 Obfuscated Files or Information</b><br/>Payloads are base64u2011encoded to avoid detection."] class technique_obfuscation technique technique_embedded_payload["<b>Technique</b> – <b>T1027.009 Embedded Payloads</b><br/>Downloader and beacon are hidden inside the JavaScript."] class technique_embedded_payload technique technique_gather_identity["<b>Technique</b> – <b>T1589 Gather Victim Identity Information</b><br/>Collects username, computer name, OS version and boot time."] class technique_gather_identity technique technique_system_info["<b>Technique</b> – <b>T1082 System Information Discovery</b><br/>Harvests detailed system specifications."] class technique_system_info technique technique_process_discovery["<b>Technique</b> – <b>T1057 Process Discovery</b><br/>Enumerates running processes on the host."] class technique_process_discovery technique technique_c2_https["<b>Technique</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>Communicates with C2 over HTTPS POST.""" class technique_c2_https technique technique_scheduled_task["<b>Technique</b> – <b>T1053.005 Scheduled Task/Job</b><br/>Creates a scheduledu2011task XML for persistence.""" class technique_scheduled_task technique technique_run_key["<b>Technique</b> – <b>T1060 Registry Run Keys / Startup Folder</b><br/>Adds a Run key pointing to a malicious LNK.""" class technique_run_key technique technique_exfiltration["<b>Technique</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/>Sends collected data over the same HTTPS channel.""" class technique_exfiltration technique %% Connections – Attack Flow attack_initial_access –>|delivers| file_malicious_pdf file_malicious_pdf –>|opened_by| action_user_execution action_user_execution –>|executes| malware_javascript_dropper malware_javascript_dropper –>|uses| technique_obfuscation malware_javascript_dropper –>|contains| technique_embedded_payload technique_embedded_payload –>|drops| tool_picasso_loader tool_picasso_loader –>|gathers| technique_system_info tool_picasso_loader –>|gathers| technique_process_discovery tool_picasso_loader –>|collects| technique_gather_identity tool_picasso_loader –>|contacts| technique_c2_https technique_c2_https –>|delivers| malware_cobalt_strike malware_cobalt_strike –>|establishes| technique_scheduled_task technique_scheduled_task –>|creates| file_scheduled_xml malware_cobalt_strike –>|establishes| technique_run_key technique_run_key –>|creates| file_reg file_reg –>|adds| file_lnk technique_c2_https –>|exfiltrates via| technique_exfiltration "

攻撃フロー

シミュレーション実行

前提条件: テレメトリ & ベースラインプレフライトチェックが通過している必要があります。

根拠: このセクションには、検出ルールをトリガーするために設計された敵の技術(TTP)の正確な実行が詳述されています。コマンドとナラティブは、特定されたTTPを直接反映し、検出ロジックに期待される正確なテレメトリを生成することを目的としています。

  • 攻撃ナラティブ&コマンド:

    敵は被害者のホストに潜入し、Cobalt Strikeビーコンを展開しつつ検出を避けることを望んでいます。彼らは:

    1. コピー rundll32.exe 非標準の場所に(C:ProgramDataTemprundll32.exe)単純なホワイトリストアラートを回避するために。
    2. 悪意のあるDLLをドロップします (ViberPC.dllinto %ProgramData%。このDLLには、ブートストラップされたCobalt Strikeペイロードが含まれています。
    3. コピーした rundll32.exe を実行し、悪意のあるDLLをロードするコマンドラインを使用します(%ProgramData%ViberPC.dll).
    4. 2つのJavaScriptファイルをドロップします (53_7.03.2026_R.js and Update.js)。これには、C2サーバーに連絡し、ビーコンのインストールを完了するJScriptが含まれています。
    5. JavaScriptファイルを実行します 使用 cscript.exe、これにより、 イメージ がで終わるプロセスを作成し、かつ、 .jsコマンドライン が完全なファイル名を含むプロセスを呼び出します。

    これらのステップは、Sigmaルールで セクション1, セクション2、および セクション3 によって一致する正確なSysmonプロセス作成イベントを生成します。

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

    # FrostyNeighbor Cobalt Strike展開シミュレーション
    # -------------------------------------------------
    # 1. パスを用意
    $tempDir = "$env:ProgramDataTemp"
    $rundllCopy = Join-Path $tempDir "rundll32.exe"
    $malDll    = "$env:ProgramDataViberPC.dll"
    $js1       = "$env:ProgramData53_7.03.2026_R.js"
    $js2       = "$env:ProgramDataUpdate.js"
    
    # 2. tempディレクトリが存在することを確認
    New-Item -Path $tempDir -ItemType Directory -Force | Out-Null
    
    # 3. rundll32.exeを非標準の場所にコピー
    Copy-Item -Path "$env:SystemRootSystem32rundll32.exe" -Destination $rundllCopy -Force
    
    # 4. ダミーの悪意のあるDLLを作成(実際の攻撃ではペイロードとなります)
    $dummyDll = [IO.File]::ReadAllBytes("$env:SystemRootSystem32driversetchosts") # プレースホルダーバイナリ
    [IO.File]::WriteAllBytes($malDll, $dummyDll)
    
    # 5. コピーしたrundll32を悪意のあるDLLで実行
    Start-Process -FilePath $rundllCopy -ArgumentList "`"$malDll`"" -WindowStyle Hidden
    
    # 6. JavaScriptペイロードをドロップ
    $jsContent = @"
    // C2エンドポイントに到達するシンプルなJScript(シミュレーション)
    var xhr = new ActiveXObject("MSXML2.XMLHTTP");
    xhr.open("GET", "http://127.0.0.1:8080/beacon", false);
    xhr.send();
    "@
    
    Set-Content -Path $js1 -Value $jsContent -Encoding ASCII
    Set-Content -Path $js2 -Value $jsContent -Encoding ASCII
    
    # 7. cscript経由でJavaScriptファイルを実行(これにより.jsイメージを持つプロセスが生成されます)
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js1`"" -WindowStyle Hidden
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js2`"" -WindowStyle Hidden
    
    # 8. SIEM取り込みを許可するために一時停止
    Start-Sleep -Seconds 15
  • クリーンアップコマンド:

    # シミュレーション後のクリーンアップ
    $paths = @(
        "$env:ProgramDataViberPC.dll",
        "$env:ProgramData53_7.03.2026_R.js",
        "$env:ProgramDataUpdate.js",
        "$env:ProgramDataTemprundll32.exe"
    )
    foreach ($p in $paths) {
        if (Test-Path $p) { Remove-Item -Path $p -Force }
    }
    # テストによって起動された残留する可能性のあるcscriptプロセスを停止するオプション
    Get-Process -Name cscript -ErrorAction SilentlyContinue | Stop-Process -Force