Erste Recherchen zu JOKERSPY

Ein Überblick über JOKERSPY, das im Juni 2023 entdeckt wurde und benutzerdefinierte und Open-Source-macOS-Tools einsetzte, um eine Kryptowährungsbörse in Japan auszunutzen.

15 Minuten LesezeitAngriffsmuster, Kampagnen
Erste Untersuchungen entlarven JOKERSPY

Wichtigste Erkenntnisse

  • Dies ist eine erste Benachrichtigung über ein aktives Eindringen mit weiteren Details, die folgen werden
  • REF9134 nutzt benutzerdefinierte und Open-Source-Tools für Aufklärung und Führung und Kontrolle
  • Zu den Zielen dieser Aktivität gehört eine Kryptowährungsbörse in Japan

Präambel

In diesem Forschungsartikel wird ein kürzlich entdecktes Eindringen untersucht, das wir REF9134 nennen und bei dem die sh.py-Hintertür verwendet wird, um das macOS Swiftbelt-Enumerationstool bereitzustellen. sh.py und xcc wurden kürzlich von Bitdefender als JOKERSPY bezeichnet.

Konkret befasst sich diese Forschung mit:

  • Wie Elastic Security Labs die Aufklärung durch die Angreifergruppe identifizierte
  • Die Schritte des Angreifers, um die Erkennung mithilfe von xcc zu umgehen, die Installation der sh.py-Hintertür und die Bereitstellung von Enumerationstools

Ein tieferer Einblick in diesen Angriff wird möglicherweise zu einem späteren Zeitpunkt veröffentlicht.

Overview

Ende Mai 2023 löste ein Angreifer mit bestehendem Zugang zu einer bekannten japanischen Kryptowährungsbörse eine unserer diagnostischen Endpunktwarnungen aus, die die Ausführung einer Binärdatei ( xcc ) erkannte. xcc wird von Apple nicht als vertrauenswürdig eingestuft, und der Angreifer hat sich mit dem nativen macOS-Tool codesign selbst signiert. Obwohl diese Erkennung an sich nicht unbedingt harmlos war, fielen uns die Branche und die zusätzlichen Aktivitäten, die wir nach diesen ersten Warnungen beobachteten, ins Auge und veranlassten uns, genauer hinzusehen.

Nach der Ausführung von xcc haben wir beobachtet, dass der Bedrohungsakteur versucht, TCC-Berechtigungen zu umgehen, indem er seine eigene TCC-Datenbank erstellt und versucht, die vorhandene zu ersetzen. Am 1. Juni wurde ein neues Python-basiertes Tool gesehen, das aus demselben Verzeichnis wie xcc ausgeführt wurde und verwendet wurde, um ein Open-Source-macOS-Aufzählungstool nach der Ausnutzung namens Swiftbelt auszuführen.

Analyse

REF9134 handelt es sich um ein Eindringen in einen großen japanischen Kryptowährungsdienstleister, der sich auf den Austausch von Vermögenswerten für den Handel mit Bitcoin, Ethereum und anderen gängigen Kryptowährungen konzentriert.

Die xcc-Binärdatei

xcc ( d895075057e491b34b0f8c0392b44e43ade425d19eaaacea6ef8c5c9bd3487d8 ) ist eine selbstsignierte Binärdatei mit mehreren Architekturen, die in Swift geschrieben wurde und zur Auswertung aktueller Systemberechtigungen verwendet wird. Die von Elastic Security Labs beobachtete Version ist als XProtectCheck-55554944f74096a836b73310bd55d97d1dff5cd4 signiert und verfügt über eine Codesignatur, die öffentlich bekannten und nicht vertrauenswürdigen Nutzlasten ähnelt.

Um andere Binärdateien zu identifizieren, die mit derselben Kennung signiert sind, haben wir XProtectCheck-55554944f74096a836b73310bd55d97d1dff5cd4 in hexadezimal konvertiert und VirusTotal nach 3 zusätzlichen Beispielen durchsucht ( content:{5850726f74656374436865636b2d35353535343934346637343039366138333662373333313062643535643937643164666635636434} ).

