Analysiert: PS3-Emulator als Schafspelz

Ein kostenloser Playstation-3-Emulator für den Computer verspricht Spielspaß, verfolgt in Wirklichkeit aber ein ganz anderes Ziel. Im zweiten Teil der heisec-Serie "Analysiert:" nimmt ihn die Malware-Analystin Olivia von Westernhagen nach allen Regeln der Kunst auseinander.

In Pocket speichern vorlesen Druckansicht 104 Kommentare lesen
Werbefalle anstatt Spielspaß
Lesezeit: 16 Min.
Inhaltsverzeichnis

Emulatoren für die Playstation 2 – allen voran der kostenlose PCSX2 – erfreuen sich trotz einiger Einschränkungen bezüglich der Performance sowie einer begrenzten Auswahl an kompatiblen Spielen großer Beliebtheit. Anders sieht es bei Playstation-3-Emulatoren aus; selbst das am weitesten fortgeschrittene Projekt in diesem Bereich (RPCS3) steckt trotz großer Fortschritte im vergangenen Jahr noch in den Kinderschuhen.

Doch wie ist es möglich, dass die Online-Suche nach "Playstation 3 Emulator" so viele Treffer liefert? Was sind die Absichten derer, die unter dieser Überschrift fragwürdige Downloads zur Verfügung stellen? Da muss doch eigentlich was faul sein.

Wirkt auf den ersten Blick vertrauenswürdig: Die Webseite mit dem Download des vermeintlichen Playstation-3-Emulators PSeMu3.

Meine Suche nach Antworten startet auf der Internetpräsenz playstation3emulator.net, auf welcher die Entwickler den Emulator PSeMu3 anpreisen. Gestaltung und Struktur der Webseite wirken professionell; Screenshots der grafischen Oberfläche sowie angeblich im Emulator ausgeführter Spiele steigern die Glaubwürdigkeit des Produkts. Wüsste ich nicht bereits, dass die auf der Startseite prangende Ankündigung, Grand Theft Auto V sei mit PSeMu3 spielbar, nicht der Wahrheit entsprechen kann, würde ich glatt darauf hereinfallen. Nun gut – ich tue einmal so, als wüsste ich dies nicht und klicke – wohlgemerkt im Schutze einer virtuellen Maschine (Windows 8 x64 in der VirtualBox) – auf den Download-Button.

Das Analyse-Tool PEiD zeigt, dass PSeMU3_Setup.exe auf einen Nullsoft Installer setzt.

Ich führe die PSeMu3_Setup.exe jedoch nicht aus, sondern öffne sie zunächst in PEiD, einem kleinen Tool, welches etwaige Packer, Crypter und Installer erkennt und anzeigt. Postwendend erscheint "Nullsoft PiMP Stub" in einem kleinen Fenster auf der Oberfläche. Somit weiß ich nun, dass es sich beim Setup um einen Nullsoft Installer (Nullsoft Scriptable Install System, kurz: NSIS) handelt. Das Open-Source-System bietet eine kostenlose und sehr umfangreiche Möglichkeit, Windows-Installer zu erstellen. Im Malware-Bereich werden mit NSIS erstellte Installer dementsprechend auch gern als Dropper für weitere Schadsoftware verwendet.

Ich möchte im nächsten Schritt herausfinden, welche Dateien auf der Festplatte landen und ob nicht noch andere, über die Installation hinausführende Aktionen im Hintergrund laufen. Dafür öffne ich das in den Windows Sysinternals enthaltene Monitoring-Tool ProcMon (Process Monitor). Dieses listet alle Systemaktivitäten von Windows, etwa Registry-Zugriffe und Lese- und Schreibzugriffe auf. Dabei wird im Grunde die komplette Windows-API durchleuchtet. Für eine gezielte Analyse ist das natürlich zu unübersichtlich und ich gebe als Filter den Prozessnamen PSeMu3_Setup.exe an; alle anderen laufenden Prozesse blende ich aus. Ich starte zudem Wireshark zum Aufzeichnen des Netzwerk-Traffics und erstelle, bevor ich das Setup ausführe, einen Sicherungspunkt in VirtualBox. So kann ich die dynamische Analyse bei Bedarf wiederholen oder die gewonnenen Erkenntnisse mit Hilfe weiterer Werkzeuge vertiefen.

