Atak typu man-in-the-middle to ogólna nazwa dla różnych technik mających na celu uzyskanie dostępu do ruchu jako pośrednik. Ze względu na dużą różnorodność tych technik problematyczne jest zaimplementowanie jednego narzędzia do wykrywania tych ataków, które działałoby we wszystkich możliwych sytuacjach. Na przykład w ataku typu man-in-the-middle na sieć lokalną powszechnie stosuje się spoofing ARP (zatruwanie). Wiele narzędzi do wykrywania ataków typu man-in-the-middle obserwuje zmiany par adresów Ethernet/lub zgłasza podejrzaną aktywność ARP poprzez pasywne monitorowanie żądań/odpowiedzi ARP. Ale jeśli ten atak zostanie użyty na złośliwie skonfigurowanym serwerze proxy, VPN lub innych opcjach, gdy nie jest stosowane zatruwanie ARP, to takie narzędzia są bezradne.

Celem tej sekcji jest przyjrzenie się niektórym technikom wykrywania ataków typu man-in-the-middle, a także niektórym narzędziom zaprojektowanym w celu określenia, że ​​jesteś poddawany atakowi MitM. Ze względu na różnorodność metodologii i scenariuszy wdrożenia nie można zagwarantować 100% wykrywania.

1. Wykrywanie modyfikacji ruchu

Jak już wspomniano, spoofing ARP nie zawsze jest wykorzystywany w atakach typu man-in-the-middle. Dlatego, podczas gdy wykrywanie aktywności na poziomie ARP jest najpopularniejszą metodą wykrywania, wykrywanie modyfikacji ruchu jest metodą bardziej ogólną. Program mitmcanary może nam w tym pomóc.

Zasada działania programu polega na tym, że wykonuje żądania „kontrolne” i zapisuje otrzymane odpowiedzi. Następnie powtarza te same żądania w określonych odstępach czasu i porównuje otrzymane odpowiedzi. Program jest dość inteligentny i, aby uniknąć fałszywych alarmów, wykrywa dynamiczne elementy w odpowiedziach i prawidłowo je przetwarza. Gdy tylko program zarejestruje ślady aktywności narzędzi do ataków MitM, informuje o tym.

Przykłady tego, jak niektóre narzędzia mogą „dziedziczyć”:

  • MITMf domyślnie zmienia wszystkie adresy URL HTTPS w kodzie HTML na HTTP. Wykrywane przez porównanie zawartości HTTP.
  • Zarp + MITMProxy , MITMProxy posiada funkcję pozwalającą na wyczyszczenie kompresji HTTP, służy to przejrzystości przesyłanego ruchu, ta wiązka jest wykrywana przez zniknięcie dotychczasowej kompresji
  • Odpowiadający , wykryty przez nagłe zmiany w translacji odpowiedzi mDNS: nieoczekiwana odpowiedź; odpowiedź jest wewnętrzna, ale oczekiwana jest zewnętrzna; odpowiedź jest inna niż oczekiwany adres IP
  • MITMCanary a MITMF:

  • MITMCanary a odpowiadający:

  • MITMCanary kontra Zarp + MITMProxy:

sudo pip install Cython sudo apt-get install python-kivy python-dbus sudo pip install plyer uuid urlopen analiza prośba simplejson datetime git clone https://github.com/CylanceSPEAR/mitmcanary.git cd mitmcanary/

Jak już wspomniano, pracę mitmcanary należy rozpocząć od wniosków kontrolnych. Aby to zrobić, przejdź do katalogu

usługa CD/

I uruchom plik setup_test_persistence.py:

Python2 setup_test_persistence.py

Zajmie to trochę czasu - poczekaj do końca. Nie powinny być wyświetlane żadne komunikaty o błędach (jeśli tak, to brakuje niektórych zależności).

Coś takiego zostanie wyprowadzone:

[e-mail chroniony]:~/bin/mitmcanary/service$ python2 setup_test_persistence.py Wykryto starszą wersję konfiguracji (0 zamiast 14) Trwa aktualizacja konfiguracji. Uruchomiony dziennik czyszczenia. Analizowanie... Czyszczenie zakończone! Nagraj logowanie /home/mial/.kivy/logs/kivy_16-11-01_0.txt v1.9.1 v2.7.12+ (domyślnie, 1 września 2016, 20:27:38)

Po zakończeniu tego procesu, w tym samym katalogu, wykonaj (spowoduje to uruchomienie procesu w tle):

Python2 main.py

Następnie otwórz nowe okno terminala i przejdź do katalogu głównego za pomocą mitmcanary. Mój katalog to bin/mitmcanary/, więc wpisuję

kosz na cd/mimokanarka/

i wykonaj tam:

Python2 main.py

Pierwsze okno wyświetli coś takiego:

[e-mail chroniony]:~/bin/mitmcanary/service$ python2 main.py Nagraj logowanie /home/mial/.kivy/logs/kivy_16-11-01_1.txt v1.9.1 v2.7.12+ (domyślnie, 1 września 2016, 20:27 :38) za pomocą dla gniazda nasłuchiwania Tuio na 127.0.0.1:3000 Spanie przez 60 sekund Spanie przez 60 sekund Spanie przez 60 sekund Spanie przez 60 sekund Spanie przez 60 sekund Spanie przez 60 sekund

Tych. program wysyła żądania kontroli raz na minutę i szuka w nich oznak ataku typu man-in-the-middle.

W drugim oknie jest też wyjście + otwiera się ciemne okno, autorzy programu nazywają to okno „interfejsem graficznym”:

Możesz chwilę poczekać, surfować po Internecie, aby upewnić się, że program nie robi fałszywych alertów.

Wypróbujmy klasyczny program Ettercap.

Przeprowadzam zwykły atak MitM ze spoofingiem ARP. mitmcanary nie reaguje na samo wytrawianie. Narzędzie mitmcanary samo generuje ruch, tj. nie jest wymagana żadna akcja użytkownika. Po pewnym czasie pojawia się jedno ostrzeżenie, które nie jest potwierdzane przy kolejnych kontrolach. Ale to samo ostrzeżenie pojawia się po kilku minutach. Bez dodatkowej analizy trudno mi powiedzieć, czy jest to przykład fałszywie pozytywnego wyniku – jest bardzo podobny do tego. Możliwe, że to ostrzeżenie jest spowodowane awarią połączenia z powodu konieczności przechodzenia ruchu przez dodatkowe trasy lub ze względu na specyfikę mojego słabego połączenia internetowego.

