ROP-Schutz in Windows 8 ausgetrickst

Windows 8 bringt eine Reihe von neuen Schutzmechanismen, die Exploit-Schreibern das Leben schwerer machen sollen. Doch die haben bereits einen Weg gefunden, eine dieser neuen Hürden zu umgehen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 1 Min.

Die Standardtechnik, die immer weiter verbreitete Data Execution Prevention (DEP) zu umgehen, ist es, sich kleine Code-Fragmente zusammen zu suchen, die dann Speicherverwaltungsfunktionen wie VirtualProtect nutzen, um den Speicherschutz wieder abzuschalten. Jedes dieser Fragmente endet mit einem Return-Befehl, der an die auf dem Stack abgelegte Adresse springt (daher Return Oriented Programming, ROP). Folglich braucht der Exploit-Schreiber einen speziell präparierten Stack. Da es in der Praxis oft schwer ist, den eigentlichen Stack so zu manipulieren, sorgt er dafür, dass die passende Byte-Sequenz auf dem Heap liegt und biegt den Stack-Pointer ESP dorthin um.

Da setzt Windows 8 an und kontrolliert beim Aufruf der Speicherverwaltungsfunktionen, ob der Stack-Pointer noch in den vom Thread Environment Block (TEB) vorgegebenen Bereich zeigt. Wenn nicht, wird der Prozess beendet. Der neue Trick der Exploit-Schreiber ist einfach: Sie geben Windows was es will und setzen ESP für den Aufruf der kritischen Funktionen temporär wieder zurück.

(ju)