SOC Prime Bias: Mittel

30 März 2026 15:41

Sag meinen Namen: Wie MioLab ein MacOS-Stealer-Imperium aufbaut

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Sag meinen Namen: Wie MioLab ein MacOS-Stealer-Imperium aufbaut
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

MioLab ist ein kommerziell vertriebenes macOS-Infostealer, das auf hochkarätige Opfer wie Software-Ingenieure, Führungskräfte und Kryptowährungsinvestoren abzielt. Es wird durch Malvertising und eine ClickFix-Infektionskette verbreitet und startet dann eine kompakte C-basierte Binärdatei, die Browser-Anmeldeinformationen, Passwortmanager-Datensätze, Kryptowährungs-Wallet-Dateien und macOS-Schlüsselbund-Daten stiehlt. Die gestohlenen Informationen werden in einem temporären Verzeichnis abgelegt, in ein Archiv komprimiert und mit einer curl-POST-Anfrage an eine bösartige Domain exfiltriert. Der Betrieb umfasst auch ein webbasiertes Kontrollpanel, Proxy-Unterstützung und API-Zugang, der für große Cybercrime-Gruppen optimiert ist.

Untersuchung

Der Bericht skizziert die statischen Eigenschaften der Malware, ihr Laufzeitverhalten und die breite Palette der angegriffenen Datenquellen, einschließlich Chrome, Firefox, Safari, Telegram, Discord, Apple Notes und Hardware-Wallet-Anwendungen. Die Infrastruktur-Analyse weist auf bulletproof Hosting in Russland, wiederholte Domainrotation und ein gemeinsames Backend hin, das mit einem Web3-Token-Airdrop-Phishing-Betrieb verbunden ist. Ermittler extrahierten auch Schlüsselindikatoren wie Befehlszeilen, temporäre Ordnerpfade und Exfiltrations-URLs.

Abwehrmaßnahmen

Verteidiger sollten Benutzer darin schulen, gefälschte Anmeldeaufforderungen zu erkennen, den Missbrauch eingebauter Binärdateien wie dscl, osascript und curl überwachen, bekannte bösartige Domains blockieren, Codesignierung durchsetzen und den Zugriff auf Browser-Profil-Daten und Schlüsselbund-Dateien einschränken. Erkennungslogik sollte sich auch auf die Muster der Prozessausführung der Malware und das Verhalten der Archivierung unter /var/folders konzentrieren.

Reaktion

Wenn MioLab erkannt wird, isolieren Sie den betroffenen Mac, erfassen Sie flüchtigen Speicher und Dateisystem-Artefakte, blockieren Sie die zugehörigen C2-Domains und IPs, widerrufen Sie exponierte Anmeldeinformationen und Kryptowährungs-Wallet-Schlüssel und führen Sie eine vollständige forensische Überprüfung aller angegriffenen Datenstandorte durch. Der Inhalt der Endpunkt-Erkennung sollte mit den beobachteten Befehlszeilen aktualisiert werden und die Teams sollten nach ähnlichen Infektionsketten in der Umgebung suchen.

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Malware node malware_miolab["<b>Malware</b> – <b>Name</b>: MioLab Infostealer<br/><b>Description</b>: Multiu2011stage macOS infostealer"] class malware_miolab malware %% Initial Access initial_access["<b>Action</b> – <b>T1204.002 User Execution</b>: Victim opens malicious DMG or Unix executable delivered via social engineering"] class initial_access action %% Execution execution_unix_shell["<b>Action</b> – <b>T1059.004 Unix Shell</b>: Payload runs shell commands via sh, system and AppleScript"] class execution_unix_shell action %% Defense Evasion defense_evasion["<b>Action</b> – <b>T1564.011 Hide Artifacts</b>: Terminates Terminal, removes quarantine attributes and applies XOR string obfuscation (T1027)"] class defense_evasion action %% Discovery discovery_info["<b>Action</b> – <b>T1589 Gather Victim Host Information</b>: Uses <code>system_profiler</code> to collect hardware and OS details"] class discovery_info action %% Credential Access credential_access["<b>Action</b> – <b>T1056 Input Capture</b> and <b>T1555.001/002 Credential Dumping</b>: Shows fake System Preferences password dialog via AppleScript, validates with dscl, dumps Keychain files and extracts browser databases, cookies and session tokens"] class credential_access action %% Collection collection_staging["<b>Action</b> – <b>T1074.001 Local Data Staging</b> and <b>T1560 Archive Collected Data</b>: Gathers files, notes and crypto wallets, stages in temporary directory and compresses into ZIP archive"] class collection_staging action %% Exfiltration exfiltration_curl["<b>Action</b> – <b>T1041 Exfiltration Over C2 Channel</b> and <b>T1102.003 Web Protocols</b>: Uploads ZIP archive via <code>curl</code> POST to malicious web service"] class exfiltration_curl action %% Command and Control c2_proxy["<b>Action</b> – <b>T1090.002 Proxy</b> and <b>T1659 Dynamic Content Injection</b>: Traffic routed through attackeru2011controlled proxy servers and injection domains"] class c2_proxy action %% Tool nodes tool_applescript["<b>Tool</b> – <b>Name</b>: AppleScript<br/><b>Purpose</b>: Displays credentialu2011prompt UI"] class tool_applescript tool tool_dscl["<b>Tool</b> – <b>Name</b>: dscl<br/><b>Purpose</b>: Validates captured credentials"] class tool_dscl tool tool_curl["<b>Tool</b> – <b>Name</b>: curl<br/><b>Purpose</b>: Sends collected archive to remote server"] class tool_curl tool tool_system_profiler["<b>Tool</b> – <b>Name</b>: system_profiler<br/><b>Purpose</b>: Retrieves system information"] class tool_system_profiler tool %% Connections showing the attack flow malware_miolab –>|delivers| initial_access initial_access –>|triggers| execution_unix_shell execution_unix_shell –>|enables| defense_evasion defense_evasion –>|allows| discovery_info discovery_info –>|provides data to| credential_access credential_access –>|uses| tool_applescript credential_access –>|uses| tool_dscl credential_access –>|leads to| collection_staging collection_staging –>|compresses and stages| exfiltration_curl exfiltration_curl –>|uses| tool_curl exfiltration_curl –>|sends data to| c2_proxy c2_proxy –>|routes through| tool_curl %% Styling assignments class initial_access,execution_unix_shell,defense_evasion,discovery_info,credential_access,collection_staging,exfiltration_curl,c2_proxy action class tool_applescript,tool_dscl,tool_curl,tool_system_profiler tool class malware_miolab malware "

Angriffsablauf

Simulations-Ausführung

Voraussetzung: Der Telemetrie- und Basislinientest vor dem Start muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und das Narrativ MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennung erwartet wird.

  • Angriffs-Narrativ & Befehle:

    1. Beenden der Terminal-Session des Benutzers – Die Malware deaktiviert zunächst die Standard-Eingabeaufforderung, um den Benutzer in einen kontrollierten UI-Ablauf zu zwingen.
      killall Terminal
    2. Präsentieren einer gefälschten Anmeldeaufforderung – Unter Verwendung von osascript, zeigt der Angreifer ein AppleScript-Dialogfenster an, das eine Systemeinstellungen-Warnung nachahmt und den Benutzer dazu verleitet, sein Passwort einzugeben.
      osascript -e 'display dialog "Sie müssen die Systemeinstellungen konfigurieren, bevor Sie diese Anwendung ausführen können." default answer "" with hidden answer'
    3. Erfasste Anmeldeinformationen validieren – Das erfasste Passwort wird mit dem lokalen Verzeichnisdienst verifiziert durch dscl . -authonly. Eine erfolgreiche Rückmeldung bestätigt, dass die Anmeldeinformationen korrekt sind.
      dscl . -authonly "$USER" "$HARVESTED_PASSWORD"
    4. Exfiltrations-Payload bereitstellen und komprimieren – Der Angreifer archiviert die erfassten Daten (z.B. ~/.ssh/id_rsa) in ein Zip-Archiv unter Verwendung von ditto, um sie für den Upload vorzubereiten.
      ditto -c -k --sequesterRsrc /var/folders/*/DataStaging /tmp/exfil.zip
  • Regressionstest-Skript: (Bash – führt die genaue Sequenz aus, um die Regel auszulösen)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] Beginn der MioLab-Simulation..."
    
    # 1. Terminal beenden
    echo "[+] Terminal wird beendet"
    killall Terminal
    
    # 2. Fake AppleScript-Aufforderung (simuliert – keine Benutzerinteraktion)
    echo "[+] Zeigt gefälschte Anmeldeaufforderung an"
    osascript -e 'display dialog "Sie müssen die Systemeinstellungen konfigurieren, bevor Sie diese Anwendung ausführen können." default answer "" with hidden answer' >/dev/null 2>&1
    
    # 3. Anmeldeinformationen verifizieren (unter Verwendung des aktuellen Benutzers & eines Dummy-Passworts)
    echo "[+] Erfasste Anmeldeinformationen werden verifiziert"
    HARVESTED_PASSWORD="P@ssw0rd!" # In einem realen Szenario wäre dies das gestohlene Passwort
    dscl . -authonly "$USER" "$HARVESTED_PASSWORD" || true # Fehler für Demo ignorieren
    
    # 4. Datenbereitstellung & -komprimierung
    echo "[+] Stagierte Daten werden komprimiert"
    STAGING_DIR=$(mktemp -d)
    echo "Beispieldaten" > "$STAGING_DIR/sample.txt"
    ditto -c -k --sequesterRsrc "$STAGING_DIR" /tmp/exfil.zip
    
    echo "[*] Simulation abgeschlossen. Überprüfen Sie SIEM auf Alarm."
  • Bereinigungskommandos: (Entfernt generierte Artefakte und stellt die Sitzung wieder her)

    #!/usr/bin/env bash
    set -euo pipefail
    
    echo "[*] Reinigung von MioLab-Simulations-Artefakten..."
    
    # Entferne das gefälschte Zip-Archiv
    rm -f /tmp/exfil.zip
    
    # Entferne das temporäre Staging-Verzeichnis, falls vorhanden
    [[ -d "$STAGING_DIR" ]] && rm -rf "$STAGING_DIR"
    
    # Optional: Terminal für den Benutzer neu starten
    open -a Terminal
    
    echo "[*] Bereinigung abgeschlossen."