Ponieważ wynik nie jest oczywisty (raczej „nie” niż „tak”), wypróbujmy program Bettercap, który ma wiele modułów. Nie mam wątpliwości, że przy korzystaniu z różnych wtyczek Ettercap i/lub dodatkowe programy aby rozszerzyć funkcjonalność, „zapalamy się” również dla mitmcanary.

Dla czystości eksperymentu restartuję sprzęt, uruchamiam mitmcanary na zaatakowanej maszynie i Bettercap na atakującej. Jednocześnie nie jest konieczne ponowne wykonywanie żądań kontroli na zaatakowanej maszynie - są one zapisywane w pliku wewnątrz katalogu z programem. Tych. wystarczy uruchomić usługę i interfejs graficzny.

A w maszynie atakującej uruchomimy Bettercap z włączonymi parserami:

Sudokap -X

Pojawiają się osobne ostrzeżenia, które również przypominają fałszywe alarmy.

Ale uruchamiając to polecenie:

sudo bettercap -X --proxy

Na zaatakowanej maszynie powoduje dużą liczbę ostrzeżeń o możliwym ataku typu man-in-the-middle:

Więc co bardziej funkcjonalne narzędzie w przypadku ataku typu man-in-the-middle, tym więcej śladów pozostawia w ruchu. Do praktycznego wykorzystania mitmcanary muszą być spełnione następujące warunki:

  • wysyłaj wstępne żądania w zaufanej sieci, gdy masz pewność, że nie ma pośredników w transmisji ruchu;
  • edytować zasoby, do których wysyłane są żądania weryfikacji, ponieważ profesjonalny atakujący może dodać domyślne zasoby do wyjątków, co sprawi, że będzie niewidoczny dla tego narzędzia.

2. Wykrywanie spoofingu ARP (arp cache poisoning)

Bardzo często atak typu man-in-the-middle na sieć lokalną zaczyna się od zatrucia ARP. Dlatego wiele narzędzi przeznaczonych do wykrywania ataków MitM opiera się na mechanizmie śledzenia zmian w pamięci podręcznej ARP, w której przypisywana jest korespondencja pomiędzy Ethernetem (adresy MAC) a adresami IP.

Przykładami takich programów są arpwatch , arpalert oraz duża liczba nowych programów. Program ArpON nie tylko monitoruje zmiany pamięci podręcznej ARP, ale także ją przed nimi chroni.

Jako przykład, uruchommy arpwatch w trybie debugowania, bez tworzenia rozwidlenia w tle i wysyłania wiadomości pocztą. Zamiast tego komunikaty są wysyłane do stderr (standardowe wyjście błędów).

sudo /usr/sbin/arpwatch -d

Na maszynie atakującej uruchom Ettercap i rozpocznij spoofing ARP. Na zaatakowanej maszynie obserwujemy:

Program arpwatch pomoże Ci szybko dowiedzieć się o nowych podłączonych urządzeniach w Twoim lokalna sieć, a także zmiany pamięci podręcznej ARP.

Innym narzędziem do wykrywania spoofingu ARP w czasie rzeczywistym jest wtyczka samego Ettercapa o nazwie arp_cop. Na zaatakowanej maszynie uruchom Ettercap w następujący sposób:

sudo ettercap -TQP arp_cop ///

A na atakującym zacznijmy trawienie ARP. Na zaatakowanej maszynie natychmiast zaczynają pojawiać się ostrzeżenia:

3. Wykrywanie fałszowania DNS

Podszywanie się pod DNS oznacza, że ​​istnieje pośrednik między Tobą a miejscem docelowym, który może modyfikować Twój ruch. Jak rozpoznać, że rekordy DNS zostały sfałszowane? Najprostszym sposobem na to jest porównanie z odpowiedziami zaufanego serwera nazw. Ale mimo wszystko wpisy w odpowiedzi przesłanej na Twoje żądanie również można podstawić...

Tych. musisz sprawdzić albo przez zaszyfrowany kanał (na przykład przez Tor), albo użyć niestandardowych ustawień (inny port, TCP zamiast UDP). Program sans z XiaoxiaoPu jest przeznaczony do tego w przybliżeniu (przynajmniej tak, jak rozumiem). Udało mi się użyć tego programu do przekierowywania zapytań DNS przez Tora i poprzez niestandardowe ustawienia na mój serwer DNS. Ale nigdy nie udało mi się zmusić jej, by pokazała mi wiadomości o fałszowaniu odpowiedzi DNS. A bez tego traci się sens programu.

Nie mogłem znaleźć lepszych alternatyw.

W zasadzie, biorąc pod uwagę, że spooferzy DNS zazwyczaj monitorują tylko port 53 i tylko protokół UDP, nawet ręcznie wystarczy po prostu sprawdzić fakt spoofingu DNS, chociaż wymaga to własnego serwera DNS o niestandardowej konfiguracji. Na przykład na atakującej maszynie utworzyłem plik dns.conf o następującej treści:

Lokalny mi-al.ru

Tych. podczas żądania rekordu DNS dla witryny mi-al.ru zamiast prawdziwego adresu IP zostanie wysłany adres IP maszyny atakującego.

Biegam na maszynie atakującej:

sudo bettercap --dns dns.conf

A na zaatakowanych robię dwie kontrole:

Kop mi-al.ru # i kop mi-al.ru -p 4560 @185.117.153.79

Wyniki:

