Przykłady ataków. Błąd dotyczy np. forów dyskusyjnych z możliwością umieszczania plików grafcznych. Pozwala to na wykonanie dowolnego żądania HTTP.



Podobne dokumenty
Protokół FTP Protokół FTP

SSL (Secure Socket Layer)

ZiMSK. Konsola, TELNET, SSH 1

JAVA I SIECI. MATERIAŁY:

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Wykład 4. Metody uwierzytelniania - Bezpieczeństwo (3) wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Protokoły zdalnego logowania Telnet i SSH

Laboratorium nr 6 VPN i PKI

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Podstawy Secure Sockets Layer

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Bazy danych i usługi sieciowe

SSH - Secure Shell Omówienie protokołu na przykładzie OpenSSH

Sieci komputerowe. Zajęcia 4 Bezpieczeństwo w sieciach komputerowych

Zdalne logowanie do serwerów

Praktyczne aspekty wykorzystania nowoczesnej kryptografii. Wojciech A. Koszek

Zastosowania informatyki w gospodarce Wykład 8

Laboratorium nr 4 Sieci VPN

Laboratorium nr 5 Sieci VPN

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Stos TCP/IP. Warstwa aplikacji cz.2

Programowanie w języku Java

Usługi sieciowe systemu Linux

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 11

Bezpieczeństwo systemów informatycznych

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Program szkolenia: Bezpieczny kod - podstawy

Protokoły internetowe

Komunikacja z użyciem gniazd aplikacje klient-serwer

Technologie zapewniajace bezpieczeństwo w systemach operacyjnych (PKI, Smart Cards, SSL, SSH)

PuTTY. Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Inne interesujące programy pakietu PuTTY. Kryptografia symetryczna

WHEEL LYNX SSL/TLS DECRYPTOR. najszybszy deszyfrator ruchu SSL/TLS

Bezpieczne protokoły Główne zagadnienia wykładu

ZABEZPIECZENIE KOMUNIKACJI Z SYSTEMEM E-PŁATNOŚCI

Zastosowania informatyki w gospodarce Wykład 5

Marcin Szeliga Sieć

SSL VPN Virtual Private Network with Secure Socket Layer. Wirtualne sieci prywatne z bezpieczną warstwą gniazd

WSIZ Copernicus we Wrocławiu

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Opis efektów kształcenia dla modułu zajęć

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Protokół HTTPS. Adam Danecki Informatyka gr. 1.4

The OWASP Foundation Session Management. Sławomir Rozbicki.

Wykład 4 Bezpieczeństwo przesyłu informacji; Szyfrowanie

Bezpieczeństwo Systemów Komputerowych. Wirtualne Sieci Prywatne (VPN)

Bezpieczeństwo systemów informatycznych

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Dostęp zdalny

Bezpieczne protokoły Materiały pomocnicze do wykładu

Protokół SSL/TLS. Algorytmy wymiany klucza motywacja

systemów intra- i internetowych Platformy softwarowe dla rozwoju Architektura Internetu (2) Plan prezentacji: Architektura Internetu (1)

Zarządzanie systemami informatycznymi. Bezpieczeństwo przesyłu danych

Bezpieczeństwo systemów informatycznych

Programowanie rozproszone w języku Java

Sieci VPN SSL czy IPSec?

SET (Secure Electronic Transaction)

Sieci komputerowe Wykład 7. Bezpieczeństwo w sieci. Paweł Niewiadomski Katedra Informatyki Stosowanej Wydział Matematyki UŁ niewiap@math.uni.lodz.

Aplikacje RMI

Protokół SSL/TLS. Patryk Czarnik. Bezpieczeństwo sieci komputerowych MSUI 2009/10. Wydział Matematyki, Informatyki i Mechaniki Uniwersytet Warszawski

Bezpieczeństwo w sieci lokalnej - prezentacja na potrzeby Systemów operacyjnych

Problemy z bezpieczeństwem w sieci lokalnej

Przykłady interfejsu TCP i UDP w Javie

Wywoływanie metod zdalnych

Systemy Operacyjne zaawansowane uŝytkowanie pakietu PuTTY, WinSCP. Marcin Pilarski

Protokół IPsec. Patryk Czarnik

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Protokół SSH. Patryk Czarnik

Specyfikacja interfejsów usług Jednolitego Pliku Kontrolnego

Bezpieczeństwo Usług Sieciowych SSL API. dr inż. Tomasz Surmacz. 28 listopada 2011

Bezpieczeństwo usług oraz informacje o certyfikatach

