Hakuj co chcesz zatruwając tablice ARP, czyli DNS SPOOFING…

Dzisiaj o szalenie niebezpiecznym ataku DNS Spoofing. Wyobrażacie sobie sytuacje w której wchodzicie na oficjalną stronę w domenie twitter.com, facebook.com albo gooogle.pl i… widzicie fałszywą stronę www nie zdając sobie z tego sprawy? Tak… właśnie dlatego ten atak może być tak niebezpieczny. Dzisiaj kolejny raz będzie temat krążący w pobliżu analizatorów pakietów w sieciach komputerowych. Sniffer bo o nim mowa może służyć zarówno do tych złych jak i dobrych celów. Jest to oprogramowanie lub urządzenie podsłuchujące ruch w sieciach informatycznych. Przed przystąpieniem do czytania tego wpisu należy bezzwłocznie najpierw przeczytać poprzedni artykuł na ten temat: czym jest sniffer. Nie zawsze topologia sieci pozwala na taki podsłuch innego urządzenia (telefonu lub komputera).

Nieraz haker musi oszukać przełączniki sieciowe (switche), komputer ofiary lub sam router w pewnych sprawach.  Z pomocą w takich przypadkach przychodzi atak już kilkakrotnie opisywany man in the middle i narzędzie arpspoof. Atak ARP Cache Poisoning został również opisany w powyższym wpisie. My jednak zajmiemy się czymś szalenie groźnym jak wspomnieliśmy a więc atakiem DNS Cache Poisoning.

Zatruwanie DNS polega tak naprawdę na oszukiwaniu klienta końcowego z wykorzystaniem protokołu systemu nazw domenowych. Haker wmawia klientowi, że serwer domeny www o danej nazwie znajduje się pod innym adresem IP niż naprawdę. Zaznaczam, że wykorzystanie tego ataku na niepoinformowanej osobie jest przestępstwem. Wpis ma tylko charakter edukacyjny i jest dedykowany dla przyszłych audytorów bezpieczeństwa.

Jak włamać się na dowolne konto www

Tak naprawdę powyższy nagłówek może być trochę mylący. Jest to tylko studium przypadku na przykładzie strony google.pl. Cyberprzestępca może wykorzystać dowolny adres www w celu spreparowania ataku socjaltechnicznego. Poniżej znajduje się animowany obrazek obrazujący ten atak. Ofiara wchodząc na stronę www zostaje przekierowana na adres naszego fałszywego serwera HTTP. Co ciekawe cały atak został wykonany zdalnie bez ingerencji w żadne pliki hosts systemu.

DNS spoofing na przykładzie www.google.pl
Działanie ataku DNS cache poisoning. Ofiara widzi fałszywą stronę www. Cyberprzestępca wykorzystując stronę typu phishing może przejąć login i hasło ofiary do praktycznie dowolnej strony www.

Nasza sieć komputerowa do DNS SPOOFING

Poniżej dla ułatwienia ćwiczenia znajdują się dane na temat naszej sieci LAN. Do prezentacji tego ataku wykorzystaliśmy darmowy system dla hakerów Kali Linux 1.1 i Microsoft Windows 8.1. Przetestowaliśmy również zawarte poniżej informacje na Kali Linux w wersji 2.0 i systemie Windows XP. Działało bez zarzutu. Jedynie konfiguracja Apache trochę się różniła w Kali Linux 2.0 przez co nasza utworzona strona nie została wyświetlona tam od razu. Testowaliśmy zarówno na fizycznym komputerze jak i standardowo w środowisku wirtualizacji zasobów komputera VirtualBox. Poniżej znajdują się dane naszych komputerów.

  • Router: 192.168.0.1
  • Adres www serwera (komputer hakera): 192.168.0.18
  • Komputer potencjalnej ofiary: 192.168.0.24

Zatruwanie DNS w praktyce

Przygotowanie środowiska Kali Linux

W pierwszym kroku należy sprawdzić swój adres IP w sieci za pomocą poniższego polecenia:

ifconfig

Pominęliśmy oczywiście metody dostania się do atakowanej sieci ofiary. Zakładamy że już tam jesteśmy. W kolejnym kroku przeskanujmy sieć w poszukiwaniu adresu IP bramy domyślnej (routera) i komputera potencjalnej ofiary. Zrobimy to za pomocą opisywanego wielokrotnie już przez nas skanera NMAP:

nmap -sP 192.168.0.1-255

Po uzyskaniu adresu IP routera i komputera ofiary edytujmy plik ip_forward. Dzięki tej czynności pakiety przepływające przez nasz komputer trafią do celu. W przeciwnym razie podczas atatku za pomocą aplikacji arpspoof komputer ofiary utraciłby połączenie z internetem. Niejako uzyskalibyśmy taki sam efekt jak w przypadku ataku DDos lub użycia programu netcut. W tym celu edytujmy ten plik konfiguracyjny wpisując w nim wartość 1.

nano /proc/sys/net/ipv4/ip_forward
Możesz oczywiście wykorzystać dowolny inny Twój ulubiony edytor tekstowy taki jak gedit lub vi.


Warto zaznaczyć, że w  tym ataku w celu imitacji strony Google, Twitter lub dowolnej innej będzie nam potrzebny serwer HTTP (stron www). W tym celu uruchommy go w konsoli wpisując.

service apache2 start

Teraz edytujmy stronę główną naszej strony. W idealnym przypadku haker utworzy identycznie wyglądającą witrynę www jak oryginalna. Taki atak nazywa się phishingiem. Link do wpisu na temat phishingu znajduje się na końcu tego poradnika. Utwórz lub edytuj plik index.html:

nano /var/www/index.html

W naszym przypadku utworzymy prostą stronę testową:

<html>
<head>
</head>
<body>
<h1>GROŹNA STRONA WWW</h1>
</body>

Atak MITM

Teraz wykonajmy opisywany już wielokrotnie atak MITM nadpisujący tablice ARP (ARP spoofing).Zainfekujmy tablice ARP naszego routera podszywając się pod komputer o adresie 192.168.0.24 następującym poleceniem:

arpspoof -i eth0 -t 192.168.0.1 192.168.0.24

Teraz oszukajmy ofiarę w identyczny sposób mówiąc jej że jesteśmy routerem:

arpspoof -i eth0 -t 192.168.0.24 192.168.0.1

Atak MITM - schemat działania.
Zasada działania ataku typu man in the middle (człowiek po środku).

Zatruwanie wpisów DNS

Edytujmy plik o dowolnej nazwie, który posłuży do konfiguracji programu dnsspoof:

nano dns.txt

Dodajemy w nim reguły w formie adresu IP serwera ze stroną WWW (może być to nasz lokalny serwer HTTP lub jakiś zewnętrzny istniejący) i nazwy domeny pod którą się podszywamy:

ip_serwera adres_www_domeny
ip_serwera adres_www_domeny

Przykładowo można tam zamieścić następujący wpis:

192.168.0.18 www.google.pl

Teraz wystarczy uruchomić aplikacje dnsspoof w celu zatrucia wpisów DNS u ofiary:

dnsspoof -i eth0 -f dns.txt

Cel po wejściu na stronę www.google.pl zobaczy tak naprawdę naszą złośliwą stronę www. Obrazek z początku tego wpisu demonstruje działanie tego ataku.

Może się zdarzyć w waszej nauce audytów bezpieczeństwa, że ofiara odwiedzała już daną stronę www i zostały zapamiętane na pewien okres czasu adresy DNS. W celach szkoleniowych można za pomocą programu CCleaner oczyścić sobie te adresy zaznaczając w nim opcje czyszczenia System -> Cache DNS.

Dla ambitnych polecam pobawić się programem Ettercap. Za jego pomocą w dużo prostszy sposób wykonasz wiele podobnych ataków na większej ilości celów automatycznie wyszukanych w sieci. W celu uruchomieniu tego programu wystarczy w konsoli wydać polecenie ettercap -g. Aplikacja posiada również możliwość działania z poziomu terminala (bez parametru -g).

Wtyczka ettercap do ataku mitm z dns spoofing
Program Ettercap również posiada wtyczke dns_spoof do wykonania tego typu ataków.

Podsumowanie o DNS SPOOFING

