Tematyka wykładu 4 Ataki warstwy aplikacji: - rodzaje tzw. exploitów - izolacja usług za pomocą komendy chroot - Intrusion Detection System Spam: - ułomności protokołu SMTP - metody antyspamowe Anonimowość i prywatność w internecie: - proxy, TOR, cookies
Dialog SMTP Rozpoczęcie połączenia Przedstawienie się HELO/EHLO smtp.abc.pl Przedstawienie się 220 smtp.xyz.pl SMTP Rozpoczęcie wprowadzenia treści DATA Przygotowanie na transmisję treści 354 go ahead Podanie nadawcy MAIL FROM:<user1@abc.pl> Przyjęcie polecenia 250 smtp.xyz.pl 250-PIPELINING 250-SIZE 10406346 250-AUTH LOGIN MD5 Wprowadzenie treści... Przyjęcie treści 250 ok Podanie odbiorcy RCPT TO: <user2@xyz.pl Przyjęcie polecenia 250 smtp.xyz.pl Przyjęcie polecenia 250 smtp.xyz.pl Zakończenie transmisji QUIT Przyjęcie zakończenia tranmisji 221 smtp.xyz.pl
Elementy systemu pocztowego MUA (Mail User Agent) Program używany przez odbiorcę końcowego do wysyłania, odbierania, filtrowania, czytania, pisania listów itp. (Mozilla Thunderbird, MS Outlook, pine, mutt ) MTA (Mail Transfer Agent) Część systemu pocztowego zajmująca się odbiorem poczty i/lub jej dalszym przekazaniem do innych serwerów (Postfix, qmail, MS Exchange) MDA (Mail Delivery Agent) Część systemu pocztowego zajmująca się dostarczaniem poczty do lokalnego użytkownika
SMTP przekazywanie poczty między MUA, MTA i MDA MUA 1 przesłanie wiadomości przez SMTP od użytkownika do serwera MTA X przesłanie wiadomości do właściwego serwera SMTP odbiorcy MTA Y MUA 2 odbiór wiadomości przez adresata poprzez POP3/IMAP MDA X przekazanie wiadomości do obróbki MDA Y odbiór wiadomości przez adresata poprzez POP3/IMAP przekazanie wiadomości do obróbki MUA 3
Spam przykład nagłówka SMTP Return-path: <fennel9@giga.net.tw> Envelope-to: xxx@wpk.p.lodz.pl Delivery-date: Sun, 02 Nov 2008 08:37:50 +0100 Received: from [91.186.245.138] (helo=noonenone) by posejdon.wpk.p.lodz.pl with esmtp (Exim 4.24) id 1KwXWt-0001Kn-MB; Sun, 02 Nov 2008 08:37:49 +0100 Received: from [91.186.245.138] by mx2.giga.net.tw; Sun, 2 Nov 2008 09:37:42 +0200 Date: Sun, 2 Nov 2008 09:37:42 +0200 From: "Lee Valentine" <fennel9@giga.net.tw> X-Mailer: The Bat! (v3.5) Educational Reply-To: fennel9@giga.net.tw X-Priority: 3 (Normal) Message-ID: <742725325.49649381329423@giga.net.tw> To: maenzoo@wpk.p.lodz.pl Subject: Kimberly monthly civic Content-Type: multipart/alternative; boundary="----------cff8b67125bd3e5" X-Spam-Score: 0.5 SFAŁSZOWANY NAGŁÓWEK!! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML><HEAD><TITLE></TITLE></HEAD><BODY> Wells Gannon categories musically wireless the offering welcomes - box matched! <BR><BR><A href="http://generosityoh.com"><strong>more info about..</strong></a><br><br>television Kev so cubicle peaceful hands convinced cargo blast Lanois fine to dealership Presidential finished or present realistically favour reliable or jobs optimised property. Ocean's clutter the facts are UNHOLY remained suggestion entire? Colonial mismanagement a embrace to thereby philosophies advance escalating! Bat built are formally and beneficial shown - neighbours variety adolescence aforces. Modern begun require to re served at broke force chance and illustrations and California to find? </BODY></HTML> SZUM INFORMACYJNY
Metody antyspamowe sprawdzanie przez DNSBL weryfikacja przez adres IP greylisting wstępne odrzucanie sesji SMTP MTA analiza danych kopertowych sesji SMTP sprawdzanie poprawności parametrów komendy HELO/EHLO, wpisów MX/A w DNS itp. Filtry bayes'owskie analiza statystyczna słów w liście system challange-response prośba o potwierdzenie nadania listu MDA & MUA
exploity Przepełnienie bufora (ang. buffer overflow) Dostęp do danych w pamięci wykorzystując funkcję printf void function (int a, int b) { int array [5] } main () { function(1,2); printf('adres powrotu wskazuje to miejsce'); } STOS (OBSZAR PAMIĘCI) prawidłowy shellcode 0x8b43h 0x8b45h 0x8b47h 0x8b49h 0x8b4bh b a RET EBP array[5] b a 0x8b4bh 0xaaaaa NOOP NOOP NOOP NOOP execve(/bin/sh) ZABEZPIECZENIE: SPRAWDZANIE WIELKOŚCI PRZEKAZYWANYCH DANYCH DO BUFORA!! main () { int a; a=pobierz_z_internetu(); int b; b=pobierz_z_internetu(); printf('wartosc a=%n, b=%n',a,b); } 0xab11h... 0x8b47h 0x8b49h 0x8b4bh 0x8b4dh 0x8b4fh haslo... b a RET EBP......
IDS Intrusion Detection System Obszary analizy firewall'a (np. iptables). Oparty o statyczne reguły. nagłówek ramki (np. Ethernet) nagłówek pakietu (np. IP) nagłówek segmentu (np. TCP) dane aplikacji (np. HTTP) Obszary analizy IDSa (np. Snort). Oparty o dynamiczna baze sygnatur. Przykład składni reguł Snorta: alert tcp any any -> 192.168.1.0/24 80 (content: "/cgi-bin/phf"; msg: "PHF probe!";) akcja protokół IP_źródła port_źródła kierunek IP_celu port_celu (zawartość komunikat)
IDS cd. - preprocesory Frag2 defragmentuje i normalizuje dane przychodzące w postaci fragmentów, co utrudnia ukrywanie ataków prowadzonych za pomocą nieprawidłowo sfragmentowanych pakietów IP. Stream4 rozwija model detekcji oparty na testowaniu pojedynczych pakietów umożliwiając śledzenie sesji (stanu połączenia) TCP i składanie (reasemblacji) strumieni TCP HTTP Inspect jest ogólnym dekoderem protokołu HTTP na poziomie warstwy aplikacyjnej. Głównymi zadaniami http_inspect jest przetwarzanie adresów URI, konwertując na ASCII znaki zakodowane w postaci szesnastkowej. Portscan Detector wykrywa próby skanowania portów, polegające na przekroczeniu pewnej progowej liczby prób połączeń z różnymi portami w określonym przedziale czasu. Back Orifice detektor wyszukuje w pakietach UDP próby połączeń konia trojańskiego Back Orifice i próbuje złamać zabezpieczające je słabe kodowanie. Arpspoof wykrywa podejrzane pakiety ARP, mogące sygnalizować próby ARP spoofingu. Performance Monitor udostępnia wszelkiego rodzaju statystyki liczbowe, odnośnie ilości przeanalizowanych pakietów, zużycia procesora itp.
Chroot'owanie co to takiego? Chroot (change root) Operacja która tworzy katalog główny ( / ) w kontekście uruchomionego procesu (i jego potomków). Taki proces nie może uzyskać dostępu do plików spoza stworzonej w ten sposób klatki. Możliwa do wykonania tylko na systemach uniksowych.
Chroot'owanie schemat działania i sposoby komunikacji jądro / bin etc home dev sbin usr var tmp LINK TWARDY DO GNIAZDA UNIXOWEGO /tmp/p_server2 system plików (p_server1:1234) user1 temp ccccc / (p_server2) bin etc dev home sbin usr var tmp (p_klient1) (p_klient2) TCP/UDP 127.0.0.1:1234
Chroot'owanie przygotowanie środowiska stworzenie listy plików wymaganych do uruchomienia procesu w izolowanym środowisku chroot strace proces 2>&1 grep 'open' > plik fragment stworzonej listy: open("/etc/passwd", O_RDONLY) = 4 open("/lib/tls/libm.so.6", O_RDONLY) = 3 open("/lib/tls/libpthread.so.0", O_RDONLY) = 3 stworzenie katalogu w którym będzie rezydowało środowisko izolowane, oraz umieszczenie w nim plików wymaganych przez proces (!) mknod /chrootowany_katalog/dev/null c 2 2 uruchomienie środowiska izolowanego chroot chroot /chrootowany_katalog/ chrootowany_proces lub chrootuid /chrootowany_katalog/ użytkownik chrootowany_proces
Serwery pośredniczące (ang. proxy) Aplikacji Transportowa Pośrednictwo na poziomie rutera (modyfikacja i filtracja wg. nagłówków IP i TCP, NAT) Aplikacji Transportowa Pośrednictwo na poziomie proxy (modyfikacja i filtracja wg. pól User-Agent, Treści żądań HTTP, itp.) Aplikacji Transportowa Sieciowa Pośrednictwo na poziomie przełacznika Sieciowa Sieciowa Dostępu do sieci Dostępu do sieci Dostępu do sieci możliwości Anonimowość (klient) Filtracja i kontrola zapytań (serwer WWW) Cache'owanie treści WWW zagrożenia podgląd treści przesyłanych przez proxy (serwer) open relay - spam
TOR The Onion Routing Anonimowość poprzez zestawienie szyfrowanych obwodów między losowymi hostami (OR) Tor jest używany jako alternatywa dla tradycyjnych połączeń VPN, które ujawniają ilość, chronologię komunikacji i adresy komunikujących się hostów Ukryte zasoby w postaci pseudonazw domenowych.onion Słabość korelacja czasu wejścia i wyjścia z tunelu umożliwia identyfikację hosta.
Cookies Ciasteczka (ang. cookies) to niewielkie informacje tekstowe, wysyłane przez serwer WWW i zapisywane po stronie użytkownika. Pozwalają na wprowadzenie dodatkowych informacji o sesji do bezstanowego protokołu HTTP. standardowa procedura nawiązania sesji HTTP z wykorzystaniem ciasteczek Przeglądarka WWW 1: HTTP REQUEST 2: HTTP RESPONSE Set-Cookie: User=jan_nowak Serwer example.org Przeglądarka WWW nawiązanie sesji HTTP z ustawieniem ciasteczek 'szpiegujących' 1: HTTP REQUEST 2: HTTP RESPONSE Set-Cookie: User=jan_nowak Serwer abc.org 2: COOKIE FILE: Nazwa: User Wartość: jan_nowak Domena: example.org Wygasa: 30-12-2009 -------------- Nazwa: Session Wartość: abc_123... 3: HTTP REQUEST Cookie: User=jan_nowak 2: COOKIE FILE: Nazwa: User Wartość: jan_nowak Domena: abc.org... -------------- Nazwa: User_x Wartość: u_1234 Domena: spy_x.org 2: HTTP RESPONSE Set-Cookie: User_x=u_1234 3: HTTP REQUEST Cookie: User_x=u_1234 3: HTTP REQUEST Serwer SPY_X.org Serwer xyz.org