zurück zum Artikel

Flashback-Trojaner: So funktioniert der Mac-Schädling

Markus Möller

Laut einer Statistik des russischen Anti-Viren-Spezialisten Dr. Web hat Flashback über 700.000 Macs infiziert – mehr als jede andere Malware im Apple-Umfeld zuvor. Mac & i analysiert, wie der Trojaner funktioniert.

Nach Monaten eher mäßiger Verbreitung verhalf ausgerechnet Apple durch einen zu späten Java-Bugfix dem Flashback [1]-Trojaner zu dessen Karrieresprung. Die ersten Versionen der Malware täuschten noch vor, ein Flash-Installer zu sein. Jüngere Varianten gehen allerdings einen anderen, effizienteren Weg, der das Zutun des Anwenders nicht mehr benötigt.

Ältere Versionen der Malware tarnten sich als Flash-Installer. Die aktuelle Variante braucht diese Hilfe nicht mehr und installiert sich bereits beim Besuch einer Webseite, sofern eine veraltete Java-Version auf dem Rechner des Anwenders installiert ist.

Ist Java im Browser aktiviert, kann Schadcode beim Besuch einer Webseite unbemerkt auf den Rechner gelangen (Drive-by-Infection). Der Fehler in Java tritt auf, wenn die Laufzeitumgebung die passend präparierte [2] Java-Klasse AtomicReferenceArray verarbeitet. Damit wird dem Angreifer ermöglicht, mit Benutzer-Rechten Dateien auf die Festplatte zu schreiben und auszuführen. Das ermöglicht es der Malware, ein beliebiges Programm vom Server des Angreifers herunterzuladen und zu starten. Die Java-Sandbox für Applets verhindert normalerweise solche Zugriffe. Denn nur, wenn ein Applet sich mit einem Sicherheits-Zertifikat ausweisen kann und der Benutzer dieses Zertifikat akzeptiert, kann das Applet außerhalb der Sandbox laufen. Der beschriebene Java-Bug ist für Angriffe hervorragend geeignet und sehr einfach und zuverlässig auszulösen.

Laut Berechnungen des Antiviren-Herstellers Symantec geht die Zahl der mit dem Flashback-Trojaner infizierten Systeme bereits zurück.

(Bild: Symantec)

Es gibt auch weniger effiziente Flashback-Varianten. Diese verwenden den Sandbox-Escape-Bug zum autonomen Downloaden nicht, sondern lassen vom Benutzer ein ungültiges Applet-Zertifikat abnicken. Dieses Vorgehen ist nur bei aktualisiertem Java notwendig. Zur hohen Verbreitung von Flashback hat jedoch zweifellos seine Automatik-Variante beigetragen.

Damit die Malware auf den Mac gelangt, genügt es, eine kompromittierte WordPress-Seite anzusurfen, bei der das mit der Webseite geladene Applet die initialen Schädlings-Dateien automatisch auf die Platte schreibt: Im Benutzer-Verzeichnis des Anwenders landet ein Updater sowie ein LaunchAgent, um ihn zu starten. Im Ordner /tmp speichert Flashback zusätzlich einen Downloader. Ist diese erste Stufe der Infektion erfolgreich, meldet sich der Updater bei einem bestimmten Server und aktualisiert sich bei dieser Gelegenheit gegebenenfalls selbst. Den eigentlichen Schadcode, den Payload, versucht der Downloader anschließend täglich aktualisiert von einem der Command & Control-Server herunterzuladen, der ihn mit weiteren Befehlen oder Updates versorgt. Bemerkenswert ist, dass sogar eine Lastverteilung [3] vorgesehen ist, die einen zufälligen Server aus allen möglichen C&C-Hosts auswählt. In den Apple-Discussions wird eine solche tatsächlich nachträglich heruntergeladene dynamische Library diskutiert.