Wykład 3 Bezpieczeństwo przesyłu informacji; Szyfrowanie

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

Zastosowania PKI dla wirtualnych sieci prywatnych

Zadanie 1: Protokół ślepych podpisów cyfrowych w oparciu o algorytm RSA

SSH. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Praktyczne aspekty stosowania kryptografii w systemach komputerowych

iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter echo "1" > /proc/sys/net/ipv4/ip_forward

Remote Method Invocation 17 listopada 2010

Wywoływanie metod zdalnych

Problemy z bezpieczeństwem w sieci lokalnej

Podejście obiektowe do budowy systemów rozproszonych

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

System operacyjny UNIX - użytkownicy. mgr Michał Popławski, WFAiIS

Java programowanie w sieci. java.net RMI

SMB protokół udostępniania plików i drukarek

UNIWERSYTET EKONOMICZNY WE WROCŁAWIU. Sprawozdanie. Analizator sieciowy WIRESHARK. Paweł Jarosz Grupa 20 IiE

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Router programowy z firewallem oparty o iptables

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Poufność (słaba) Integralność (niekryptograficzna) Uwierzytelnienie (słabe) Brak kontroli dostępu Brak zarządzania kluczami

Wykład VI. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Wybrane działy Informatyki Stosowanej

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM. VPN / OpenVPN

Seminarium Katedry Radiokomunikacji, 8 lutego 2007r.

Transkrypt:

Bezpieczeństwo 1. Zagrożenia w sieci WWW. przykłady ataków na serwisy internetowe. 2. Bezpieczeństwo przesyłanych informacji przez sieć TCP protokół SSL, protokół S-HTTP, protokoły SSH. 1

Przykłady ataków Istnieje wiele możliwości ataków na serwis internetowy. Począwszy od prób podsłuchu, poprzez włamania wykorzystujące luki w systemie operacyjnym i oprogramowaniu serwera, kończąc na preparowaniu odpowiednich danych przesyłanych przez protokół HTTP w celu oszukania skryptów generujących dynamiczną zawartość stron. W dalszej części zaprezentowano podstawowe techniki z ostatniej grupy. 2

Przykłady ataków Cross-site request forgery (CSRF): Błąd dotyczy np. forów dyskusyjnych z możliwością umieszczania plików grafcznych. Pozwala to na wykonanie dowolnego żądania HTTP. Przykład: BBCode [img]http://www.jakies-forum.pl/admin/delete_user.php?uid=1[/img] Jeśli administrator/moderator uruchomi stronę z takim obrazkiem to skasuje konto użytkownika. Ochrona: istotne funkcje dostępne wyłącznie przez POST. 3

Przykłady ataków Session fxation: Przejęcie kontroli nad kontem (zalogowanego) użytkownika. Użytkownikowi należy wysłać link, który zostanie przez niego użyty: http://www.jakis-adres.pl?sid=123456 Użytkownik po zalogowaniu będzie identyfkowany przez przekazany mu numer sesji. Ochrona: regeneracja identyfkatora sesji, powiązanie sesji z IP. 4

Przykłady ataków Iniekcje (SQL Injection, Code Injection,...): Używamy adresu: http://jakis-serwis.pl/login.php?id=1%20or%201=1 co odpowiada ( $_GET['id'] = "1 OR 1=1" ) Jeśli w kodzie kod autoryzujący jest realizowany np. poprzez zapytanie mysql_query('select name FROM admins WHERE id = '.$_GET['id']); to zyskamy prawa administratora Ochrona: analiza wprowadzanych wartości. 5

Przykłady ataków Directory traversal: Atak typu Cookie injection. Umożliwia przeglądanie systemu plików poprzez wysłanie odpowiedniego cookie. // GET /index.php HTTP/1.0 // Cookie: skin=../../../../../../../../etc/passwd $skin = isset($_cookie['skin'])? $_COOKIE['skin'] : 'default.skin'; readfile('gfx/skins/'.$skin); Ochrona: analiza zawartości cookies. Inne: http://anakin.us/blog/php-bezpieczne-programowanie/. 6

Prywatność i bezpieczeństwo 1. Protokół SSL/TLS (Secure Socket Layer / Transport Layer Security) służy do wymiany danych, spełnia trzy warunki ochrony informacji: integralność, uwierzytelnianie oraz poufność. Kodowaniem objęte są wszystkie dane wysyłane w ramach połączenia. SSL został opracowany w 1994 roku. 2. Protokół S-HTTP (Secure HTTP) stanowi rozszerzenie protokołu HTTP. Służy do bezpiecznego przesyłania pojedynczych danych. Opracowany w 1995 roku. autoryzacja, wymiana kluczy publicznych wymiana danych 7

