SOC Prime Bias: Hoch

29 Jun 2026 06:42 UTC

Photo ZIP-Kampagne zielt auf die Gastronomie ab und liefert Node.js-Implantat für persistenten Zugriff

Author Photo
SOC Prime Team linkedin icon Folgen
Photo ZIP-Kampagne zielt auf die Gastronomie ab und liefert Node.js-Implantat für persistenten Zugriff
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine aktive mehrstufige Eindringungskampagne zielt auf den Gastgewerbesektor ab, indem sie foto-themenbezogene ZIP-Archive verwendet, die bösartige LNK-Dateien enthalten. Die Infektionskette nutzt verschleierte PowerShell-Dekoder, On-the-fly-Kompilierung von .NET-DLLs und ein Node.js-basiertes Implantat für Persistenz und Kommando- und Kontrollkommunikation. Der Bedrohungsakteur tarnt zudem die Authentifizierung über legitime Dienste wie Calendly und Google, um die Chance einer emailbasierten Erkennung zu verringern.

Untersuchung

Microsoft identifizierte zwei separate Wellen der Kampagne und beobachtete eine Weiterentwicklung von einfachen PowerShell-Loadern zu komplexeren .NET-Kompilierungsstufen. Die Untersuchung ergab auch eine doppelte Persistenzstrategie, die sich auf sowohl HKCURun and HKCURunOnce Registrierungsschlüssel stützte. Forscher bemerkten zudem die Nutzung von Cloudflare-verschleierten Domains und nicht standardmäßigen Kommando- und Kontrollports, um die unterstützende Infrastruktur zu verschleiern.

Minderung

Organisationen sollten geschichtete Erkennungen für Shortcut-Ausführung, unerwartete .NET-Kompilierung und Node.js-Prozesse, die aus benutzerbeschreibbaren Verzeichnissen gestartet werden, priorisieren. Die Aktivierung von Angriffsfächenreduktionsregeln und die Überwachung auf unbefugte Microsoft Defender-Ausschlussänderungen wird dringend empfohlen. Das Blockieren verdächtiger .cfd Domain-Muster und die Beobachtung des ausgehenden Datenverkehrs über ungewöhnliche Ports kann ebenfalls helfen, die Gefährdung zu reduzieren.

Reaktion

Wenn diese Aktivitäten erkannt werden, sollte die Schadensbehebung die Entfernung sowohl des ProgramData RunOnce Eintrags als auch des Node.js Run Schlüssels umfassen, um zu verhindern, dass sich das Implantat selbst wiederherstellt. Sicherheitsteams sollten auch die Node.js-Laufzeitumgebung und zugehörige .js Payloads aus dem AppDataLocalNodejs Verzeichnis löschen. Eine vollständige Bereinigung erfordert, dass sowohl das aktive Payload als auch jegliche Persistenzmechanismen beseitigt werden.

"Flussdiagramm TD Schritt_Phishing["T1566.002 u2013 Phishing: Spearphishing-Link: Verwendet Authentifizierungsverschleierung über Calendly- und Google-Weiterleitungen, um ein foto-themenbezogenes ZIP-Archiv zu liefern."] Schritt_Anwender_Ausführung["T1204.002 u2013 Anwenderausführung: Bösartige Datei: Das Opfer öffnet eine gefälschte Bildverknüpfung (.lnk), die einen verschleierten PowerShell-Downloader auslöst."] Regeln_für_Anwender_Ausführung("<b>Regelname</b>: Mögliche bösartige LNK-Datei mit doppelter Erweiterung<br/><b>Rule ID</b>: 13f9a3c1-b2fe-4268-8052-bf6fe353e952") Schritt_Obfuskation["T1027 u2013 Verschleierte Dateien oder Informationen: PowerShell verwendet arithmetische Dekodierung (XOR, Modul), um nachfolgende Stufen abzurufen."] Regeln_für_Obfuskation("<b>Regelname</b>: Mögliche PowerShell-Obfuskationsindikatoren<br/><b>Rule ID</b>: a11f179d-8248-4d34-905c-e61735a72688") Schritt_Kompilierung["T1027.004 u2013 Kompilieren nach der Lieferung: PowerShell löst .NET-Kompilierung mit csc.exe und cvtres.exe aus, um DLLs zu erstellen."] Schritt_Implat_Ausführung["Node.js-basiertes Implantat-Ausführung: Bereitstellung bösartiger .js-Payloads über node.exe."] Regeln_für_Implant_Ausführung("<b>Regelname</b>: Mögliche Node-Generierung durch bekannten missbrauchten Prozess<br/><b>Rule ID</b>: b36fbdaf-1bab-45c2-a15b-f0c25c696d72") Schritt_Persistenz["T1547.014 u2013 Boot- oder Anmelde-Autostart-Ausführung: Aktives Setup: Duales Modell unter Verwendung von ‚Run‘- und ‚RunOnce‘-Registrierungsschlüsseln für die Node.js-Komponente und ausführbare ProgramData-Datei."] Regeln_für_Persistenz("<b>Regelname</b>: Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive]<br/><b>Rule ID</b>: 4cb3ac97-0fab-4447-9054-6f2d6ca102a1") Schritt_Kommandound_Kontrolle["TA0011 u2013 Kommando und Kontrolle: Beaconing zu fester IP-Infrastruktur über nicht standardmäßige Ports (8443, 56001) und automatisierter kopfloser Browser."] Regeln_für_C2("<b>Regelname</b>: Verdächtige Kommando und Kontrolle durch ungewöhnliche Top-Level-Domain (TLD) DNS-Anforderung (via dns)<br/><b>Rule ID</b>: 63f3e8bc-0241-4f00-b9db-d4c309e61036") Regeln_für_C2_Network("<b>Regelname</b>: Skripting-Laufzeiten, die ausgehende TLS-Verbindungen initiieren (via Netzwerkverbindung)<br/><b>Rule ID</b>: 1ac66e9b-fd10-4c8c-af41-8c3d901ba03d") Schritt_Phishing –>|führt zu| Schritt_Anwender_Ausführung Schritt_Anwender_Ausführung –>|löst aus| Schritt_Obfuskation Schritt_Anwender_Ausführung -.->|erkannt von| Regeln_für_Anwender_Ausführung Schritt_Obfuskation –>|führt zu| Schritt_Kompilierung Schritt_Obfuskation -.->|erkannt von| Regeln_für_Obfuskation Schritt_Kompilierung –>|ermöglicht| Schritt_Implat_Ausführung Schritt_Implat_Ausführung –>|etabliert| Schritt_Persistenz Schritt_Implat_Ausführung -.->|erkannt von| Regeln_für_Implant_Ausführung Schritt_Persistenz –>|führt zu| Schritt_Kommandound_Kontrolle Schritt_Persistenz -.->|erkannt von| Regeln_für_Persistenz Schritt_Kommandound_Kontrolle -.->|erkannt von| Regeln_für_C2 Schritt_Kommandound_Kontrolle -.->|erkannt von| Regeln_für_C2_Network "