Das dann automatisch gestartete Trojanische Pferd täuscht einen Software-Update-Dialog vor, um optional an Admin-Namen und -Passwort zu gelangen. Je nachdem, ob der Anwender darauf hereinfällt oder nicht, variiert die Malware ab hier ihr Vorgehen: Bekommt sie das Admin-Passwort, kann sie sich damit gegenüber dem System authentifizieren und auf Root wechseln. Anschließend legt sie eine dynamisch ladbare Library sowie eine Konfiguration innerhalb des Safari-Bundles ab, um diese beim Start von Safari zu laden. Damit sind dann alle Benutzer dieses Rechners, die Safari aufrufen, betroffen. Im Safari-Bundle ist die Library recht gut versteckt.

War der Anwender misstrauisch und hat keine Admin-Daten eingetippt, kann die Malware nicht an Root-Rechte kommen. Da sie ohne die notwendigen Rechte das Safari-Bundle nicht manipulieren kann, legt sie eine bösartige Library etwas weniger gut versteckt im gemeinsamen /users/shared-Verzeichnis ab. Diese konfiguriert sie im Verzeichnis des Benutzers so, dass sie nicht nur in Safari, sondern in jedes Programm injiziert wird. In diesem Fall ist zwar nur einer der Benutzer dieses Rechners betroffen, aber dafür jedes von ihm gestartete Programm. Primäres Ziel der aktuellen Flashback-Versionen ist in beiden Fällen immer, den Netzwerkverkehr des Safari-Browsers auszuspionieren und zu verändern. Das jedenfalls legt die Art der manipulierten Library-Funktionen nahe. Tatsächlich bestätigte Kaspersky gegenüber Mac & i, dass die Schadsoftware Suchmaschinen-Ergebnisse manipuliert. Damit ergaunern sich mutmaßlich [4] osteuropäische Cyber-Gangs Kleinbeträge durch Werbeeinnahmen.

Die einfache Infektion über die Java-Lücke ist ein großes Problem. Sie ermöglicht es Applets, die initialen Infektionsdateien eigenständig herunterzuladen, ohne dabei die Download-Funktion von Safari zu verwenden. Das von Internet-Apps typischerweise auf ihre Downloads zu setzende Quarantäne-Flag setzt der Selbst-Download der Malware natürlich nicht. Dadurch greift aber auch Apples Anti-Malware-Mechanismus XProtect zur Prüfung von Downloads nicht und der Anwender bekommt so keinerlei Warnmeldungen zu Gesicht. Das erklärt auch, weshalb Apple keine neuen Flashback-Einträge in der Downloads-Blacklist vorgenommen hat: Es hätte schlicht nichts genutzt.

Die zugrundeliegende Sicherheitslücke in Java ermöglicht es Applets, aus der Sandbox auszubrechen.

Unauffällig war Flashback trotzdem nicht. Die Infektionen flogen nicht nur durch Warn-Meldungen von Netzwerkmonitoren wie Little Snitch [5] auf. Viel auffälliger war, dass beim Injizieren der Payload-Libraries reihenweise Anwendungen abschmierten und in ihren Log-Dateien Meldungen wie [6] "dyld: could not load inserted library: /User/Shared/.libgmalloc.dylib" hinterließen. Eine echte libgmalloc.dylib gibt es zwar tatsächlich, aber ohne den führenden Punkt, im SDK von Xcode. Die Abstürze betrafen einerseits PPC-Programme, die die injizierten Intel-Libraries nicht vertrugen, andererseits aber auch [7] Intel-Applikationen wie Skype.

Eine verbesserte Flashback-Variante vermeidet Kompatibilitätsprobleme, indem sie zunächst prüft, ob die Problem-Programme installiert sind. Ist das der Fall, bricht Flashback seinen Angriff ab und löscht sich laut Berichten von AV-Herstellern selbst. Interessanterweise sucht Flashback dabei jedoch die Entwicklungsumgebung Xcode unter der veralteten Stelle /Developer/Applications anstatt unter /Applications.