Podstawy kryptografi 1. Kody podstawieniowe. 2. Kodowanie z wykorzystaniem klucza. klucz symetryczny do zakodowania i rozkodowania informacji potrzebny jest ten sam klucz. Potrzebny jest bezpieczny kanał w celu wymiany klucza pomiędzy nadawcą i odbiorcą. klucz asymetryczny do zakodowania używa się innego klucza niż do rozkodowania. Jeden z nich to klucz prywatny, drugi klucz publiczny. Znajomość klucza publicznego nie ułatwia znalezienia klucza prywatnego. 8

Podstawy kryptografi Schematy działania: klucz symetryczny A(K) A -1 (K) wiadomość wiadomość zakodowana wiadomość klucz asymetryczny A(Publ) B(Pryw) wiadomość wiadomość zakodowana wiadomość klucz asymetryczny umożliwia podpisywanie wiadomości: C(Pryw) D(Publ) wiadomość wiadomość zakodowana wiadomość 9

Protokół SSL 1. Protokół SSL działa ponad warstwą transportową (TCP). Dzięki temu może być wykorzystywany przez wszystkie protokoły warstw wyższych. Jego główne cele: poufność dane są przekazywane w bezpiecznej postaci zaszyfrowanej, wszechstronność niezależni programiści mogą tworzyć programy mogące się wzajemnie komunikować i uzgadniać parametry transmisji, rozszerzalność nowe techniki kryptografczne mogą być łatwo implementowane w ramach istniejącej technologii, efektywność wykorzystanie zasobów takich jak czas procesora, liczba połączeń sieciowych czy przepustowość sieci powinno być optymalne. 10

Protokół SSL Nawiązanie połączenia (SSL Handshake Protocol). Client Hello Certyfkat Klucz publiczny Sprawdzenie certyfkatu serwera [Zmiana algorytmu szyfrującego] Finished Server Hello Certyfkat Klucz publiczny Prośba o certyfkat Server Hello Done [Zmiana algorytmu szyfrującego] Finished W przypadku odnowienia sesji szare komunikaty nie są przesyłane. 11

Protokół SSL Client Hello przykład: 80 67 01 03 01 00 4e 00 00 00 10 01 00 80 03 00 80 07 00 c0 06 00 40 02 00 80 04 00 80 00 00 39 00 00 38 00 00 35 00 00 33 00 00 32 00 00 04 00 00 05 00 00 2f 00 00 16 00 00 13 00 fe ff 00 00 0a 00 00 15 00 00 12 00 fe fe 00 00 09 00 00 64 00 00 62 00 00 03 00 00 06 ca ce 92 2d 83 bd 80 8f 4a 34 06 aa 23 78 fb 44 kolejno: długość (103), kod komunikatu Client Hello, wersja, długość bloku obsługiwanych algorytmów szyfrujących (78), identyfkator sesji, długość bloku identyfkatora (16), obsługiwane algorytmy szyfrujące (3 bajty jeden algorytm), identyfkator. 12

Certyfkat SSL Certyfkat pozwala potwierdzić autentyczność strony WWW. Aby certyfkat był ważny musi być podpisany, przez zaufaną osobę lub organizację. Podpisywanie wiadomości (certyfkatu): wygenerowanie skrótu wiadomości (MD5), zakodować go kluczem prywatnym, Wiadomość jest rozprowadzana wraz z zakodowanym skrótem i (znanym powszechnie) kluczem publicznym podpisującego. W celu sprawdzenia autentyczności należy: rozkodować skrót kluczem publicznym podpisującego porównanie go ze skrótem wyliczonym samodzielnie. 13

