PamStealer wechselt zu Swift mit einer serverseitigen Entschlüsselungskette
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine neue PamStealer macOS Infostealer-Variante führt einen bedeutenden architektonischen Wechsel von Rust zu Swift ein. Die aktualisierte Malware stützt sich auf eine serverseitige Entschlüsselungskette, betrieben durch ein benutzerdefiniertes Dienstprogramm namens pkgunpack, die eine aktive C2-Interaktion erfordert, um die zweite Nutzlaststufe zu entschlüsseln und auszuführen. Sie verwendet auch gestaffelte Persistenzmechanismen, während sie Browser-Anmeldeinformationen, Keychain-Daten und umfangreiche Systemmetadaten anvisiert.
Untersuchung
Jamf Threat Labs analysierte die neue PamStealer-Variante, nachdem sie in einem gefälschten Kryptowährungs-Wallet-Installer namens Wavel entdeckt wurde. Die Untersuchung enthüllte eine mehrstufige Ausführungskette, die mit einem kompilierten JXA-Dropper beginnt, gefolgt von einer zsh-basierten Stufe, die Live-Schlüsselaustausche durchführt, und einer Swift-basierten zweiten Stufe, die für Anmeldeinformationsdiebstahl und Systemerkennung verantwortlich ist.
Minderung
Benutzer sollten vermeiden, Anwendungen aus inoffiziellen Quellen herunterzuladen, insbesondere Software, die Kryptowährungs-Wallets imitiert. Organisationen sollten auf verdächtige macOS-Hintergrundobjekte und unautorisierte Änderungen an Shell-Konfigurationsdateien wie .zshrcachten. Endpunktsicherheitssysteme, die in der Lage sind, ad-hoc Code-Signierungen, abnormale Prozessneuzuweisungen und ungewöhnliche Shell-Ausführungen zu erkennen, können die Exposition weiter reduzieren.
Reaktion
Wenn PamStealer-Aktivitäten erkannt werden, isolieren Sie den betroffenen macOS-Endpunkt vom Netzwerk, um weitere Befehls- und Kontrollkommunikation sowie Datendiebstahl zu verhindern. Führen Sie eine forensische Analyse durch, um das Ausmaß des Anmeldeinformationsdiebstahls zu bestimmen, wobei besonderes Augenmerk auf Browserdaten und den macOS-Schlüsselbund gelegt wird. Überprüfen Sie Systemprotokolle auf unautorisierte LaunchAgent-Erstellungen, verdächtige Hintergrundobjekte und unerwartete Shell-Aktivitäten.
Angriffsfluss
Wir aktualisieren diesen Teil noch.
Erkennungen
Erzwungene Signierung von modifiziertem Anwendungsbundle (via cmdline)
MacOS-Archivdienstprogramm, das auf verdächtiges Verzeichnis zeigt (via cmdline)
Verdächtige Verwendung von Ditto zur Dateiarchivierung und Exfiltration auf macOS (via process_creation)
Verdächtiger Curl-Ausführungsversuch [MacOS] (via cmdline)
Archiv wurde im temporären Ordner von MacOS erstellt (via file_event)
Beendigung von Browser-Hilfsprozessen zur Anmeldeinformationsfreigabe [Windows-Prozessschöpfung]
Erkennen von xattr- und codesign-Nutzung für Umgehungstechniken in PamStealer-Variante [Linux-Dateiereignis]
PamStealer JXA-Skriptausführung über Zsh [Linux-Prozessschöpfung]
Simulationsausführung
-
Angriffserzählung & Befehle: Der Angreifer versucht, eine Nutzlast zu implementieren, die einer Laufwerksdarstellung entgeht. Um dies zu erreichen, verwenden sie einen Befehl, der eine Base64-kodierte Zeichenfolge dekodiert und sie direkt in eine
zshSubshell mit dem-sFlag pipet. Um zu verhindern, dass ein Ermittler den schädlichen Prozess leicht mit der ursprünglichen Shell-Sitzung in Verbindung bringt, verpackt der Angreifer die Nutzlast in einer Funktion namensdaemon_function, führt sie im Hintergrund mit&aus und beendet sofort die aktuelle Shell, um die Prozessbaum-Verknüpfung zu durchbrechen. -
Regressionstest-Skript:
#!/bin/bash # Simulation der PamStealer JXA-Ausführung über zsh # Definieren Sie die "bösartige" Nutzlast als Funktionsnamen und Befehl # Die Nutzlast wird an zsh -s gepipet, um das TTP zu simulieren PAYLOAD="daemon_function() { echo '[!] MALICIOUS PAYLOAD EXECUTED'; }; daemon_function & ; exit 0" # Führen Sie die Nutzlast genau so aus, wie es die Erkennungsregel erwartet echo "$PAYLOAD" | zsh -s -
Bereinigungskommandos:
# Die Bereinigung ist minimal, da der Befehl gepipet wird und keine persistenten Dateien erstellt. # Wir müssen nur sicherstellen, dass keine Hintergrundprozesse aus der Simulation noch laufen. pkill -f "daemon_function"