Die Entdeckung der x64-tremen Höhen des Internet

Mit dem Release von zwei Windows-Hauptversionen der x64-Architektur (bekannt auch als ‘AMD64’) hat Microsoft den Weg frei gemacht für eine kostengünstige 64-Bit-Computernutzung. Auf der Virus-Bulletin-Konferenz 2005 stellte ich ein Papier über die Architektur von x64 vor, in dem ich detailliert ausführte, wie bekannte 32-Bit-Viren und Rootkits mit ihr interagieren.

Am Ende der Präsentation gab es eine Reihe von Fragen aus dem Publikum, die interessanteste war jedoch die Frage eines Mitglieds des Europäischen AntiVirus-Forschungszentrums von Symantec. Die Frage betraf den Internet Explorer in Windows x64 und wie ActiveX-Objekte und BHOs (Browser Helper Objects) – die bisher ausschließlich über 32 Bit verfügten – in der Umgebung von Windows x64 funktionieren (oder eben nicht). Die Besonderheit des Ganzen liegt natürlich in der Existenz einer Unmenge von Spyware- und Adware-Programmen, die sich aus dem Internet via IE-Schwachstellen über die Anwendung von ActiveX oder Java-Applikationen verbreiten.

Der vorliegende Artikel wurde als Antwort auf diese Frage geschrieben.

Darf ich vorstellen: der Internet Explorer x64

Da sämtliche Systemanwendungen in Windows x64 64-Bit-PE-Dateien darstellen, sollte man annehmen, der Internet Explorer sei ebenfalls eine 64-Bit-Native-Application. Dem ist auch so: Ein 64-Bit-Internet-Explorer (Version 6.0.3790) ist in das jüngste Windows-XP-Release für die X64-Plattform integriert. Sein About-Dialog ist in Abbildung 1 dargestellt:


Abb.1: 64-Bit-Internet Explorer

Nicht ganz so offensichtlich ist jedoch die Tatsache, dass es neben dem 64-Bit-Internet- Explorer eine 32-Bit-Version des IE gibt, die über das Startmenü verfügbar ist (siehe Abbildung 2). In Aktion sieht der 32-Bit-Internet-Explorer seinem 64-Bit-Zwilling zum Verwechseln ähnlich, ein Quick-Check im Task Manager zeigt jedoch, dass es sich tatsächlich um einen 32-Bit-Prozess handelt.


Abb. 2: 32-Bit-Internet-Explorer, erreichbar über das Start-Menü

Es scheint also, dass die Windows-Entwickler dem Anwender die Wahl lassen wollten, welche Version des Internet Explorers er bevorzugt. Es mag ein wenig seltsam klingen, doch dafür gibt es einen guten Grund: Kompatibilität.

In Windows x64 können die 64-Bit-Anwendungen auf die Interprozesskommunikation zurückgreifen, um einen älteren 32-Bit-Code aufzurufen, ebenso, wie 32-Bit-Anwendungen 16-Bit-DLLs in Win32 über die Thunking-Funktion aufrufen können. Dies bedeutet, dass – zumindest theoretisch – jede 64-Bit-Anwendung dazu gebracht werden kann, eine 32-Bit-DLL zu nutzen. Einen 32-Bit-Code aus einer 64-Bit-Applikation aufzurufen ist jedoch nicht möglich, ohne Nachteile bei Geschwindigkeit, Sicherheit und anderen Bereichen in Kauf zu nehmen.

Trotz dieser Probleme ist der 64-Bit-Internet-Explorer jedoch theoretisch in der Lage 32-Bit-ActiveX-Objekte und -PlugIns zu benutzen. Warum also macht sich Microsoft die Mühe, Windows XP x64 auf eine 32-Bit-Version von Internet Explorer zu verfrachten?

Eine einfache Erklärung wäre, dass der IE eine 32-Bit-VM öffnen und die 32-Bit-COM-Objekte in dieser laden und mit ihnen kommunizieren müsste, um zu erreichen, dass 32-Bit ActiveX-Objekte mit dem 64-Bit-IE funktionieren. Der technische Aufwand wäre nicht gerade gering, doch für ein Unternehmen wie Microsoft sollte dies kein ernsthaftes Problem darstellen.