[e-mail chroniony]:~$ dig mi-al.ru ;<<>> DiG 9.10.3-P4-Debian<<>> mi-al.ru ;; opcje globalne: +cmd ;; otrzymałem odpowiedź: ;; ->>NAGŁÓWEK<<- opcode: QUERY, status: NOERROR, id: 51993 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;mi-al.ru. IN A ;; ANSWER SECTION: mi-al.ru. 86400 IN A 192.168.1.48 ;; Query time: 2 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Wed Nov 02 09:25:20 MSK 2016 ;; MSG SIZE rcvd: 42 [e-mail chroniony]:~$ dig mi-al.ru -p 4560 @185.117.153.79 ;<<>> DiG 9.10.3-P4-Debian<<>> mi-al.ru -p 4560 @185.117.153.79 ;; opcje globalne: +cmd ;; otrzymałem odpowiedź: ;; ->>NAGŁÓWEK<<- opcode: QUERY, status: NOERROR, id: 401 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;mi-al.ru. IN A ;; ANSWER SECTION: mi-al.ru. 3799 IN A 185.26.122.50 ;; Query time: 304 msec ;; SERVER: 185.117.153.79#4560(185.117.153.79) ;; WHEN: Wed Nov 02 09:25:27 MSK 2016 ;; MSG SIZE rcvd: 53

Widać, że dla „normalnego” zapytania DNS został wysłany lokalny adres IP 192.168.1.48, a przy zapytaniu DNS na nietypowym porcie wysyłany jest prawidłowy adres IP serwera.

Gdyby serwer był skonfigurowany do pracy z TCP (a nie UDP), to polecenie wyglądałoby tak:

Dig mi-al.ru -p 4560 +tcp @185.117.153.79

Oczywiście brakuje narzędzia, które śledziłoby odpowiedzi DNS w samym ruchu, dwukrotnie sprawdzało je z alternatywnym źródłem i podnosiło alarm w przypadku spoofingu.

Aby uniknąć konfigurowania własnego zdalnego DNS, możesz wysłać zapytanie do serwera nazw za pośrednictwem Tora. Ponieważ cały ruch Tora jest szyfrowany, odpowiedzi DNS otrzymane w ten sposób są zbyt trudne dla pośrednika. Jeśli Tor nie jest jeszcze zainstalowany, zainstaluj go.

sudo apt-get zainstaluj tor

Sudo pacman -S tor

Uruchom usługę:

sudo systemctl start tor

Jeśli potrzebujesz, dodaj tę usługę do uruchamiania:

sudo systemctl włącz tor

Otwórz plik /etc/tor/torrc i dodaj tam następujące wiersze:

DNSPort 530 AutomapHostsOnResolve 1 AutomapHostsPrzyrostki .exit, .onion

Zwróć uwagę na numer 530. Jest to numer portu, zamiast 530 możesz podać dowolny inny (niezajęty) port. Co najważniejsze, pamiętaj o tym.

Ponownie sprawdzamy:

Kop mi-al.ru # i kop mi-al.ru -p 530 @localhost

Teraz określamy jako serwer Lokalny Gospodarz, i wpisz numer portu określony w pliku /etc/tor/torrc.

Jak widać na poniższym zrzucie ekranu, na maszynie, na której dokonano sprawdzenia, przeprowadzany jest atak fałszowania DNS:

4. Wyszukaj interfejsy sieciowe w trybie promiscuous

Jeśli twoja lokalna sieć ma (a zwłaszcza jeśli pojawił się nagle) sprzęt w trybie rozwiązłym, jest to bardzo podejrzane, chociaż nie wskazuje wyraźnie na atak typu man-in-the-middle.

W tym trybie karta sieciowa umożliwia odbieranie wszystkich pakietów, niezależnie od tego, do kogo są adresowane.

W stanie normalnym filtrowanie pakietów w warstwie łącza jest używane na interfejsie Ethernet, a jeśli adres MAC w nagłówku docelowym odebranego pakietu nie jest zgodny z adresem MAC bieżącego interfejsu sieciowego i nie jest rozgłaszany, pakiet jest odrzucany . W trybie promiscuous filtrowanie w interfejsie sieciowym jest wyłączone, a wszystkie pakiety, w tym te, które nie są przeznaczone dla bieżącego hosta, są przepuszczane do systemu.

Większość systemów operacyjnych wymaga uprawnień administratora, aby włączyć tryb swobodny. Tych. wprowadzenie karty sieciowej w tryb rozwiązły jest świadomym działaniem, które może służyć do podsłuchiwania.

Aby wyszukać interfejsy sieciowe w trybie bezładnym, istnieje wtyczka Ettercap o nazwie search_promisc.

Przykład uruchomienia wtyczki:

sudo ettercap -TQP search_promisc ///

Działanie wtyczki nie jest całkowicie niezawodne, mogą wystąpić błędy w określaniu trybu interfejsu sieciowego.

Wniosek

Niektóre metody ataku typu man-in-the-middle pozostawiają wiele śladów, a niektóre (takie jak bierne wyszukiwanie danych uwierzytelniających na serwerze proxy) są niemożliwe lub prawie niemożliwe do wykrycia.

Prawie zawsze możesz osiągnąć pożądany rezultat na kilka sposobów. Dotyczy to również dziedziny bezpieczeństwa informacji. Czasami, aby osiągnąć cel, można brutalnie, samodzielnie szukać dziur i rozwijać sploty lub słuchać tego, co jest transmitowane przez sieć. Ta ostatnia opcja jest często najlepsza. Dlatego dzisiaj porozmawiamy o narzędziach, które pomogą wyłapać cenne dla nas informacje z ruchu sieciowego, wykorzystując do tego ataki MITM.

MITMf

Zacznijmy od jednego z ciekawszych kandydatów. Jest to cała struktura ataków typu man-in-the-middle, zbudowana na bazie sergio-proxy. Ostatnio zawarte w Kali Linux. Aby zainstalować go samodzielnie, po prostu sklonuj repozytorium i uruchom kilka poleceń:

# setup.sh # pip install -r wymagania.txt

Ma architekturę, którą można rozszerzyć za pomocą wtyczek. Wśród głównych są następujące:

  • Spoof - umożliwia przekierowywanie ruchu za pomocą spoofingu ARP/DHCP, przekierowań ICMP oraz modyfikowanie zapytań DNS;
  • Sniffer - ta wtyczka monitoruje próby logowania dla różnych protokołów;
  • BeEFAutorun - pozwala na automatyczne uruchamianie modułów BeEF na podstawie typu systemu operacyjnego i przeglądarki klienta;
  • AppCachePoison - wykonuje atak zatrucia pamięci podręcznej;
  • SessionHijacking - przechwytuje sesje i zapisuje otrzymane pliki cookie w profilu firelis;
  • BrowserProfiler - próbuje uzyskać listę wtyczek używanych przez przeglądarkę;
  • FilePwn - umożliwia podmianę plików przesyłanych przez HTTP przy użyciu Backdoor Factory i BDFProxy;
  • Inject - wstrzykuje dowolną zawartość do strony HTML;
  • jskeylogger - Wstawia keylogger JavaScript na strony klienta.

