Bufferoverflows auf CPUs mit NX Bit

From
Jump to navigation Jump to search

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

- Die in http://artofhacking.com/files/phrack/phrack58/P58-0X04.TXT beschriebene Methode funktioniert bei uns nicht.