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 //////
# 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: