Urządzenia z wbudowanym systemem są pełne niespodzianek. Okazuje się, że analiza oprogramowania może doprowadzić do uzyskania uprawnień roota na odtwarzaczu multimedialnym za pomocą pilota. I to przez manipulację nazwą sieci WiFi.
W serwisie poświęconym analizie wbudowanego oprogramowania w różnych urządzeniach opisano ciekawą i niezwykle oryginalną historię włamania do odtwarzacza NeoTV firmy Netgear. NeoTV potrafi bezprzewodowo przesyłać sygnał wideo, pochodzący z takich serwisów jak Youtube, Hulu czy Netflix.
Analiza urządzenia rozpoczęła się od jego otwarcia i odnalezienia portu szeregowego, który niestety nie udostępniał powłoki z uprawnieniami administracyjnymi. Kolejnym krokiem było zatem pobranie aktualizacji oprogramowania urządzenia i jego analiza. Narzędzie binwalk pokazało, że w pliku obrazu oprogramowania znajdują się dwa obrazy systemu plików SquashFS, dość często stosowanego w tego typu urządzeniach.
Pierwszy obraz po jego wyodrębnieniu i zamontowaniu okazał się zawierać między innymi plik binarny /usr/local/bin/ntv300ui, odpowiedzialny za obsługę interfejsu urządzenia, w tym także komend pilota. Analiza pliku binarnego za pomocą dizasemblera pokazała, że programiści, tworzący kod, chętnie korzystali z funkcji system() oraz popen(). Użyli ich między innymi w kodzie odpowiedzialnym za łączenie się urządzenia z domową siecią bezprzewodową. Jaki był tego skutek? Oto, co działo się, kiedy użytkownik podał za pomocą pilota nazwę docelowej sieci `reboot`.
Zaczynamy od pieczołowitego wystukania na pilocie odpowiedniej nazwy sieci.
Urządzenie próbuje się z nią połączyć.
Co kończy się nieuniknionym restartem. Czyż to nie piękne?
Próba połączenia do sieci o nazwie „;bin/sh/ # pozwoliła badaczom na uzyskanie ograniczonej powłoki na porcie szeregowym. To ich jednak nie zadowoliło, ponieważ interfejs był mało funkcjonalny a prezentowane ekrany wymieszane z wynikami procedur diagnostycznych. Interfejs ten pozwolił jednak na znalezienie ciekawego skryptu /root/rc.user, którego fragment sprawdzał, czy istnieje plik /mnt/ubi_boot/mfg_test/enable i w przypadku pozytywnego wyniku testu uruchamiał usługę telnet.
Co prawda plik „enable” nie istniał, ale nic nie stało na przeszkodzie, by można go było utworzyć poprzez sztuczkę z nazwą sieci bezprzewodowej. Długość pola nazwy sieci ograniczała wydawane komendy do 32 znaków, ale badacze ominęli to ograniczenie, tworząc krok po kroku odpowiedni skrypt a następnie go wykonując. Restart urządzenia dał im to, czego szukali – powłokę roota, bez hasła, czekającą na porcie 21. Voilà!
Do słynnych już włamań takich jak emacsem przez sendmail oraz Skypem do banku dodajemy dzisiaj pilotem przez SSID do dekodera. Nie wiemy też jak Wy, ale my zaraz zmienimy nazwę naszej sieci bezprzewodowej na „rm -rf /.
Komentarze
LOL. Znowu jakiś niedouczony pehapowiec wyprodukował co umiał.
Jaki sens ma twój komentarz, poza próbą wywołania bezsensownego flamewara?
albo jakiś pajtonowiec…
Nic dziwnego, przecież nikt nie będzie inwestował kasy na mega zabezpieczenie odtwarzacza. Nawet jak komuś się uda coś zdziałać, to co mu po tym?
Nazwa sieci powinna raczej brzmieć `rm -rf /` :D
No właśnie, jakoś nie widzę korzyści z takiego włamania dla włamującego…
Dla pytających o korzyści z włamania – na przykład aktualizacje oprogramowania nie zawierają części modułów wykorzystywanych do streamingu Netflixa. Jeśli kogoś interesuje, jak urządzenie realizuje tą funkcjonalność, to musi się do niego włamać, by poczytać wykorzystywany kod.
A na mój odtwarzacz można normalnie zrobić telnet, a hasło na roota jest napisane w instrukcji :)
Emacsem przez sendmail :)