Die Payload-Bibliothek von Flashback bedient sich des sogenannten Interposings, bei dem Standard-Funktionen aus Standard-Libraries durch eine weitere nachgeladene Library umdefiniert werden. Die umdefinierte Version kann beliebigen Schadcode enthalten und optional die originalen Funktionen zu Tarnzwecken und zur Gewährleistung der Stabilität aufrufen. Flashback kapert [8] die Funktionen CFReadStreamRead und CFWriteStreamWrite, die unter anderem für HTTP und FTP benutzt werden. Damit kann er sich in den Netzverkehr von Browsern, FTP-Programmen und dergleichen einklinken.

Der Trojaner verwendet jedoch eine sehr offensichtliche Variante des Interposings, die ihr Handeln plakativ in einer __interpose Section im __DATA-Segment des Binaries deklariert. Dieses offizielle Interposing wurde erst mit Mac OS X 10.4 Tiger eingeführt. Man kann seine Verwendung in einer verdächtigen Library anhand des Shell-Befehls

otool [verdächtige.dylib] -vl | grep __interpose -C4

an diesen Zeilen erkennen:

attributes (none)
reserved1 5 (index into indirect symbol table)
reserved2 0
Section
sectname __interpose
segname __DATA

addr 0x0000000000001040
size 0x0000000000000020
offset 4160

Mac-OS-X-Programme benötigen keine zusätzlich heruntergeladene Bibliothek und erst recht keine mit einer __interpose-Sektion. Taucht dennoch eine im Code auf, handelt es sich entweder um einen Hack oder um Malware.

Besser getarnte Malware verwendet eine Interposing-Variante, die im Gegensatz zu der von Flashback verwendeten auch mit Systemen vor OS X 10.4 möglich ist. Damit ist das Überschreiben nicht so leicht schon an der Library zu erkennen, weil das Interposing nicht offiziell deklariert werden müsste. Diese bessere Tarnung erkauft man sich allerdings mit mehr Programmieraufwand, denn dafür muss man die angegriffene Anwendung in einen "flat namespace" zwingen. Mac OS X findet Library-Funktionen nämlich normalerweise nicht per Suche über alle dynamischen Libraries in ihrer Ladereihenfolge wie viele andere Betriebssysteme. Statt dessen löst das Apple-OS auch aus Performance-Gründen Bibliotheken via "two level namespace" direkt auf, indem es unmittelbar in die gemerkte Library springt.

Ein Namespace ist ein Gültigkeitsbereich für Namen, der sicherstellt, dass diese nicht mit anderen Namen in anderen Namespaces kollidieren. Zwingt man so eine normale Anwendung jedoch in den flachen Namespace, bei dem nur der Funktionsname ohne seinen Librarynamen gesucht wird, können unerwünschte Namenskonflikte auftreten, die zum Absturz führen. Zumindest für die in letzter Zeit erfolgreichen Flashback-Varianten haben sich die Entwickler deshalb wohl für die schlechter getarnte, aber einfachere Variante des Interposings entschieden.

Der AV-Spezialist Dr. Web hat mehr als 700.000 infizierte Rechner ermittelt. Dazu leitete die Sicherheitsfirma einige der von der Malware generierten C&C-Server-Adressen auf eigene Server um. Ein Teil der infizierten Rechner schickte also Nachrichten an Dr. Web, statt an die Flashback-Entwickler. Anhand der so ermittelten infizierten Rechner, kann das Ausmaß der Infektionsrate errechnet [9] werden. Es handelt sich also um eine fundierte statistische Berechnung, unter der Bedingung, dass die Bots tatsächlich immer aus ihren C&C-Servern streng mathematisch zufällig einen auswählen.

Insgesamt nutzen die Malware-Autoren wohl immer weltweit verteilt um die 50 bis 60 verschiedene C&C-Server [10], aus denen jeder Bot pro Anfrage einen zufällig auswählt. Der Schädling verwendet dabei eine sehr eigentümliche [11] Routine, um die Domain-Namen der zu kontaktierenden Command-&-Control-Server zu erzeugen. Auch andere Antiviren-Firmen versuchten, diese Namen teilweise unter ihre Kontrolle zu bekommen, um die Anfragen und die enthaltenen IDs zu zählen. Der Zenith war aber schon Tage vor Apples Java-Fix überschritten [12] und die infizierte Basis mehr als halbiert. Dr.Web widerspricht [13] allerdings den Zahlen von Kaspersky und Symantec und geht weithin von rund 566.000 infizierten Macs aus.

