Bufferoverflows auf CPUs mit NX Bit
Ziel ist es eine ret2libc-Angriff zu implementieren.
Wir benutzen als Ausgangspunkt: http://www.infosecwriters.com/text_resources/pdf/return-to-libc.pdf
- Linux ab Kernel 2.6.12 beinhaltet ASLR (address layout randomization) Dies lässt sich durch:
echo "0" > /proc/sys/kernel/randomize_va_space
ausschalten.
- Auf einem Linuxsystem mit NX-Bit kann man mit dem Programm "execstack" aus dem prelink-Packet einstellen, ob der Stack eines Programms ausführbar sein soll, oder nicht.
- Mit dem gcc-4.1 funktioniert das Überschreiben der Rücksprungaddresse nicht. Wir benutzen deshalb gcc-3.4. Damit funktioniert o.g. Anleitung.
- Mit Pax funktioniert weder unser Bufferoverflow-Demo noch das ret2libc-Demo (Grund: unklar)
- Auf einem AMD Athlon X2 funktionieren die Demos wie erwartet
- Auf Sun Sparc sind derartige Angriffe nicht ohne Weiteres möglich, da die ersten 6 Argumente und die Rücksprungaddressen in Registern liegen.
- ASLR umgehen nach http://artofhacking.com/files/phrack/phrack59/P59-0X09.TXT funktioniert auf Kernel 2.6.16 mit gcc-3.4
- noch zu untersuchen: http://artofhacking.com/files/phrack/phrack58/P58-0X04.TXT