wtorek, 16 lipca 2024

Hackowanie "growego" protokołu UPnP

Universal Plug and Play (UPnP) oraz Simple Service Discovery Protocol (SSDP) to protokoły, które umożliwiają urządzeniom w sieci automatyczną konfigurację i komunikację bez potrzeby interwencji użytkownika. 

Chociaż te technologie znacznie ułatwiają zarządzanie sieciami domowymi i biurowymi, stwarzają również potencjalne zagrożenia bezpieczeństwa, które mogą być wykorzystane przez cyberprzestępców. Jednym z takich zagrożeń jest złośliwe narzędzie Evil-SSDP.

Jak działa UPnP?

UPnP to zestaw protokołów sieciowych, które pozwalają urządzeniom, takim jak komputery, drukarki, routery i urządzenia multimedialne, na automatyczne wykrywanie i konfigurowanie się nawzajem. UPnP działa na poziomie TCP i składa się z kilku kluczowych komponentów:

1. SSDP (Simple Service Discovery Protocol):Używany do wykrywania urządzeń w sieci. Urządzenia wysyłają komunikaty SSDP na adres multicastowy, aby ogłosić swoją obecność lub wyszukać inne urządzenia. Działa na porcie 1900 UDP. To właśnie dzięki SSDP, urządzenia w sieci mogą automatycznie konfigurować się nawzajem, co znacznie upraszcza zarządzanie sieciami domowymi i biurowymi.

2. HTTPU (HTTP over UDP): Umożliwia przesyłanie żądań HTTP przez UDP.

3. SOAP (Simple Object Access Protocol): Używany do komunikacji między urządzeniami w sieci.


Proces działania UPnP można podzielić na kilka etapów:

- Discovery (Odkrywanie): Urządzenia wysyłają komunikaty SSDP, aby ogłosić swoją obecność lub wyszukać inne urządzenia.

- Description (Opis): Po odkryciu, urządzenia wymieniają informacje o swoich możliwościach i usługach za pomocą XML i HTTP.

- Control (Kontrola): Urządzenia mogą kontrolować usługi innych urządzeń za pomocą protokołu SOAP przesyłanego przez HTTP.

- Eventing (Powiadamianie): Urządzenia mogą wysyłać powiadomienia o zmianach stanu do innych urządzeń w sieci.

Dla wzrokowców - poniżej zwizualizowany pełny stos protokołu UPnP:

Źródło: https://www.researchgate.net/figure/Proposed-UPnP-protocol-stack-for-applications_fig2_307898072














Evil-SSDP

Evil-SSDP to narzędzie wykorzystywane przez cyberprzestępców do przeprowadzania ataków na urządzenia korzystające z protokołu SSDP. Narzędzie to wykorzystuje luki w protokole SSDP, aby przeprowadzać różne złośliwe działania, takie jak:

1. Sfałszowane odkrywanie urządzeń: Evil-SSDP może wysyłać fałszywe komunikaty SSDP, udając inne urządzenia w sieci. Dzięki temu, złośliwe urządzenie może zostać wykryte przez inne urządzenia jako legalne i uzyskać dostęp do sieci lub jej zasobów.

2. Przechwytywanie i modyfikowanie komunikatów: Narzędzie może przechwytywać komunikaty SSDP i modyfikować je w trakcie przesyłania. Pozwala to na wprowadzenie zmian w konfiguracji urządzeń w sieci, takich jak przekierowanie ruchu do złośliwych serwerów.


Przykłady działania evil-ssdp

Narzędzie evil-ssdp (https://github.com/initstring/evil-ssdp), dostępne jako skrypt Python, pozwala na przeprowadzenie powyższych ataków. Oto kilka zrzutów ekranu pokazujących jego działanie:


1. Uruchomienie narzędzia Evil-SSDP:

  python evil-ssdp.py --interface wlan0

Ten prosty przykład pokazuje uruchomienie narzędzia na interfejsie sieci bezprzewodowej.

Źródło: https://www.sevenlayers.com/index.php/294-evil-ssdp


2. Fałszywe odkrywanie urządzeń:

python evil_ssdp.py --ip 192.168.1.100 --uuid fffffffff-ffff-ffff-ffff-ffffffffffff --device-type "MediaServer" --server "Linux/3.x UPnP/1.0 Test/1.0"

Wyjaśnienie opcji:

  • --ip: Adres IP fałszywego urządzenia.
  • --uuid: Unikalny identyfikator fałszywego urządzenia.
  • --device-type: Typ urządzenia, które ma być symulowane (np. MediaServer).
  • --server: Informacje o serwerze.

3. Przechwytywanie i modyfikowanie komunikatów:

python evil_ssdp.py --log evil_ssdp.log

Ta komenda uruchomi Evil-SSDP i zapisze logi ruchu sieciowego do pliku evil_ssdp.log.

python evil_ssdp.py --ip 192.168.1.100 --uuid fffffffff-ffff-ffff-ffff-ffffffffffff --device-type "MediaServer" --server "Linux/3.x UPnP/1.0 Test/1.0"

Następnie, w innej sesji terminala, uruchom tcpdump, aby przechwytywać ruch sieciowy:

sudo tcpdump -i eth0 host 192.168.1.100 -w capture.pcap

Wyjaśnienie opcji:

  • -i eth0: Interfejs sieciowy do przechwytywania (dostosuj do swojej konfiguracji).
  • host 192.168.1.100: Przechwytywanie ruchu skierowanego do fałszywego urządzenia o adresie IP 192.168.1.100.
  • -w capture.pcap: Zapis przechwyconego ruchu do pliku capture.pcap.


Zabezpieczenia przed atakami

Aby zabezpieczyć się przed zagrożeniami związanymi z UPnP i SSDP, należy podjąć kilka kroków:

1. Wyłączanie UPnP: Jeśli nie jest to absolutnie konieczne, wyłącz UPnP na routerze i innych urządzeniach sieciowych.

2. Monitorowanie ruchu sieciowego: Używaj narzędzi do monitorowania ruchu sieciowego, takich jak Wireshark, aby wykrywać podejrzane aktywności na porcie 1900.

3. Aktualizacja oprogramowania: Regularnie aktualizuj oprogramowanie routerów i innych urządzeń sieciowych, aby zminimalizować ryzyko wykorzystania znanych luk bezpieczeństwa.


Podsumowanie

UPnP i SSDP ułatwiają konfigurację sieci, ale również stwarzają potencjalne zagrożenia bezpieczeństwa. Narzędzia takie jak evil-ssdp pokazują, jak luki w tych protokołach mogą być wykorzystane do przeprowadzania ataków. Świadomość tych zagrożeń i wdrożenie odpowiednich zabezpieczeń jest kluczowe dla ochrony sieci domowych i biurowych.