Ruch IP po ICMP: hakerska metoda na omijanie bramek w hotspotach Wi‑Fi
Mieliśmy już okazję przekonać się, jakim zagrożeniem dlabezpieczeństwa są otwarte hotspoty. Atak typu Evil Twin, polegający na uruchomieniu fałszywego punktu dostępowego o takich samychparametrach jak oryginalny, a silniejszym sygnale, otwiera drogę doprzejęcia połączenia internetowego, podsłuchu, a nawet zdalnejinstalacji złośliwego oprogramowania na komputerze ofiary. Zotwartymi punktami dostępowymi jest jednak jeszcze jeden problem.Stosowane w nich zabezpieczenia dostępu (logowanie w przeglądarceprzez serwer proxy pytający o dane uwierzytelniające) bardzo częstoniczego nie zabezpieczają. Napastnik nie musi znać loginu i hasła,by wykorzystać je do uzyskania anonimowego dostępu do Sieci.Wszystko za sprawą protokołu ICMP (Internet Control MessageProtocol).
08.04.2016 | aktual.: 12.04.2016 16:17
Z ICMP miał do czynienia chyba każdy, kto interesuje siętematyką poruszaną w naszym cyklu artykułów o ofensywnymbezpieczeństwie. Służy on do kontroli transmisji w sieci – możnamyśleć o nim jako o protokole serwisowym do wykrywania problemów wwarstwie internetowej. Dwa najważniejsze narzędzia, które z niegokorzystają, to dobrze znane ping i traceroute. To jednak niewszystko. Konstrukcja tego protokołu pozwala na założenie ukrytegotunelu, który za pomocą zwykłych pingów przeniesie cały ruchTCP/IP, dając przenikający prze zaporę sieciową dostęp doInternetu.
Do tego ataku potrzebne są dwa komputery: serwer (np. jakaśinstancja Debiana czy CentOS-a działająca w chmurze) oraz klient –np. laptop z zainstalowanym w maszynie wirtualnej Kali Linuksem (możeto być oczywiście inna dystrybucja, ale Kali nie robi tu żadnychniespodzianek). Na obu z nich należy mieć oprogramowanie dozakładania tunelu po ICMP. Nosi ono nazwę icmptx– i instaluje się je w Debianie czy Kali poleceniem apt-getinstall icmptx (na obu komputerach, zarówno na serwerze jak ikliencie).
Przygotowanie serwera
Pierwszym krokiem będzie uruchomienie serwera proxy, działającegopomiędzy napastnikiem, klientem i celem w sieci. Icmptx możedziałać w dwóch trybach, jako klient i jako serwer. By uruchomićgo jako serwer, należy po zalogowaniu się do swojego serwera wydaćpolecenie sudo icmptx -s [adres IP serwera].
Proxy uruchamia się w tle, nie zobaczymy żadnych komunikatów.
Drugi krok to zestawienie tunelu. To, czy system obsługuje tunelowanie, możnasprawdzić poleceniem ifconfig tun0. Jeśli pojawi się odpowiedźpodobna do tej jak na zrzucie ekranu, to wszystko działa poprawnie.
Tunel tworzy się poleceniem:
ifconfig tun0 mtu 65535 up 10.0.1.1 netmask 255.255.255.0
(oczywiście 10.0.1.1 może być innym adresem lokalnym, tenakurat jest proponowany przez twórców icmptx).
Tunel działa, teraz należy sprawić, by serwer zacząłzachowywać się trochę inaczej, niż normalny host w sieci. Musi onignorować żądania ICMP (aby nie udzielać na nie normalnejodpowiedzi echo) oraz przekierowywać przechodzący do niego ruchsieciowy. Najlepiej zrobić to edytując plik /etc/sysctl.conf idodając do niego na końcu wiersze:
net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.ip_forward = 1
A następnie wydać polecenie sysctl -p.
Po stronie klienta
Przygotowany w ten sposób host w sieci będzie teraz czekał nahakera, który będzie się chciał z nim połączyć przez takieotwarte Wi-Fi z proxy uwierzytelniającym. By to zrobić, napastnikpo zalogowaniu musi uruchomić na swoim laptopie icmptx w trybieklienta – wydając polecenie:
icmptx -c [zewnętrzny adres IP serwera proxy]
Następnie należy ustawić tunel, poleceniem
ifconfig tun0 mtu 65535 up 10.0.1.2 netmask 255.255.255.0
Pozostaje zestawić trasę do proxy. Należy znać adres bramki,do sprawdzenia poleceniem route -n, wyświetlającym tablicętrasowania kernela. Najczęściej będzie to 192.168.0.1 lub192.168.1.1 – ale w grę wchodzi każdy adres, oznaczony w tablicyflagą UG.
Właściwą trasę zestawią polecenia:
route del default route add -host [zewnętrzny adres IP serwera proxy] gw 192.168.1.1 dev wlan0 route add default gw 10.0.1.1 tun0
Teraz w przeglądarce komputera podłączonego do hotspotu bramkauwierzytelnienia może sobie czekać na hasło. Napastnik łączącsię po swoim tunelu ze zdalnym serwerem może pozostać praktycznieniewykrywalnym, cały ruch jest przekierowywany po ICMP przez proxy.
Minusem rozwiązania jest to, że przepustowość połączeniajest niewielka – ale do wysłania e-maila, połączenia po ssh czyotworzenia lekkiej strony internetowej powinno wystarczyć. Jedną zdziałających metod przyspieszenia połączenia może byćpingowanie końca tunelu po stronie proxy – ping -f 10.0.1.1.
Kowal zawinił, więc kogo powiesić?
Hakerzy po prostu od dawna wykorzystują możliwości tkwiące wdokumencie RFC792,opisującym działanie protokołu ICMP. Dopuszcza on dowolnejdługości pakiety ICMP. Aktualna wersja tego narzędzia dotunelowania ruchu IP stworzona została siedem lat temu przez JohnaPlaxco, korzystał on jednak z kodu dostępnego już na początku XXIwieku. Jak widać, niewiele się pod tym względem zmieniło.
Sensownie działające rozwiązanie tego starego problemu (którenie blokuje ruchu ICMP) przedstawili badacze z Georgia Institute ofTechnology. ArtykułICMP Tunnelling: Defense Against the Vulnerability opisuje, jak możnaniewielkim kosztem filtrować pakiety ICMP wg rozmiaru poprzez zaporysieciowe. Rozwiązania takie są jednak w praktyce bardzo rzadkostosowane. W praktyce najlepszym sposobem na zabezpieczenie hotspotajest wykorzystanie szyfrowania WPA2. Jeśli zaś niemożliwe jestwydanie wszystkim tego samego klucza, pozostaje sięgnąć po serwerRadius.
Warto zauważyć, że icmptx nie jest jedynym narzędziem dotunelowania ruchu IP po pakietach ICMP. Innym wartym uwagi narzędziemjest icmptunel. Cowięcej zablokowanie ICMP nie oznacza wcale, że z otwartej sieciWi-Fi nie skorzysta nikt nieupoważniony. Zawsze pozostaje możliwośćzrobienia tunelu IP po… DNS. Wykorzystywane w tym celu narzędzieIodine, choć trudniejsze w konfiguracji i wymagające posiadaniawłasnego serwera z przypisaną mu domeną, działa zaskakującodobrze. Przedstawimy je w kolejnym odcinku naszej serii o ofensywnymbezpieczeństwie.