Eine weitere Möglichkeit ist, dass 32-Bit-ActiveX-Objekte im 64-Bit-Internet-Explorer Tür und Tor öffnen für eine große Zahl von Sicherheitsrisiken, die das Internet bereits seit Jahren heimsuchen. Dabei wird auch die Codierung eines speziellen Application-Gateways benötigt: Ein 64-Bit-Wrapper für ActiveX-Objekte, der die Trennung zwischen der 64-Bit- und der 32-Bit-Welt in Windows x64 verringert. Dies ist wichtig, da 64-Bit und 32-Bit-Applikationen unterschiedliche Versionen der Registry „sehen“ und natürlich möglicherweise unterschiedliche Konfigurationseinstellungen haben und sich daher unterschiedlich verhalten können.

Unabhängig davon, welche der Erklärungen (oder eine andere unbekannte Möglichkeit) zutrifft, bleibt festzuhalten, dass Windows x64 zwei Versionen des Internet Explorers mitbringt. Schauen wir doch einmal, wie diese die ActiveX-Steuerelemente verarbeiten.

Die ActiveX-Technologie

ActiveX ist die allgemeine Bezeichnung für eine Reihe von Technologien, die entwickelt wurden, um den Informationsaustausch zwischen Applikationen zu gewährleisten. ActiveX baut auf COM und OLE auf. Die überwiegende Zeit wird ActiveX jedoch dazu benutzt, um ActiveX-Steuerelemente anzuzeigen. In diesem Fall ist es eine Technologie, die vom Web-Browser aus aufgerufen werden kann.

Vor vielen Jahren, als ActiveX im Internet Explorer nutzbar gemacht wurde, war es als direkter Konkurrent für Java gedacht. Der Internet Explorer von Microsoft war jedoch der einzige Browser am Markt, der es unterstützte. Eines der häufigsten Argumente gegen ActiveX war damals, dass es auf dem ausführbaren Programmcode von x86 basierte, wodurch der Betrieb auf anderen Hauptprozessoren wie PowerPCs oder Sparcs erschwert war. Dadurch waren Entwickler echter Multiplattform-fähiger Anwendungen gezwungen, sich ausschließlich auf Browser von Microsoft sowie auf Intel-kompatible PCs zu beschränken.

In der Tat hatte sich Microsoft mit ActiveX einen Bärendienst erwiesen, denn mit Internet Explorer zu arbeiten bedeutet ja nicht automatisch, über eine Umgebung zu verfügen, die ActiveX unterstützt! Der MacOS Internet Explorer etwa (jüngste Version: 5.2.3) ist nicht in der Lage, ActiveX-Steuerelemente zu laden und zu verarbeiten. Während also Java dem Anwender die Möglichkeit bot, seine Applikationen auf einer Vielzahl von Systemen und Hardware-Architekturen zu betreiben, so lief der Code bei ActiveX ausschließlich auf Intel-x86-32-Bit-Hauptprozessoren unter Windows. Mit der Markteinführung von Windows x64 gibt es eine weitere Plattform, um die sich die ActiveX-Entwickler Sorgen machen müssen, nämlich die ActiveX-Steuerelemente des 64-Bit-Internet-Explorers.

Die Besonderheiten des 32-Bit – sowie des 64-Bit-Internet Explorers in Windows x64

Der 64-Bit-Internet-Explorer von Windows x64 befindet sich im Ordner ‘Program Files’, getrennt von der 32-Bit-Version. Er unterstützt PlugIns und ist – so sollte man erwarten – in der Lage, 64-Bit-ActiveX-Elemente zu laden und anzuzeigen.

Interessanterweise ist jedoch festzustellen, dass Windows x64 in den meisten Fällen nicht auf den 32-Bit-Internet-Explorer zurückgreift. Der 32-Bit-IE wird aufgerufen, wenn man auf den Link IE in der Menüleiste, die entsprechende Position im Startmenü des Windows-Updates oder das Icon auf dem Desktop klickt. Wird jedoch eine Internet-URL aus dem Windows Explorer angefordert, die selbst eine 64-Bit-Anwendung darstellt, so wird der 64-Bit-IE benutzt.

