Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w

Podobne prezentacje


Prezentacja na temat: "PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w"— Zapis prezentacji:

1 PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w
WSIZ „Copernicus” 6 ZINF, Łukasz Rajzer, nr indeksu 1749

2 B u f f e r O v e r f l o w Wprowadzenie
Buffer Overflow – ogólna definicja Struktura pamięci Zasada działania włamującego Przykłady podatnych kodów Wskazówki dla programistów

3 Bufor programu Program komputerowy składa sie kodu, który korzysta ze zmiennych zapisanych w różnych miejscach pamięci. Podczas wykonywania sie programu zmiennym przydzielana jest pamięć, a jej ilość zależy od rodzaju informacji, które ma przechowywać zmienna. Na przykład dane typu Short Integer zajmują niewiele miejsca w pamięci RAM, natomiast dane Long Integer zajmują go więcej. Istnieją różne rodzaje zmiennych, a każdy rodzaj może potrzebować innej ilości pamięci. Przestrzeń zarezerwowana w pamięci dla zmiennej jest używana do przechowywania informacji niezbędnych do wykonywania sie programu. Program przechowuje w tym obszarze pamięci zawartość zmiennej i w razie potrzeby pobiera ja stamtąd. Ta wirtualna przestrzeń nazywana jest buforem.

4 Zapowiedź problemu //syslog_test_1_c #include <stdio.h>
#include <string.h> int main(int argc, char **argv) { char tab1[6] = "TEKST"; char tab2[12] = "DLUGI TEKST"; printf("\n tab1: %s", tab1); printf("\n tab2: %s", tab2); strcpy(tab2,"TO BEDZIE HAKER ATAK"); return 0; }

5 B u f f e r O v e r f l o w Definicja ogólna
Przepełnienie bufora (ang. Buffer overflow) polega na nieplanowanej przez twórcę ingerencji w bufor programu; podanie większej ilości danych przekraczających tablicę – wydzielony obszar pamięci zostaje nadpisany nadmiarowymi informacjami. Nadpisanie pamięci może nieść skutek zmiany wartości zmiennych, jak i adresu powrotów funkcji. W najgorszym przypadku ataku dane nadmiarowe są nowymi instrukcjami, umożliwiającymi napastnikowi sterowaniem pracą procesora.

6 Stos po wywołaniu funkcji

7 Zaatakowany program

8 Hasło – sam sobie ustalę 
//password.c #include <stdio.h> #include <string.h> void check_password(char *pass1, char *pass2){ char buffer1[8]; char buffer2[8]; strcpy(buffer1, pass1); strcpy(buffer2, pass2); printf("buffer1: '%s' buffer2: '%s'\n", buffer1, buffer2); if( strcmp(buffer1, buffer2) == 0 ) printf("password ok\n"); else printf("wrong password\n"); } int main() { char stored_password[8]; char entered_password[8]; strcpy(stored_password,"mypass"); printf("Enter password: "); gets(entered_password); check_password(stored_password, entered_password); printf("Correct password: %s\n", stored_password); return 0;}

9 * Przepełnienie sterty
Sterta (ang. heap) nazywamy obszar pamięci dynamicznie przydzielonej aplikacji w celu przechowywania w niej zmiennych. W ataku przepełnienia sterty haker u siłuje zmienić zawartość takich zmiennych, jak hasła, nazwy plików oraz identyfikatory UID znajdujące się na stercie. Jaka jest różnica miedzy przepełnieniem bufora a przepełnieniem sterty? W przypadku przepełnienia bufora zmiana zawartości adresu powrotu znajdującego się na stosie oznacza próbę wykonania określonych instrukcji maszynowych. W przypadku przepełnienia sterty zmiana zawartości zmiennych dynamicznych oznacza próbę podniesienia poziomu uprawnień w systemie. Programy stosujące przepełnienie sterty wykorzystują błędy formatów oraz atakują funkcje malloc( ) i free( ).

10 Shellcode Shellcode - anglojęzyczny zlepek słów shell (powłoka) oraz code (kod) oznaczający prosty, niskopoziomowy program odpowiedzialny za wywołanie powłoki systemowej w ostatniej fazie wykorzystywania wielu błędów zabezpieczeń przez exploity.

11 Zapobieganie przepełnieniom bufora
Sprawdzanie wielkości danych przed umieszczeniem ich w buforze. Użycie funkcji ograniczających liczbę i (lub) format wprowadzanych znaków. Unikanie niebezpiecznych funkcji języka C, takich jak scanf( ), strcpy( ), strcat( ), getwd( ), gets( ), strcmp( ), sprintf( ). Bezpieczniejsze: JAVA, .NET. Funkcja systemu operacyjnego DEP (Data Execution Prevention) NX-bit (AMD), XD-bit (Intel) Narzędzia analizujące kod, chroniące stos

12 Literatura Strażnik bezpieczeństwa danych - Cyrus Peikari, Anton Chuvakin; Hellion 2005 (tyt. oryg. Security Warrior) Buffer Overflow Attacks - Detect, Exploit, Prevent – James C. Foster; Syngress 2005 Problem przepełnienia bufora – Piotr Kubowicz – opracowanie problemu


Pobierz ppt "PRZEPEŁNIENIE BUFORA B u f f e r O v e r f l o w"

Podobne prezentacje


Reklamy Google