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.
- Jürgen Schmidt
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.
- Defeating Windows 8 ROP Mitigation beschreibt dieses Konzept detaillierter und
- ROP chain for Windows 8 liefert den passenden ROP-Code, um existierenden Exploit Code unter Windows 8 weiterhin zu nutzen.
(ju)