SOC Prime Bias: Kritisch

15 May 2026 13:51 UTC

FrostyNeighbor: Frische Unruhe und digitale Bedrohungen

Author Photo
SOC Prime Team linkedin icon Folgen
FrostyNeighbor: Frische Unruhe und digitale Bedrohungen
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

ESET berichtet, dass die FrostyNeighbor APT-Gruppe, auch bekannt als Ghostwriter, Angriffe gegen ukrainische Regierungsorganisationen wieder aufgenommen hat. Dazu nutzt sie Spear-Phishing-PDFs, die einen JavaScript-basierten Downloader namens PicassoLoader übermitteln, der letztendlich ein Cobalt-Strike-Beacon bereitstellt. Die Kampagne stützt sich auf geobasierte Validierung, geplante Task-Persistenz und verschiedene Techniken zur Dateiablage, um Sichtbarkeit zu reduzieren und Erkennung zu umgehen. Die Infrastruktur ist hinter Cloudflare positioniert und nutzt mehrere needbinding.icu Domains.

Untersuchung

Forscher rekonstruierten die vollständige Angriffskette, beginnend mit dem bösartigen PDF-Köder, fortgesetzt über den JavaScript-Dropper und den PicassoLoader-Downloader bis hin zur Bereitstellung der Cobalt-Strike-Nutzlast. Sie extrahierten Indikatoren, einschließlich Dateinamen, Registry-Änderungen und Command-and-Control-URLs, und verbanden diese mit bekannten FrostyNeighbor-Praktiken. Der Bericht hebt auch die Ausnutzung von CVE-2023-38831 in WinRAR und CVE-2024-42009 in Roundcube.

Abmilderung

Organisationen sollten verdächtige Anhangstypen blockieren, strikte Kontrollen über Makro- und Skriptausführung durchsetzen, geplante Tasks von unbekannten Binärdateien überwachen und ausgehenden HTTPS-Verkehr zu bekannten bösartigen Domains einschränken. Die referenzierten Schwachstellen sollten umgehend gepatcht werden, und Einschränkungen des geringsten Privilegs sollten auf den Gebrauch von rundll32.exe angewendet werden.

Reaktion

Wenn verwandte Indikatoren erkannt werden, isolieren Sie das betroffene System sofort, sammeln Sie forensische Artefakte und suchen Sie sowohl nach dem Cobalt-Strike-Beacon als auch nach PicassoLoader-Komponenten. Setzen Sie alle exponierten Anmeldeinformationen zurück und überprüfen Sie geplante Tasks sowie Run-Key-Einträge auf Anzeichen von Persistenz.

