Jak działa atak “Man in the middle”? Dlaczego jest on bardzo niebezpieczny? Jak go wykorzystać w praktyce i rozwiązać problem bez modyfikacji aplikacji produkcyjnej? Tego dowiecie się z poniższego artykułu.


Piotr Kowalski. Od 10 lat zajmuje się branżą IT. Swoją karierą zaczynał od stanowiska webdevelopera, przez co mógł poznać obie warstwy aplikacji: serwerową oraz kliencką. Po kilku latach zdecydował, że chciałby skupić się bardziej na warstwie front-endowej. Dawała mu większą satysfakcję z tworzenia — pewnie dlatego, że zaprzyjaźnił się z JavaScriptem.


Problem

Przedstawiam Wam rozwiązanie problemu, jaki spotkał mnie ostatnio w pracy. Telewizorowa aplikacja SPA (produkcyjna) w pewnym momencie miała problem z pobieraniem plików. Podczas uruchomienia pobiera pliki z niepoprawnego adresu — nie ma jednak sensu zapuszczać się w detale tego problemu, bo to nie jest celem tego artykułu.

Aby rozwiązać problem w celu debugowania chciałbym móc zaserwować kod aplikacji z mojego komputera, a nie z produkcyjnej lokalizacji. Ale jak to mam zrobić, skoro aplikacja jest wgrana do telewizora i nie ma możliwości jej podmiany, bez upgrade-u? Przecież nie mogę na produkcję wrzuć wersji developerskiej!

Rozwiązanie

Rozwiązanie polega na wpięciu się w ruch między routerem, do którego podłączony jest telewizor a samo urządzenie. Ze względu na fakt, że do tego routera wpięte jest mnóstwo urządzeń, wolę delikatnie zmienić architekturę i postawić swoje źródło dostępu do internetu (mój telefon).

Dzięki temu będę mógł wpiąć się komputerem pomiędzy telewizor a telefon za pomocą dwóch portów jakie mam w komputerze:

  • USB — do którego podłączę telefon,
  • Thunderbolt-Ethernet (dongle) — do którego podłączę telewizor za pomocą kabla sieciowego.

W skrócie: Należy przechwycić ruch i móc go zmienić w locie.

Jak działa Man in the middle?

Technika MITM polega na przechwyceniu ruchu poprzez wpięcie urządzenia pomiędzy “ofiarę” (w moim przypadku telewizor), a internet (w moim przypadku telefon).

Ruch w obie strony możemy śledzić za pomocą narzędzia Wireshark. Niebezpieczne jest to, że response odpowiedzi może być modyfikowany. Tym samym OFIARA nie dostrzeże żadnej różnicy (jeśli ruch nie jest szyfrowany), kiedy dostanie zmodyfikowaną odpowiedź.

Bądź czujny!
Nie podłączajcie się do niezabezpieczonych sieci Wi-Fi. Istnieje potencjalne ryzyko, że ktoś może przechwytywać ruch (pakiety) i go modyfikować, a Wy się o tym nie dowiecie.

Konfiguracja

1. Telewizor albo inne urządzenie, np. inny telefon (OFIARA)

Podłączyć urządzenie kablem sieciowym (lub za pomocą Wi-Fi) do komputera. Jeśli nie ma wejścia to skorzystaj z przejściówki np. Thunderbolt → Ethernet

2. Telefon

Udostępnić internet z telefonu na jeden z trzech sposobów:

  • Podłączyć telefon do komputera za pomocą kabla USB:
    – Wyłącz Wi-Fi
    – Włącz Udostępnianie:
    — iPhone: Hotspot osobisty
    — Android: Przenośny hotspot Wi-Fi
  • albo za pomocą Bluetooth
  • ostatecznie możesz spróbować za pomocą Wi-Fi, ale ten typ połączenie nie jest rekomendowany przeze mnie

Przetestuj stan!
Od teraz komputer powinien korzystać z telefonu jako źródła internetu. Sprawdź, czy na komputerze, że możesz wejść na dowolny adres w przeglądarce.

3. Komputer (ATAKUJĄCY)