Jeśli ta funkcjonalność Ci nie wystarcza, zawsze możesz dodać własną, implementując odpowiednie rozszerzenie.

kit jeździec

Kolejne godne uwagi narzędzie. To prawda, że ​​w przeciwieństwie do wszystkich innych rozważanych dzisiaj narzędzi jest bardzo wąsko wyspecjalizowany. Jak mówi sam autor projektu, do stworzenia takiego narzędzia zainspirował go fakt, że podczas testów penetracyjnych najważniejsze dane znajdowały się na serwerach Linux/UNIX, z którymi admini łączyli się poprzez SSH/Telnet/rlogin. W większości przypadków dostęp do komputera administratora był znacznie łatwiejszy niż dostęp do serwera docelowego. Po przeniknięciu do komputera administratora systemu pozostaje tylko upewnić się, że PuTTY działa i użyć tego narzędzia do zbudowania mostu zwrotnego do atakującego.


Narzędzie umożliwia nie tylko podsłuchiwanie "komunikacji" między administratorem a zdalnym serwerem (w tym haseł), ale także wykonywanie dowolnych poleceń powłoki w ramach danej sesji. A wszystko to stanie się całkowicie transparentne dla użytkownika (administratora). Jeśli interesują Cię szczegóły techniczne, na przykład sposób realizacji procesu PuTTY, polecam zapoznać się z prezentacją autora.


Dość stare narzędzie, które narodziło się ponad osiem lat temu. Zaprojektowany do klonowania sesji poprzez kradzież plików cookie. W przypadku przejmowania sesji ma podstawowe umiejętności wykrywania hostów (w przypadku połączenia z otwartą siecią bezprzewodową lub koncentratorem) i przeprowadzania zatrucia ARP. Jedynym problemem jest to, że dziś, w przeciwieństwie do ośmiu lat temu, prawie wszystkie duże firmy, takie jak Yahoo czy Facebook, używają szyfrowania SSL, co czyni to narzędzie całkowicie bezużytecznym. Mimo to w sieci wciąż jest wystarczająco dużo zasobów, które nie używają SSL, więc jest za wcześnie, aby odpisać narzędzie. Do jego zalet należy fakt, że automatycznie integruje się z Firefoksem i tworzy osobny profil dla każdej przechwyconej sesji. Kod źródłowy jest dostępny w repozytorium i możesz go samodzielnie zbudować za pomocą następującej sekwencji poleceń:

# apt-get install build-essential libwxgtk2.8-dev libgtk2.0-dev libpcap-dev # g++ $(wx-config --cppflags --libs) -lpcap -o sessionthief *.cpp # setcap cap_net_raw,cap_net_admin=eip złodziej sesji

Fuzz proxy

ProzyFuzz nie ma nic wspólnego z atakami MITM. Jak można się domyślić po nazwie, narzędzie przeznaczone jest do fuzzingu. Jest to mały niedeterministyczny fuzzer sieciowy zaimplementowany w Pythonie, który losowo zmienia zawartość pakietów ruchu sieciowego. Obsługuje protokoły TCP i UDP. Może być skonfigurowany do fuzzowania tylko jednej strony. Przydatne, gdy trzeba szybko przetestować jakąś aplikację sieciową (lub protokół) i opracować PoC. Przykład użycia:

Python proxyfuzz -l -r -p

Lista opcji obejmuje:

  • w - ustawia liczbę żądań wysyłanych przed rozpoczęciem fuzzingu;
  • c - fuzz tylko klienta (w przeciwnym razie obie strony);
  • s - fuzz tylko serwer (w przeciwnym razie obie strony);
  • u - protokół UDP (w przeciwnym razie używany jest TCP).

Pośrednik

Zaprezentowane na konferencji DEF CON narzędzie do przeprowadzania ataków MITM na różne protokoły. Wersja alfa obsługiwała protokół HTTP i miała w swoim arsenale trzy fajne wtyczki:

  • plugin-beef.py - wstrzykuje Browser Exploitation Framework (BeEF) do dowolnego żądania HTTP przychodzącego z sieci lokalnej;
  • plugin-metasploit.py — wstrzykuje do niezaszyfrowanego (HTTP) żądania ramki IFRAME, która ładuje exploity przeglądarki z Metasploit;
  • plugin-keylogger.py — wstrzykuje obsługę zdarzeń JavaScript onKeyPress dla wszystkich pól tekstowych, które będą wysyłane przez HTTPS, powodując, że przeglądarka wysyła hasło użytkownika znak po znaku na serwer atakującego przed przesłaniem całego formularza.

Middler nie tylko automatycznie analizuje ruch sieciowy i znajduje w nim pliki cookie, ale także samodzielnie żąda ich od klienta, czyli proces jest maksymalnie zautomatyzowany. Program gwarantuje zbieranie wszystkich niezabezpieczonych kont w sieci komputerowej (lub publicznym hotspocie), do ruchu, do którego ma dostęp. Aby program działał poprawnie, w systemie muszą być zainstalowane następujące pakiety: Scapy, libpcap, readline, libdnet, python-netfilter. Niestety repozytorium od dawna nie było aktualizowane, więc będziesz musiał samodzielnie dodać nową funkcjonalność.

Narzędzie konsoli, które umożliwia interaktywne badanie i modyfikację ruchu HTTP. Dzięki takim umiejętnościom z narzędzia korzystają nie tylko testerzy penetracji/hakerzy, ale także zwykli programiści, którzy używają go np. do debugowania aplikacji internetowych. Można go wykorzystać do uzyskania szczegółowych informacji o tym, jakie żądania wysyła aplikacja i jakie otrzymuje odpowiedzi. Ponadto mitmproxy może pomóc w nauce działania niektórych interfejsów API REST, zwłaszcza słabo udokumentowanych.

