Atak rozbicia stosu - HOW TO be SECURE??

Hunter

Użytkownik
Dołączył
Październik 29, 2005
Posty
478
Przeczytawszy arta Sinis'a który przedstawił "bof" postanowiłem opisać jak w łatwy sposób zabezpieczyć się przed tego typu "atakowywaniem" ^^


# Na czym polega atak rozbicia stosu ?

Otóż w językach programowania zmienne przechowywane są w obszarze pamięci która pięknie się zwie "Stosem". Cały "trick" polega na tym aby udało się zapisać do stosu więcej danych niżeli umożliwia to zarezerwowana w nim pamięć która zapisuje się w naszych pięknych RAM'ach. Dzięki temu będziemy mogli zmienić znajdujące się już dane i wykorzystać do naszych celów (jakich to przedstawił Sinis w swoim art.) czyt. "nadpisać stos"

główne funkcje przyczyniające się do wykonania tego ataku: strcpy, strcat, sprintf, vsprintf, gets

zresztą never mind więcej info -> http://centrum.bezpieczenstwa.pl/artykuly/h07_bo.pdf

# Zabezpieczamy się przed atakiem rozbiciem stosu =)

Pierw zacznijmy od tego aby korzystać z jadra 2.4.x i dajmy sobie spokój z 2.6.x ( n/c -.- )

$ Grsecurity http://www.grsecurity.net
jest to nakładka do Linuksa 2.4.x OpenWall http://openwall.com
Służy ona do rozszerzenia jadra o stos który uniemożliwiał wykonanie w nim kodu programu, zwiększenie bezpieczeństwa systemu plików, ograniczenie dostępu do katalogu /proc i wzbogacone ograniczanie zasobów (np. race conditions) w przypadku plików utworzonych w tempie :)

Wiec co jest lepsze OW or GR ? no kurcze sam nie wiem, każdy ma swoje zdanie... Gorion woli GR z tego co mi wiadomo (taka mała ciekawostka dla jego fanów ;) )

$ Zabezpieczenie z poziomu kompilatora (wystarczyłoby aby uchronić się przed atakiem Sinis'a)
- ProPolice http://www.trl.ibm.com/projects/security/ssp/
- StackGuard http://citeseer.ist.psu.edu/old/cowan98stackguard.html
- Libsafe (osobiście polecam) http://www.research.avayalabs.com/gcm/usa/en-us/initiatives/all/nsr.htm&Filter=ProjectTitle:Libsafe&Wrapper=LabsProjectDetails&View=LabsProjectDetails

Rozwiązania dynamiczne działające równocześnie z programem działają podobnie jednak różnią się szczegółami implementacjami.
Standardowo w stosie umieszczana jest losowa liczba która ma zmienić wartość powrotną tak aby zamiast shella dostać jedną wielką "KUPĘ" :)

Metoda działania:

Dla kumatych - na stosie miedzy informacjami sterującymi wykonywaniem softa a zmiennymi jest generowana losowa liczba która ma za zadanie uniemożliwienie umieszczenia przez... (muszę dokończyć)


Dla topornych - wysyłamy puste płótno aby jakiś koleś który dla nas będzie tym stosem namalował Mone Lize (shell), lecz przy dostarczaniu obrazu występuje kraksa i wylewa się farba na płótno przez co zamiast Mony Lizy dostajemy dużego Kleksa (n/c -.-)


////// TO BE CONTINUED //////
 
Ostatnia edycja:
Do góry Bottom