Hakowanie dysku sieciowego WD My Book od zera do roota

dodał 13 lutego 2015 o 09:52 w kategorii HowTo  z tagami:
Hakowanie dysku sieciowego WD My Book od zera do roota

Zapomnieliście hasła administratora do swojego dysku sieciowego? Większość z Was pewnie po sprawdzeniu że nie ma żadnego znanego exploita przywróci urządzenie do ustawień fabrycznych. Ale nie Filippo Valsorda – on się tak łatwo nie poddaje.

Filippo wyciągnął z szafy swój dysk WD My Book World Edition II. Dysk wylądował w szafie po tym, jak w trakcie eksperymentów Filippo tak zmodyfikował ustawienia SSH, że nie mógł się już do niego dostać. Przy okazji zdążył także zapomnieć większość haseł. Nie poddał się jednak i odkrył kilka ciekawych błędów, które pozwoliły mu odzyskać kontrolę nad urządzeniem.

Magiczna kopia konfiguracji

Filippo zaczął od zalogowania się na konto zwykłego użytkownika – to hasło na szczęście pamiętał (dopiero później okaże się, że też nie było potrzebne). Pamiętając różne ciekawe błędy z innych urządzeń zaczął od znalezienia opcji wykonania kopii zapasowej konfiguracji urządzenia. Funkcja ta jest dostępna dla zwykłego użytkownika.

Kopia konfiguracji

Kopia konfiguracji

Kiedy jednak spojrzał do wygenerowanego pliku zobaczył, że jest on zaszyfrowany. Wyglądał tak:

p8G6HOU900Q0bo9l1OMZg1yEmvtxKVDjp3lcc3x{SWH8ywI0GQb9twFYaVI1U1BS RUZzqz8SJQu3M3O43uyMGBBnSUoCi5RcCPA2OFHyUCkOA4sYNkEopIs5isXOfhJ9 Qd9EIngaAhzEUwndW7cbC{cRmypBbmjVX9}Ff2aUA97LuDVCLwjXcbCtos1Omuaa Oo7{Fg3B5KU0QXKY}GVWsvkTjKFXOw91z4c3oTl2DnyrnrVH5fZZd61c3TjxV0fE JVJXA9s9C18b27srA34zNWavnNO6x2o}IkI8kxKR3Y5m{A8b2HXmZ7vcB{T{}HTI OeLNh7}rbmeA5e1Ioy96KUvNDBZ1cGIf1bwsc7iRhsuGIBnmFq6}fjIF5VhZaVFN tDY04ZDWkm6G}lnTR1vINYzKSCN6M{Ed6OrSNVdrmvHUir3woZGiLBSZyg{Jw8}w
[...]
E6}SLkqkpTiXl1IDfaBVPqs90WGcjFCGr2B2jnD}27TMCnE6Lsxfx7jM78SdAXqo gewPcglYIoLirg9YIqUgLffpaiCp3RqiYpwaMqEqeW1BeCH4wsnLWYSnQkb0Ydij UeHma4MrZ2bnoXELOop0yIjaQ8Qm5vMob{mXV92}aE8pB6{j8T2}ElkGA{2T{NAb Vyzyf3tZk2YFM4YONcTm9c78MxFiD6{FG{0ell2pd13{nuaCoqScw7Lt0V2BwOn3 kmadO9zF2AxnOxLLHfrCex6VjG0ZircjOI5gz2b1nwGkbQ32T8EOc{dIGLOB4sfO 6s2Eof7ftYbnc8{vo{QNUPIsCrUJpfsQ0lBLoTPLFH1siUF3lP9ug{ia7l81QcqZ JNJZid6jhWmM4B0Ddf}0M4UEj9B7Tw5b77B{BXaHkZ6TLf6PT7WiwWygYL6Kuwh2 {aB4CRg95wq15H17l9GAAPugUekgev6}KBp7y4cuOTlViBLbbN1aCBAuE1OBDjPq

Próby analizy trochę trwały, lecz nie doprowadziły do sukcesu. Base64 nie zadziałało a co więcej przy ponownym pobraniu pliku Filippo otrzymał inną treść – system generował za każdym pobraniem inny wynik.

Niestety po odcięciu dostępu SSH nie mógł zajrzeć do kodu skryptu by sprawdzić procedurę szyfrowania. Był już bliski rozebrania na składniki pierwsze obrazu z aktualizacją oprogramowania, kiedy jego znajomy znalazł w sieci pełen kod źródłowy urządzenia. Czemu WD go opublikowało? Nie wiadomo, ale bardzo pomogło to w dalszej analizie.

Okazało się, że plik konfiguracyjny to plik TAR zaszyfrowany dedykowanym programem i stałym kluczem. W zestawie był również program deszyfrujący, zatem wkrótce plik konfiguracyjny był już czytelny:

 <nasuser>
 <username>admin</username>
 <fullname>Administrator</fullname>
 <htpasswd>nRUqi08/4DJH2</htpasswd>
 <htusers>21ba0c86fe368810c3a38186a4d05ecc</htusers>
 <passwd>$1$$XbO633pBxu9C.GYKQxYNE1</passwd>
 <smblan>927097A9657166E7C482C03F54CDB5D9</smblan>
 <smbnt>B485FD87A7635F38603D9F8933C216C3</smbnt>
 <smbac>[U ]</smbac>
 <smblt>LCT-517A5581</smblt>
 <adminright>yes</adminright>
 </nasuser>

Niestety hasło było przechowywane w formacie funkcji skrótu. Po co jednak łamać skrót, skoro można po prostu wgrać plik konfiguracyjny (odtworzenie kopii bezpieczeństwa) ze zmodyfikowanym hasłem?

Jak dobrać się do konfiguracji SSH

Kiedy już udało się zmodyfikować hasło administratora i zalogować z odpowiednimi uprawnieniami przyszedł czas na kolejny krok, czyli odzyskanie dostępu SSH. Niestety w pliku konfiguracyjnym usługi /etc/sshd_config znajdował się błędny wpis AllowUsers który uniemożliwiał logowanie.

Dostęp do pliku konfiguracyjnego ma oczywiście tylko root, jednak pojawił się cień nadziei, ponieważ interfejs WWW również działa z uprawnieniami roota. Filippo postanowił zatem sprawdzić, czy uda mu się nadpisać konfigurację SSH wgrywając plik z odpowiednią ścieżką jako część procesu przywracania kopii bezpieczeństwa pliku konfiguracyjnego. Pierwsza próba z umieszczeniem w archiwum nowego pliku /etc/sshd_config się nie powiodła. Pliki były rozpakowywane w /tmp, lecz nie zadziałała również sztuczka z ../etc/sshd_config. Lecz kiedy Filippo stworzył odpowiedniego symlinka…

NAS ln -s / root
NAS gtar -c -f root.tar root
NAS gtar -tvf root.tar
lrwxr-xr-x filippo/staff 0 2015-02-12 04:05 root -> / 
NAS ../encodex -k="Nj1e2w0a0b" root.tar root.xml

nadpisanie konfiguracji SSH okazało się możliwe.

No to teraz bez hasła użytkownika

Filippo pamiętał swoje hasło użytkownika. Co jednak gdyby go nie znał? Postanowił sprawdzić jak wygląda proces pobierania kopii pliku konfiguracyjnego i odkrył, że choć dla nieuwierzytelnionego użytkownika serwer odpowiada kodem 302 Redirect, to zaraz potem serwuje plik z konfiguracją.

Oznacza to, że jeśli wystawiliście WD My Book World Series II do internetu, to lada moment ktoś inny może zostać administratorem urządzenia.