Bezpieczeństwo systemów komputerowych Piotr Witkowski seminarium z systemów [rozproszonych] Bezpieczeństwo systemów komputerowych p.1/40
Definicja Miara bezpieczeństwa systemu jest stopień jego odporności na próby niepowołanego dostępu. Każdy system o ograniczonym dostępie jest potencjalnym celem ataku. Pojęcie systemu można rozumieć bardzo, bardzo szeroko. Bezpieczeństwo systemów komputerowych p.2/40
Bezpieczeństwo w przeszłości Ofiary wadliwych systemów bezpieczeństwa: Juliusz Cezar - zasztyletowany Aleksander Wielki,Napoleon Bonaparte - otruci Bezpieczeństwo systemów ma znaczenie globalne: o powodzeniu wszystkich kluczowych operacji IIWŚ decydowała skuteczna infiltracja systemów dystrybucji/pozyskiwania danych przeciwnika (przykłady: operacje Barbarossa( 41),Cytadela( 43),DDay( 44),kontratak sprzymierzonych przeciwko niemieckim UBootom 42-43). Bezpieczeństwo systemów komputerowych p.3/40
Bezpieczeństwo w przeszłości, cd. W okresie zimnej wojny możliwości infiltracji systemów znacznie się zwiększyły. Niektóre osiagnięcia USA w tym zakresie: incydent kolski sprzedaż do ZSRS w latach 80 elektronicznie sterowanych zaworów do rurociagów ropy naftowej sprzedaż do PRL systemów łaczności telefonicznej Bezpieczeństwo systemów komputerowych p.4/40
Wojownicy... Tacy ludzie odeszli w przeszłość Bezpieczeństwo systemów komputerowych p.5/40
Wojownicy jutra Bezpieczeństwo systemów komputerowych p.6/40
Zaatakować można: algorytm lub protokół rozwój narzędzi kryptograficznych i procedur automatycznej weryfikacji istotnie ogranicza tego rodzaju poczynania implementację nawet teoretycznie najdoskonalszy protokół zaimplementowany może być przez ignoranta użytkownika social engineering Bezpieczeństwo systemów komputerowych p.7/40
Terminologia anonymous remailer back door brute force attack data driven attack denial of service (DoS) distributed denial of service (DDoS) data mining DNS spoofing FIN attack fork bomb Bezpieczeństwo systemów komputerowych p.8/40
Terminologia [ip] hijacking HTML injection ICMP flood intrusion detection systems keystroke logger leapfrog attack letter bomb logic bomb mail bomb Bezpieczeństwo systemów komputerowych p.9/40
Terminologia malicious code man in the middle misrepresentation pagejacking packet sniffing phage piggyback attack Bezpieczeństwo systemów komputerowych p.10/40
Terminologia ping of death ping sweep port scanning replay attack smurfing sniffing SYN flood attack whitemail Bezpieczeństwo systemów komputerowych p.11/40
Plan DoS Spoofing Snifing skanowanie portów przepełnienie bufora Bezpieczeństwo systemów komputerowych p.12/40
DoS Atakuje się: plik/partycję wymiany pasmo przesyłowe struktury jadra pamięć RAM dyski pamięć podręczna konta użytkowników Bezpieczeństwo systemów komputerowych p.13/40
Przykład ataku: bombardowanie geometryczne A------------B C------------D A,B,C,D - uniksowe konta pocztowe z dostepem do powłoki. Kazde konto u innego dostawcy. w katalogu domowym znajduje się plik.forward z adresami przekierowania poczty, jak na szkicu powyżej. Atak: za pomoca anonimowego remailera wysyła się wiadomość na któreś z powyższych kont. Klasyfikacja: atak typu DoS, atak na protokół Obrona: protokół forwardingu(przekazywania) powinien wykrywać cykle. Bezpieczeństwo systemów komputerowych p.14/40
Przykład ataku: SYN flood Otwarcie połaczenia w protokole TCP(three-way handshake): klient wysyła do serwera pakiet SYN serwer odpowiada pakietem SYN/ACK klient wysyła pakiet ACK połaczenie jest otwarte Bezpieczeństwo systemów komputerowych p.15/40
Przykład ataku: SYN flood Atak: Napastnik wysyła strumień pakietów SYN do ofiary Atakowany komputer dla każdego nadchodzacego pakietu próbuje utworzyć połaczenie Powstaja pół otwarte (half open)) czekajace na odpowiedź napastnika, która nigdy nie nadejdzie Powoduje to poważne spowolnienie lub zablokowanie ofiary Sieć napastnika wskutek dużej liczby wysłanych pakietów również się zatyka Bezpieczeństwo systemów komputerowych p.16/40
Przykład ataku: Land Nadawca wysyła sfałszowany(fake) pakiet SYN zawierajacy adres źródłowy równy docelowemu Atakowany serwer usiłuje nawiazać połaczenie z samym soba Powoduje to zawieszenie systemu. Bezpieczeństwo systemów komputerowych p.17/40
Przykład ataku: Teardrop bład w implementacji stosu TCP/IP zarówno w Windows jak i w Linux/Unix System nie radził sobie z pofragmentowanymi pakietami Odpowiednio spreparowane pakiety przy łaczeniu w całość na docelowej maszynie powodowały nadpisanie jadra Firewalle albo przepuszczały zabójcze pakiety albo też same się zawieszały Bezpieczeństwo systemów komputerowych p.18/40
Przykład ataku: Smurfing Bezpieczeństwo systemów komputerowych p.19/40
Przykład ataku: Smurfing Napastnik wysyła pakiety ICMP echo/reply typu broadcast (czyli pakiety zapytania ping) do sieci pośredniczacej w ataku Fałszuje adres IP podszywajac się pod adres ofiary Ofiara zostaje zalana odpowiedziami na pinga Bezpieczeństwo systemów komputerowych p.20/40
Przykład ataku: distributed SYN Flood Bezpieczeństwo systemów komputerowych p.21/40
Spoofing Mianem spoofingu określamy podszywanie sie pod inny komputer. Spoofing jest bardzo użyteczna metoda ataku gdy komputer pod który się podszywamy jest maszyna zaufana dla innego komputera - naszej ofiary. Elementy zaufania opartego o adresy IP sa stosowane między innymi w programie rlogin, który pozwala zaufanym komputerom uzyskać konsolę po połaczeniu sie na port 513. Jeżeli uda nam się podszyć pod IP zaufanego komputera to uzyskamy dostep do serwera bez hasła. Bezpieczeństwo systemów komputerowych p.22/40
Przykład: IP-Spoofing Zakładamy, że jest serwer YY, który traktuje maszynę X jako zaufana i pozwala na logowanie sie z tej maszyny bez hasła (rlogin, port 513). Nasz komputer V(ampire) nie jest oczywiście w żaden sposób uprzywilejowany przez YY lub X. Atakujemy maszynę X atakiem Denial of Service, X nie może odpowiadać na wywołania. V podszywajac się pod X wysyła pakiet z SYN do komputera YY. YY przyjmuje chęć połaczenia i wysyła pakiet SYN/ACK do komputera X. Bezpieczeństwo systemów komputerowych p.23/40
Przykład: IP-Spoofing Komputer X nie może odebrać połaczenia. Gdyby się tak stało, to w odpowiedzi na SYN/ACK będace następstwem SYN, którego on nie wysyłał do YY wysłałby RST - polecenie resetujace proces połaczenia - to jedno z zabezpieczeń protokołu TCP. Ale X nie wyśle pakietu z RST, bo jest zablokowany DOSem. Na pakiet SYN/ACK od YY do X odpowie V podszywajac się pod X. Połaczenie zostanie nawiazane. Bezpieczeństwo systemów komputerowych p.24/40
: Przykład: IP-Spoofing Uwagi: Trzeba odgadnać wartość ISN Protokół wymaga losowego generowania ISN. W starszych wersjach uniksów wartości SN były przechowywane między sesjami Obecnie można przewidzieć kolejna wartość ISN na podstawie symulacji generatora pseudolosowego w komputerze ofiary Do tego jest konieczna znajomość RTT Bezpieczeństwo systemów komputerowych p.25/40
: Przykład: DNS/Web-Spoofing Bezpieczeństwo systemów komputerowych p.26/40
Sniffing Dotychczas omówione metody ataku były metodami aktywnymi Sniffing jest metoda całkowicie pasywna Bezpieczeństwo systemów komputerowych p.27/40
Skanowanie portów Techniki: Ping scan zapytanie o echo przy użyciu ICMP TCP/IP wymaga by każdy komputer odpowiadał na to zapytanie TCP connect() scan symulacja uczciwego połaczenia z portem próba połaczenia jest odnotowywana w logu ofiary Bezpieczeństwo systemów komputerowych p.28/40
Skanowanie portów TCP SYN scan wariant poprzedniej techniki używa three way handshaking atakujacy wysyła pakiet SYN ofiara odpowie SYN/ACK jeśli skanowany port jest aktywny wpp. zostanie przesłany pakiet RST atak trudniejszy do wykrycia TCP FIN scan Bezpieczeństwo systemów komputerowych p.29/40
Skanowanie portów FTP bounce attack protokół FTP wykorzystuje dwa porty: port 21 - połaczenie kontrolne i port 22 komunikacja właściwa komenda PORT pozwala ustawić IP i numer portu klienta łacz acego się z serwerem FTP włamywacz wykonuje PORT z parametrami ofiary włamywacz inicjuje transmisję danych z serwera FTP jeśli port ofiary jest nieaktywny to atakujacy poprzez kanał kontrolny otrzymuje informację o błędzie Bezpieczeństwo systemów komputerowych p.30/40
Skanowanie portów FTP bounce attack cd. wpp. możemy przypuszczać, że port ofiary jest aktywny potrzeba więcej finezji jeśli serwer porównuje adres IP połaczenia kontrolnego z adresem przesłanym za pomoca PORT UDP scan protokół bezpołaczeniowy o niemożności nawiazania połaczenia informuje pakiet ICMP_PORT_UNREACH Bezpieczeństwo systemów komputerowych p.31/40
Skanowanie portów UDP scan cd. wtedy albo port jest zamknięty albo usługa przesłaniana jest przez firewall ta technika zazwyczaj skanuje się duże przedziały portów(sweep) czyli omiatanie RFC 1812 zaleca stosowanie opóźnianień w komunikatach o błędach ICMP by utrudnić omiatanie Windows nie spełnia tego zalecenia co powoduje wyjatkow a efektywność UDP scan Bezpieczeństwo systemów komputerowych p.32/40
Skanowanie portów wszystkie powyższe techniki stosuje uniksowy skaner nmap Bezpieczeństwo systemów komputerowych p.33/40
Przepełnienie bufora Pozwala wykonać kod włamywacza z uprawnieniami superużytkownika(root) Najbardzie znanym przypadkiem zastosowania jest robak napisany w 88 przez R. Morrisa Co 4-ta słabość systemów sygnalizowana na www.securityfocus.com to przepełnienie bufora Bezpieczeństwo systemów komputerowych p.34/40
Przepełnienie bufora Organizacja pamięci procesu Jak wyglada wywołanie funkcji? #include <stdio.h> int main() { char first[8]="first"; char second[8]="second"; strcpy(second, "BufOverflow"); printf("%s\n", first); } Bezpieczeństwo systemów komputerowych p.35/40
Przepełnienie bufora Należy zmienić adres powrotu na stosie by wskazywał na pożadany przez włamywacza kod. Jednakowoż określenie gdzie na stosie znajduje się żadana komórka może być problematyczne Rozwiazanie:metoda prób i błędów + nadpisywanie adresami większego kawałka pamięci Bezpieczeństwo systemów komputerowych p.36/40
Przepełnienie bufora char shellcode[] =... char string[128]; int main(){ char buffer[96]; int i; long *long_ptr = (long *) large_string; for (i = 0; i < 32; i++) *(long_ptr + i) = (long) buffer; for (i = 0; i < (int) strlen(shellcode); i string[i] = shellcode[i]; strcpy(buffer, string); return 0; Bezpieczeństwo systemów komputerowych p.37/40 }
Przepełnienie bufora - zapobieganie Zabronić wykonywana kodu z segmentu stosu Po wejściu do funkcji na stos odkładamy pewna liczbę. Przed wyjściem sprawdzamy czy się zmieniła Rozwiazanie:metoda prób i błędów + nadpisywanie adresami większego kawałka pamięci Warianty: random canary - odkładamy losowa liczbę xor random canary - losowa liczba xor prawdziwy adres powrotu Bezpieczeństwo systemów komputerowych p.38/40
Przepełnienie bufora - zapobieganie Warianty cd. : terminatory - odkładamy liczbę będac a kodem instrukcji przerywajacej działanie funkcji kopiujacej (np. halt) Bezpieczeństwo systemów komputerowych p.39/40
Literatura Hack I.T - testy bezpieczeństwa danych, T.J. Klevinsky et c., wyd. Helion http://www.hacking.pl -najnowsze wieści dt. bezpieczeństwa sieciowego, podęczniki, kursy, programy http://lsd-pl.net -strona poznańskiej grupy The Last Stage of Derilium. Akwarium,Wiktor Suworow, wyd. AB, Warszawa mnóstwo innych Bezpieczeństwo systemów komputerowych p.40/40