Ratgeber Software

So wehren Sie Hacker-Angriffe besser ab

27.01.2011
Von Thorsten Eggeling

Anatomie einer Adobe-Reader-Lücke

Es erfordert schon eine genaue Kenntnis des Betriebssystems und unterschiedlicher Programmmier-Techniken, um Angriffspunkte in Programmen zu finden. Einfache Untersuchungen kann aber jeder vornehmen. Mit dem Process Explorer aus der Microsoft Sysinternals-Suite 2010.10 ist es möglich, Programme zu analysieren.

Am Adobe Reader lässt sich gut zeigen, wie Sie potenzielle Sicherheitslücken finden. Die lassen sich dann mit Emet schließen. Bis Redaktionsschluss bestand immer noch eine gefährliche Sicherheitslücke im Adobe-Programm. Sie ermöglicht es Angreifern, den PC zum Absturz oder unter ihre Kontrolle zu bringen. Dazu startet eine entsprechend präparierte PDF-Datei bestimmte Funktionen aus der Datei Icucnv36.dll, über die sich beliebige Dateien auf die Festplatte schreiben und starten lassen. Das ist nur möglich, weil Adobe Icucnv36.dll nicht mit der wichtigen Sicherheitsfunktion ASLR erstellt hat.

Wie Sie prüfen, ob bei einem Programm oder einer DLL ASLR aktiv ist, zeigt PC WELT exemplarisch am Adobe Reader. Sie können auch ein beliebiges anderes Programm starten und untersuchen. Schritt 1: Starten Sie den Adobe Reader, und öffnen Sie eine PDF-Datei.
Schritt 2: Entpacken Sie die Sysinternals-Suite, und starten Sie Process Explorer ("procexp").
Schritt 3: Suchen Sie in der Baumansicht unterhalb von "explorer.exe" nach "AcroRd32". Wählen Sie die Zeile mit einem Mausklick aus. Blenden Sie dann über "View, Show Lower Pane" das Informationsfenster ein. Klicken Sie auf "View, Lower Pane View, DLLs", um die DLL-Programmbibliotheken zu sehen, die das Programm geladen hat. Gehen Sie auf "View, Select columns" und dann auf die Registerkarte "DLL". Setzen Sie per Mausklick Häkchen vor "Base Adress" und "ASLR Enabled".

Im unteren Bereich des Fensters sehen Sie jetzt alle Dateien, die der Adobe Reader gerade geladen hat. Darunter sind nicht nur DLL-Dateien, die Programmcode enthalten, sondern beispielsweise auch DEU-Dateien, in denen nur die deutschsprachige Beschriftung der Programmoberfläche enthalten ist. In der Spalte "ASLR" sehen Sie, ob ASLR aktiv ist. Wenn dort nichts oder "n/a" steht, ist ASLR entweder nicht vorhanden oder nicht anwendbar. In der Spalte "Base" sehen Sie die Speicheradresse, an die eine DLL geladen wurde. Wenn ASLR aktiv ist, ändert sich diese Adresse bei jedem Programmstart auf einen zufälligen Wert.
Adobe Reader lädt die Datei Icucnv36.dll allerdings nicht immer, denn die Programmbibliothek ist nur für die Verarbeitung bestimmter Zeichensätze erforderlich. Wenn Sie diese DLL-Datei nicht im Process Explorer sehen, versuchen Sie es einfach mit einer anderen PDF-Datei.

Da für Icucnv36.dll ASLR nicht aktiv ist, lädt Windows die DLL immer an dieselbe Speicheradresse. Wenn der Adobe Reader jedoch durch Emet geschützt ist, sehen Sie, dass sich die Adresse nach einem erneuten Start des Programms geändert hat. Der Process Explorer zeigt in der Spalte "ASLR" jedoch auch jetzt nichts an, da sich dieser Eintrag nur auf DLL-Dateien bezieht, bei denen diese Funktion standardmäßig aktiv ist.

Gezielt Sicherheitslücken in Programmen finden
Der Process Explorer eignet sich gut für die Analyse laufender Programme und ihrer Komponenten. Wenn Sie aber gezielt untersuchen wollen, welche Sicherheitsfunktionen ein bestimmtes Programm mitbringt, ist das kostenlose, englischsprachige Microsoft-Programm Binscope die bessere Wahl. Nach dem Start des Programms gehen Sie auf die Registerkarte "Configure". Hinter "Path" tragen Sie den kompletten Pfad zu einer EXE- oder DLL-Datei ein. Oder Sie klicken auf die Schaltfläche rechts vom Eingabefeld, um eine Datei auszuwählen. Danach klicken Sie auf die Schaltfläche "Run".

Nach der Untersuchung sehen Sie den Bericht auf der Registerkarte "Report". Im Beispielfall der unsicheren Datei Icucnv36.dll erscheint "Failed Checks" und darunter "DBCheck (Fail)". Nach einem Klick auf die Zeile zeigt Binscope die Zusatzinfo "Image is not marked Dynamic Base compatible" an. Diese Meldung erscheint bei Programmen, die kein ASLR beherrschen.

Für einen intensiven Test aller Dateien auf dem Rechner wäre der Aufwand natürlich zu groß. Es kann sich aber lohnen, wenigstens die Programme zu prüfen, deren Hersteller schon seit einiger Zeit keine Aktualisierungen mehr bereitstellen. Falls Binscope bei Ihnen Sicherheitsbedenken meldet, sollten Sie Ihr Betriebssystem vor Lücken in diesem Programm mit Emet schützen.

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation PC-Welt. (ph)