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.
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)