Nordkoreas Safari-Kampagne liefert RATs
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Artikel beschreibt ein neues macOS-Malware-Framework namens Mach-O Man, das mit der berühmten Chollima-Einheit der Lazarus-Gruppe in Verbindung gebracht wird. Die Malware wird über kompromittierte Telegram-Accounts und gefälschte Meeting-Einladungen verbreitet, die die Ziele dazu überreden, einen ClickFix-Befehl auf ihren Geräten auszuführen. Das Toolkit umfasst mehrere Mach-O-Binärdateien, die dazu bestimmt sind, Hostdetails zu sammeln, Persistenz aufrechtzuerhalten und Anmeldedaten sowie Browserdaten zu stehlen, wobei die Exfiltration über Telegram erfolgt. Die Kampagne scheint auf Kryptowährungsbörsen und andere Organisationen im Finanzsektor abzuzielen.
Untersuchung
Forscher identifizierten eine Staging-Binärdatei namens teamsSDK.bin , die durch eine bösartige Befehlsfolge heruntergeladen und ausgeführt wurde. Weitere Komponenten, einschließlich D1yCPUyk.bin, minst2.bin, und macrasv2, wurden dann verwendet, um das System aufzulisten, einen LaunchAgent für die Persistenz zu erstellen und Browsererweiterungen, Schlüsselbunddaten und Cookies zu ernten. Die Kommando- und Kontrollkommunikation stützte sich auf einen Go-basierten HTTP-Server, der einen nicht authentifizierten /info Endpunkt freigab und ein Telegram-Bot-API-Token leckte. Ermittler fanden auch Remote-Access-Dienste wie RDP, WinRM und Chrome Remote Desktop, die auf dem C2-Host exponiert waren.
Minderung
Benutzer sollten vermeiden, mit unerwünschten Meeting-Links zu interagieren und die Legitimität von Terminalbefehlen, die während unerwarteter Gespräche vorgeschlagen werden, zu überprüfen. Organisationen sollten auf nicht autorisierte LaunchAgents achten, das Signieren von vertrauenswürdigem Code für macOS-Binärdateien verlangen und die Ausführung unbekannter Dateien beschränken. Netzwerkschutzmaßnahmen sollten ausgehende Verbindungen zu verdächtigen Go-basierten HTTP-Servern blockieren und Verkehr mit dem Go-http-client User-Agent kennzeichnen. Telegram-Bot-Tokens sollten vor unbefugtem Zugriff geschützt werden, und Remotedesktopdienste sollten mit Zugriffssteuerungen nach dem geringsten Privileg gesichert werden.
Reaktion
Sicherheitsteams sollten die Ausführung unbekannter .bin Dateien erkennen und die Erstellung von LaunchAgents mit dem Namen com.onedrive.launcherüberwachen. Warnmeldungen sollten auch bei ausgehenden Verbindungen zu verdächtiger Infrastruktur mit dem Go-http-client User-Agent sowie bei wiederholten POST-Anfragen an /info Endpunkte ausgelöst werden. Verteidiger sollten auf unerwartete Telegram-API-Aktivitäten achten, die mit unbekannten Bot-Tokens verbunden sind. Eine umfassende Host-Forensik sollte durchgeführt werden, um alle bösartigen Binärdateien zu identifizieren und zu entfernen, gefolgt von Anmelde-Reset für alle möglicherweise kompromittierten Konten.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ffcc99 classDef process fill:#e6ffe6 classDef file fill:#ffe6cc classDef service fill:#e6e6ff %% Node Definitions initial_access_user_execution["<b>Aktion</b> – <b>T1204.001 Nutzung durch den Benutzer</b><br/>Das Opfer klickt auf einen bösartigen „fix“-Link in einem Telegram-Meeting, der einen curl-Befehl ausführt"] class initial_access_user_execution action tool_curl["<b>Werkzeug</b> – <b>Name</b>: curl<br/><b>Beschreibung</b>: Kommandozeilen-Utility zum Übertragen von Daten zu oder von einem Server"] class tool_curl tool file_teamsSDK_bin["<b>Datei</b> – <b>Name</b>: teamsSDK.bin (Machu2011O)<br/><b>Beschreibung</b>: Stager-Binärdatei heruntergeladen und ausgeführt"] class file_teamsSDK_bin file process_curl_download["<b>Prozess</b> – curl lädt teamsSDK.bin herunter und führt es aus"] class process_curl_download process malware_teamsSDK["<b>Malware</b> – <b>Name</b>: teamsSDK<br/><b>Beschreibung</b>: kontaktiert C2 nach Ausführung"] class malware_teamsSDK malware service_go_http["<b>Dienst</b> – Go-basierter HTTP-Server<br/><b>Port</b>: 80/443<br/><b>Endpunkt</b>: /info (nicht authentifiziert)"] class service_go_http service process_c2_communication["<b>Prozess</b> – Kommuniziert mit C2 über HTTP-POST an /info"] class process_c2_communication process file_minst2_bin["<b>Datei</b> – <b>Name</b>: minst2.bin"] class file_minst2_bin file process_install_launchagent["<b>Prozess</b> – Installiert LaunchAgent plist für Persistenz"] class process_install_launchagent process malware_fake_onedrive["<b>Malware</b> – Gefälschte „OneDrive“-Binärdatei, die beim Login gestartet wird"] class malware_fake_onedrive malware tool_macrasv2["<b>Werkzeug</b> – <b>Name</b>: macrasv2<br/><b>Beschreibung</b>: extrahiert Schlüsselbund-Einträge, Browser-Passwörter, Cookies, Erweiterungen"] class tool_macrasv2 tool process_keychain_extraction["<b>Prozess</b> – Extrahiert macOS-Schlüsselbund- und Browserdaten"] class process_keychain_extraction process action_discovery_system_info["<b>Aktion</b> – <b>T1082 Systeminformationssammlung</b><br/>Sammlung von CPU-ID, Hostname, Benutzer, installierte Apps"] class action_discovery_system_info action action_discovery_software["<b>Aktion</b> – <b>T1518 Software-Ermittlung</b><br/>Erfasst installierte Browser und Erweiterungen"] class action_discovery_software action service_telegram_bot["<b>Dienst</b> – Telegram-Bot-API<br/><b>Zweck</b>: Empfang exfiltrierter Anmeldedaten"] class service_telegram_bot service process_exfiltration["<b>Prozess</b> – Sendet gesammelte Daten an Telegram-Bot"] class process_exfiltration process action_content_injection["<b>Aktion</b> – <b>T1659 Inhaltsinjektion</b><br/>Nicht authentifizierter /info-Endpunkt erlaubt beliebiges Hochladen von Dateien"] class action_content_injection action action_dynamic_resolution["<b>Aktion</b> – <b>T1568 Dynamische Auflösung</b><br/>Löst C2-Domain zur Laufzeit auf"] class action_dynamic_resolution action %% Verbindungen initial_access_user_execution –>|verwendet| tool_curl tool_curl –>|lädt| file_teamsSDK_bin herunter file_teamsSDK_bin –>|ausgeführt durch| process_curl_download process_curl_download –>|führt aus| malware_teamsSDK malware_teamsSDK –>|kommuniziert mit| service_go_http service_go_http –>|empfängt Daten über| process_c2_communication process_c2_communication –>|löst aus| file_minst2_bin file_minst2_bin –>|installiert| process_install_launchagent process_install_launchagent –>|erstellt| malware_fake_onedrive malware_fake_onedrive –>|ausgeführt beim Login| action_discovery_system_info action_discovery_system_info –>|führt zu| action_discovery_software action_discovery_software –>|liefert Daten an| tool_macrasv2 tool_macrasv2 –>|führt aus| process_keychain_extraction process_keychain_extraction –>|gibt Daten an| process_exfiltration process_exfiltration –>|sendet an| service_telegram_bot malware_teamsSDK –>|ermöglicht| action_content_injection action_content_injection –>|erlaubt| file_minst2_bin malware_teamsSDK –>|ermöglicht| action_dynamic_resolution action_dynamic_resolution –>|löst auf| service_go_http "
Attack Flow
Erkennungen
MacOS Verdächtige Tmp-Ordner-Dateiberechtigungsänderung (über cmdline)
Anzeigen
Verdächtiger Curl-Ausführungsversuch [MacOS] (über cmdline)
Anzeigen
IOCs (HashSha256) zur Erkennung: Nordkoreas Safari: Jagd auf RATs
Anzeigen
Erkennung der Mach-O Man Malware-Kit-Bereitstellung [Linux-Prozesserstellung]
Anzeigen
Simulation Execution
Voraussetzung: Der Telemetrie- und Ausgangszustand-Preflight-Check muss bestanden haben.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (T1546.006 / T1587.001), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle spiegeln eine realistische „Leben-von-dem-Land“-Bereitstellung der Mach-O Man-Binärdateien wider.
-
Angriffsbericht und Befehle:
- Ein Angreifer, der bereits Fuß auf dem macOS-Host gefasst hat, kopiert die vier Mach-O Man Binärdateien von einem Staging-Verzeichnis (
/tmp/stage) in ein beschreibbares Verzeichnis (/usr/local/bin). - Die Binärdateien werden ausführbar gemacht und nacheinander gestartet, um die Initialisierungs-, Aufklärungs-, Persistenz- und Anmeldedaten-Diebstahl-Phasen des Kits zu simulieren.
- Persistenz wird durch Schreiben eines Launch Daemon plist erreicht, das auf
minst2.bin.
# Schritt 1 – Stage die Binärdateien (simuliert durch das Kopieren aus einem Test-Assets-Ordner) mkdir -p /usr/local/bin/macho cp ./assets/teamsSDK.bin /usr/local/bin/macho/ cp ./assets/D1YrHRTg.bin /usr/local/bin/macho/ cp ./assets/minst2.bin /usr/local/bin/macho/ cp ./assets/macrasv2 /usr/local/bin/macho/ # Schritt 2 – Machen Sie sie ausführbar chmod +x /usr/local/bin/macho/*.bin # Schritt 3 – Führen Sie die Stager- und Aufklärungs-Binärdateien aus /usr/local/bin/macho/teamsSDK.bin & /usr/local/bin/macho/D1YrHRTg.bin & # Schritt 4 – Installieren Sie die Persistenz (Launch Daemon) für minst2.bin cat <<'EOF' > /Library/LaunchDaemons/com.macho.minst2.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key><string>com.macho.minst2</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/macho/minst2.bin</string> </array> <key>RunAtLoad</key><true/> </dict> </plist> EOF sudo launchctl load -w /Library/LaunchDaemons/com.macho.minst2.plist # Schritt 5 – Führen Sie die Komponente für den Anmeldedatendiebstahl/-exfiltration aus /usr/local/bin/macho/macrasv2 & - Ein Angreifer, der bereits Fuß auf dem macOS-Host gefasst hat, kopiert die vier Mach-O Man Binärdateien von einem Staging-Verzeichnis (
-
Regression Test Script: (eigenständiges Bash-Skript, das die obigen Schritte reproduziert)
#!/usr/bin/env bash set -euo pipefail # --- VARIABLEN ------------------------------------------------- BIN_DIR="/usr/local/bin/macho" ASSET_DIR="$(pwd)/assets" PLIST="/Library/LaunchDaemons/com.macho.minst2.plist" # --- VORPRÜFUNG ------------------------------------------------- if [[ $(id -u) -ne 0 ]]; then echo "Das Skript erfordert Root-Rechte, um den Launch Daemon zu installieren. Erneut mit sudo ausführen." exit 1 fi # --- BINÄRDATEIEN BEREITSTELLEN ---------------------------------- mkdir -p "$BIN_DIR" for bin in teamsSDK.bin D1YrHRTg.bin minst2.bin macrasv2; do cp "$ASSET_DIR/$bin" "$BIN_DIR/$bin" chmod +x "$BIN_DIR/$bin" done # --- STAGER & RECON AUSFÜHREN ----------------------------------- "$BIN_DIR/teamsSDK.bin" & "$BIN_DIR/D1YrHRTg.bin" & # --- PERSISTENZ (Launch Daemon) ---------------------------------- cat <<'EOF' > "$PLIST" <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key><string>com.macho.minst2</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/macho/minst2.bin</string> </array> <key>RunAtLoad</key><true/> </dict> </plist> EOF launchctl load -w "$PLIST" # --- AUSFÜHREN DER COMPONENT FÜR ANMELDEDATENDIEBSTAHL ----------- "$BIN_DIR/macrasv2" & echo "Simulation ausgeführt – Warten Sie ein paar Sekunden, bis die Telemetrie angezeigt wird." -
Bereinigungsbefehle:
#!/usr/bin/env bash set -euo pipefail BIN_DIR="/usr/local/bin/macho" PLIST="/Library/LaunchDaemons/com.macho.minst2.plist" # Launch Daemon entladen if [[ -f "$PLIST" ]]; then sudo launchctl unload -w "$PLIST" sudo rm -f "$PLIST" fi # Alle verbliebenen bösartigen Prozesse beenden pkill -f teamsSDK.bin || true pkill -f D1YrHRTg.bin || true pkill -f minst2.bin || true pkill -f macrasv2 || true # Binärdateien entfernen sudo rm -rf "$BIN_DIR" echo "Bereinigung abgeschlossen."