Das Verhalten von Windows-Update ist auch unter Windows x64 interessant. Wie bereits angemerkt, startet das Update den 32-Bit-Internet-Explorer, der alle Update-Controls lädt, die selbst 32-Bit-Anwendungen sind. Öffnet man jedoch die Webseite des Windows-Updates im 64-Bit-Internet-Explorer, so erhält man eine Nachricht, wie in Abbildung 3 dargestellt.


Abb. 3. Öffnen der Webseite Windows Update im 64-Bit-Internet Explorer

Leider habe ich keinen Itanium IA64 zur Hand, um zu testen, ob das Windows-Update über ein eigenes IA64-ActiveX-Steuerelement verfügt oder ob das Update als konkurrierender 32-Bit-Code läuft, doch wäre dies auf jeden Fall einen Versuch wert.

Zudem wäre bei den Besonderheiten der 32-Bit- und der 64-Bit-Version des Internet Explorers aus Windows x64 noch anzumerken, dass sie eine Reihe von Einstellungen gemeinsam haben: So verwenden sie zum Beispiel denselben Ordner ’Temporary Internet Files’ (der auf ‘Dokumente’ und Einstellungen%Benutzername%Lokale EinstellungenTemporary Internet Files’ zugreift), denselben Ordner ’History’ und denselben Ordner ’Favoriten’.

In Version IE6 SP2 hat Microsoft eine sehr nützliche Funktion zur Verwaltung der IE-Add-Ons eingeführt. Man findet sie im Extras-Menü: ‘Extras -> Add-Ons verwalten…’. Der Add-On-Manager kann benutzt werden, um ActiveX-Steuerelemente oder Browser-Extensions zu deaktivieren oder zu reaktivieren (jedoch leider nicht, um diese zu deinstallieren). Dadurch erhält der Anwender einen besseren Überblick und eine gewisse Kontrolle über die aktuell vom IE genutzten Erweiterungen.

64-bit-IE-Plugin

Keine der Versionen des Internet Explorers von Windows x64 unterstützt Java standardmäßig, man ist also gezwungen, die Java-Unterstützung gesondert herunterzuladen und zu installieren. Zwar verfügt der jüngste Release von Sun über ein 32-Bit-JRE (J2SE Runtime Environment 5.0 Update 5), auf der Sun-Webseite ist jedoch keine Windows-AMD64-Unterstützung aufgeführt. Es gibt eine bei Sun erhältliche AMD64-Version von J2SE-Runtime-Environment 5.0 in Update 4, doch scheint diese in Windows XP x64 nicht zu funktionieren. Es erscheint keine Fehlermeldung, doch nimmt der IE diese nicht in die Liste der geladenen Add-Ons auf und Java-Applets funktionieren nicht, wenn sie von einer Webseite aus aufgerufen werden.

Außerdem gibt es keinen Windows x64 Flash Player von Macromedia, keinen Acrobat Reader x64 von Adobe und keine direkte In-Browser-Quick-Time-Unterstützung von Apple. Als ich diesen Artikel schrieb, fand ich tatsächlich nicht ein einziges 64-Bit-IE-PlugIn oder eine 64-Bit-ActiveX-Control eines Drittanbieters.

Dies bedeutet, dass der 64-Bit-Internet-Explorer Java-Applets, Shockwaves oder PDFs (noch) nicht unterstützt, was in der Praxis aber seinen Nutzen soweit herabsetzt, dass es für viele Anwender sinnlos erscheint, ihn überhaupt zu verwenden.

Malware-Attacken

Da der 64-Bit-IE nicht in der Lage ist, 32-Bit-x86-Codes aufzurufen, sind 32-Bit-Malwareangriffe sehr eingeschränkt. In der Praxis funktionieren keine der gängigen Methoden, Malware-Programme über Internetseiten zu verbreiten, ausgenommen vielleicht, der Anwender lädt sie direkt herunter und führt sie aus.

Es überrascht nicht, dass das leider nicht über den 32-Bit-Internet-Explorer von Windows x64 gesagt werden kann. Ich habe eine Reihe von Schadprogrammen getestet, die sich von diversen Webseiten herunter selbst installieren. Folgende Aufzählung erhebt keinen Anspruch auf Vollständigkeit (Kaspersky-Bezeichnungen):