Angriffsfluss

Simulationsausführung

Voraussetzung: Der Telemetrie- und Baseline-Vorflugstest muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angriffstechnik (TTP), die dazu entworfen wurde, die Erkennungsregel auszulösen. Die Befehle und Erzählung müssen direkt den identifizierten TTPs entsprechen und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht zusammenhängende Beispiele führen zu Fehldiagnosen.

  • Angriffsbericht & Befehle: Ein Angreifer hat initialen Zugriff über einen Spearphishing-Link (T1566.002) erlangt. Um Persistenz und Kommando und Kontrolle (C2) zu etablieren, setzt der Angreifer ein leichtgewichtiges, PowerShell-basiertes Implantat ein. Um der Erkennung durch grundlegende Firewall-Regeln, die nur Standard-Ports überwachen, zu entgehen, beschließt der Angreifer, einen nicht standardmäßigen Port (8443) für das primäre Heartbeat zu verwenden. Zusätzlich wird das Implantat so konfiguriert, dass es einen sekundären „Call Home“ an eine Backup-Domain auf einem .cfd TLD ausführt, um die Widerstandsfähigkeit sicherzustellen, falls die primäre IP blockiert wird. Dies imitiert das Verhalten der Foto-Zip-Kampagne, die in den Referenzen der Regel erwähnt wird.

  • Regressionstest-Skript:

    # Simulationsskript: C2-Emulation zur Regelvalidierung
    # Dieses Skript simuliert Netzwerkverbindungen zu nicht standardmäßigen Ports und .cfd Domains.
    
    Write-Host "[+] Starting C2 Simulation..." -ForegroundColor Cyan
    
    # 1. Verbindung zu einem nicht standardmäßigen C2-Port (8443) simulieren
    # Wir verwenden eine öffentliche IP, die auf 8443 hört (oder einen lokalen Listener, wenn verfügbar)
    Write-Host "[+] Attempting connection to non-standard port 8443..." -ForegroundColor Yellow
    try {
        $tcpClient = New-Object System.Net.Sockets.TcpClient
        $tcpClient.Connect("8.8.8.8", 8443) # Google DNS als Dummy-Ziel für Port-Tests verwenden
    } catch {
        Write-Host "[!] Port 8443 connection failed (Expected if port is closed), but telemetry should still be generated." -ForegroundColor Gray
    } finally {
        $tcpClient.Close()
    }
    
    # 2. Verbindung zu einer .cfd Domain simulieren
    # Wir versuchen, eine Dummy .cfd Domain aufzulösen und sich damit zu verbinden
    Write-Host "[+] Attempting connection to .cfd domain..." -ForegroundColor Yellow
    $cfdDomain = "malicious-c2-test.cfd"
    try {
        # Verwendung von Resolve-DnsName zur Auslösung von DNS-Telemetrie, gefolgt von einer Webanforderung
        Resolve-DnsName -Name $cfdDomain -ErrorAction SilentlyContinue
        Invoke-WebRequest -Uri "http://$cfdDomain" -TimeoutSec 2 -ErrorAction SilentlyContinue
    } catch {
        Write-Host "[!] .cfd domain connection failed (Expected for dummy domain), but telemetry should be generated." -ForegroundColor Gray
    }
    
    Write-Host "[+] Simulation Complete." -ForegroundColor Cyan
  • Aufräumbefehle:

    # Aufräumen: Keine dauerhaften Artefakte wurden von diesem spezifischen Skript erstellt.
    # Wenn ein Listener gestartet wurde, sollte er gestoppt werden.
    Write-Host "[+] No cleanup required for this stateless simulation." -ForegroundColor Green