Poniższy opis dotyczy komputera typu MacBook. Na innych komputerach proces również jest możliwy, jednak oprogramowanie trzeba inaczej skonfigurować.

  • Jeśli nie używasz Wi-Fi to wyłącz je, aby nie zaburzyć protokołu DNS.
  • Udostępnić połączenie:
    – Udostępnić internet wchodząc do:
    Preferencje systemoweUdostępnianie
    – Przejść do sekcji Udostępnianie internetu
    — W menu Udostępniaj swoje połączenieiPhone USB
    — W menu Komputerom przezThunderbolt Ethernet
    – Włączyć Udostępnianie internetu

Przykład poprawnej konfiguracji udostępnienia połączenia

Przetestuj stan!
Od teraz telewizor OFIARA powinien korzystać z komputera jako źródła internetu. Sprawdź, czy na telewizorze, że możesz wejść na dowolny adres w przeglądarce.

  • Przekierować ruch z DOMENA.pl na komputer atakującego
    – Sprawdzenie jaki adres IP jest na interfejsie Thunderbolt - Ethernet
    – Wpisanie do pliku /etc/hosts następujących rekordów

Aby edytować ten plik należy być administratorem.

  • Przekierować ruch z DOMENA.pl na customową usługę (wraz z portem)

Stworzyć nowy vhost wpisując do pliku /usr/local/etc/nginx/nginx.conf lub dodaje do katalogu /usr/local/etc/nginx/servers/, plik np. domena.pl.conf:

Uwaga
W pliku konfiguracyjnym dla nginx, wcięciem jest tabulacja.

  • Zrestartować nginx za pomocą polecenia:

Przetestuj stan!
Od teraz wchodząc na komputerze na adres DOMENA.pl powinieneś stracić możliwość wyświetlenia jej zawartości.

  • Zainstalować serwer DNS na komputerze atakującego, aby urządzenie ofiary rozwiązywało adres tak jak atakujący sobie tego zażyczy:

Aby zainstalować narzędzie dnsmasq należy uruchomić polecenie:

Następnie należy uruchomić serwer z podniesionymi uprawnieniami:

Następnie należy odświeżyć DNS-y:

  • Stworzyć serwer w Node.js, aby mieć kontrolę nad ruchem HTTP.
    – Stworzyć plik server.js w dowolnym miejscu w systemie:

– Zainstalować zależności:

– Uruchomić serwer za pomocą polecenia:

Przetestuj stan!
Od teraz na komputerze wchodząc na adres DOMENA.pl powinieneś otrzymać odpowiedź express: trueSprawdź stan wchodząc w przeglądarce na DOMENA.pl

Testy

Jak przetestować działanie?

1. Zmienić adres DOMENA.pl na nasz konkretny host (bez parametrów), który chcemy modyfikować ze swojego komputera.
2. Uruchomić telewizor i wejść do aplikacji.
3. Aplikacja uruchomiona z dowolnymi parametrami na wybranej domenie, będzie otrzymywać to, co zwraca serwer uruchomiony w Node.js.

Troubleshooting

Problem polega na tym, że powłoka nie znajduje takiego pliku w żadnym z katalogów zdefiniowanych w zmiennej środowiskowej $PATH.

Aby rozwiązać problem uruchom:

a następnie uruchom:

Zrestartować powłokę za pomocą polecenia:

Urządzenie (OFIARA) nie potrafi rozwiązać adresu

Jeśli na telewizorze występuje problem z komunikacją do nadpisywanego adresu, należy zrestartować dnsmasq.

Znajdź id procesu za pomocą polecenia:

Zabij proces o id, który pojawić się w poprzednim wyniku w drugiej kolumnie:

Pytania?

Jeśli macie pytania odnośnie zastosowanej techniki napiszcie w komentarzu. Z przyjemnością porozmawiam więcej na ten temat.


Artykuł został pierwotnie opublikowany na blogu autora. Zdjęcie główne artykułu pochodzi z pexels.com.

Zapraszamy do dyskusji
Nie ma więcej wpisów

Send this to a friend