Beim Durchsehen der Logfiles von ProcMon und Wireshark wird schnell klar, dass bei der Ausführung von PSeMu3_Setup.exe weit mehr geschieht, als das bloße Extrahieren der (in verschlüsselter Form gespeicherten) Emulator-Dateien.

Zunächst wird in Users\<user name>\AppData\Local\Temp ein weiteres Unterverzeichnis angelegt, welches einen in Abhängigkeit von der Systemzeit generierten Zufallsnamen erhält. Der Installer kopiert die von ihm benötigten NSIS-Plugins hinein, um sie bei Bedarf mittels der Funktion LoadLibraryEx zu laden. Da die aufzurufende DLL-Datei systemfremd ist und sich zudem nicht in einem Standardverzeichnis beziehungsweise nicht in demselben Verzeichnis wie das aufrufende Programm befindet, wird beim Aufruf von LoadLibraryEx der Parameter LOAD_WITH_ALTERED_SEARCH_PATH sowie der absolute Pfad der DLL-Datei übergeben.

Der offene Quellcode des NSIS ermöglicht das Schreiben eigener Plug-ins/DLLs. Neben der Verwendung bereits verfügbarer, von anderen NSIS-Usern geschriebener Laufzeitbibliotheken (unter anderem System.dll und md5dll.dll) extrahiert der Installer auch eine von den Machern des Setups vermutlich selbstgeschriebene math.dll, auf die ich später noch einmal zurückkomme.

Im ProcMon fällt mir die Verwendung von inetc.dll auf. Dabei handelt es sich um ein NSIS-Plugin, welches Funktionen für den Up- und Download von Dateien bereitstellt. Ich beschließe, dass sich an dieser Stelle ein Blick ins Wireshark-Logfile lohnt. Und tatsächlich: Das Logfile zeigt mir eine HTTP-GET-Anfrage an einen Account von Amazons Cloudfront-Service. Die Cloudfront-Server können Inhalte – wie in diesem Fall eine Datei namens bitool.dll – zum Download zur Verfügung stellen. Laut Amazon richtet sich dieses Angebot eigentlich an Entwickler und Unternehmer. Nun ja, im weitesten Sinne treffen, wie wir noch sehen werden, beide Begriffe auf die PSeMu3-Macher zu.

Ein Blick in die Export-Funktion der Programmbibliothek bitool.dll mit dem PE Explorer von Heaventools offenbart anhand der selbsterklärenden Funktionsnamen die Spionage-Funktionen.

Es ist naheliegend, dass es sich bei der heruntergeladenen DLL-Datei wiederum um ein NSIS-Plugin handelt. Im ProcMon-Log findet sich die Bestätigung dieser These: bitool.dll wird nach dem Download in das Verzeichnis Users\<user name>\AppData\Local\Temp kopiert und von dort aus ebenso wie die übrigen Plugins mit LoadLibraryEx() aufgerufen.

Im Malware-Analyse-Tool Immunity Debugger setze ich einen Breakpoint auf einen Call, der auf die LoadLibraryEx- und GetProcAddress-Funktionsaufrufe folgt und der die jeweils benötigten Funktionen der NSIS-DLL-Dateien aufruft. Ich führe das Setup aus, bis bitool.dll geladen und erstmalig aufgerufen wird und lande auf diese Weise am Einsprungspunkt einer Funktion namens ReadV1 der bitool.dll. Diese erzeugt eine anonyme Pipe. Der CreateProcess()-Aufruf startet das systemeigene Kommandozeilen-Tool wmic.exe. Die Befehlskette wmic bios get serialnumber, version fragt über die Kommandozeile die Computer-Seriennummer aus dem BIOS ab. Mit ReadFile() liest das Setup die zurückgelieferte Information aus der Leseseite der Pipe aus.

