Zusammenfassung
- TMPN Stealer basiert auf dem Open-Source-Projekt „Skuld Stealer“
- Verwendet Discord Webhooks für die Kommunikation
- Injiziert einen JS-Payload in Discord
- Stiehlt Daten aus Browsern und Krypto-Währungs-Wallets
- Stiehlt lokale Dateien und Systeminformationen
Einleitung
Skuld, auch bekannt als TMPN Stealer, ist eine in Golang (Go) geschriebene Malware. Sie tauchte erstmals im Mai 2023 auf und stiehlt Informationen. Die Malware stammt von „Deathined“, einem möglichen Neuling in der Malware-Entwicklerszene, der sich für die Funktionen von Skuld von Open-Source-Projekten inspirieren ließ. Die Malware wird über verschiedene Wege verbreitet, darunter bösartige Links und kompromittierte Websites, um Systeme auf der ganzen Welt zu infizieren.
Technische Details
Überblick
Die untersuchte Variante ist in Go geschrieben und hat einen gefälschten Kompilierungszeitstempel. Die Datei ist 14,4 MB groß, was einer normalen Größe für in Go geschriebene Programme entspricht.

Auf GitHub gibt es eine Seite, die wahrscheinlich den Quellcode des TMPN Stealers enthielt, aber nicht mehr verfügbar ist: https://github.com/DextenXD/TMPN-Stealer

Obwohl diese Seite nicht mehr verfügbar ist, haben wir während der Analyse einen Link im Code gefunden, der zu einem anderen Projekt führt: Skuld Stealer. Dabei handelt es sich um ein Open-Source-Projekt, das einen auf Discord ausgerichteten Stealer demonstriert. Auch die Beschreibung ist der von TMPN sehr ähnlich:

Konfiguration
Zu Beginn der Ausführung lädt Skuld eine Konfiguration in den Speicher, die mehrere Zeichenketten enthält. Die erste ist „webhook“ und die zweite enthält die URL:
hxxps://discord.com/api/webhooks/1272963856322527274/PGGfe9V7To17wrSy0T7qE8EpNjFXfms2KY4A421gXmXwMcrPdaeG0Z3DB2T9eYE
Dies bezieht sich auf Discord-Webhooks, die es ermöglichen, ohne großen Aufwand Nachrichten in Discord-Kanälen zu posten. Dieser Mechanismus ist sehr nützlich, um die Kontrolle zu organisieren, da Webhooks keinen Bot-Benutzer und keine Authentifizierung erfordern.
Der nächste String, der in den Speicher geladen wird, verweist auf eine BTC-Wallet:

Tatsächlich unterstützt der Quellcode mehrere Krypto-Währungs-Wallets:

Vorbereitung
Skuld Stealer führt vor der Ausführung der eigentlichen Schaddaten einige Vorbereitungen durch:

Zuerst prüft Skuld Stealer, ob die Malware bereits ausgeführt wird, indem der spezifische Mutex-Name überprüft wird:

