SWITCH Security-Blog

SWITCH-CERT IT-Security Blog

Schutzmassnahmen gegen Drive-by-Attacken – Teil III


Dieser Artikel wurde von Renato Ettisberger geschrieben.

Fortgeschrittene Drive-by-Angriffe

Im ersten Teil der Serie haben wir uns auf Windows XP und die dort implementierten Gegenmassnahmen konzentriert. Wie von uns aufgezeigt, bieten sie wenig Schutz vor Drive-by-Angriffen. Im zweiten Teil lag der Fokus bei den Plug-Ins, die die Sicherheit bei Windows Vista und Windows 7 negativ beeinflussen können. In beiden Teilen lag der Schwerpunkt auf 08/15-Angriffen die nicht sehr fortgeschritten sind. Dies ändern wir nun in diesem Teil der Serie. Wir zeigen auf, dass sich die Schwachstelle auch auf Windows 7 und zwar ohne Nutzung von irgendwelchen Plug-Ins ausnutzen lässt. Als Gegenmassnahme stellen wir u.a. mit EMET ein frei erhältliches Tool von Microsoft vor. EMET kann sogar diese fortgeschrittenen Angriffe stoppen. Es ist aber kein Allheilmittel, wie die abschliessende Demo aufzeigen wird. Schliesslich geben wir im letzten Abschnitt Tipps, wie man seinen Windows-PC besser vor Angriffen dieser Art schützen kann.

Info-Leaks

In den Metasploit-Modulen wird der Umstand ausgenutzt, dass einige DLLs an vorhersehbaren Adressen liegen. Aus diesen DLLs werden anschliessend ROP-Gadgets zusammengestellt, um DEP auszuhebeln. Doch wie sieht es aus, wenn keine DLL an eine vorhersehbare Adresse geladen wird? Eine weitere Möglichkeit, um DEP und ASLR zu umgehen, sind so genannte Info-Leaks. Sie erlauben es einem Angreifer, die Basis-Adresse einer oder mehrerer DLLs automatisch auszulesen. Ist die Basis-Adresse einer DLL bekannt, kann ein Angreifer die dort vorhandenen Assembler-Anweisungen zur Erstellung von ROP-Gadgets nutzen und damit seinen Code ausführen.

In einem solchen Fall versucht der Angreifer zuerst, die Basis-Adresse einer DLL zu ermitteln, indem er ein Info-Leak nutzt oder dies selbst erzwingt. Peter Vreugdenhil hat diesen Ansatz als einer der ersten genutzt, VUPEN hat ein ähnliches Vorgehen in einem Blog-Post ebenfalls detailliert beschrieben. Die Idee dahinter ist so genial wie einfach: Durch den Heapoverflow können wir beispielsweise das Längen-Feld eines JavaScript-Strings mit einem grossen Wert überschreiben. Das erlaubt es uns Daten zu lesen, die sich hinter dem JavaScript-String befinden. Das Vorgehen ist ähnlich dem in Teil 1 beschriebenen:

  • Wir erstellen einige JavaScript-Strings der Grösse 70h.
  • Dann geben wir einen davon frei und allozieren ein Style-Objekt, das den Platz des freigegebenen Strings einnimmt.
  • Anschliessend überschreiben wir dank des Heapoverflows das Längen-Feld eines JavaScript-Strings.
  • Mittels JavaScript-Code sind wir damit in der Lage, die VTable-Adresse des hinter dem String befindlichen Style-Objektes auszulesen.
  • Dieses Objekt weist eine fixe Adresse in der DLL mshtml.dll auf.
  • Dank der ausgelesenen VTable-Adresse und dem bekannten Offset zur Startadresse von mshtml.dll lässt sich deren aktuelle Basis-Adresse ermitteln.
  • Aus der DLL mshtml.dll erstellen wir mittels ROP die notwendigen Code-Sequenzen, um DEP zu umgehen und unseren Code auszuführen.

Das folgende Video zeigt diesen Vorgang:

EMET To The Rescue

EMET ist ein frei erhältliches Tool von Microsoft, das die Sicherheit von Windows-Systemen erheblich erhöht. Das „Enhanced Mitigation Experience Toolkit“ oder eben kurz EMET, erschwert das Schreiben von Exploits wesentlich. Beispielsweise nutzen viele Browser-Exploits das sogenannte Heapspraying, eine Technik, um den Heap in einen ansatzweise vorhersehbaren Zustand zu versetzen. Der Angreifer kann mittels Heapspraying beispielsweise sicher stellen, dass sich sein ausführbarer Code an der Adresse 0x0c0c0c0c befindet. Diese Technik wird sowohl beim Metasploit-Module wie auch in VUPENs Blog genutzt bzw. beschrieben.