Offenbar richtete die Malware keinen großen Schaden an. Bislang gab es weder Berichte über gelöschte oder ausspionierte Daten noch eine auffällige Häufung von Account-Missbräuchen, etwa in iTunes oder im App Store. Flashback nutzt seine Möglichkeiten nicht voll aus, denn technisch wäre die Malware zu weit mehr in der Lage: Durch die optional vom Anwender preisgegebenen Administrator-Rechte kann sie Root werden und damit theoretisch sehr viel mehr tun, als nur Safari manipulieren: Die Malware könnte sämtliche Dateien auslesen, verändern oder übertragen, System-Software nach eigenem Gutdünken installieren und so etwa via Keylogger weitere Logins und Passwörter an ihre Schöpfer senden.

Abhängig davon, ob der Trojaner Admin-Rechte erlangt, geht er unterschiedlich vor.

Wer sich schon einmal etwas näher mit der Materie beschäftigt hat, mag sich fragen, warum die Angreifer nicht einen einfacheren Weg gewählt haben. Nur um Safari fernzusteuern, benötigt man keine Admin-Rechte, denn jeder Anwender kann mit einfachen Benutzerrechten nach Belieben Safari-Erweiterungen installieren. Diese haben vollen Zugriff auf den gesamten Web-Verkehr des Anwenders, der nicht nur ausgelesen, sondern auch manipuliert werden kann. Plug-ins wie Ad-Blocker demonstrieren das eindrücklich. So könnte sich auch ein Schädling bei Safari einklinken und sich den Umweg über die Injektion von Bibliotheken ersparen. Ebenso mag man sich fragen, warum die Angreifer nicht mit Hilfe des ergaunerten Administrator-Accounts ein Rootkit installierten.

Dann hätten sie auch das etwas unzuverlässige Laden der Payload-Libraries über Umgebungsvariablen nicht benötigt. Denn die von ihnen verwendete Variable DYLD_INSERT_LIBRARIES wird primär von Entwicklern zu Testzwecken eingesetzt. Flashback definiert diese Variable, wenn er nicht an Root kommt, in der ~/.MacOSX/environment.plist, die jedoch von Mac OS X 10.5 Leopard gar nicht berücksichtigt wird, wenn man Programme via Spotlight oder über intelligente Ordner aufruft. Auch dass sämtliche DYLD_*-Variablen nicht in der Ausgabe des env-Befehls auftauchen, hätte sie aufhorchen lassen können. Diese Variablen werden zudem für alle Setuid-Binaries ausgefiltert und aus deren Environment entfernt, damit deren Kind-Prozesse sie auch nicht sehen, wie man im Kernel-Quelltext von Mac OS X nachlesen kann.

Allem Anschein nach haben die Entwickler der Malware noch nicht sehr viel Erfahrung mit dem Mac gesammelt. Sie wählten ein Verfahren, das dem bei anderen Plattformen ähnelt, schrieben ihren Code im eher OS-X-untypischen C++ [14] statt in Objective-C oder C und verwenden keine Safari-Erweiterungen, weil sie diese möglicherweise nicht gut genug kennen. Beim Setzen der Umgebungsvariablen haben sie nicht die zuverlässigste Variante verwendet. Für die Zukunft lässt das jedenfalls Luft nach oben, denn die Entwickler dürften dazulernen. Der Mac ist vor Angriffen nicht gefeit, das hat Flashback auf jeden Fall bewiesen.

Apple blieb allerdings nicht ganz untätig und hat versucht, betroffene Malware-Domains stillzulegen, wobei man auch auf die Sinkhole-C&C-Rechner von Dr. Web stieß [15], mit denen die Infektionen untersucht wurden. Als Maßnahme hat Apple am 13. April per Software-Aktualisierung einen automatischen Flashback-Entferner bereitgestellt [16] und reichte [17] in der Nacht zum 16. April ein Stand-alone-Werkzeug für Systeme, die kein Java mehr nutzen, nach. Letzteres beseitigt auch Flashback-Varianten, die andere Infektionswege als die Java-Sicherheitslücke nutzen.