Sie verbreiten sich ausnahmslos von Webseiten über verschiedene IE-Exploits (die im Internet Explorer für Windows XP x64 bereits gepatcht sind, so dass sie nicht mehr funktionieren) sowie über ActiveX-Steuerelemente. Einige von ihnen verwenden zur Tarnung Win32-Kernel-Mode-Rootkits (was wiederum in Windows x64 nicht funktioniert), andere vertrauen auf User-Mode-Rootkits, die gegenüber Win32-Anwendungern unter Windows XP x64 durchaus wirksam sind, jedoch nicht gegen 64-Bit-Applikationen.

Die schlechte Nachricht ist, dass sie nicht nur das System infizieren (obwohl sie alle die Bestätigung des Anwenders benötigen, um sich zu installieren), sondern sie arbeiten auch problemlos unter WOW64. Sie überleben Reboots selbst dann, wenn die BHOs vom IE vor dem erneuten Start deaktiviert werden und es ist sehr schwierig, sie ohne einen ausgereiften 64-Bit-Antiviren-Scanner wieder loszuwerden.

Ohne einen 64-Bit-Antiviren-Scanner (und leider sind die Angebote diesbezüglich noch sehr begrenzt) ist es für einen ungeübten Anwender tatsächlich keine leichte Aufgabe, 32-Bit-Schadprogramme auf Windows x64 loszuwerden. Ein erfahrener Anwender wird natürlich jederzeit in der Lage sein, sämtliche 32-Bit-Prozesse im Task-Manager zu vernichten, um dann mit einem einfachen 32-Bit-Scanner alle infizierten Dateien zu desinfizieren beziehungsweise zu löschen. Die Trennung zwischen den 32-Bit- und 64-Bit-Prozessen in Windows x64 macht es einem 32-Bit-Scanner jedoch recht schwer, einige der oben genannten Schadprogramme zu beseitigen, während sie aktiv sind.

Schlussfolgerungen

Mit Windows x64 scheint es Microsoft endlich gelungen zu sein, eine IE-Version bereitzustellen, die gegen die meisten der aktuellen IE-orientierten Malware-Bedrohungen relativ immun ist – dabei spreche ich natürlich vom 64-Bit-IE. Die schlechte Nachricht ist, dass dies nicht durch einen Durchbruch in Sicherheitsfragen bei Microsoft selbst gelang, sondern quasi als Nebeneffekt wegen des völligen Fehlens an Unterstützung für Java, 32-Bit-ActiveX-Steuerelemente, Shockwave-Content und PDFs. Deshalb werden die meisten Anwender einfach den 32-Bit-Internet-Explorer benutzen, der, wie wir gesehen haben, ebenso malwarefreundlich ist, wie alle anderen Versionen, die derzeit auf Windows XP 32-Bit laufen. Jedoch sollte es für die meisten Anwender, die über einen modernen 64-Bit-Antiviren-Scanner mit aktivierter O/A-Komponente verfügen, kein Problem sein, 32-Bit-Malware wirksam zu begegnen – dank der guten Trennung zwischen 64-Bit- und 32-Bit-Bereich in Windows x64 sollte es sogar einfacher sein, mit 32-Bit-Schadprogrammen fertig zu werden. In diesem Fall werden Windows-x64-Anwender also weniger Probleme mit Malware haben als ihre 32-Bit-Kollegen. Natürlich nur so lange, bis 64-Bit-Malware populär wird.

Quellen:

Der Artikel wurde im Original in Virus Bulletin December 2005 veröffentlicht.

  1. Costin Raiu, „Enhanced“ virus protection, Proceedings of the Virus Bulletin International Conference 2005, S. 131–138.
  2. Microsoft: List of limitations in 64-Bit Windows
  3. Microsoft: Differences between the 32-bit and 64-bit versions of Internet Explorer that are included in the x64-based versions of Windows Server 2003 and in Windows XP Professional x64 Edition

Ähnliche Beiträge

Schreibe einen Kommentar

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