Hierbei handelt es sich um eine gebräuchliche Anti-VM-Technik, da virtuelle Maschinen hier fast immer Strings zurückliefern, welche sie als solche enttarnen. Im Falle meiner VirtualBox verrät mich der zurückgelieferte String VBOX. Ohne zu untersuchen, ob die Überprüfung der soeben ermittelten Seriennummer im Programm oder serverseitig stattfindet, lege ich einen neuen Sicherungspunkt an. Kurzerhand patche ich den verräterischen String im Debugger, das heißt, ich ändere vier Bytes: Aus VBOX wird im Hex-Dump kurzerhand ASUS. Dann lasse ich das Setup einmal ungepatcht und einmal gepatcht weiterlaufen um zu schauen, ob Unterschiede im nachfolgenden Programmfluss zu beobachten sind.

Aus VBOX wird ASUS: Ein vier Btye großer gepatchter String macht meine virtuelle Maschine zum physischen PC und der PSeMu3 zeigt sein wahres Gesicht.


Zunächst einmal bleibt der Programmablauf identisch: Das Setup sendet im nächsten Schritt eine GET-Anfrage an einen zweiten Amazon-Cloudfront-Account. Dieses Mal werden diverse Parameter übergeben, von denen zwei vorab unter Zuhilfenahme der bereits erwähnten math.dll verschlüsselt beziehungsweise mittels md5dll.dll in einen Hash umgewandelt wurden: Zum einen eine Zahlenkombination zur Identifikation (vermutlich generiert aus einer zuvor abgefragten GUID, Parameter uid), zum anderen das Ergebnis des WMIC-Aufrufs (Computer-Seriennummer; Parameter v1, passend zum Funktionsnamen ReadV1 in bitool.dll). Des Weiteren werden die Affiliate- und Software-ID sowie die Versionsnummer des PSeMu3-Installers übermittelt. Angesichts des Begriffs Affiliate bleiben kaum noch Zweifel daran, worum es hier geht: Um das Einstreichen von Provisionen durch die Vermittlung bestimmter Software.

Der Cloudfront-Server antwortet auf die Anfrage, indem er eine XML-Datei zurücksendet. Diese wird als binsischeck654.xml unter Users\<user name>\AppData\Local\Temp gespeichert. Die Struktur der Datei ist nebenstehendem Screenshot zu entnehmen, welcher auch den ursprünglichen GET-Request samt der übermittelten Parameter zeigt.

In der XML-Datei binsischeck654.xml finden sich die Ergebnisse der GET-Requests, über die der Computer ausspioniert wurde.

Mittels des (legitimen) NSIS-Plugins xml.dll wird das Dokument geparst, und der Befehl ReadAnyregistry innerhalb der Bitool-Funktion liest die abzufragenden Werte aus der Registry aus. Neben der Präsenz sämtlicher gängiger Anti-Viren-Programme auf dem System fragt der Befehl auch Keys ab, welche von bestimmten Adware-Anwendungen bei der (De-) Installation erzeugt werden. In meinem Fall wurde unter anderem nach den Browser-Erweiterungen Wajam, SearchProtect, Appshat und IMinent sowie nach dem angeblichen Tune Up-Tool PC Optimizer Pro gesucht.

Nach der Durchführung aller Checks werden die Ergebnisse in einer neu erzeugten temporären Datei unter Users\<user name>\AppData\Local\Temp\ gespeichert und nebst weiteren Systeminformationen, wie etwa der Betriebssystem-Version, installierten Browsern, dem Standardbrowser sowie der momentanen Startseite des Internet Explorers, an den Cloudfront-Server zurückgesendet.

Die Spionage-Ergebnisse des Registry-Checks werden an den Cloudfront-Server zurückgesendet.

Nun erfolgt eine Auswertung der empfangenen Informationen durch den Server. Ziel ist es vermutlich, Adware bereitzustellen, die auf dem Zielrechner noch nicht installiert ist beziehungsweise war und die vom installierten Anti-Viren-Programm möglichst nicht als solche erkannt wird. Auf diese Weise erhöht sich die Wahrscheinlichkeit einer erfolgreichen Adware-Installation. Im letzten Schritt sendet der Server eine weitere XML-Datei zurück, welche als binsis142.xml gespeichert wird.