Infizierte Macs laden weiteren Code oder Befehle von sogenannten Command-&-Control-Servern nach. Dr.Web betreibt Fake-C&C-Hosts, um die Anzahl der ferngesteuerten Zombie-Rechner zu ermitteln.

Einige AV-Hersteller waren mit ihren Reinigungstools zwar schneller als Apple, arbeiteten aber dafür nicht fehlerfrei. Das von Kaspersky bereitgestellte Tool löschte unter Umständen auch Benutzer-Daten und -Einstellungen mit, wie PC Mag berichtete [18] (Kaspersky behob den Fehler später). Apples Jäger ist anscheinend besser getestet und beseitigt auch ältere Varianten von Flashback, die auch die anderen Browser wie Chrome oder Firefox infizierten. Das ergibt eine Analyse des Killer-Codes, genauer gesagt der “Payload”-Datei im JavaSecurity.pkg und im FlashbackMalwareRemover.pkg.

Apple hätte dieses Bereinigungs-Programm gar nicht nötig gehabt, wenn die Java-Lücke zeitig geschlossen worden wäre. Java ist aber auch nicht gerade Apples Lieblingskind. Schlimmer ist jedoch der Image-Schaden, der nicht durch Fehler im System, sondern durch dieses Fehler-Management entstanden ist. Der Ruf des sicheren Mac OS X ist angeknackst. Allerdings erreicht der Angriff durch zwei [19] Mac-Trojaner noch lange nicht das Ausmaß anderer Systeme: Allein im Jahr 2010 zählten [20] Experten bis zu 60.000 Viren täglich. Wobei sich die Gefahr nicht allein quantitativ bemessen lässt. Gerade sauber programmierte und unaufällige Schädlinge stellen eine enorme Bedrohung dar.

In Zukunft wird es Malware auf dem Mac etwas schwerer haben. Unter Mac OS X 10.8 Mountain Lion wird das Starten heruntergeladener Apps auf solche von registrierten Entwicklern oder aus dem App Store optional beschränkt. Im konkreten Fall hätte das aber nichts genützt, denn auch der Gatekeeper orientiert sich am Quarantäne-Flag, das von Internet-Anwendungen idealerweise gesetzt wird. Da Flashback dieses Flag durch seinen autonomen Download jedoch vermeidet, wäre auch der zusätzliche Sicherheitsmechanismus in einem solchen Szenario nutzlos.

Trotzdem leben Mac-Anwender auch in Zukunft nicht unsicherer als zuvor. Die prinzipielle Bedrohung ist nach wie vor die gleiche; die ausgenutzten Java-Lücken waren schon länger bekannt. Neu ist, dass sich nun erstmals ein Schädling recht weit im Mac-Sektor verbreitet hat. Angegriffen wird nämlich, was angreifbar ist, und dieser Bug war durch seine Fähigkeit zur Drive-By-Infektion einfach zu einladend, um ihn ungenutzt liegen zu lassen, zumal funktionierende Exploits bereits vorlagen.

Man kann das Risiko jedoch minimieren, indem man Java im Browser deaktiviert und andere aktive Inhalte wie Flash mit entsprechenden Safari-Extensions nur bei Bedarf mit einem Extra-Klick startet. Tatsächlich deaktiviert Mac OS X neuerdings Java im Browser automatisch, wenn man es längere Zeit nicht benutzt hat. Eine weitere Verbesserung ist auch, dass Java demnächst [21] direkt von Oracle kommen wird, so wie Oracle auch die anderen Plattformen beliefert. Damit entfällt endlich die Verzögerung durch die Portierung, denn Apple hat seinen Code an Oracle abgegeben.

