08.12.2014 | 17:52

Adam Haertle

I Ty możesz zhakować swój ruter – przykład od Czytelnika

Tak jak początkującym wspinaczom rekomenduje się łatwe szczyty, tak początkującym hakerom lepiej wskazywać proste cele. Do takich należą domowe rutery, nad których bezpieczeństwem płakaliśmy nie raz. Jak się do sprawy zabrać pokazuje nasz Czytelnik.

Od jednego z naszych Czytelników, ukrywającego się pod pseudonimem mbr, otrzymaliśmy poniższy tekst pokazujący, co każdy początkujący badacz może zrobić ze swoim domowym sprzętem. polecamy i czekamy na więcej.

Analiza Sapido RB-1800

Sapido RB-1800 to proste, tanie domowe urządzenie z możliwością pracy jako router, access point i klient WiFi. Uwagę zwraca elegancki, nowoczesny design, niewielkie wymiary, wbudowany webshell na prawach roota i kilka nieudokumentowanych funkcji.

Przyjrzyjmy się bliżej.

# nmap 192.168.1.1 -p1-65535
Host is up (0.013s latency).
Not shown: 65532 closed ports
PORT STATE SERVICE
80/tcp open http
52869/tcp open unknown
52881/tcp open unknown
MAC Address: 00:D0:41:xx:xx:xx (Amigo Technology CO.)

Urządzenie oprócz TCP 80 ma otwarte porty TCP 52869 i 52881. Więc czyżby faktycznie Sapido dodało coś „ekstra” od siebie? Zajrzyjmy do firmware’u.

# wget http://www.sapidotech.com/download/firmware/rb1800/en/RB-1800_EN_v1.0.24.bin
# binwalk RB-1800_EN_v1.0.24.bin
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
35945 0x8C69 LZMA compressed data, properties: 0x88, dictionary size: 1048576 bytes, uncompressed size: 65535 bytes
46724 0xB684 LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 2714444 bytes
833166 0xCB68E Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 1162123 bytes, 
 445 inodes, blocksize: 262144 bytes, created: Tue May 6 08:00:48 1902
# dd if=RB-1800_EN_v1.0.24.bin of=sapido.squashfs ibs=1 skip=833166
# unsquashfs sapido.squashfs
# ls squashfs-root/
bin/ dev/ etc/ home/ init@ lib/ mnt/ proc/ sys/ tmp@ usr/ var/ web@

Voila! Na początek zajrzyjmy do /web, czyli tak naprawdę /bin/web_root

mc-dirshot

To ciekawe. Po zażądaniu tego dokumentu przez przeglądarkę dostajemy webshella na prawach roota z możliwością uploadu i downloadu plików. Pół biedy, że wymaga zalogowania się.

obama.asp

obama.asp-busybox--help

Skoro już mamy takie narzędzie, to spróbujmy dowiedzieć się, co jest wewnątrz.

# cat /proc/cpuinfo
system type : RTL8196B
processor : 0
cpu model : 52481
BogoMIPS : 389.12
tlb_entries : 32
mips16 implemented : yes
#cat /proc/meminfo
MemTotal: 10256 kB
MemFree: 712 kB
Buffers: 808 kB
Cached: 1952 kB
SwapCached: 0 kB
Active: 1984 kB
Inactive: 1500 kB
Active(anon): 380 kB
Inactive(anon): 496 kB
Active(file): 1604 kB
Inactive(file): 1004 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 884 kB
Mapped: 884 kB
Slab: 5076 kB
SReclaimable: 236 kB
SUnreclaim: 4840 kB
PageTables: 196 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 5128 kB
Committed_AS: 2564 kB
VmallocTotal: 1048404 kB
VmallocUsed: 520 kB
VmallocChunk: 1047880 kB

W /etc/shadow zdefiniowane jest konto roota z ustawionym hasłem.

mc-etc-shadow

Może więc uda nam się to hasło poznać?

[hashkill] -= Cracked list =-
Username: Hash: Preimage:
-----------------------------------------------------------------------------------
root $1$e8BMZDTmyXquzTIkUFUfCTcOuDzhQ/ swetop
[hashkill] Total: 1 passwords cracked
[hashkill] Attack took 534 seconds.
[hashkill] Bye bye :)

Urządzenie przestaje nasłuchiwać na porcie TCP 52869 po wyłączeniu uPnP, jednak 52881 pozostaje otwarty. Oba jednak wydają się być związane z uPnP. Po wysłaniu na każdy z nich z nich nieprawidłowego żądania uPnP dostajemy odpowiedź od demona uPnP:

port 52869:

HTTP/1.1 500 Internal Server Error
Content-Type: text/xml
Connection: close
Content-Length: 398
Server: miniupnpd/1.0 UPnP/1.0

port 52881:

HTTP/1.1 501 Not Implemented  <u:actionName xmlns:u="">HTTP/1.1 500 Internal Server Error
Connection: close
Content-Type: text/xml
Connection: close
Content-Length: 398
Content-type: text/htmlServer: miniupnpd/1.0 UPnP/1.0