EMET tritt dem entgegen, indem es diese von den Angreifern häufig genutzten Speicherbereiche vorab reserviert. Ein Grossteil der kürzlich aufgetauchten Browser-Exploits wird damit unschädlich gemacht, selbst wenn es für die Schwachstelle noch keinen Patch gibt. Ein gutes Beispiel ist die im September 2012 aufgetauchte Schwachstelle im Internet Explorer 6-9. Obwohl es bereits Angriffe gab, stand kein Patch zur Verfügung. Alleine die Nutzung von EMET hätte verhindert, dass die bekannten Angriffs-Scripts zum Erfolg geführt hätten. Im Bild unten ist die Oberfläche von EMET 3.0 zu sehen.

Unter „Configure System“ lassen sich die allgemeinen Einstellungen für das gesamte System setzen. In diesem Fall haben wir die Settings auf „Maximale Sicherheit“ gesetzt. Dies reicht jedoch noch nicht aus, um den eben vorgestellten Exploit zu stoppen. Dazu müssen wir unter „Configure Apps“ die ausführbare Datei iexplore.exe auswählen und dort alle Häkchen setzen:

Diese Einstellungen lassen sich auf gleiche Weise bei anderen Applikationen vornehmen. Beim Versuch, unseren letzten Exploit auszuführen, greift EMET ein und zeigt uns folgende Meldung an:

Da der Exploit Heapspray nutzt, erkennt EMET dies und stoppt den Angriff. Es gibt jedoch Wege, wie man EMET umgehen kann. Das folgende Video zeigt dies anhand der in dieser Serie besprochenen Schwachstelle:

Nichtsdestotrotz stoppt EMET beinahe sämtliche, öffentlich bekannten Drive-by-Angriffe, bei denen die Schwachstelle etwas mit Speicherkorruption zu tun hat. Dies schliesst Stack- und Heapoverflows oder auch Use-After-Free-Lücken mit ein, die den Grossteil von Browser-Schwachstellen ausmachen. EMET ist in einem Preview in der Version 3.5 verfügbar. Dort sind zusätzlich Massnahmen gegen das ROP implementiert. EMET bietet jedoch meist keinen Schutz bei Java-Schwachstellen, da diese selten etwas mit Speicherkorruption zu tun haben.

Tipps und hilfreiche Tools

Wie angekündigt geben wir abschliessend einige Tipps, wie Sie Ihren Windows-PC besser vor den eben beschriebenen Angriffen schützen können. Wichtiger Hinweis: Wir verfolgen dabei einen pragmatischen Ansatz. Empfehlungen wie der Einsatz von Browser-Add-Ons wie z.B. NoScript für Firefox mögen zwar für versierte Benutzer sinnvoll sein, für den Otto-Normalverbraucher sind sie aber kaum tauglich.

Um die Wirksamkeit der Massnahmen zu testen, haben wir drei Windows-XP-Setups mit Live-Malware-URLs getestet. Das erste Windows XP-System war veraltet (nur SP2 installiert) und hatte veraltete Applikationen wie Java 6 Update 26, einen alten Adobe Flashplayer etc. installiert. Das zweite Windows XP-System war OS-mässig auf dem aktuellsten Stand, lediglich Applikationen von Drittherstellern waren veraltet. Das dritte Windows XP-System war schliesslich auf dem aktuellsten Stand, inklusive aller Applikationen. Zudem haben wir auf diesem System Java deinstalliert und somit die unten aufgeführten Massnahmen 1:1 umgesetzt (ohne Installation von EMET).

Das Resultat ist kaum überraschend: Bei 20 getesteten URLs wurde das 1. System jedesmal mit Schadcode infiziert, inklusive dreier BlueScreens. Das zweite System wurde mindestens bei jedem zweiten Test infiziert, während das letzte System nie infiziert wurde. Dieser Test ist natürlich nicht repräsentativ. Er zeigt aber trotzdem eines: Wenn das System aktuell gehalten wird, sinkt die Gefahr einer Drive-by-Infektion erheblich (dies trifft natürlich nur auf 08/15-Malware-Angriffe zu). Anbei sind unsere Tipps zur Absicherung eines Windows-Systems aufgeführt.

Aktuelles OS und aktuellen Browser einsetzen