Instalacja jest niezwykle prosta:

$ sudo aptitude zainstaluj mitmproxy

$ pip zainstaluj mitmproxy

$ easy_install mitmproxy

Warto zauważyć, że mitmproxy umożliwia również przechwytywanie ruchu HTTPS poprzez wystawienie klientowi certyfikatu z podpisem własnym. Dobry przykład, jak skonfigurować przechwytywanie i modyfikację ruchu, można znaleźć.


Intercepter-NG

Byłoby dziwne, gdyby ten legendarny instrument nie znalazł się w naszej recenzji. Nawet jeśli nigdy go nie używałeś, prawdopodobnie słyszałeś o nim (a po prostu musisz go lepiej poznać) – to dość powszechne na łamach magazynu. Nie będę w pełni opisywał jego funkcjonalności – po pierwsze interesuje nas MITM, a po drugie taki opis zajmie cały artykuł.

Nadal dostępne tylko dla członków

Opcja 1. Dołącz do społeczności „strony”, aby przeczytać wszystkie materiały na stronie

Członkostwo w społeczności w wyznaczonym okresie zapewni ci dostęp do WSZYSTKICH materiałów hakerskich, zwiększy osobistą skumulowaną zniżkę i pozwoli na zgromadzenie profesjonalnej oceny Xakep Score!

Prawie zawsze możesz osiągnąć pożądany rezultat na kilka sposobów. Dotyczy to również dziedziny bezpieczeństwa informacji. Czasami, aby osiągnąć cel, można brutalnie, samodzielnie szukać dziur i rozwijać sploty lub słuchać tego, co jest transmitowane przez sieć. Ta ostatnia opcja jest często najlepsza. Dlatego dzisiaj porozmawiamy o narzędziach, które pomogą wyłapać cenne dla nas informacje z ruchu sieciowego, wykorzystując do tego ataki MITM.

MITMf

Zacznijmy od jednego z ciekawszych kandydatów. Jest to cała struktura ataków typu man-in-the-middle, zbudowana na bazie sergio-proxy. Ostatnio zawarte w Kali Linux. Aby zainstalować go samodzielnie, po prostu sklonuj repozytorium i uruchom kilka poleceń:

# setup.sh # pip install -r wymagania.txt

# pip install -r wymagania.txt

Ma architekturę, którą można rozszerzyć za pomocą wtyczek. Wśród głównych są następujące:

  • Spoof - umożliwia przekierowywanie ruchu za pomocą spoofingu ARP/DHCP, przekierowań ICMP oraz modyfikowanie zapytań DNS;
  • Sniffer - ta wtyczka monitoruje próby logowania dla różnych protokołów;
  • BeEFAutorun - pozwala na automatyczne uruchamianie modułów BeEF na podstawie typu systemu operacyjnego i przeglądarki klienta;
  • AppCachePoison - wykonuje atak zatrucia pamięci podręcznej;
  • SessionHijacking - przechwytuje sesje i zapisuje otrzymane pliki cookie w profilu firelis;
  • BrowserProfiler - próbuje uzyskać listę wtyczek używanych przez przeglądarkę;
  • FilePwn - umożliwia podmianę plików przesyłanych przez HTTP przy użyciu Backdoor Factory i BDFProxy;
  • Inject - wstrzykuje dowolną zawartość do strony HTML;
  • jskeylogger - Wstawia keylogger JavaScript na strony klienta.

Jeśli ta funkcjonalność Ci nie wystarcza, zawsze możesz dodać własną, implementując odpowiednie rozszerzenie.

kit jeździec

Kolejne godne uwagi narzędzie. To prawda, że ​​w przeciwieństwie do wszystkich innych rozważanych dzisiaj narzędzi jest bardzo wąsko wyspecjalizowany. Jak mówi sam autor projektu, do stworzenia takiego narzędzia zainspirował go fakt, że podczas testów penetracyjnych najważniejsze dane znajdowały się na serwerach Linux/UNIX, z którymi admini łączyli się poprzez SSH/Telnet/rlogin. W większości przypadków dostęp do komputera administratora był znacznie łatwiejszy niż dostęp do serwera docelowego. Po przeniknięciu do komputera administratora systemu pozostaje tylko upewnić się, że PuTTY działa i użyć tego narzędzia do zbudowania mostu zwrotnego do atakującego.

Narzędzie umożliwia nie tylko podsłuchiwanie "komunikacji" między administratorem a zdalnym serwerem (w tym haseł), ale także wykonywanie dowolnych poleceń powłoki w ramach danej sesji. A wszystko to stanie się całkowicie transparentne dla użytkownika (administratora). Jeśli interesują Cię szczegóły techniczne, na przykład sposób realizacji procesu PuTTY, polecam zapoznać się z prezentacją autora.

Dość stare narzędzie, które narodziło się ponad osiem lat temu. Zaprojektowany do klonowania sesji poprzez kradzież plików cookie. W przypadku przejmowania sesji ma podstawowe umiejętności wykrywania hostów (w przypadku połączenia z otwartą siecią bezprzewodową lub koncentratorem) i przeprowadzania zatrucia ARP. Jedynym problemem jest to, że dziś, w przeciwieństwie do ośmiu lat temu, prawie wszystkie duże firmy, takie jak Yahoo czy Facebook, używają szyfrowania SSL, co czyni to narzędzie całkowicie bezużytecznym. Mimo to w sieci wciąż jest wystarczająco dużo zasobów, które nie używają SSL, więc jest za wcześnie, aby odpisać narzędzie. Do jego zalet należy fakt, że automatycznie integruje się z Firefoksem i tworzy osobny profil dla każdej przechwyconej sesji. Kod źródłowy jest dostępny w repozytorium i możesz go samodzielnie zbudować za pomocą następującej sekwencji poleceń:

# apt-get install build-essential libwxgtk2.8-dev libgtk2.0-dev libpcap-dev # g++ $(wx-config --cppflags --libs) -lpcap -o sessionthief *.cpp # setcap cap_net_raw,cap_net_admin=eip złodziej sesji

# apt-get install build-essential libwxgtk2.8-dev libgtk2.0-dev libpcap-dev