Dann wird die Funktion zur Umgehung der Benutzerkontensteuerung (User Account Control, UAC) ausgeführt. Anschließend wird geprüft, ob der Prozess erweiterte Berechtigungen hat oder diese erweitert werden können und schließlich wird die Funktion zur Berechtigungserweiterung ausgeführt. Diese Funktion setzt den Malware-Pfad auf den Registry-Schlüssel des Dienstprogramms fodhelper.exe:
HKCU\\Software\\Classes\\ms-settings\\shell\\open\\command\\DelegateExecute
Dadurch öffnet fodhelper.exe das UAC-Fenster, aber da der Registry-Schlüssel geändert wurde, wird nach dem Akzeptieren der Meldung eine Variante mit erweiterten Berechtigungen ausgeführt. Der alte Prozess löscht dann den Registry-Schlüssel von Fodhelper und wird beendet.
Zur Tarnung verwendet Skuld Stealer den Befehl „attrib +h +s“, der der Malware die Attribute „hidden“ und „system“ zuweist. Außerdem wird die Funktion „GetConsoleWindow“ verwendet, um den Deskriptor des aktuellen Fensters zu erhalten, und die Funktion „ShowWindow“, um den Anzeigezustand des Fensters auf „hidden“ zu setzen.
Die Malware fügt einen Registry-Schlüssel zu „Software\Microsoft\Windows\CurrentVersion\Run“ hinzu, der auf dem System des Opfers verbleibt. Der Schlüssel hat den Namen „Realtek HD Audio Universal Service“ und den nächsten Wert: '%APPDATA%\Microsoft\Protect\SecurityHealthSystray.exe'. Anschließend wird geprüft, ob die Datei unter diesem Pfad vorhanden ist. Wenn nicht, wird sie dorthin kopiert.
Als Nächstes überprüft Skuld Stealer, ob die Malware auf einer virtuellen Maschine ausgeführt wird. Dazu überprüft die Malware den Hostnamen, den Benutzernamen, die MAC-Adresse, die IP-Adresse und die Hardware-ID und vergleicht diese mit den eigenen gespeicherten Listen. Stimmt einer der Strings überein, wird die Ausführung abgebrochen. Als Nächstes wird überprüft, ob ein Debugger mit dem Prozess verbunden ist.
Schließlich versucht die Malware, die Antivirus-Software zu umgehen. Dazu wird der eigene Pfad von der Überprüfung durch Microsoft Windows Defender ausgenommen und Microsoft Windows Defender mit PowerShell-Befehlen deaktiviert:
powershell", "Set-MpPreference", "-DisableIntrusionPreventionSystem", "$true", "-DisableIOAVProtection", "$true", "-DisableRealtimeMonitoring", "$true", "-DisableScriptScanning", "$true", "-EnableControlledFolderAccess", "Disabled", "-EnableNetworkProtection", "AuditMode", "-Force", "-MAPSReporting", "Disabled", "-SubmitSamplesConsent", "NeverSend"
powershell", "Set-MpPreference", "-SubmitSamplesConsent", "2
"%s\\Windows Defender\\MpCmdRun.exe", os.Getenv("ProgramFiles")), "-RemoveDefinitions", "-All
Der letzte Teil dieser Funktion besteht darin, die Verbindung zu den folgenden Websites zu blockieren:
"virustotal.com", "avast.com", “totalav.com", "scanguard.com", "totaladblock.com", "pcprotect.com", "mcafee.com", "bitdefender.com", "us.norton.com", "avg.com", "malwarebytes.com", "pandasecurity.com", "avira.com", "norton.com", "eset.com", "zillya.com", "kaspersky.com", "usa.kaspersky.com", "sophos.com", "home.sophos.com", "adaware.com", "bullguard.com", "clamav.net", "drweb.com", "emsisoft.com", "f-secure.com", "zonealarm.com", "trendmicro.com", "ccleaner.com"
Injektion in Discord
Bei der Eingabe der Injektionsfunktion führt Skuld Stealer zunächst zwei Umgehungsfunktionen aus. Die erste ist eine Modifikation des Discord Clients und dient der Umgehung von BetterDiscord. Neben verschiedenen Plugins, Emotes und Entwicklertools enthält es auch Sicherheitsverbesserungen. Zur Umgehung sucht und öffnet die Malware die Datei „AppData\Roaming\BetterDiscord\data\betterdiscord.asar“ und ersetzt alle vorhandenen „api/webhooks“-Strings durch „ByHackirby“.

Anschließend wird versucht, den Discord Token Protector zu umgehen. Zuerst wird geprüft, ob dieses Modul auf dem System vorhanden ist. Wenn ja, wird die Datei „AppData\Roaming\DiscordTokenProtector\config.json“ geöffnet und die folgenden Werte geändert:
"auto_start" = false
"auto_start_discord" = false
"integrity" = false
"integrity_allowbetterdiscord" = false
"integrity_checkexecutable" = false
"integrity_checkhash" = false
"integrity_checkmodule" = false
"integrity_checkscripts" = false
"integrity_checkresource" = false
"integrity_redownloadhashes" = false
"iterations_iv" = 364
"iterations_key" = 457
"version" = 69420
Dann führt es eine Injektionsfunktion aus. Zuerst prüft es das Vorhandensein von Discord auf dem PC, lädt die duplizierten Datenblöcke und extrahiert einige Daten daraus. Anschließend werden alle extrahierten Daten zusammengeführt und als Suchfilter an die Funktion „filepath.Glob“ übergeben.

Anschließend wird die Datei „injection.js“ von Skuld Github heruntergeladen. Der Dateiname wird in „coreinedex.js“ geändert und in den zuvor gefundenen Discord-Pfad geschrieben. Dieses Skript erstellt Hooks und fängt Daten wie Login-, Registrierungs- und Zwei-Faktor-Authentifizierungsanfragen, PayPal-Guthaben und E-Mail- bzw. Passwortänderungen ab. Sobald eine Information abgefangen wird, wird das Ergebnis im JSON-Format an den Server gesendet.

Injektion in Krypto-Währungs-Wallets
Die Injektion betrifft zwei Krypto-Währungs-Wallets: Exodus und Atomic. Diese Methode zielt darauf ab, Dateien mit der Endung „.asar“ herunterzuladen und zu speichern. Dabei handelt es sich um ein Archiv, das von Krypto-Währungs-Wallets verwendet wird, aber Daten von den Angreifer:innen enthält.

Ausspionieren von Systeminformationen
Nachdem beide Injektionen durchgeführt wurden, beginnt Skuld Stealer Informationen über das System zu sammeln. Dabei führt die Malware eine Reihe von Funktionen aus, um Informationen wie CPU, Laufwerke, GPU, Netzwerk, Betriebssystem, Windows-Lizenzschlüssel, RAM usw. zu erfassen.

Alle diese Daten werden im JSON-Format gespeichert und an den Server gesendet. Zusätzlich zu den Rohdaten wird ein Link zum Bild in das Feld „avatar_url“ eingefügt. Dieser Avatar wird vermutlich im Discord Bot der Cyberkriminellen verwendet.