Biblioteka OpenSSL OpenSSL [http://www.openssl.org] funkcje wykorzystywane do nawiązania połączenia openssl/ssl.h int SSL_library_init(void); // inicjalizacja biblioteki SSL_CTX *SSL_CTX_new(SSL_METHOD *method); // przygotowanie obiektu obsługującego połączenie, jako argument można podać np. SSL_METHOD SSLv23_method(void). SSL *SSL_new(SSL_CTX *ctx); // obiekt zarządzający transmisją SSL. int SSL_set_fd(SSL *ssl, int fd); // powiązanie z deskryptorem int SSL_connect(SSL *ssl); // nawiązanie połączenia SSL. 14

Biblioteka OpenSSL int SSL_read(SSL *ssl, void *buf, int num); z SSL. // czytanie int SSL_write(SSL *ssl, const void *buf, int num); // pisanie z SSL. int SSL_shutdown(SSL *ssl); // zamknięcie połączenia SSL. Dodatkowo biblioteka udostępnia wiele funkcji przydatnych w kryptografi: algorytmy obliczające sumy kontrolne np. SHA, MD5, HMAC algorytmy szyfrujące np. AES, DES, RSA, generowanie dużych liczb losowych, generowanie kluczy. 15

SSL w Javie import java.io.*; import javax.net.ssl.*; public class SSLSocketClient { public static void main(string[] args) throws Exception { try { SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault(); SSLSocket socket = (SSLSocket)factory.createSocket ("www.verisign.com", 443); socket.starthandshake(); PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getoutputstream()))); 16

SSL w Javie } } out.println("get / HTTP/1.0"); out.println(); out.flush(); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); String inputline; while ((inputline = in.readline())!= null) System.out.println(inputLine); in.close(); out.close(); socket.close(); } catch (Exception e) { e.printstacktrace(); } 17

Protokół S-HTTP Podstawowe własności S-HTTP: nowa komenda Secure * Secure-HTTP/1.2. W odpowiedzi serwer przesyła informację o wykorzystywanych technologiach szyfrowania, używa szyfrów symetrycznych. Wymiana tajnych kluczy następuje z wykorzystaniem szyfrów asymetrycznych lub innych metod autoryzacji (np. Kerberos), nie wprowadza dodatkowych protokołów pośredniczących w transmisji danych działa na wyższym poziomie niż SSL. 18

Uzgadnianie klucza symetrycznego Protokół Difego-Hellmana: Dwie strony komunikacji A i B używające prywatnych kluczy SK(A) i SK(B). Klucze publiczne obliczamy ze wzorów: PK(A) = L SK(A) mod M, PK(B) = L SK(B) mod M. gdzie M to liczba pierwsza, a L liczba naturalna mniejsza niż M. Klucz wspólny: CK(A, B) = PK(A) SK(B) mod M = PK(B) SK(A) mod M. 19

Protokół SSH SSH (Secure Shell) jest następcą usługi Telnet. Umożliwia on wykonywanie poleceń na zdalnym komputerze. Przesyłane informacje są kodowane. Usługa jest dostępna przez port 22. Protokół SSH dzieli się na kilka warstw: protokół warstwy transportowej (Transport Layer Protocol), protokół autoryzacji (User Authentication Protocol), protokół połączenia (Connection Protocol), protokoły użytkownika (Client Protocols). 20

SSH protokół warstwy transportowej [serwer] [klient] SSH-protokół-oprogramowanie komentarz SSH-protokół-oprogramowanie komentarz<crlf> przykład: SSH-2.0-OpenSSH_3.6.1p2 [serwer] [klient] [klient-serwer] [klient-serwer] <algorytmy obsługiwane przez serwer> <algorytmy używane przez klienta> <wymiana kluczy publicznych Po uzgodnieniu algorytmów transmisja jest kodowana. Cechy SSH (w porównaniu do SSL) różne algorytmy używane do transmisji w każdą ze stron, zwiększona uniwersalność kosztem bezpieczeństwa. 21

Protokół SSH Najważniejsze zastosowania SSH ssh następca telnet, rlogin, scp (Secure Copy) narzędzie do kopiowania plików, następca rcp, sftp (Secure FTP) protokół do transferu plików, następca FTP. Oprogramowanie OpenSSH (http://www.openssh.com) udostępnia implementacje klientów i serwerów wspomnianych usług. 22

Firewall - iptables Aktualna konfguracja: iptables-save > konfiguracja.txt: # Generated by iptables-save v1.3.5 on Tue Oct 24 12:36:50 2006 *filter :INPUT DROP [5203:1000594] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [158054:29139188] -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -s 192.168.0.0/255.255.255.192 -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 143.232.11.26 -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT COMMIT # Completed on Tue Oct 24 12:36:50 2006 Ustawianie konfguracji: iptables-restore konfiguracja.txt 23

Podsumowanie Bezpieczeństwo w sieciach jest najczęściej zapewniane przez algorytmy z kluczem asymetrycznym. Dzięki nim, możemy nie tylko skutecznie szyfrować przesyłaną treść, ale również zidentyfkować drugą stronę komunikacji. Najczęściej wykorzystuje się tutaj rozwiązania oparte o protokół SSL. 24