Niedostępne z poziomu panelu WWW funkcje (niektóre nieobsługiwane przez ten router) to:

  • dos.asp: DoS Prevention
  • obama.asp: WebShell z rootem
  • multipleap.asp: Ustawienia MultiAP
  • stats.asp: Wysłane/odebrane pakiety na interfejsach

To oczywiście tylko pobieżna analiza tego, co widać na pierwszy rzut oka i co potrafi zrobić przeciętny linux-user.

Powrót

Komentarze

  • 2014.12.08 17:59 Wolny

    I bardzo dobrze, musze mieć jak odblokowac sąsiadowi sieć, a ta powinna być wszędzie i dla każdego

    Odpowiedz
  • 2014.12.08 18:43 morphium

    A można przykład na TP-LINK TL-WR740N bo nie wiem za bardzo jak się za to zabrać ;/

    Odpowiedz
    • 2014.12.09 10:07 gron

      A której części nie rozumiesz?
      Nie chodzi o to, żeby powtarzać krok po kroku punkty tutoriala dla konkretnego modelu – niczego ciekawego *sam* nie znajdziesz. Musisz zrozumieć co tu się dzieje. Poczytaj, co robią te komendy, rozgryź co się dzieje w poszczególnych krokach, poczytaj o hasłach kluczowych (np. sprawdź na Wikipedii co to jest squashfs). Nie bój się użyć wyszukiwarki ;) Początki bywają trudne, ale nic nie daje takiej satysfakcji, jak samodzielne rozgryzienie jakiegoś tematu :)

      Odpowiedz
      • 2014.12.09 18:58 winko

        „Nie bój się użyć wyszukiwarki ;)”
        Ooo. Przestali gromadzić dane i analizować ruch? System wyłączony czy padł?
        Napisz coś więcej :)

        Odpowiedz
    • 2014.12.11 17:58 Krzysiu

      Jak chcesz, to na tym routerze świetnie działa DD-WRT :)

      Odpowiedz
  • 2014.12.08 18:44 Maciej

    A tak prostemu czlowiekowi wytlumaczcie, do czego ktos z zewnatrz moze to wykorzystac ?

    Odpowiedz
  • 2014.12.08 18:55 d33tah

    Taki mały apel ze strony programistów Nmap – w przypadku, gdy rozgryzamy nieznane usługi, dobrze jest użyć przełącznika linii komend -sV, żeby skorzystać z service fingerprintingu. Jeżeli uzyliśmy najnowszego wydania Nmapa, fingerprint nie został rozpoznany i wiemy, jaka usługa działa na danym porcie, mile widziane będzie wysłanie tego fingerprinta do bazy danych programu, zgodnie z instrukcjami podanymi w standardowym wyjściu programu. Z góry dzięki!

    Odpowiedz
  • 2014.12.08 19:20 Bartek

    Obama.asp? Barack Obama?

    Odpowiedz
    • 2014.12.08 19:31 Kuba

      Taki jankeski root, może zatrzymywać lub uruchamiać usługi albo zmieniać parametry środowiska:
      obama stop healthcare
      obama increase taxes
      itp.

      Odpowiedz
    • 2014.12.09 09:21 JackN

      Niestety nie. Chodzi zapewne o Mariana Obamę, polskiego chemika z końca XIX wieku.

      Odpowiedz
  • 2014.12.08 19:24 Root

    Obama? Przypadek? Nie sONdzę!

    Odpowiedz
  • 2014.12.08 19:43 m

    @mbr
    Rewelka!

    Odpowiedz
  • 2014.12.08 22:35 Grzechooo

    Ale nazwę panelu to dobrą dali xD

    Odpowiedz
  • 2014.12.08 22:55 Kacper

    To i tak nic w porównaniu do pewnego dostawcy internetu (ok 20K end user), który przy konfiguracji swoich routerów ustawił WPS 12345670. Całe miasto to jedno wielkie openWifi :-P

    Odpowiedz
  • 2014.12.09 09:24 V

    Łau, „hack” znany od co najmniej 2010 r. każdemu „dłubaczowi” w routerach. Problem z firmware od firmy Amigo…

    Odpowiedz
    • 2014.12.09 10:10 gron

      Ale to nie jest poradnik dla dłubaczy, tylko dla ludzi, którzy nigdy wcześniej nie mieli z tym do czynienia. Bardzo dobry z resztą moim zdaniem.

      Odpowiedz
  • 2014.12.09 10:08 me

    Gratulacje dla badacza!

    Odpowiedz
  • 2014.12.18 20:27 InfoSecOne

    Ktos moze ma pomysl co zrobic w przypadku kiedy nie da sie pobrac firmeware do 'boxa’ np. do Irlandziego SKY’a ?

    Odpowiedz

Zostaw odpowiedź do Maciej

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

I Ty możesz zhakować swój ruter – przykład od Czytelnika

Komentarze