# g++ $(wx-config --cppflags --libs) -lpcap -o złodziej sesji *.cpp

# setcap cap_net_raw,cap_net_admin=złodziej sesji eip

Fuzz proxy

ProzyFuzz nie ma nic wspólnego z atakami MITM. Jak można się domyślić po nazwie, narzędzie przeznaczone jest do fuzzingu. Jest to mały niedeterministyczny fuzzer sieciowy zaimplementowany w Pythonie, który losowo zmienia zawartość pakietów ruchu sieciowego. Obsługuje protokoły TCP i UDP. Może być skonfigurowany do fuzzowania tylko jednej strony. Przydatne, gdy trzeba szybko przetestować jakąś aplikację sieciową (lub protokół) i opracować PoC. Przykład użycia:

Python proxyfuzz -l -r -p

python proxyfuzz -l -r -p

Lista opcji obejmuje:

  • w - ustawia liczbę żądań wysyłanych przed rozpoczęciem fuzzingu;
  • c - fuzz tylko klienta (w przeciwnym razie obie strony);
  • s - fuzz tylko serwer (w przeciwnym razie obie strony);
  • u - protokół UDP (w przeciwnym razie używany jest TCP).

Pośrednik

Zaprezentowane na konferencji DEF CON narzędzie do przeprowadzania ataków MITM na różne protokoły. Wersja alfa obsługiwała protokół HTTP i miała w swoim arsenale trzy fajne wtyczki:

  • plugin-beef.py - wstrzykuje Browser Exploitation Framework (BeEF) do dowolnego żądania HTTP przychodzącego z sieci lokalnej;
  • plugin-metasploit.py — wstrzykuje do niezaszyfrowanego (HTTP) żądania ramki IFRAME, która ładuje exploity przeglądarki z Metasploit;
  • plugin-keylogger.py — wstrzykuje obsługę zdarzeń JavaScript onKeyPress dla wszystkich pól tekstowych, które będą wysyłane przez HTTPS, powodując, że przeglądarka wysyła hasło użytkownika znak po znaku na serwer atakującego przed przesłaniem całego formularza.

Middler nie tylko automatycznie analizuje ruch sieciowy i znajduje w nim pliki cookie, ale także samodzielnie żąda ich od klienta, czyli proces jest maksymalnie zautomatyzowany. Program gwarantuje zbieranie wszystkich niezabezpieczonych kont w sieci komputerowej (lub publicznym hotspocie), do ruchu, do którego ma dostęp. Aby program działał poprawnie, w systemie muszą być zainstalowane następujące pakiety: Scapy, libpcap, readline, libdnet, python-netfilter. Niestety repozytorium od dawna nie było aktualizowane, więc będziesz musiał samodzielnie dodać nową funkcjonalność.

Narzędzie konsoli, które umożliwia interaktywne badanie i modyfikację ruchu HTTP. Dzięki takim umiejętnościom z narzędzia korzystają nie tylko testerzy penetracji/hakerzy, ale także zwykli programiści, którzy używają go np. do debugowania aplikacji internetowych. Można go wykorzystać do uzyskania szczegółowych informacji o tym, jakie żądania wysyła aplikacja i jakie otrzymuje odpowiedzi. Ponadto mitmproxy może pomóc w nauce działania niektórych interfejsów API REST, zwłaszcza słabo udokumentowanych.

Instalacja jest niezwykle prosta:

$ sudo aptitude zainstaluj mitmproxy

Warto zauważyć, że mitmproxy umożliwia również przechwytywanie ruchu HTTPS poprzez wystawienie klientowi certyfikatu z podpisem własnym. Dobry przykład, jak skonfigurować przechwytywanie i modyfikację ruchu, można znaleźć.

Dsniff

Cóż, to narzędzie jest generalnie jedną z pierwszych rzeczy, które powinny przyjść na myśl, gdy tylko usłyszysz
„Atak MITM”. Narzędzie jest dość stare, ale nadal jest aktywnie aktualizowane, co jest dobrą wiadomością. Nie ma sensu szczegółowo mówić o jego możliwościach, w ciągu czternastu lat istnienia pojawił się w sieci nie raz. Na przykład w przewodniku takim jak ten:

lub instrukcje z naszej strony internetowej:

W końcu..

Jak zwykle nie wzięliśmy pod uwagę wszystkich narzędzi, ale tylko te najbardziej popularne, wciąż jest wiele mało znanych projektów, o których możemy kiedyś porozmawiać. Jak widać, nie brakuje narzędzi do przeprowadzania ataków MITM i, co nie zdarza się tak często, jedno z fajnych narzędzi jest zaimplementowane pod Windows. Nie ma nic do powiedzenia na temat systemów nix - cała gama. Więc myślę, że zawsze możesz znaleźć odpowiednie narzędzie do przejmowania kontroli.
czyjeś referencje. Ups, czyli do celów testowych.

Proces uruchamiania sesji TCP, który składa się z trzech kroków. Klient wysyła do serwera pakiet z flagą SYN. Po odebraniu od klienta pakietu ze znacznikiem SYN serwer w odpowiedzi wysyła pakiet ze znacznikami SYN+ACK i przechodzi do stanu ESTABLISHED. Po otrzymaniu poprawnej odpowiedzi z serwera klient wysyła pakiet z flagą ACK i przechodzi w stan ESTABLISHED.

Lista banów

Lista klientów, którzy nie mają uprawnień do niektórych akcji. Za pomocą listy banów możliwości botów są zwykle ograniczone po wykryciu ataku DDoS. Również w realiach serwerów gier lista ta obejmuje graczy o złej reputacji, korzystających z kodów lub popełniających nielegalne działania.

Nerw

Komputer używany do przeprowadzania ataku DDoS z „prawdziwym” ruchem. W większości przypadków jest to komputer zwykłego użytkownika zainfekowany wirusem. Często użytkownik nie zauważa, że ​​jego komputer jest zainfekowany i jest wykorzystywany do nielegalnych celów.

serwer internetowy

Komputer w sieci, który akceptuje żądania HTTP od klientów, zwykle przeglądarek internetowych, i dostarcza im odpowiedzi HTTP. Zazwyczaj wraz z odpowiedzią HTTP serwer WWW odpowiada stroną HTML, obrazem, strumieniem multimediów lub innymi danymi.