Browser
Die Browserfunktion der Malware zielt auf zwei Arten von Browsern ab und ist abhängig von der jeweiligen Browser-Engine (Chromium- oder Gecko-basiert). Beide Funktionen haben unterschiedliche gespeicherte Browsernamen und -pfade. Die Funktionen, die Daten wie Anmeldedaten, Cookies, Kreditkarten, Downloads und Verlauf extrahieren, sind bei allen Browsern gleich.

Discord Token
Um an Discord Tokens zu gelangen, scannt Skuld Stealer wiederum die Browser und durchsucht deren Datenbanken nach bestimmten Strings. Die Ergebnisse werden dann an die Funktion übergeben, die mit der Discord API interagiert und überprüft, ob die gefundenen Token gültig sind. Alle Ergebnisse werden im JSON-Format gespeichert und an den Server gesendet.

Zwei-Faktor-Authentifizierungs-Codes für Discord
Discord verfügt über einen Mechanismus, der zum Einsatz kommt, wenn Benutzer:innen den Zugang zu ihrem Zwei-Faktor-Authentifizierungsgerät verlieren. Die Datei „discord_backup_codes.txt“ enthält Codes, die in solchen Situationen verwendet werden können.

Die Malware-Variante sucht nach dieser Datei in folgenden Benutzerordnern: Desktop, Downloads, Dokumente, Videos, Bilder, Musik und OneDrive.
Gemeinsame Dateien
Diese Funktion sucht in den nachstehenden Ordnern nach bestimmten Schlüsselbegriffen im Dateinamen und in der Dateierweiterung: Desktop, Downloads, Dokumente, Videos, Bilder, Musik und OneDrive. Wenn die Datei sowohl den Schlüsselbegriff als auch die Dateierweiterung enthält, wird sie in den neuen Ordner kopiert.

Dieser Ordner wird dann mit einem Kennwort geschützt, das aus 16 zufälligen Zeichen besteht. Das Archiv wird zusammen mit JSON-Daten, die die URL des Archivservers, das Kennwort und die Anzahl der archivierten Dateien enthalten, auf den Server hochgeladen. An dieser Stelle können wir feststellen, dass der Server-Link, der in der „Upload“-Funktion angegeben wurde, mit dem Link aus dem Quellcode übereinstimmt: „https://api.gofile.io/getServer“. Dieser Link ist ungültig, was bedeutet, dass diese Variante zwar Daten sammelt, diese aber nicht an die Cyberkriminellen sendet.
Krypto-Währungs-Wallets
Dazu sind zwei verschiedene Funktionen enthalten. Die erste sucht auf dem lokalen System im Ordner „%APPDATA%\\Roaming“ nach Wallet-Dateien für Krypto-Währungen. Alle gefundenen Dateien werden in ein Zip-Archiv gepackt und an den Server gesendet. Die zweite Funktion sucht nach Browser-Erweiterungen für Krypto-Währungs-Wallets und versucht, deren Profile zu stehlen.

Diebstahl von Online-Spieldaten
Um Daten aus Online-Games zu stehlen, lädt Skuld Stealer eine Liste mit sechs Namen: „Epic Games“, „Minecraft“, „Riot Games“, „Uplay“, „NationsGlory“ und „Steam“. Jedes Feld enthält zusätzliche Werte, die Dateipfade und Dateinamen enthalten, nach denen gesucht werden soll. Die Malware versucht, alle Dateien in dieser Liste in den temporären Ordner zu kopieren und als Zip-Archiv auf den Server zu exfiltrieren.

Clipper
Zum Schluss wird die „Clipper“-Funktion gestartet. Diese Funktion verwendet mehrere Regex-Werte, um die Daten in der Zwischenablage zu filtern. Mit diesen Regex-Werten wird nach verschiedenen Wallet-Adressen für Krypto-Währungen gesucht. Bei einem Treffer wird die Wallet-Adresse des Opfers durch die der Cyberkriminellen ersetzt. Die einzige Adresse, die wir in der Konfiguration erkannt haben, war die BTC-Wallet-Adresse der Angreifer:innen.

Fazit
Der vom Open-Source-Projekt Skuld kompilierte TMPN-Stealer hat eine BTC-Wallet-Adresse und einen Discord API-Link in seiner Konfiguration. Zusätzliche Informationen, wie z. B. ein Server zum Hochladen von Dateien, wurden dem Quellcode nicht hinzugefügt. Diese Variante zielt also in erster Linie auf Discord ab und injiziert einen JS-Payload, um Informationen wie E-Mails, Passwörter und Token abzugreifen.
Discord ist ein beliebtes Ziel, nicht nur weil es die beliebteste Kommunikationsplattform für Gamer:innen ist, sondern auch weil es in der Krypto-Währungs-Community populär ist. Die Malware kann sogar einige Discord Plugins umgehen, die eigentlich für mehr Sicherheit sorgen sollen. Sie kann auch Browserdaten und Benutzerdateien stehlen, die beliebige Anmeldedaten enthalten können, und diese an die Cyberkriminellen senden.