Beide enthielten die gleiche Kernfunktionalität mit strukturellen Unterschieden. Diese Diskrepanzen können darauf hindeuten, dass diese Varianten von xcc entwickelt wurden, um Endpunktfunktionen zu umgehen, die die Ausführung beeinträchtigten.

Kurz nach der Erstellung von xcc beobachteten Forscher, dass der Bedrohungsakteur /Users/Shared/tcc.db über die vorhandene TCC-Datenbank /Library/Application Support/com.apple.TCC/TCC.db kopierte. Dies kann es der Bedrohung ermöglichen, TCC-Eingabeaufforderungen zu vermeiden, die für Systembenutzer sichtbar sind, während gleichzeitig ein Verzeichnis mit weitreichenden Dateischreibberechtigungen missbraucht wird.

XCode-Artefakte

Während der Analyse dieser Binärdatei identifizierten die Forscher zwei einzigartige Pfade, /Users/joker/Developer/Xcode/DerivedData/ und /Users/joker/Downloads/Spy/XProtectCheck/XProtectCheck/ , die sich als anomal herausstellten. Der Standardpfad zum Kompilieren von Code mit Xcode lautet /Users/[Benutzername]/Entwickler/Xcode/DerivedData.

Missbrauch von TCC

Diese Introspektionsberechtigungen werden von der nativen TCC-Funktion (Transparency, Consent, and Control) verwaltet. Die Forscher stellten fest, dass xcc die Berechtigungen FullDiskAccess und ScreenRecording überprüft und überprüft, ob der Bildschirm derzeit gesperrt ist und ob es sich bei dem aktuellen Prozess um einen vertrauenswürdigen Client für die Barrierefreiheit handelt.

Nach erfolgreicher Ausführung in unserer Detonate-Umgebung wurden die folgenden Ergebnisse angezeigt:

Nachdem die benutzerdefinierte TCC-Datenbank am erwarteten Speicherort platziert wurde, führte der Bedrohungsakteur die xcc-Binärdatei aus.

Erstzugriff

Die xcc-Binärdatei wurde über bash von drei separaten Prozessen ausgeführt

  • /Applications/IntelliJ IDEA.app/Contents/MacOS/idea
  • /Applications/iTerm.app/Contents/MacOS/iTerm2
  • /Applications/Visual Studio Code.app/Contents/MacOS/Electron.

Obwohl wir immer noch untersuchen und weiterhin Informationen sammeln, sind wir der festen Überzeugung, dass der ursprüngliche Zugriff auf diese Malware ein bösartiges oder hintertüriges Plugin oder eine Abhängigkeit von Drittanbietern war, die dem Bedrohungsakteur Zugriff gewährte. Dies stimmt mit der Verbindung überein, die von den Forschern von Bitdefender hergestellt wurde, die die hartcodierte Domain, die in einer Version der sh.py-Hintertür gefunden wurde, mit einem Tweet über einen infizierten macOS-QR-Code-Reader korrelierten, bei dem festgestellt wurde, dass er eine bösartige Abhängigkeit aufwies.

Bereitgestellte kryptografische Bibliotheken

Am 31. Mai beobachteten Forscher drei nicht-native DyLibs , die in /Users/shared/keybag/ bereitgestellt wurden, namens libcrypto.1.0.0.dylib , libncursesw.5.dylib und libssl.1.0.0.dylib. Unter MacOS werden Schlüssel für den Datenschutz von Dateien und Schlüsselbunden in Schlüsseltaschen gespeichert und beziehen sich auf iOS, iPadOS, watchOS und tvOS. Zu diesem Zeitpunkt schlagen Forscher vor, dass diese Inszenierung einer Umgehung der Verteidigung dient, und spekulieren, dass sie nützliche Schwachstellen enthalten könnten. Der Bedrohungsakteur plant möglicherweise, diese Schwachstellen in ansonsten gepatchte Systeme oder Anwendungen einzuführen.

Die sh.py Hintertür

sh.py handelt sich um eine Python-Hintertür, die zum Bereitstellen und Ausführen anderer Post-Exploitation-Funktionen wie Swiftbelt verwendet wird .