Serwis internetowy

Usługi sieciowe to usługi świadczone w Internecie. Kiedy ten termin jest używany, może odnosić się do wyszukiwania, poczty internetowej, przechowywania dokumentów, plików, zakładek itd. Zazwyczaj usługi sieciowe mogą być używane niezależnie od komputera, przeglądarki lub lokalizacji dostępu do Internetu.

Domena

Pojęcie „domeny” może być używane w różnych kontekstach, jeśli chodzi o technologie sieciowe. Najczęściej pod domeną mają na myśli nazwę domeny serwisu. Domeny są podzielone na różne poziomy, na przykład w example.com com to domena pierwszego poziomu, a przykład to domena drugiego poziomu. Dla ułatwienia komunikacji ludzie używają również terminu „Subdomena” w odniesieniu do domeny, która jest większa niż dwa poziomy. Na przykład w domenie mail.example.com poczta jest subdomeną.

Wyszukaj robota

Usługa wyszukiwarki do odkrywania nowych stron w Internecie i zmieniania istniejących. Zasada działania jest podobna do przeglądarki. Analizuje zawartość strony, przechowuje ją w specjalnej formie na serwerze wyszukiwarki, do której należy i wysyła do linków do kolejnych stron.

Pasmo

Maksymalna możliwa ilość przesyłanych danych na jednostkę czasu. Często dostawcy Internetu, obiecując dużą szybkość dostępu do Internetu, nie wywiązują się ze swoich obietnic. W większości przypadków wynika to z pełnego wykorzystania przepustowości.

W tym artykule postaramy się zrozumieć teorię ataków typu man-in-the-middle i kilka praktycznych punktów, które pomogą zapobiegać tego typu atakom. Pomoże nam to zrozumieć ryzyko, jakie takie włamania stanowią dla naszej prywatności, ponieważ ataki MitM pozwalają nam ingerować w komunikację i podsłuchiwać nasze rozmowy.

Zrozumienie, jak działa internet

Aby zrozumieć atak typu man-in-the-middle, musisz najpierw zrozumieć, jak działa sam Internet. Główne punkty interakcji: klienci, routery, serwery. Najpopularniejszym protokołem komunikacyjnym między klientem a serwerem jest protokół przesyłania hipertekstu (HTTP). Przeglądanie stron internetowych za pomocą przeglądarki, poczty e-mail, komunikatorów — wszystko za pośrednictwem protokołu HTTP.

Kiedy wpisujesz w pasku adresu przeglądarki, klient (Ty) wysyła żądanie wyświetlenia strony internetowej do serwera. Pakiet (żądanie HTTP GET) jest wysyłany przez wiele routerów do serwera. Serwer odpowiada następnie stroną internetową, która jest wysyłana do klienta i wyświetlana na jego monitorze. Wiadomości HTTP muszą być przesyłane w trybie bezpiecznym, aby zapewnić poufność i anonimowość.

Rysunek 1. Interakcja klient-serwer

Zabezpieczenie protokołu komunikacyjnego

Bezpieczny protokół komunikacyjny musi mieć każdą z następujących właściwości:

  1. Prywatność- Tylko zamierzony odbiorca może przeczytać wiadomość.
  2. Autentyczność- udowodniono tożsamość współpracujących stron.
  3. Uczciwość- potwierdzenie, że wiadomość nie została zmieniona w tranzycie.

Jeśli co najmniej jedna z tych zasad nie jest przestrzegana, cały protokół jest zagrożony.

Atak typu man-in-the-middle na protokół HTTP

Atakujący może z łatwością przeprowadzić atak typu man-in-the-middle, używając techniki zwanej ARP spoofing. Każdy w Twojej sieci Wi-Fi może wysłać fałszywy pakiet ARP, powodując, że nieświadomie wysyłasz cały ruch przez atakującego zamiast routera.

Następnie atakujący przejmuje pełną kontrolę nad ruchem i może monitorować żądania wysyłane w obie strony.

Rysunek 2. Schemat ataku typu man-in-the-middle


Aby zapobiec takim atakom, stworzono bezpieczną wersję protokołu HTTP. Transport Layer Security (TLS) i jego poprzednik, Secure Socket Layer (SSL), to protokoły kryptograficzne, które zapewniają bezpieczną komunikację w sieci. Dlatego bezpieczny protokół będzie nazywał się HTTPS. Możesz zobaczyć, jak działa bezpieczny protokół, wpisując w pasku adresu przeglądarki (zwróć uwagę na S w https).

Atak typu man-in-the-middle na źle zaimplementowany protokół SSL

Współczesny SSL używa dobrego algorytmu szyfrowania, ale nie ma znaczenia, jeśli nie jest poprawnie zaimplementowany. Jeśli haker może przechwycić żądanie, może je zmienić, usuwając „S” z żądanego adresu URL, omijając w ten sposób SSL.

Takie przechwycenie i modyfikację żądania można zauważyć. Na przykład, jeśli zażądasz https://login.yahoo.com/, a odpowiedź brzmi http://login.yahoo.com/ , powinno to wzbudzić podejrzenia. W chwili pisania tego tekstu taki atak faktycznie działa na usługę poczty e-mail Yahoo.

Rysunek 3. Przechwytywanie i modyfikowanie żądania


Aby zapobiec takiemu atakowi, serwery mogą wdrożyć HTTP Strict Transport Security (HSTS), mechanizm, który wymusza wymuszone bezpieczne połączenie za pośrednictwem protokołu HTTPS. W takim przypadku, jeśli atakujący zmodyfikuje żądanie, usuwając „S” z adresu URL, serwer nadal przekieruje użytkownika z przekierowaniem 302 na stronę z bezpiecznym protokołem.

Rysunek 4. Schemat działania HSTS


Ten sposób implementacji SSL jest podatny na inny rodzaj ataku - atakujący tworzy połączenie SSL z serwerem, ale nakłania użytkownika do korzystania z HTTP.

Rysunek 5. Schemat ataku dla HSTS


