SOC Prime Bias: Medium

16 Apr. 2026 16:46

Nordkoreas Safari-Kampagne liefert RATs

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Nordkoreas Safari-Kampagne liefert RATs
shield icon

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

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:

    1. 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).
    2. Die Binärdateien werden ausführbar gemacht und nacheinander gestartet, um die Initialisierungs-, Aufklärungs-, Persistenz- und Anmeldedaten-Diebstahl-Phasen des Kits zu simulieren.
    3. 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 &
  • 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."