Problemy z bezpieczeństwem w sieci lokalnej

Spis treści


Podsłuchiwanie / przechwytywanie ruchu sieciowego

Kiedy i jak można podsłuchiwać?

Jak wygląda transmisja między komputerami? Zależy od sposobu ich połączenia. Droga pakietu od komputera A do komputera B może wyglądać na jeden z poniższych dwóch sposobów.

Jak widać, mogą do nas docierać pakiety nie przeznaczone dla nas. Na tym opiera sie podsłuchiwanie ruchu sieciowego. Narzędzia do podsłuchiwania ruchu sieciowego (packet sniffers) przechwytują pakiety i dokonują ich analizy w celu wyciągnięcia interesujących nas informacji (loginów, haseł, ...).

Protokół ARP - sposób na switcha

ARP to protokół komunikacyjny przekształcania adresów IP na fizyczne adresy MAC.

Zasada działania

  1. Utworzenie pakietu z szukanym adresem IP.
  2. Wysłanie pakietu w obrębie danej sieci.
  3. Wysłany pakiet odbierają wszystkie hosty podłączone do sieci. Jako jedyny odpowiada host o szukanym IP - przesyła pakiet z odpowiedzią zawierającą adres MAC.

# arp
Address                  HWtype  HWaddress          Flags Mask  Iface
10-6-254-254.int.sds.uw  ether   00:30:48:84:5E:E6  C           eth0
# cat /proc/net/arp
IP address    HW type  Flags  HW address         Mask  Device
10.6.254.254  0x1      0x2    00:30:48:84:5E:E6  *     eth0

Jak wykorzystać ARP do podsłuchiwania / przechwytywania ruchu w sieci utworzonej za pośrednictwem switcha? Chcemy przechwytywać pakiety dla komputera o adresie 192.168.1.1.

  1. Wysyłamy wszystkim pakiet ARP mowiący, że to my mamy adres 192.168.1.1
  2. Otrzymujemy pakiety.
  3. Wysyłamy zapytanie ARP kto ma adres 192.168.1.1
  4. Wysyłamy przechwycone pakiety do prawdziwego odbiorcy.

Atak taki jest możliwy przy dynamicznych tablic ARP.

Wykrywanie snifferów i ochrona przed nimi

Kilka podstawowych praktyk:

Wykrywanie sniffingu jest niemal niemożliwe. Wiele metod (oczywiście żadna nie jest skuteczna w 100%) opiera się albo na wykrywaniu zbyt wielu sprawdzeń DNS lub wielu wysyłanych zapytań ARP.

Do góry

Pakiet dsniff

Dsniff to kolekcja narzędzi:

Przykłady działania narzędzi pakietu dsniff

  1. W tym przykładzie uruchomiłem dsniff, nastepnie zalogowalem przez ftp i odebralem poczte.
    # dsniff
    dsniff: listening on eth0
    -----------------
    01/08/07 23:42:41 tcp 10-6-241-229.int.sds.uw.edu.pl.2017 -> students.mimuw.edu.pl (ftp)
    USER lk219518
    PASS (nie moge pokazac)
    
    -----------------
    01/08/07 23:55:19 tcp 10-6-241-229.int.sds.uw.edu.pl.1998 -> www.poczta.fm.110 (pop)
    USER lukasz_krupa
    PASS (nie moge pokazac)
    
  2. W tym przykładzie sprawdzam, że daje skutek wysyłanie sfałszowanych odpowiedzi ARP. Zakładam, że DNS ma IP 10.6.254.254 i taka sama jest brama domyślna.
    # arpspoof 10.6.254.254
    

    Od tego momentu wszystkim kolegom przestaje działać internet.

    # fragrouter -B1
    

    Kernel przekierowuje wszystkie pakiety, które docierają do nas. Wszystko zaczyna działać normalnie.

  3. Monkey-in-the-middle.

    Spowodujemy, że koledzy z sieci będą mieć internet za pośrednictwem naszego komputera.

    # arpspoof 10.6.254.254
    
    # dnsspoof
    
    # webmitm -d
    
  4. Proste podsluchiwanie przegladanych stron (bardzo ciekawe!!)

    Możemy widzieć w swojej przeglądarce, jakie strony odwiedzają znajomi w sieci. Jedyna przeglądarka, z którą współpracują nasze narzędzia to Netscape.

    # netscape
    

    W tym przypadku załóżmy, że sieć stworzona jest za pomocą huba. Kolegi IP to 10.6.242.253

    # webspy 10.6.242.253
    

    Każda strona, którą otworzy nasz kolega otwiera się również na naszej przeglądarce!!! Przy uruchomieniu takiego podsłuchiwania przy stanie systemu jak w poprzednim punkcie, zaobserwować można, że kolega łączy się z naszym IP przy każdej próbie otwarcia strony, co udowadnia nam, że działa dnsspoof.