"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>Aktion</b> – <b>T1566.001 Phishing: Spearphishing-Anhang</b><br/>Bösartige PDF-E-Mail mit Link zu einem RAR-Archiv."] class attack_initial_access action action_user_execution["<b>Aktion</b> – <b>T1204.002 Benutzer-Ausführung</b><br/>Opfer öffnet das PDF, das einen JavaScript-Dropper ausführt."] class action_user_execution action %% Nodes – Files file_malicious_pdf["<b>Datei</b> – <b>Name</b>: bösartig.pdf<br/>Enthält JavaScript-Dropper."] class file_malicious_pdf file file_rar["<b>Datei</b> – <b>Name</b>: payload.rar<br/>Über Link im PDF geliefert."] class file_rar file file_scheduled_xml["<b>Datei</b> – <b>Name</b>: scheduled_task.xml<br/>XML zum Registrieren einer geplanten Aufgabe."] class file_scheduled_xml file file_reg["<b>Datei</b> – <b>Name</b>: persistence.reg<br/>Registry-Datei, die einen Run-Key erstellt.""" class file_reg file file_lnk["<b>Datei</b> – <b>Name</b>: launcher.lnk<br/>Verknüpfung im Autostart-Ordner platziert.""" class file_lnk file %% Nodes – Malware / Tools malware_javascript_dropper["<b>Malware</b> – <b>Name</b>: JavaScript-Dropper<br/>Führt base64-kodierte Skripte aus und bettet Nutzlasten der zweiten Stufe ein."] class malware_javascript_dropper malware tool_picasso_loader["<b>Tool</b> – <b>Name</b>: PicassoLoader<br/>Sammelt Systeminformationen, Prozessliste und Daten zur Opferidentität."] class tool_picasso_loader tool malware_cobalt_strike["<b>Malware</b> – <b>Name</b>: Cobalt Strike Beacon<br/>Bietet Fernsteuerungsmöglichkeiten.""" class malware_cobalt_strike malware %% Nodes – Techniques technique_obfuscation["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/>Nutzlasten sind base64-kodiert, um der Erkennung zu entgehen."] class technique_obfuscation technique technique_embedded_payload["<b>Technik</b> – <b>T1027.009 Eingebettete Nutzlasten</b><br/>Downloader und Beacon sind innerhalb des JavaScript versteckt."] class technique_embedded_payload technique technique_gather_identity["<b>Technik</b> – <b>T1589 Opferidentitätsinformationen sammeln</b><br/>Sammelt Benutzername, Computername, Betriebssystemversion und Bootzeit."] class technique_gather_identity technique technique_system_info["<b>Technik</b> – <b>T1082 Systeminformationsaufklärung</b><br/>Erfasst detaillierte Systemspezifikationen."] class technique_system_info technique technique_process_discovery["<b>Technik</b> – <b>T1057 Prozessentdeckung</b><br/>Erfasst laufende Prozesse auf dem Host."] class technique_process_discovery technique technique_c2_https["<b>Technik</b> – <b>T1071.001 Anwendungsschichtprotokoll: Webprotokolle</b><br/>Kommuniziert mit C2 über HTTPS POST.""" class technique_c2_https technique technique_scheduled_task["<b>Technik</b> – <b>T1053.005 Geplante Aufgabe/Auftrag</b><br/>Erstellt eine geplante-Aufgabe-XML für Persistenz.""" class technique_scheduled_task technique technique_run_key["<b>Technik</b> – <b>T1060 Registry Run Keys / Autostart-Ordner</b><br/>Fügt einen Run-Key hinzu, der auf eine bösartige LNK verweist.""" class technique_run_key technique technique_exfiltration["<b>Technik</b> – <b>T1041 Exfiltration über C2-Kanal</b><br/>Sendet gesammelte Daten über denselben HTTPS-Kanal.""" class technique_exfiltration technique %% Connections – Attack Flow attack_initial_access –>|liefert| file_malicious_pdf file_malicious_pdf –>|wird von geöffnet| action_user_execution action_user_execution –>|führt aus| malware_javascript_dropper malware_javascript_dropper –>|verwendet| technique_obfuscation malware_javascript_dropper –>|enthält| technique_embedded_payload technique_embedded_payload –>|lässt fallen| tool_picasso_loader tool_picasso_loader –>|sammelt| technique_system_info tool_picasso_loader –>|sammelt| technique_process_discovery tool_picasso_loader –>|sammelt| technique_gather_identity tool_picasso_loader –>|kontaktiert| technique_c2_https technique_c2_https –>|liefert| malware_cobalt_strike malware_cobalt_strike –>|etabliert| technique_scheduled_task technique_scheduled_task –>|erstellt| file_scheduled_xml malware_cobalt_strike –>|etabliert| technique_run_key technique_run_key –>|erstellt| file_reg file_reg –>|fügt hinzu| file_lnk technique_c2_https –>|exfiltriert via| technique_exfiltration "

Angriffsfluss

Simulation Ausführung

Voraussetzung: Der Telemetrie- & Basis-Prüf-Vorflug muss bestanden worden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die die Erkennungsregel auslösen soll. Die Befehle und der Verlauf MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genau erwartete Telemetrie zu erzeugen, die durch die Erkennungslogik erkannt wird.

  • Angriffserzählung & Befehle:

    Der Angreifer hat einen Fuß in die Tür auf dem Opferhost bekommen und möchte unbemerkt ein Cobalt Strike-Beacon bereitstellen. Sie:

    1. Kopieren rundll32.exe an einen nicht standardmäßigen Ort (C:ProgramDataTemprundll32.exe), um einfache Whitelist-Alarme zu umgehen.
    2. Die bösartige DLL ablegen (ViberPC.dll) in %ProgramData%. Diese DLL enthält die gebootstrappte Cobalt Strike-Nutzlast.
    3. Die kopierte durchführen rundll32.exe mit einer Befehlszeile, die die bösartige DLL lädt (%ProgramData%ViberPC.dll).
    4. Zwei JavaScript-Dateien ablegen (53_7.03.2026_R.js and Update.js), die JScript enthalten, das den C2-Server kontaktiert und die Beacon-Installation abschließt.
    5. Die JavaScript-Dateien ausführen unter Verwendung von cscript.exe, was zur Erstellung von Prozessen führt, deren Bild endet mit .js und deren Befehlslinie die genauen Dateinamen enthält.

    Diese Schritte erzeugen die genauen Sysmon-Prozess-Erstellungsereignisse, die durch Auswahl1, Auswahl2und Auswahl3 in der Sigma-Regel erfasst werden.

  • Regressionstest-Skript:

    # FrostyNeighbor Cobalt Strike Bereitstellungssimulation
    # -------------------------------------------------
    # 1. Pfade vorbereiten
    $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. Sicherstellen, dass das Tempverzeichnis existiert
    New-Item -Path $tempDir -ItemType Directory -Force | Out-Null
    
    # 3. Kopieren Sie rundll32.exe an einen nicht-standardmäßigen Ort
    Copy-Item -Path "$env:SystemRootSystem32rundll32.exe" -Destination $rundllCopy -Force
    
    # 4. Erstellen Sie eine Dummy-bösartige DLL (in einem echten Angriff wäre dies die Nutzlast)
    $dummyDll = [IO.File]::ReadAllBytes("$env:SystemRootSystem32driversetchosts") # Platzhalter-Binärdatei
    [IO.File]::WriteAllBytes($malDll, $dummyDll)
    
    # 5. Führen Sie die kopierte rundll32 mit der bösartigen DLL aus
    Start-Process -FilePath $rundllCopy -ArgumentList "`"$malDll`"" -WindowStyle Hidden
    
    # 6. JavaScript-Nutzlasten ablegen
    $jsContent = @"
    // Einfaches JScript, das zu einem C2-Endpunkt gelangt (simuliert)
    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. Die JavaScript-Dateien über cscript ausführen (dies erzeugt Prozesse mit .js-Bild)
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js1`"" -WindowStyle Hidden
    Start-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js2`"" -WindowStyle Hidden
    
    # 8. Pause für die SIEM-Aufnahme
    Start-Sleep -Seconds 15
  • Bereinigungskommandos:

    # Bereinigung nach der Simulation
    $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 }
    }
    # Gegebenenfalls laufende cscript-Prozesse beenden, die durch den Test gestartet wurden
    Get-Process -Name cscript -ErrorAction SilentlyContinue | Stop-Process -Force