Die Malware lädt ihre Konfiguration von ~/Public/Safari/sar.dat. Die Konfigurationsdatei enthält wichtige Elemente wie Command-and-Control-URLs (C2), einen Sleep-Timer für Beaconing-Zwecke (der Standardwert beträgt 5 Sekunden) und eine eindeutige neunstellige Kennung, die jedem Agenten zugewiesen ist.

Im Rahmen ihres periodischen Beaconing sammelt und überträgt die Malware verschiedene Systeminformationen. Zu den gesendeten Informationen gehören:

  • Hostname
  • Nutzername
  • Domain-Name
  • Aktuelles Verzeichnis
  • Der absolute Pfad der ausführbaren Binärdatei
  • Version des Betriebssystems
  • Ist ein 64-Bit-Betriebssystem
  • Ist ein 64-Bit-Prozess
  • Python-Version

Nachfolgend finden Sie eine Tabelle mit den verschiedenen Befehlen, die von der Backdoor ausgeführt werden können:

BefehlBeschreibung
skStoppen Sie die Ausführung der Hintertür
lListen Sie die Dateien des als Parameter angegebenen Pfads auf
cAusführen und Zurückgeben der Ausgabe eines Shell-Befehls
CDWechseln Sie das Verzeichnis und geben Sie den neuen Pfad zurück
XsFühren Sie einen Python-Code aus, der als Parameter im aktuellen Kontext angegeben ist
xsiDekodieren Sie einen Base64-codierten Python-Code, der als Parameter angegeben ist, kompilieren Sie ihn und führen Sie ihn dann aus
rEntfernen einer Datei oder eines Verzeichnisses aus dem System
eAusführen einer Datei aus dem System mit oder ohne Parameter
uLaden Sie eine Datei auf das infizierte System hoch
dLaden Sie eine Datei vom infizierten System herunter
gAbrufen der Konfiguration der aktuellen Malware in der Konfigurationsdatei
wÜberschreiben Sie die Konfigurationsdatei der Schadsoftware mit neuen Werten.

SWIFTBELT

Am 1. Juni registrierte das kompromittierte System eine Signaturwarnung für MacOS.Hacktool.Swiftbelt, eine MacOS-Aufzählungsfunktion, die von SeatBelt inspiriert und vom Red-Teamer Cedric Owens erstellt wurde. Im Gegensatz zu anderen Enumerationsmethoden ruft Swiftbelt Swift-Code auf, um das Erstellen von Befehlszeilenartefakten zu vermeiden. Bemerkenswert ist, dass xcc-Varianten auch mit Swift geschrieben werden.

Die Signaturwarnung wies darauf hin, dass Swiftbelt nach /Users/shared/sb geschrieben und mit dem Bash-Shell-Interpreter sh ausgeführt wurde. Die vollständige Befehlszeile, die von den Forschern beobachtet wurde, lautete Users/Shared/sb /bin/sh -c /users/shared/sb \> /users/shared/sb.log 2\>&1 , was zeigt, dass der von den Forschern erfasste Bedrohungsakteur zu sb.log führte, während die Fehler an STDOUT weitergeleitet wurden.

Diamant-Modell

Elastic Security verwendet das Diamond-Modell , um die Beziehungen auf hoher Ebene zwischen den Angreifern, Fähigkeiten, der Infrastruktur und den Opfern von Eindringlingen zu beschreiben. Während das Diamond-Modell am häufigsten bei einzelnen Eindringlingen verwendet wird und Activity Threading (Abschnitt 8) nutzt, um Beziehungen zwischen Vorfällen zu schaffen, wird ein Angreifer-zentrierter (Abschnitt 7.1.4) Der Ansatz ermöglicht einen, wenn auch überladenen, einzelnen Diamanten.

Beobachtete Taktiken und Techniken

MITRE ATT&CK Taktik

Taktiken stellen das Warum einer Technik oder Untertechnik dar. Es ist das taktische Ziel des Gegners: der Grund für die Ausführung einer Aktion. Dies sind die Taktiken, die von Elastic Security Labs in dieser Kampagne beobachtet werden:

MITRE ATT&CK Techniques / Sub techniques

Techniken und Untertechniken stellen dar, wie ein Angreifer ein taktisches Ziel erreicht, indem er eine Aktion ausführt. Dies sind die Techniken, die Elastic Security Labs in dieser Kampagne beobachtet hat:

Erkennungslogik

YARA

Elastic Security hat YARA-Regeln erstellt, um diese Aktivität zu identifizieren. Im Folgenden finden Sie YARA-Regeln zur Identifizierung der JOKERSPY-Backdoor und des SwiftBelt-Tools.

rule Macos_Hacktool_JokerSpy {
    meta:
        author = "Elastic Security"
        creation_date = "2023-06-19"
        last_modified = "2023-06-19"
        os = "MacOS"
        arch = "x86"
        category_type = "Hacktool"
        family = "JokerSpy"
        threat_name = "Macos.Hacktool.JokerSpy"
        reference_sample = "d895075057e491b34b0f8c0392b44e43ade425d19eaaacea6ef8c5c9bd3487d8"
        license = "Elastic License v2"

    strings:
        $str1 = "ScreenRecording: NO" fullword
        $str2 = "Accessibility: NO" fullword
        $str3 = "Accessibility: YES" fullword
        $str4 = "eck13XProtectCheck"
        $str5 = "Accessibility: NO" fullword
        $str6 = "kMDItemDisplayName = *TCC.db" fullword
    condition:
        5 of them
}
rule MacOS_Hacktool_Swiftbelt {
    meta:
        author = "Elastic Security"
        creation_date = "2021-10-12"
        last_modified = "2021-10-25"
        threat_name = "MacOS.Hacktool.Swiftbelt"
        reference_sample = "452c832a17436f61ad5f32ee1c97db05575160105ed1dcd0d3c6db9fb5a9aea1"
        os = "macos"
        arch_context = "x86"
        license = "Elastic License v2"

    strings:
        $dbg1 = "SwiftBelt/Sources/SwiftBelt"
        $dbg2 = "[-] Firefox places.sqlite database not found for user"
        $dbg3 = "[-] No security products found"
        $dbg4 = "SSH/AWS/gcloud Credentials Search:"
        $dbg5 = "[-] Could not open the Slack Cookies database"
        $sec1 = "[+] Malwarebytes A/V found on this host"
        $sec2 = "[+] Cisco AMP for endpoints found"
        $sec3 = "[+] SentinelOne agent running"
        $sec4 = "[+] Crowdstrike Falcon agent found"
        $sec5 = "[+] FireEye HX agent installed"
        $sec6 = "[+] Little snitch firewall found"
        $sec7 = "[+] ESET A/V installed"
        $sec8 = "[+] Carbon Black OSX Sensor installed"
        $sec9 = "/Library/Little Snitch"
        $sec10 = "/Library/FireEye/xagt"
        $sec11 = "/Library/CS/falcond"
        $sec12 = "/Library/Logs/PaloAltoNetworks/GlobalProtect"
        $sec13 = "/Library/Application Support/Malwarebytes"
        $sec14 = "/usr/local/bin/osqueryi"
        $sec15 = "/Library/Sophos Anti-Virus"
        $sec16 = "/Library/Objective-See/Lulu"
        $sec17 = "com.eset.remoteadministrator.agent"
        $sec18 = "/Applications/CarbonBlack/CbOsxSensorService"
        $sec19 = "/Applications/BlockBlock Helper.app"
        $sec20 = "/Applications/KextViewr.app"
    condition:
        6 of them
}

Referenzen

In der obigen Studie wurde auf Folgendes Bezug genommen:

Beobachtungen

Die folgenden Observablen wurden in dieser Studie diskutiert.

ObservableTypNameReferenz
app.influmarket[.]orgDomainsh.py Domain
d895075057e491b34b0f8c0392b44e43ade425d19eaaacea6ef8c5c9bd3487d8SHA-256/Benutzer/Freigegeben/xccMacos.Hacktool.JokerSpy
8ca86f78f0c73a46f31be366538423ea0ec58089f3880e041543d08ce11fa626SHA-256/Benutzer/Freigegeben/sbMacOS.Hacktool.Swiftbelt
aa951c053baf011d08f3a60a10c1d09bbac32f332413db5b38b8737558a08dc1SHA-256/Benutzer/Freigegeben/sh.pysh.py Skript