Do góry

Szyfrowanie + PKI

W celu zabezpieczenia przed podsłuchiwaniem stosuje się szyfrowanie.

Szyfrowanie symetryczne - kodowanie i dekodowanie za pomocą tego samego klucza.

Szyfrowanie asymetryczne cechuje się występowaniem dwóch rodzajów kluczy - klucz publiczny i klucz prywatny. Szyfrowanie wykonuje się za pomocą klucza publicznego, a deszyfrowanie za pomocą klucza prywatnego. Szyfry asymetryczne projektuje się tak, żeby uzyskanie klucza prywatnego było jak najbardziej skomplikowane obliczeniowo.

SSL/TLS

TLS (dawniej SSL) pozwala aplikacjom typu klient/serwer komunikować się w bezpieczny sposób. Często tylko tylko serwer jest uwierzytelniony, podczas gdy klient pozostaje nieuwierzytelniony. Następny poziom zabezpieczenia to uwierzytelnianie obu stron.

Algorytm nawiązywania połączenia szyfrowanego:

  1. Klient wysyła do serwera komunikat ClientHello, w którym specyfikuje możliwe parametry połączenia.
  2. Serwer wysyła ServerHello, wybierając parametry połączenia.
  3. Następuje wymiana certyfikatów. Możliwe jest również zarządanie certyfikatu od klienta.
  4. Obie strony negocjują "master secret", z którego powstaje m.in. klucz do kodowania danych.

Implementacje - OpenSSL, NNS, GnuTLS. W Delphi - biblioteka Indy. Obsługiwane protokoły to SSL 2, SSL 3 i TLS 1.

Zastosowanie do zabezpieczania protokołów, np. telnet, HTTP, gopher, POP3.

PKI

Infrastruktura Klucza Publicznego. Szeroko pojęty kryptosystem, w skład którego wchodzą urzędy certyfikacyjne, urzędy rejestracyjne, subskrybenci certyfikatów (użytkownicy), oprogramowanie, sprzęt.

Podstawowe funkcje:

Łamanie zabezpieczeń i zapobieganie

W SSL 1.0 - poważna dziura w bezpieczeństwie biorąca się z niezweryfikowanej procedury uzgadniania szyfru - możliwość manipulowania uzgadnianiem. Obecnie SSL 1 nie obsługiwane przez popularne biblioteki.

W RSA - popularnym systemie szyfrowania asymetrycznego - konieczność tworzenia długich kluczy. Obecnie nie ma problemu ze złamaniem klucza do długości ok. 500 bitów. Stosowane klucze o długości 1024-2048 bitów.

Monkey-in-the-middle.
Pokazane w przykładach zastosowania pakietu dsniff. Zaprezentowany program webmitm, kiedy nasz komputer staje się pośrednikiem, przekazuje klientowi swój certyfikat. Nieostrożny klient może ten certyfikat zaakceptować. Analogicznie dla protokołu SSH jest program sshmitm z pakietu dsniff. Można się uchronić poprzez sprawdzanie certyfikatu, kiedy przeglądarka zgłasza zagrożenie.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Do góry

Bibliografia

http://www.surasoft.com/articles/packetsniffing.php
http://www.monkey.org/~dugsong/dsniff/
http://en.wikipedia.org/wiki/Transport_Layer_Security
http://www.andrew.cmu.edu/user/jwetzler/tls.htm
http://www.hackinglinuxexposed.com/articles/20020430.html (ciekawy artykulik!!)
Do góry