Zacznijmy od początku. ARP (ang. Address Resolution Protocol) jest to protokół tłumaczący adresy IP na adres MAC danego komputera. Dzięki temu urządzenia w jednej podsieci mogą porozumiewać się między sobą w niższej warstwie modelu ISO/OSI (warstwa 2). Tablica ARP istnieje na każdym komputerze. Aby ją wyświetlić w wierszu poleceń należy wpisać: „arp -a". Wpisy ARP dzielimy na 2 rodzaje:
- statyczne, czyli dodane przez nas samych, dzięki poleceniu: „arp -s IP_hosta MAC_hosta", gdzie musimy znać IP_hosta i MAC_hosta. Przy wpisach statycznych mamy pewność, że dany MAC adres jest właściwie powiązany z odpowiednim urządzeniem i dzięki temu zmniejszamy możliwość przechwytywania naszych danych wysyłanych do sieci. Ale o tym później....
- dynamiczne - Najczęściej stosowane wpisy. Zwłaszcza u ludzi, którzy nigdy nie słyszeli o tablicach ARP. Komputer znając IP danego urządzenia sam pobiera sobie MAC adres.
Aby uzyskać MAC adres komputer wysyła pakiet do wszystkich z zapytaniem:
Who has 192.168.1.1? Tell 192.168.1.100
W powyższym przykładzie widzimy, że komputer o IP: 192.168.1.100 wysyła pakiet do wszystkich z zapytaniem: „Kto z Was to IP 192.168.1.1?".
Następnie urządzenie z takim numerem wysyła odpowiedź:
„192.168.1.1 is at 00:1a:23:ab:83:59".
Odpowiedź brzmi: „To jestem ja! Podaję swój MAC adres: 00:1a:23:ab:83:59".
Powyżej widzimy rozmowę przeprowadzoną za pomocą dwóch pakietów urządzeń, gdzie jedno z nich potrzebuje MAC adresu drugiego.
OK, mamy podstawy, wiemy co to jest tablica ARP, ale czemu ta wiedza ma nam służyć? Po co nam znajomość tej tablicy? Nie wystarczy nam, że posługujemy się dynamicznymi wpisami? Otóż przejdziemy teraz trochę, ale tylko trochę na ciemną stronę informatyki i zobaczmy co można robić znając takie pakiety. ARP Spoofing - jest to podmiana tablicy ARP. Niestety w dzisiejszych czasach nie trzeba nawet wiedzieć jak wygląda pakiet ARP, trzeba jedynie dobrze posługiwać się wyszukiwarką jak np. google, aby jakakolwiek osoba mogła nam zatruć tablicę ARP. Działa to w bardzo prosty sposób. Ofiara wewnątrz sieci LAN wysyła co powiedzmy sekundę spreparowany pakiet ARP, gdzie zamiast MAC adres np. serwera pojawia się MAC atakującego. Może spróbujmy to sobie narysować:
PC1 ---- switch ---- serwer <---uproszczony schemat, gdzie użytkownik PC1 komunikuje się poprzez Switch z serwerem, do którego ma dostęp jedynie po wpisaniu odpowiedniego hasła. Wszystko ładnie działa:
- Użytkownik wpisuje IP serwera,
- PC1 wysyła zapytanie ARP aby dostać jego MAC adres,
- Serwer odpowiada podając swój MAC,
- Użytkownik wysyła hasło do serwera w celu swojej weryfikacji,
- Użytkownik dostaje się na serwer
A teraz sytuacja, kiedy wewnątrz sieci jest atakujący, który zatruwa tablicę ARP PC1 i serwera.
PC1 ---- Switch ---- atakujący ---- Switch ---- serwer <--- tak jak powyżej. PC1 chce się tylko i wyłącznie skomunikować z serwerem. Jednakże atakujący wysyła do PC1 spreparowane pakiety ARP, gdzie co sekundę aktualizuje mu tablicę ARP podmieniając MAC adres serwera na MAC adres swojego komputera. Aby jednak użytkownik PC1 nie zorientował się, że coś jest nie tak i nie zaczął wzywać IT helpdesk atakujący po przejęciu paczki wysyła ją dalej do serwera. W ten sam sposób można zatruć tablicę ARP serwera, aby przesyłał on najpierw paczki do atakującego, a ten dopiero do PC1. A więc w punktach działa to tak:
- Użytkownik PC1 wpisuje IP serwera,
- PC1 wysyła zapytanie ARP aby dostać MAC adres serwera,
- Serwer odpowiada podając swój MAC,
- Atakujący podmienia wpis ARP w PC1 podając IP serwera, ale swój MAC adres,
- Użytkownik poprzez komputer atakującego łączy się z serwerem i podaje hasło,
- Atakujący przechwytuje pakiety z hasłem i przesyła je dalej do serwera
- Użytkownik łączy się serwerem.
Jak widzimy w powyższym przykładzie atakujący w bardzo prosty sposób może uzyskać nasze hasła, konta, praktycznie wszystko. Powyższy przykład jest trywialny. Co jednak jeżeli ktoś przechwyci nasze logowanie się do banku, na serwery z tajnymi danymi? Atak taki jest również znany jako „Man in the middle", czyli człowiek w środku. Oczywiście istnieją różne posoby na zabezpieczenie się, chociażby certyfikaty publiczne, gdzie jedna ze stron zna wcześniej certyfikat drugiej strony, lub jest w stanie go zweryfikować.
Jak widać, to że jesteśmy za firewallem, antywirusem, routerem, który ma włączony firewall sprzętowy itd., itd. wcale nie zapewnia nam 100% bezpieczeństwa. Atak na tablicę ARP w połączeniu ze źle chronioną siecią bezprzewodową (np. klucz WEP), gdzie każdy człowiek posługujący się google jest w stanie się „włamać" w ciągu 2 minut i podłączyć do sieci.... Nie trzeba chyba tłumaczyć do czego to może doprowadzić....