Nowy rok zaczynamy jednym z naszych ulubionych tematów, czyli kolejną tylną furtką w urządzeniu sieciowym, zostawioną tam przez producenta z nadzieją, ze nikt jej nie znajdzie. A nadzieja, jak powszechnie wiadomo, jest matką głupich.
Tym razem tylna furtka wygląda dość niepozornie. Ot, otwarty port, który odpowiada dziwnym ciągiem znaków. Okazuje się jednak, że to niestandardowy interfejs zarządzania całym urządzeniem, dostępny dla każdego użytkownika.
Wyzwanie przyjęte
Autor odkrycia, Eloi Vanderbeken, opisał swoje znalezisko w dość niestandardowy sposób – w postaci prezentacji PPT rysowanej w Paincie. Prosimy zatem o wybaczenie, jeśli coś w naszym artykule nie będzie się zgadzać, ale wiele elementów musieliśmy dedukować z obrazków. Wszystko jednak wskazuje na to, że pewnego świątecznego dnia Eloi próbował skorzystać z internetu, który działał bardzo wolno (z marnego łącza korzysta wiele osób). Wpadł zatem na klasyczny pomysł administratora, czyli ograniczenie przepustowości pozostałym użytkownikom. Gdy jednak próbował zalogować się do rutera Linksys WAG200G, problemem okazały się jednak decyzje podjęte wiele lat temu, czyli wyłączenie zdalnego dostępu do interfejsu administratora oraz ustawienie bardzo skomplikowanego i bardzo zapomnianego hasła. Tu następuje moment, w którym nie rozumiemy, czemu Eloi nie mógł po prostu fizycznie zresetować rutera do ustawień fabrycznych – być może urządzenie nie znajdowało się w jego domu lub nie chciał zmieniać hasła dostępu do sieci WiFi wszystkim użytkownikom. Eloi odpowiedzał na nasze pytanie i wyjaśnił, że nie chciał stracić ustawień rutera i modemu.
Nasz bohater przyjął zatem postawę, która jest zapewne oczywistym wyborem dla większości naszych Czytelników – challenge accepted! Odpalił Nmapa i zobaczył, że na ruterze otwarty jest tajemniczy port TCP/32764, który odpowiada ciągiem ScMM\xFF\xFF\xFF\xFF\x00\x00\x00\x00 na każde połączenie. Niestety w internecie nie znalazł żadnych konkretnych informacji na temat tego portu. Trzeba było zatem znaleźć inne rozwiązanie.
Analiza oprogramowania
Pierwszym krokiem gdy próbujemy analizować oprogramowanie rutera jest oczywiście pobranie odpowiedniej paczki ze strony producenta. Tu jednak Linksys się nie popisał – na oficjalnej stronie wyszukiwarka niczego nie znalazła. Z pomocą przyszły oczywiście internetowe fora. Eloi za pomocą narzędzia binwalk zidentyfikował system plików Squashfs, jednak próba jego podmontowania przy użyciu standardowych narzędzi się nie powiodła – jego urządzenie używało wersji starszej, niż obsługiwana przez narzędzia. Po krótkim hakowaniu skryptów konfiguracyjnych udało mu się jednak podłączyć do systemu plików rutera. Tutaj z kolei z pomocą przyszedł grep, który pomógł zidentyfikować plik scfgmgr, odpowiedzialny za wysyłanie tajemniczego komunikatu na porcie 32764. Do akcji ruszyła IDA.
Analiza protokołu
Eloi na swoje szczęście znał się na inżynierii wstecznej w wystarczającym stopniu, by zlokalizować procedury odpowiedzialne za obsługę komunikacji usługi obsługującej port 32764. Ku swojemu zaskoczeniu odkrył tam banalnie prosty protokół, przyjmujący po krótkim nagłówku 13 różnych, kolejno ponumerowanych poleceń. Jak przystało na prawdziwego eksperymentatora, Eloi po prostu wysłał do rutera kilka pakietów. Ku swojemu zaskoczeniu otrzymał pełną konfigurację urządzenia wraz ze wszystkimi hasłami oraz komunikat od żony o treści „czemu nie działa internet!”. Dalsza analiza pozwoliła zidentyfikować znaczenie kolejnych poleceń.
1: zrzut całej konfiguracji z pamięci nvram 2: wyświetlenie wybranej zmiennej 3: ustawienie wybranej zmiennej (a przy okazji błąd przepełnienia bufora) 4: wgranie nvram 5: ustawienie trybu mostka sieciowego 6: wyświetlenie prędkości łącza 7: wykonanie polecenia (czyli shell) 8: zapisanie pliku 9: wyświetlenie informacji o wersji 10: wyświetlenie adresu IP 11: przywrócenie domyślnych ustawień 12: odczytanie fragmentu dysku 13: zrzut nvram
Czy można chcieć czegoś więcej? Jest nawet shell! Dla ułatwienia obsługi tylnej furtki Eloi stworzył odpowiedni skrypt w Pythonie. Na deser znalazł także w ruterze prywatny klucz RSA. A Chińczycy prawdopodobnie wiedzieli o tej tylnej furtce od 2008…
Inne rutery?
Co prawda do tej pory nikt nie potwierdził na 100% faktu obecności tej samej tylnej furtki w innych urządzeniach, jednak w sieci można znaleźć wpisy mówiące o tym, że w wielu modelach ruterów otwarty jest port 32764, który odpowiada na połączenia tym samym ciągiem znaków… Przetestujecie? Przykładowe urządzenia, gdzie tylna furtka może być obecna, to Netgear DG934, WPNT834, WG602, WGR614, DGN2000 oraz Linksys WRVS4400N – choć inne też niewykluczone. Prawdopodobnie mogą to być wszystkie urządzenia, korzystające z komponentów firmy SerComm.
Do tej pory potwierdzono występowanie tej tylnej furtki w następujących ruterach:
- Linksys WAG200G
- Linksys WAG120N
- Linksys WAG160N
- Linksys WAG320N (Firmware V1.00.12)
- Linksys WAG54G2
- Netgear DM111P
- Netgear DGN1000
- Netgear DGN3500
- Netgear DG834
- Cisco WAP4410N
Jeśli lubicie czytać o tylnych furtkach w domowych ruterach, to polecamy także nasze wpisy dotyczące innych modeli:
Komentarze
ciezko juz w cokolwiek ufac WSZYSTKO na KAZDYM mozliwymm poziomie jest juz spalone od biosu, firmware w hdd przez kable, routery domowe, routery IPS, swiatlowody transoceaniczne, punkty wymiany ruchu, funkcje rand, soft od przegladarek po OSy
Wystarczy do linksysa wgrac tomato lub ddwrt lub openwrt i temat zostanie zalatwiony. Proste.
Do wag200g chcesz wgrywać alternatywny firmware? MYŚL!!!
Oczywiście nie chodzi mi o szajsowaty openwag czy moda by woytekm, a o tomato, DDWRT, albo openWRT
Linksys E3500 jest odporny :)
jasne pewnie ma inna luke, przepraszam – ukryta furtke
Ręce opadają. Najlepiej zaczynać instalację od wymiany systemu na jakiś znany i otwarty. Ciekawe tylko, czy backdoor pojawił się po przejęciu Linksysa przez Cisco, czy też był wcześniej wymyślony.
Openwag200g + iptables / rc.local = Brak problemu :)
openwag ma dokładnie ten sam backdoor bo bazuje na oryginalnym sofcie, więc nie pierdziel
Jednak nie jest aż tak różowo. scfgmgr odpowiada za pobieranie danych do webinterfejsu. Po ubiciu, owy się psuje.
Pobierasz image softu. Rozpakowujesz LZMA.
Usuwasz plik usr/sbin/scfgmgr z obrazu
edytujesz usr/etc/rcS usuwając linię /usr/sbin/scfgmgr
kompilujesz NC pod MIPS i wrzucasz używając opisanego backdoora.
Za pomocą netcat wrzucasz zmodyfikowany image. reboot
Cieszysz się wersją bez backdoora, a dodatkowo możesz sobie dorzucić SSH bo tez się da
http://blog.quarkslab.com/tcp-backdoor-32764-or-how-we-could-patch-the-internet-or-part-of-it.html
NETGEAR DGN2200 odporny ;)
DGN2200 (kontynuacja DGN2000) odporny.
Linksys WAG320N ADSL+ niestety jest podatny. Firmware V1.00.12
Nmap scan report for 1.0.0.1
Host is up (0.039s latency).
Not shown: 65530 closed ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
1780/tcp open unknown
5691/tcp open unknown
32764/tcp open unknown
TELNET:
Trying 1.0.0.1…
Connected to 1.0.0.1.
Escape character is '^]’.
MMcS▒▒Connection closed by foreign host.
——————
NetCat:
nc 1.0.0.1 32764
MMcS▒▒▒▒
——————-
Co to za znaki po MMcS to niestety nie wiem ale ich ilość się różni zależnie od tego czy łączę się przez telnet czy netcatem.
Za coś takiego firma powinna zwracać kasę. Powinienem mieć prawo zwrotu sprzętu do szanownego producenta. Ale nie – ja sam jako użytkownik jestem pewnie odpowiedzialny za łatanie dziur w sofcie routera. Zostaje tylko TPLink na jakimś open sofcie.
nie zaplaca ci za dziury , bo takowych nie ma , to sa celowe dzialania
Bo oni stoją ponad prawem. Jak ty się „włamiesz” do niezabezpieczonej sieci sąsiada to odpowiadasz karnie a jak oni zostawiają back-doora to wszystko jest OK.
@pismak
Jeśli nie mineły 2 lata od daty zakupu to idziesz do sklepu i reklamujesz towar niezgodny z umową. Z udowodnieniem, że wada istniała w momencie zakupu nie będziesz miał problemu.
O co tyle hałasu.
Standardowo ten port jest dostępny tylko z LAN.
read and weep. http://en.wikipedia.org/wiki/DNS_rebinding
Może Ci sie wydawać, że nie ma zagrożenia – tym czasem jest bardziej realne niż myślisz.
Myślisz, że ktoś by się męczył z DNS rebindingiem żeby hacknąć biedny domowy router – jak już wystarczyło by opanowanie ogłupiałego komputera.
Oczywiście, że tak właśnie myślę.
Domowe komputery są znacznie częsciej łatane i uaktualniane niż routery. Pozatym przejecie kontroli nad routerem umożliwia dalszą penetrację sieci będąc niezauważonym. Przykład takiego ataku byl prezentowany na 27c3, 28c3 albo 29c3.
Nie zrozumiałeś mnie.
Żeby się włamać do portu routera dostępnego od strony LAN-u trzeba najpierw opanować komputer w tym LANie np. za pomocą wspomnianego DNS rebindingu…
O.K.
Jest dostępny od strony LAN-u ale nie tylko pod prywatnym LAN owym adresem ale też pod adresem WAN. Demon wisi oczywiście na wszystkich interfejsach tylko firewall blokuje dojście ze świata….To faktycznie d..
Chyba nie do konca zrozumiales o co chodzi z atakiem przez DNS rebinding. Nie musze opanowywać komputera w sieci lokalnej zeby dobijać się do routera na adresie przypisanym do interfejsu LAN tego routera.
Ofiara z komputera w sieci LAN wchodzi na spreparowaną stronę ktora zawiera skrypt. Skrypt wymusza odpytanie DNSa o inna domene. Dostaje dwa adresy IP: jeden normalny (A) a drugi to adres LAN routera (B). Wysyla SYN na adres (A) i dostaje pakiet RST w odpowiedzi. W obliczu takiej odpowiedzi przegladarka wysyla SYN na adres (B) mimo ze znajduje się w sieci lokalnej. W taki sposob mozemy sie dostac do wewnetrznego adresu routera mimo iż nie mamy kontroli ani nad routerem ani komputerem.
polecenie numer 7 to nie shell i wcale nie umozliwia wykonania dowolnego polecenia.
jesli spojrzymy na kod exploita to jest tam wspomniane ze kazda inna komenda poza podanymi w komentarzu daje buffer overflow:
https://github.com/elvanderb/TCP-32764/blob/master/backdoorolol.py
ok nikt nie napisał że umożliwia wykonanie dowolnego polecenia więc cofam :)
Zawsze znajdzie sie ktos kto popsuje zabawe pytajac „po co” i „ale prosciej by bylo…” :P
A co z odpowiedzialnością producenta za produkt. W końcu zapłaciłem za produkt, w którym po okresie gwarancji ujawniła się wada ukryta na dodatek celowo!! Czy jest szansa na odzyskanie pieniędzy?
Skompilowałem ze źródeł GPL soft dla WAG200G – AnnexA , z którego usunąłem backdoora. Do pobrania http://netload.in/dateipHrdnyQGY4/WAG200Gv1-EU-AnnexA-ETSI-ML-1.01.09-code-no_backdoor_not_tested.img.htm
Suma md5 obrazu softu e05a150d007ab35a391d0af91939f491
Procedura upgradu. Wykonaj backup configu. Resetuj do ustawień fabrycznych. Połącz się poprzez skrętkę (nie używaj wifi) na stałym IP (bez dhcp). Zaloguj się na domyślnych danych do panelu administracyjnego. Teraz firmware upgrade i wskazujesz pobrany plik. Nie wolno przerywać procedury. Po zakończeniu flashowania zrób reboot urządzenia. Firmware nie był testowany, aczkolwiek powinien działać. Update wykonujesz na własne ryzyko, nie pobieram za soft żadnych profitów, ani nie odpowiadam za ew. szkody. Przed wykonaniem upgradu, wykonaj kopię obecnego systemu plików na urządzeniu za pomocą poc.py Eloi Evanderb i upewnij się że masz sprawny JTAG (na wszelki wypadek by przywrócić ruter do życia po nieudanym flashowaniu). Rób upgrade tylko jeśli wiesz co robisz i po co. Pozdrawiam kropek