Je aktueller, sprich neuer ein Betriebssystem ist, desto mehr Schutzmassnahmen sind standardmässig vorhanden. Dies trifft auch auf den Webbrowser zu. Deshalb sind wenn immer möglich ein aktuelles Betriebssystem und Browser einzusetzen.

Aktivieren Sie die automatischen OS-Updates

Wenig spektakulär und oft gehört – dennoch verhindert diese Massnahme Angriffe auf bekannte und gepatchte Schwachstellen in den Windows-Komponenten wie MS Office (Word, Excel, PowerPoint), den Internet Explorer oder den Windows Media Player. Wichtig auch: Bestimmte Updates können nur dann eingespielt werden, wenn das System auf dem aktuellsten Stand ist.

Nutzen Sie die Windows-Firewall sowie eine AV-Software

Standardmässig ist bei Windows seit Windows XP (SP2) die Firewall aktiviert. Dies bietet Schutz vor direkten Angriffen aus dem Internet und sollte auf keine Fälle deaktiviert oder ver-konfiguriert werden. Der Einsatz einer aktuellen Antiviren-Software ist ein Muss.

Aktualisieren Sie stets Applikationen von Drittherstellern

Das Hauptproblem! Auf vielen PCs sind Programme von unterschiedlichen Herstellern installiert. Einige davon können sich in der Zwischenzeit automatisch aktualisieren, andere leider nicht. Es ist entscheidend, dass Sie diese Applikationen stets auf dem aktuellsten Stand halten. Hier bietet sich das kostenlose Tool “Personal Software Inspector (PSI)” von Secunia an. Das Programm scannt den PC nach veralteter Software und bietet eine Möglichkeit, diese zu aktualisieren. PSI unterstützt verschiedene Sprachen und ist sehr wertvoll, wenn man seinen PC effektiv schützen will.

Deinstallieren Sie Java

Schwachstellen in Java tauchen regelmässig auf und sind in der Zwischenzeit das Haupteinfallstor für Drive-by-Angriffe. Für den Otto-Normalverbraucher ist es deshalb mehr als empfehlenswert, Java zu deinstallieren – der Grossteil der Webseiten benötigt kein Java. Sie können Java entfernen, indem Sie unter “System Einstellungen” -> “Programme” -> auf “Programm deinstallieren” gehen.

Verwenden Sie EMET für kritische Systeme

Wenn Sie die wenigen Tipps von oben konsequent umsetzen, sinkt die Wahrscheinlichkeit einer erfolgreichen Drive-by-Attacke bereits erheblich. Für diejenigen, die einen zusätzlichen Schutzschild hochfahren möchten, bietet sich EMET an. Wichtig ist es, die zu schützenden Prozesse/Applikationen entsprechend in EMET aufzunehmen. Dieser Artikel zeigt viele wertvolle Tipps zum Vorgehen. Doch welche Applikationen soll man mit EMET schützen? Grundsätzlich sollten Sie Programme schützen, die in der einen oder anderen Form mit Daten aus dem Internet “in Berührung” kommen. Was heisst das genau? Hier eine nicht abschliessende Liste von schützenswerten Programmen:
– Webbrowser
– Mediaplayer
– PDF-Reader
– Chat- oder Internet-Telefonie-Programme
– etc.

Fazit

Drive-by-Angriffe sind ein wirkungsvolles Mittel, um Systeme mit Schadcode zu infizieren. Dennoch können die Risiken einer Infektion mit einigen wenigen Massnahmen massiv minimiert werden. Der Otto-Normalverbraucher ist nicht im Visier von Gruppierungen, die Industriespionage betreiben oder Sabotage wie im Falle von Stuxnet. Vielmehr sind die meisten Internet-User den 08/15-Angriffen ausgesetzt, die mittels automatisierter Exploit-Kits umgesetzt werden. Deshalb ist es bei solchen Angriffen nicht entscheidend, welchen Browser man einsetzt. Viel wichtiger ist es, das System und sämtliche Applikationen auf dem aktuellen Stand zu halten. Mit den oben beschriebenen Massnahmen haben diese Exploit-Kits kaum Aussicht auf Erfolg.

Was für Windows-Systeme gilt ist im Prinzip 1:1 auch auf andere Client-Systeme anwendbar. Auch Mac OS X-Systeme sind längst nicht mehr sicher vor Angriffen aus dem Internet. Wir hoffen, dass der eine oder andere Tipp hilft, Ihr System effektiver zu schützen.

Comments are closed.