An dieser Stelle kommt der Unterschied zwischen der Ausführung in einer virtuellen Maschine und auf einem physischen PC zum Tragen, welchen ich dank meines vier Byte großen Patchs beobachten kann. Er besteht letztendlich darin, dass während der Installationsroutine des PS3-Emulators in der VM mit dem gepatchten ASUS-Strings die zuvor anhand des Registry-Checks ausgewählte Adware im Installer-Fenster auftaucht.

Zu diesem Zweck wird der sogenannte Better Installer der Firma Somoto heruntergeladen und in einer weiteren .tmp-Datei mit Zufallsnamen gespeichert. Als Affiliates, also Teilnehmer an einem Partnerprogramm von Somoto, verdienen die PSeMu3-Macher bei jeder Installation von Adware mittels des Better Installers Geld. Erkennt der Installer die VM hingegen über den VBOX-String, wäre die Installation der Adware für die Anbieter wertlos und folglich will sich die Werbe-Software erst gar nicht auf dem Computer einnisten.

Mithilfe von Funktionen aus der bereits bekannten bitool.dll sowie dem NSIS-XML-Plugin xml.dll wird die Datei binsis142.xml geparst und deren Inhalt während des Installationsvorgangs von PSeMu3 angezeigt. Dabei will sich etwa die Mystartsearch-Suche als Standard-Suchanbieter im Webbrowser einnisten.

Die XML-Datei binsis142.xml enthält Links zu Adware, die in den Installer des PSeMU3 eingebettet sind.

Die Entscheidung des Users für oder gegen eine Installation der angebotenen Adware fragt eine Funktion aus der bitool.dll ab. Per ShellExecute() wird anschließend der Better Installer über die Kommandozeile aufgerufen. Dieser lädt die Software herunter und führt sie aus.

Ehe ich mich versehe, ist Mystartsearch meine neue Startseite in allen Browsern und ein lustig blinkendes blaues Icon auf der rechten Seite der Taskleiste verkündet optimalen Schutz beim Surfen durch die Adware Search Protect.

„All diese Werbung“, so könnte sich nun manch einer denken, „ist bei einem kostenlosen Produkt verzeihlich. Schließlich wollen die Entwickler ja auch ein bisschen was verdienen, und man hat ja immer auch die (wenn auch verwirrend umgesetzte) Option, die Installation der Adware abzulehnen“. Klar, so könnte man denken – wenn es sich tatsächlich um ein zufriedenstellendes Produkt handeln würde. An dieser Stelle meiner Analyse dürfte es jedoch kaum noch jemanden überraschen, dass es sich beim Playstation-3-Emulator PSeMu3 lediglich um eine Attrappe handelt.

Die PSeMu3.exe ist eine .NET-Anwendung, welche aus einem einzigen Fenster mit PSeMu3-Schriftzug als Hintergrundbild besteht. Das zugegebenermaßen recht gut gemachte Logo ist noch das Erfreulichste an diesem vermeintlichen PS3-Emulator: Die Menüpunkte der Visual-Basic-Anwendung verfügen über keinerlei Funktionalität; gleiches gilt für die auf den ersten Blick recht überzeugende Ordnerstruktur mit Plug-ins- und Cheats-Ordnern, einer Hilfedatei und einigem mehr. Die darin enthaltenen Dateien entpuppen sich beim Öffnen im Hex-Editor jedoch als purer Datenmüll. War wohl nichts mit GTA V, The Last of Us oder Little Big Planet 3.

Der Programmablauf nach dem Starten der PSeMu3.exe beschränkt sich, wie man mit einem .NET-Decompiler (zum Beispiel .NET Reflector) sehr gut nachvollziehen kann, auf den Aufruf zweier Formulare. Das erste wird beim Start des installierten Programms geladen. Hier findet eine if-Abfrage bezüglich des Vorhandenseins eines Unterverzeichnisses namens Bios innerhalb der PSeMu3-Verzeichnisstruktur statt. Ist dieser nicht vorhanden, wird eine Aufforderung ausgegeben, die fehlenden Dateien herunterzuladen; der entsprechende Link steht hardcoded im Programm.