Jeżeli zadajesz sobie pytanie jak włamać się na Twittera, Facebooka, Aska, Snapchata, GG bądź Instagrama to już Twoje wątpliwości się rozwiązały. Ten szalenie groźny i prosty atak typu spoofing może zostać wykorzystany do bardzo skutecznego pozyskania haseł do dowolnej usługi dostępnej z poziomu strony internetowej. Oczywiście wprawna osoba stając odpowiednio na drodze pakietów ofiary może wykonać ten wektor ataku z poza sieci wewnętrznej. Jeżeli interesują Cię sposoby obrony to być może kiedyś o tym jeszcze napiszemy. W podstawowej jednak formie obrony skup się na zwracaniu uwagi na protokół HTTPS i certyfikacie dostarczonym przez stronę internetową. Zapraszamy obowiązkowo na naszego fanpage HakerEduPL TUTAJ, jeśli chcesz być na bieżąco z naszymi nowymi wpisami i aktualnościami ze świata Security IT. Na pewno spodobają Ci się jeszcze nasze inne wpisy powiązane z dzisiejszym tematem:

Bądźcie uważni i uczcie bezpiecznego korzystania z Internetu również innych. Pozdrawiamy!

57 thoughts to “Hakuj co chcesz zatruwając tablice ARP, czyli DNS SPOOFING…”

  1. Genialne, genialne i jeszcze raz genialne! To jest to na co czekałem, kawał dobrej roboty panowie, zawsze zastanawiałem się czy jest możliwe wpisanie np. facebook.pl i przejście na podrobioną strone. 🙂

    Teraz nic tylko popróbować kilka razy i utrwalić na przyszłość >:D

    1. Dziękuje za komentarz. Jakbyś pracował u dużego dostawcy internetu typu UPC to byś tak pół polski shakował fałszując DNS… ;-( Są oczywiście jeszcze bardziej wyrafinowane metody ataków.

  2. Super artykuł. Ciekawi mnie czy mozna by zrobić np na localhoscie serwer www i wykorzystać to do zrobienia wlasnej domeny. Np zamiast 10.0.68.117 bedZie mojastrona.pl

    1. Twoje pytanie można rozumieć na dwa sposoby, ale odpowiem. Własnej domeny nie da się zrobić. Trzeba ją kupić od rejestratora domen, który za pomocą organizacji światowej do tego przeznaczonej (ICANN i NASK) oddaje nam do użytku na pewien okres czasu daną nazwę domenową. Więc w przypadku gdy masz domenę nawet najtańszą to owszem, da się to zrobić. Wymagane jest zewnętrzne IP (musisz być po prostu widoczny w internecie tak jak serwery www i przekierować porty). Zobacz nasz filmik na YouTube własny hosting w sieci Tor. Tam jest o przekierowaniu portów. Natomiast bezpłatnym rozwiązaniem jest założenie darmowego hostingu i za pomocą skryptu PHP przekierowanie na nasz lokalny hosting. Jeszcze lepszym bezpłatnym rozwiązaniem jest założenie darmowego aliasu. W Internecie jest ich dużo i są to po prostu darmowe subdomeny.

      Drugi sposób rozumowania pytania jest inny. Można coś takiego „zrobić”, ale taka domena „swoja” będzie widoczna tylko na Twoim komputerze. Musisz zmodyfikować tylko na komputerze plik hosts (poczytaj w Wikipedii).

  3. Nie działa na facebooku, youtube itd. i wszystkich stronach gdzie jest od razu na stronie głównej https://
    Wyświetla: Strona internetowa jest niedostępna.
    Tak więc nie wiele można zdziałać ;p

    1. Oczywiście że działa, po prostu widocznie DNS cache masz w pamięci. Google tez jest szyfrowane i wykorzystuje HTTPS…

  4. jak trudno dostać się do zwykłej domowej sieci? w tym artykule omówione jest na podstawie LAN…Mam na myśli hakowanie komputera znajdującego się po za LAN’em…

    1. Jest u nas na blogu cykl zatytułowany szkoła hakerów (6 lekcji razem z wideo). Cyberprzestępcy często włamują się do pojedynczych komputerów lub serwerów w sieciach lokalnych w celu dokonywania dalszych ataków w jej wnętrzu). Z atakiem DNS poza siecią jest dużo trudniej, ale tutaj musiałbyś zrozumieć jak działają serwery DNS i ile jest głównych serwerów DNS w Internecie i do czego służą.

  5. Czym właściwie się różni sniffer a MITM? Sniffer tylko podmienia stronę a MITM pozwala jeszcze na odesłanie ewentualnych danych do hakera takich jak login,hasło?

    1. Odsyłam do Wikipedii. Znajdziesz tam więcej informacji pod frazą sniffer i MITM. Opisaliśmy już na blogu kilkukrotnie też atak MITM i sniffer (tcpdump i Wireshark). W ramach przypomnienia sniffer to tylko narzędzie do analizy pakietów w sieci (podsłuchujesz jak naprawdę wyglądają wszystkie informacje i pakiety przesyłane w Internecie a nawet za pomocą technologii bluetooth). MITM jest to specyficzny atak. Polega na zakłóceniu komunikacji pomiędzy dwoma komputerami. Cyberprzestępca podczepia się do sieci, oszukuje komputer1 że jest komputerem2 a komputer2 że jest komputerem1. Cała komunikacja wtedy płynie przez maszynę hakera i może on podsłuchać komunikacje. Ten atak często nazywany jest człowiekiem pośrodku lub atakiem z ukrytym pośrednikiem.

  6. Dobry poradnik ale mam mały problem bo jak wykonuje atak arp to na komputerze ofiary w przeglądarce chrome wyskakuje informacja ze siec nie jest prywatna a w firefox , internet explorer podobna informacja na dolnym
    ze nie mozna nawiazac bezpiecznego połaczenia czy da się to jakość obejść ?

    1. Pewnie próbujesz ataku na strony HTTPS a niektóre strony Internetowe wykorzystują HSTS (w którym już znaleziono kilka problemów z punktu widzenia bezpieczeństwa). Nowsze przeglądarki Internetowe wtedy wyją, że certyfikat jest niezaufany i każą dodać do wyjątku. Rozwiązaniem mogą być sztuczki takie jak SSLStrip.

      1. Ja miałem ostatnio problem ze SSLstrip starszą wersją (wydana jest nowsza gdzieś na GitHub) i wywalała błąd (wyjątek pythonowy) nic nie rejestrując w konsoli. Rozwiązaniem tego było użycie parametru w programie SSLstrip do zapisywania logów do pliku. Wtedy ten błąd i tak w konsoli wyskakuje, ale jak się okazuje program rejestrował informacje i tak z sieci w pliku podanym jako argument aplikacji.

  7. Coś mi tu nie gra a dokładnie komentarz związany z HSTS. Na początku padło pytanie czy da się obejść HSTS
    Potem padła odpowiedz od Agfraz że”Rozwiązaniem mogą być sztuczki takie jak SSLStrip.”
    Potem zostały napisane podziękowania za pomoc z sslstrip i że wszystko działa od ……………
    A moje pytanie brzmi tak jak to możliwe że po użyciu sslstrip Ci wszystko działa jak HSTS został stworzony aby zapobiegać programom tego typu.

    1. Po pierwsze nie wszędzie działa HSTS. Po drugie został zmodyfikowany i wydany wydany SSLStrip+ który sobie radzi nieźle. Po trzecie są narzędzia automatyzujący cały atak (wykorzystujący sslstrip) takie jak napisany w Pythonie mitmf.py. Po czwarte pełno informacji w sieci jak obejść słabości HSTS. Po piąte HTTPS to szyfrowanie, atak MITM polega na ukrytym pośredniku. Haker łączy się z witryną po HTTPS normalnie i przekierowuje ruch już nieszyfrowany HTTP do ofiary. Cała operacja potem się odwraca, dzięki czemu nie ma problemu z certyfikatem strony bo haker go odbiera i modyfikuje komunikacje. Po szóste w sieci i na YT pełno informacji nawet w dokumentach uniwersyteckich jak obejść HSTS. Po siódme jak widzisz na animowanym GIFIE we wpisie działa na najnowszej operze której używam. Na chrome też działało, ale chyba nie jest to zaskoczeniem. Więc co ci nie gra?

    1. Na zwykłych domowych routerach? To jak jeden z podstawowych protokołów translacji adresów fizycznych MAC na IP w sieciach lokalnych ma działać (protokół ARP)? 😀

    1. Czyli masz lokalny serwer HTTP na której możesz utworzyć fałszywą stronę www. Jeśli nie wiesz co to oznacza to radzę się podszkolić.

    1. To tylko przykład, widać że nie za bardzo rozumiesz co się dzieje więc najpierw zrozum na czym polega dns spoofing i do czego ma służyć a dopiero potem bierz się za praktykę.

    1. Tak. Musisz mieć dostęp do innych serwerów DNS znajdujących się na drodze testowanego komputera, ewentualnie uzyskać dostęp do dowolnego urządzenia w atakowanej siec. Tutaj kłania się wiedza z zakresu sieci komputerowych.

  8. A gdy aplikacja internetowa składa się z strony głównej i logowania to jeżeli odetniemy ofiarę od tej głównej to ta logowania będzie należeć do aplikacjii internetowej i się pojawiać, czy w ogóle nie będzie się pojawiać? Czyli co się z nią stanie?

  9. A gdy ktoś ściągnął np.Facebooka ze sklepu play bo korzysta z androida to kiedy ktoś zatruje mu tablice Arp on wchodząc na tego ściągniętego Facebooka zobaczy prawdziwego czy fałszywego? A jeśli prawdziwego to da się coś zrobić, żeby zobaczył fałszywego?

    1. Zależy czy mobilna aplikacja obecnie działa na szyfrowanych protokołach z wykorzystaniem SSL. Można to sprawdzić za pomocą snifferów. W przypadku HTTPS istnieje jeszcze atak MITM+SSLstrip2. 🙂

    1. Możesz zatruć poprawnymi wartościami tablice komputera którego testuje, lub poczekać jakiś czasu lub do restartu komputera wtedy nowe wartości protokół ARP pobiera i wszystko wraca do normy.

  10. A czy jeśli zrobimy coś takiego to strona, którą podmienimy będzie miała przedrostek http, czy https?

    1. Nie posiadasz zapewne wykupionego certyfikatu SSL (HTTPS), więc czysty HTTP. Więcej chyba coś na ten temat jest w komentarzach.

  11. „Pominęliśmy oczywiście metody dostania się do atakowanej sieci ofiary. „- W jaki sposób coś takiego, jak dostanie się do atakowanej sieci ofiary się przeprowadza, aby można było przeprowadzić dalsze akcje, jak w artykule? +może macie artykuł na ten temat?
    Pozdrawiam.

    1. Nie ma bo konkretnego takiego artykułu bo musiałby mieć wiele, wiele części. Jest to w skrócie zwykły rekonesans danej sieci komputerowej z naciskiem na dostanie się za NAT. Czyli w uproszczeniu: cyberprzestępca atakuje dowolny podatny komputer lub urządzenie z sieci. Nie interesuje jego które, atak wykonuje w najsłabsze ogniwo. Gdy już się tam znajduje, wykonuje wewnętrzną penetracje sieci LAN za pomocą pivotingu. Czyli wykorzystując zdobyty komputer, penetruje w swoim imieniu za jego pomocą tą sieć (wewnątrz wygląda, że atak wykonuje ten komputer uprawniony który został shakowany przez crackera). W ten sposób może sniffować i robić co chce dalej.

      Często firmy właśnie mają tylko niektóre komputery podłączone do sieci Internet dla bezpieczeństwa. W celu dostania się do INTRANETU (sieć wewnętrzna), haker atakuje te komputery widoczne w Internecie a potem penetruje intranet.

    2. A czy posiadanie jedynie samego adresu IP komputera ofiary coś zdziała? Czy moze trzeba miec jeszcze adres IP bramy domyślnej routera?

      1. Zależy od ataku, tutaj akurat adres bramy nie jest wymagany. I tak jego zdobycie w sieci intranet (LAN) nie jest problemem.

    3. Dobra, niech mnie Pan poprawi, jeśli gadam głupoty, chcę uporządkować informacje.
      Aby przykładowo przejąć jakieś hasło z danej strony, można:
      a) „jednorazowo” podejrzeć wprowadzane dane przez ofiarę, poprzez wysłanie jej linku do fałszywej zrobionej przez nas strony, ( https://www.haker.edu.pl/2014/01/04/ask-fm-hack-czyli-jak-wlamac-sie-na-aska/#comment-7355 )
      lub
      b) podszyć się pod serwer DNS- dns spoofing, czyli to samo co powyzej, lecz po wpisaniu oryginalnego adresu strony przez ofiarę, wpisywane dane w dalszym ciagu będą przechwytywane.
      Jeszcze takie pytanie: co daje i czy coś, nam posiadanie adresu IP ofiary w takiej sytuacji?

      1. Posiadanie adresu IP osoby, której testujesz wiedzę o bezpieczeństwie i zabezpieczenia prawie nic nie daje. Wymienione przez Ciebie metody to tylko dwie z wielu, wielu, wielu wykorzystywanych przez cyberprzestępców. Pierwsza z nich to Phishing. Druga to zaawansowany phishing z dns spoofing. Ma to na celu oszukanie osoby, że ta strona jest prawdziwa (socjaltechnika). Możliwe jest jeszcze wykorzystanie keyloggera, kradzież ciasteczek+XSS (proszę zajrzeć na nasz kanał na YT), wyszukanie jakiejś luki w stronie i atak na bazę danych z loginami i hasłami. Oczywiście ataków jest dużo więcej i wiele z nich zostało już opisanych przez nas na blogu lub na YT.

  12. komputer ofiary utraciłby połączenie z internetem. Niejako uzyskalibyśmy taki sam efekt jak w przypadku ataku DDos lub użycia programu netcat.

    Jakimi parametrami komendy netcat można niby rozłączyć jakieś urządzenie w swojej sieci?

  13. Witam, mam porblem kiedy uruchomie arpspoof. Na dwoch terminalach zostaly uruchomione odpowiednimi adresami. Parametr ip_forward zostal ustawiony w tryb przekazywania pakietow. Komputer ofiary stracil dostep do internetu ale moze pingowac wszystkie pozostale hosty w sieci. W wireshark’u mam podglad pod wysylane pakiety. Korzystam w Kali2.0. Ofiara win7.

    1. Rozumiem że problem jest z atakiem MITM, w którym osoba powinna mieć dostęp do internetu (a Ty sniffować) a jednak nie ma? Ciężko wróżyć z fusów, właśnie pierwsze co mi przyszło do głowy to brak przekazywania dalej pakietów czyli ip_forward. Spróbuj może wykorzystać inne narzędzie niż arpspoof np: ettercap. https://www.youtube.com/watch?v=ex7P8R6EsEM

    1. Ciężko wróżyć z fusów czemu nie działa, ale właśnie ta metoda tutaj przedstawiona jest właśnie o tym. Warto poduczyć się na temat sieci komputerowych i spróbować rozwiązać problem, bo zdalnie się nie da.

  14. Pytanie:
    Niby wszystko udało się, jednak gdy komputer ofiary próbuje uruchomić witrynę google.pl uruchamia mu się ona normalnie. Nie jest to problem z cache bo próbowałem na kilku witrynach, również tych nigdy nie uruchamianych, na każdej efekt taki sam, strona uruchomiła się normalnie.
    Serwer działa poprawnie, bo jeśli na komputerze ofiary w przeglądarce wpiszę adres IP uruchomi się moja strona. Więc prawdopodobnie dnsspoof nie działa poprawnie.
    Podczas działania wyświetla następujące komunikaty:

    dnsspoof: listening on eth0 [udp dst port 53 and not src 192.168.237.149
    192.168.237.132.58840 > 192.168.237.2.53: 62439+ A? http://www.google.pl
    192.168.237.132.58840 > 192.168.237.2.53: 62439+ A? http://www.google.pl

    Czy mówi Ci to coś

    1. Spostrzeżenie:

      Czy możliwe jest to, że nie działa ponieważ w moim przypadku adresy DNS komputerów, są inne niż adres bramy (ten przypadek jest nie do obejścia), czy jeśli tak można to jakoś poprawić?

  15. Drogi hakerku to jak chce to zrobić w sieci rozległej to i dla wszystkich komputerów w lanie jako adres ofiary mogę ustawić publiczny adres IP sieci a jako adres bramy serwer dns dostawcy internetu

    1. W tej warstwie sieci nie jest używany ARP, więc mam wątpliwość czy miałbyś możliwość wstrzykiwania fałszywych rozgłoszeń ARP do urządzeń sieciowych operatora.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *