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

dodał 8 grudnia 2014 o 17:52 w kategorii Info  z tagami:
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/ [email protected] lib/ mnt/ proc/ sys/ [email protected] usr/ var/ [email protected]

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.