Die beiden hier dargestellten Formulare sind die einzigen ausprogrammierten Elemente des angeblichen PS3-Emulators.

Da nun klar ist, dass PSeMu3.exe in Wirklichkeit kein Emulator ist, lässt die Aufforderung, eine weitere Komponente herunterzuladen, auf eine Fortsetzung des Werbeterrors schließen. Eine genaue Beschreibung der Funktionen der Datei ps3bios.exe und den Abläufen nach deren Start kommt einem Déjà-vu-Erlebnis gleich. Nur so viel: Erneut werden für ein Affiliate-Programm (RevenYou.com) beziehungsweise zur Ermittlung der zu installierenden Adware diverse Systeminformationen gesammelt. Die angebliche Bios-Datei wird – zusammen mit der noch nicht auf dem Computer vorhandenen Adware – in einem Installer-Bundle von RevenYou.com nachgeladen und mit CreateProcess() aus ps3bios.exe heraus gestartet. Für die Installation mittels des RevenYou.com-Installers fließt noch einmal Geld in die Kasse der PSeMu3-Macher.

Besagtes Bios-Unterverzeichnis wird angelegt, und die neu heruntergeladene Datei kopiert sich unter dem Namen PS3.bin selbst hinein, um fortan keinerlei praktischen Nutzen mehr zu erfüllen. Schadfunktionen konnte ich während einer (allerdings eher oberflächlichen) Analyse nicht feststellen; im Gegenteil wurde vermutlich bewusst darauf verzichtet, um ein möglichst unauffälliges RevenYou.com-Bundle erstellen zu können, welches von Virenscannern auf dem System nicht bemängelt wird.


Interessant fand ich zudem, dass auf der Downloadseite des vermeintlichen Bios zunächst die Aufforderung erscheint, den Emulator über soziale Netzwerke zu teilen beziehungsweise zu liken. Auf diese Weise gewinnt das PSeMu3-Projekt noch weiter an Glaubwürdigkeit – denn, so die scheinbar logische Schlussfolgerung, wenn so viele Menschen begeistert von diesem PS3-Emulator sind, dann muss er doch gut sein … oder?

Das Spiel beginnt nie: Der Ablauf der Installation des Emulators gleicht einer nie endenden Werbe-Schleife.

Wie, so habe ich mich während des ersten Durchlaufs meiner Analyse mit wachsender Neugierde gefragt, können die Betrüger die Illusion eines echten Emulators nach der Bios-Installation noch weiter aufrechterhalten? Ich starte die PSeMu3.exe erneut und bin gespannt darauf, wie es wohl weitergeht.
"The bios files were found and loaded!", verkündet ein Dialogfenster. Doch die Ernüchterung folgt schnell in Form eines zweiten Fensters: "This emulator is not activated! You need activate it in order to play games, would you like to activate it now?".

Ich klicke auf Ja und kann mir ein belustigtes Grinsen angesichts der Dreistigkeit der PSeMu3-Macher nicht länger verkneifen: Um die Aktivierung abschließen zu können, soll ich als nächstes an einer Umfrage teilnehmen, zu der ich nach der Auswahl aus einer Liste weitergeleitet werde. Wer daran wohl verdient? Ich entscheide mich für den Download eines bekanntermaßen unseriösen Tune-Up-Tools – dabei handelt es sich um den bereits erwähnten PC Optimizer Pro. Der Vollständigkeit halber installiere ich auch diesen, nur um ein letztes Mal bestätigt zu finden, was ich bereits dem .NET-Code entnommen habe: Wer bis zu diesem Punkt mitspielt, wird mit reichlich Werbung und zweifelhaften Anwendungen, nicht aber mit einem echten PS3-Emulator versorgt.

Auf ihre Kosten kommen nur die Macher des gefälschten PS3-Emulators – und vielleicht ein paar schräge Zeitgenossen, die das Klicken auf unzählige Buttons und die wahllose Übermittlung ihrer Daten zu Werbezwecken als Spielspaß empfinden. Ich für meinen Teil gehe jetzt zurück auf die Couch und schalte die echte Spielkonsole ein.

Analysiert: Die heise-Security-Serie, die hinter die Kulissen schaut. (ovw)