Ein Problem, das Mac OS X vor Lion angreifbar machte, ist auch, dass die Nutzer standardmäßig mit Admin-Rechten arbeiten. Sicherer wäre es, normalerweise mit einfachen Benutzerrechten eingeloggt zu sein und nur für Wartungsaufgaben den Namen und das Passwort des Administrators einzugeben. Wie der Entwickler Marcel Bresink ausführt [22], lag die größte Gefahr beim Arbeiten mit einem Admin-Account seinerzeit darin, dass der Benutzer und die vom ihm gestarteten Programme das Recht hatten, systemweite Einstellungen oder installierte Programme zu ändern. Diese Gefahr besteht ab Lion nicht mehr, da Administratoren nicht mehr das Recht haben, in die rechnerbezogene Library, in vorinstallierte Programme, in aus dem App Store installierte Programme, in /Applications/Utilities oder in den obersten Ordner der Systemplatte zu schreiben. Dieses Recht kann nur kurzzeitig und vorübergehend durch zusätzliche Eingabe eines Administratorkennworts erlangt werden.

Wer die Unsicherheit um die Angriffe prompt für sich zu nutzen versucht, sind die Hersteller von Antiviren-Tools für den Mac: Endlich scheinen sie eine Daseinsberechtigung zu haben. Nun mag jeder Nutzer für sich selbst entscheiden, ob ein solches Helferlein nötig ist. Eines darf man dabei aber nicht vergessen: Keine Antiviren-Software für den Mac hat Flashback rechtzeitig erkannt und AV-Software ist auch schon lange selbst ein beliebtes Ziel [23] für Angriffe. (jra [24]) / (mst [25])


URL dieses Artikels:
https://www.heise.de/-1525100

Links in diesem Artikel:
[1] https://www.heise.de/news/Flashback-Malware-setzt-auf-neue-Infektionswege-1442752.html
[2] http://blogs.technet.com/b/mmpc/archive/2012/03/20/an-interesting-case-of-jre-sandbox-breach-cve-2012-0507.aspx
[3] http://news.drweb.com/show/?i=2341&lng=en&c=14
[4] https://www.heise.de/news/Kaspersky-Weltweit-nur-noch-30-000-Macs-von-Flashback-infiziert-1544226.html
[5] http://www.heise.de/download/little-snitch.html
[6] https://discussions.apple.com/message/18068988
[7] https://discussions.apple.com/message/18180207
[8] http://www.f-secure.com/v-descs/trojan-downloader_osx_flashback_k.shtml
[9] https://discussions.apple.com/backsoon/discussionstempaway.html
[10] https://discussions.apple.com/backsoon/discussionstempaway.html
[11] http://news.drweb.com/show/?i=2341&lng=en&c=14
[12] http://www.symantec.com/connect/blogs/osxflashbackk-suffering-slashback-infections-down-270000
[13] http://news.drweb.com/show/?c=5&i=2386&lng=en
[14] https://discussions.apple.com/message/18079698%2318079698
[15] http://www.macworld.co.uk/mac/news/?newsid=3350043
[16] http://www.heise.de/mac-and-i/meldung/Apple-veroeffentlicht-Flashback-Entferner-1520404.html
[17] http://www.heise.de/mac-and-i/meldung/Apple-Stand-alone-Werkzeug-gegen-Trojaner-Flashback-1525987.html
[18] http://www.pcmag.com/article2/0,2817,2402981,00.asp?kc=PCRSS03069TX1K0001121&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+ziffdavis/pcmag/breakingnews+%28PCMag.com+Breaking+News%29
[19] http://www.heise.de/mac-and-i/meldung/Neue-Mac-Malware-nutzt-alte-Java-Luecke-1526095.html
[20] https://www.heise.de/hintergrund/Der-Mac-ist-angreifbar-1156494.html
[21] https://www.heise.de/news/Oracle-und-Apple-machen-bei-OpenJDK-fuer-Mac-OS-X-gemeinsame-Sache-1135729.html
[22] http://www.mactechnews.de/forum/thread/Admin-oder-nicht-306972.html
[23] https://www.heise.de/hintergrund/Antiviren-Software-als-Einfallstor-270932.html
[24] mailto:jra@mac-and-i.de
[25] mailto:mst@heise.de