Aby zapobiec takim atakom, nowoczesne przeglądarki, takie jak Chrome, Firefox i Tor, monitorują witryny korzystające z HSTS i wymuszają z nimi połączenie SSL po stronie klienta. W takim przypadku atakujący przeprowadzający atak typu man-in-the-middle będzie musiał utworzyć połączenie SSL z ofiarą.

Rysunek 6. Schemat ataku, w którym atakujący nawiązuje połączenie SSL z ofiarą


Aby zabezpieczyć połączenie SSL z użytkownikiem, atakujący musi wiedzieć, jak działać jako serwer. Rozumiemy techniczne aspekty SSL.

Zrozumienie SSL

Z punktu widzenia hakera, naruszenie dowolnego protokołu komunikacyjnego sprowadza się do znalezienia słabego ogniwa wśród wymienionych powyżej komponentów (prywatność, autentyczność i integralność).

SSL wykorzystuje algorytm szyfrowania asymetrycznego. W przypadku szyfrowania symetrycznego problem polega na tym, że ten sam klucz jest używany do szyfrowania i odszyfrowywania danych, takie podejście jest nie do przyjęcia w przypadku protokołów internetowych, ponieważ atakujący może namierzyć ten klucz.

Z drugiej strony szyfrowanie asymetryczne obejmuje 2 klucze dla każdej strony: klucz publiczny używany do szyfrowania i klucz prywatny używany do odszyfrowywania danych.

Rysunek 7. Działanie kluczy publicznych i prywatnych

W jaki sposób protokół SSL zapewnia trzy właściwości wymagane do bezpiecznej komunikacji?

  1. Ponieważ do szyfrowania danych używana jest kryptografia asymetryczna, SSL zapewnia połączenie prywatne. To szyfrowanie nie jest tak łatwe do złamania i pozostania niezauważone.
  2. Serwer udowadnia swoją wiarygodność wysyłając klientowi certyfikat SSL wystawiony przez urząd certyfikacji, zaufaną stronę trzecią.

Jeśli atakujący w jakiś sposób zdoła zdobyć certyfikat, może stworzyć warunki do ataku typu man-in-the-middle. W ten sposób utworzy 2 połączenia - z serwerem i z ofiarą. Serwer w tym przypadku uważa, że ​​atakujący jest normalnym klientem, a ofiara nie ma możliwości zidentyfikowania atakującego, ponieważ dostarczył certyfikat potwierdzający, że jest serwerem.

Twoje wiadomości docierają i docierają w formie zaszyfrowanej, ale przechodzą wzdłuż łańcucha przez komputer cyberprzestępcy, na którym ma on pełną kontrolę.

Rysunek 8. Schemat ataku w przypadku posiadania certyfikatu przez atakującego


Certyfikat nie musi być sfałszowany, jeśli atakujący ma możliwość złamania zabezpieczeń przeglądarki ofiary. W takim przypadku może wstawić certyfikat z podpisem własnym, który będzie domyślnie zaufany. W ten sposób realizowana jest większość ataków typu man-in-the-middle. W bardziej skomplikowanych przypadkach haker musi pójść w drugą stronę – sfałszować certyfikat.

Problemy urzędów certyfikacji

Certyfikat wysłany przez serwer jest wystawiany i podpisany przez urząd certyfikacji. Każda przeglądarka ma listę zaufanych urzędów certyfikacji i możesz je dodawać lub usuwać. Problem polega na tym, że jeśli zdecydujesz się usunąć duże urzędy, nie będziesz mógł odwiedzać witryn, które używają certyfikatów podpisanych przez te urzędy.

Certyfikaty i urzędy certyfikacji zawsze były najsłabszym ogniwem w połączeniu HTTPS. Nawet jeśli wszystko zostało zaimplementowane poprawnie i każdy urząd certyfikacji ma solidny autorytet, to nadal trudno pogodzić się z faktem, że trzeba ufać wielu stronom trzecim.

Obecnie istnieje ponad 650 organizacji zdolnych do wydawania certyfikatów. Jeśli atakujący zhakuje którekolwiek z nich, otrzyma dowolne certyfikaty.

Nawet gdy istniał tylko jeden urząd certyfikacji, VeriSign, pojawiał się problem – ludzie, którzy mieli zapobiegać atakom typu man-in-the-middle, sprzedawali usługi przechwytywania.

Ponadto wiele certyfikatów zostało utworzonych przez hakerskie urzędy certyfikacji. Wykorzystywane są różne techniki i sztuczki, aby zmusić zaatakowanego użytkownika do zaufania fałszywym certyfikatom.

Kryminalistyka

Ponieważ atakujący wysyła fałszywe pakiety ARP, nie możesz zobaczyć jego adresu IP. Zamiast tego musisz zwrócić uwagę na adres MAC, który jest specyficzny dla każdego urządzenia w sieci. Jeśli znasz adres MAC routera, możesz porównać go z adresem MAC bramy domyślnej, aby dowiedzieć się, czy to naprawdę router, czy intruz.

Na przykład w systemie Windows możesz użyć polecenia ipconfig w wierszu poleceń (CMD), aby wyświetlić adres IP bramy domyślnej (ostatni wiersz):

Rysunek 9 Używanie polecenia ipconfig


Następnie użyj polecenia arp -a, aby znaleźć adres MAC tej bramy:

Rysunek 10. Korzystanie z arp – polecenie


Ale jest inny sposób na zauważenie ataku - jeśli monitorowałeś aktywność sieciową w momencie jej rozpoczęcia i obserwowałeś pakiety ARP. Na przykład możesz użyć do tego celu Wireshark, ten program powiadomi Cię, jeśli zmienił się adres MAC domyślnej bramy.

Uwaga: Jeśli atakujący poprawnie sfałszuje adresy MAC, wyśledzenie go będzie dużym problemem.

Wniosek

SSL to protokół, który zmusza atakującego do wykonania dużej ilości pracy w celu przeprowadzenia ataku. Ale nie ochroni Cię przed atakami sponsorowanymi przez rząd lub wykwalifikowanymi organizacjami hakerskimi.

Zadaniem użytkownika jest ochrona przeglądarki i komputera przed wprowadzeniem fałszywego certyfikatu (bardzo powszechna technika). Powinieneś także zwrócić uwagę na listę zaufanych certyfikatów i usunąć te, którym nie ufasz.