Ten post mógł się pojawić już pod koniec kwietnia 2015, kiedy przyjechał instalator i podłączył modem Ubee z oprogramowaniem EVW3226_1.0.16 - model EVW 3226. Nie miałem specjalnie czasu ani motywacji (w końcu to sprzęt od ISP) na potestowanie zabezpieczeń. Oczywiście w dniu instalacji zalogowałem się do modemu, ustawiłem to, co mi było potrzebne, zmieniłem hasło do modemu żeby je potem zapomnieć. Zrobiłem backup konfiguracji + ruch na interfejsie sieciowym loguję na dysku. Nie lubię przywracania ustawień fabrycznych, nawet jeśli konfiguracja była prosta.
Po tygodniu próbowałem się zalogować do modemu- ACCESS DENIED. Po kilkunastu próbach zalogowania i poszukiwaniu backupu okazało się, że hasła nie pamiętam, pliku nie mam lub nie wiem który jest właściwy- a zapisywanie konfiguracji i każdorazowe restartowanie modemu jest mało ciekawe.
Poinformowałem UPC o tym bugu. Potwierdzili, nie dostałem odpowiedzi. Po kilku miesiącach przypomniałem się, oddzwonił ktoś z firmy z informacją, że problem został rozwiązany. Mój modem nie ma innej wersji oprogramowania niż pierwotna, bug jest nadal. Nie działa, przynajmniej w takiej formie od strony sieci publicznej.
0x01 - Modem sprawdza czy podaję właściwe hasło
Po tygodniu próbowałem się zalogować do modemu- ACCESS DENIED. Po kilkunastu próbach zalogowania i poszukiwaniu backupu okazało się, że hasła nie pamiętam, pliku nie mam lub nie wiem który jest właściwy- a zapisywanie konfiguracji i każdorazowe restartowanie modemu jest mało ciekawe.
Poinformowałem UPC o tym bugu. Potwierdzili, nie dostałem odpowiedzi. Po kilku miesiącach przypomniałem się, oddzwonił ktoś z firmy z informacją, że problem został rozwiązany. Mój modem nie ma innej wersji oprogramowania niż pierwotna, bug jest nadal. Nie działa, przynajmniej w takiej formie od strony sieci publicznej.
0x01 - Modem sprawdza czy podaję właściwe hasło
0x02 - Zatem ono gdzieś tam JEST
0x03 - Odzyskujemy dane z hasłem i odczytujemy je jeśli to możliwe, jeśli nie, również odczytujemy.
Odfiltrowałem ruch HTTP do adresu 192.168.0.1 z logów, bo pod takim GUI routera jest dostępne, z dnia, kiedy była instalacja. W logach odnalazłem żądanie, którym pobrałem kopię zapasową na dysk: GET /cgi-bin/setup.cgi?gonext=Configuration_file.cfg&Password=EMPTY1369 HTTP/1.1
Nie ma na co czekać, trzeba je wykonać ponownie!
http://192.168.0.1/cgi-bin/setup.cgi?gonext=Configuration_file.cfg&Password=EMPTY1369
No i przyznam szczerze, że się mocno zdziwiłem, to już prawie koniec zabawy o.O
$ ls
-rw-rw-r-- 1 sudokillall sudokillall 5167 sty 13 21:38 Configuration_file.cfg
Plik pobrał się w pierwszej próbie. Przypominam, że nie jestem zalogowany do modemu. Jest opcja szyfrowania pliku konfiguracyjnego, która nie działa. Pobrany plik jest dokładnie taki sam jak nieszyfrowany. Został pobrany ze zdalnej maszyny z lokalizacji /nvram/8.
http://192.168.0.1/cgi-bin/setup.cgi?gonext=Configuration_file.cfg&Password=EMPTY1369
No i przyznam szczerze, że się mocno zdziwiłem, to już prawie koniec zabawy o.O
$ ls
-rw-rw-r-- 1 sudokillall sudokillall 5167 sty 13 21:38 Configuration_file.cfg
Plik pobrał się w pierwszej próbie. Przypominam, że nie jestem zalogowany do modemu. Jest opcja szyfrowania pliku konfiguracyjnego, która nie działa. Pobrany plik jest dokładnie taki sam jak nieszyfrowany. Został pobrany ze zdalnej maszyny z lokalizacji /nvram/8.
Czym jesteś pliku?
$ file Configuration_file.cfg
Configuration_file.cfg: data
$ file Configuration_file.cfg
Configuration_file.cfg: data
niczym.
Być może mamy tu bliżej nieokreślony nagłówek, a dane są po prostu skompresowane. Poszukajmy bajtów, które mogą wskazywać na typowe sposoby kompresji: xz, lzma, gzip.
$ hexdump -C Configuration_file.cfg | egrep 'fd 37 |1f 8b|5d 00'
00000000 00 00 32 26 b1 64 7e d5 00 00 14 23 1f 8b 08 00 |..2&.d~....#....|
Wygląda na to, że na pozycji 0xC znajduje się początek archiwum. Odcinamy pierwsze niepotrzebne bajty:
$ dd if=Configuration_file.cfg of=archiwum bs=1 skip=12
5155+0 przeczytanych recordów
5155+0 zapisanych recordów
skopiowane 5155 bajtów (5,2 kB), 0,0213622 s, 241 kB/s
$ file archiwum
archiwum: gzip compressed data, from Unix, last modified: Wed Jan 13 22:36:42 2016, max compression
Być może mamy tu bliżej nieokreślony nagłówek, a dane są po prostu skompresowane. Poszukajmy bajtów, które mogą wskazywać na typowe sposoby kompresji: xz, lzma, gzip.
$ hexdump -C Configuration_file.cfg | egrep 'fd 37 |1f 8b|5d 00'
00000000 00 00 32 26 b1 64 7e d5 00 00 14 23 1f 8b 08 00 |..2&.d~....#....|
Wygląda na to, że na pozycji 0xC znajduje się początek archiwum. Odcinamy pierwsze niepotrzebne bajty:
$ dd if=Configuration_file.cfg of=archiwum bs=1 skip=12
5155+0 przeczytanych recordów
5155+0 zapisanych recordów
skopiowane 5155 bajtów (5,2 kB), 0,0213622 s, 241 kB/s
$ file archiwum
archiwum: gzip compressed data, from Unix, last modified: Wed Jan 13 22:36:42 2016, max compression
2 wcześniejsze bajty (14 23) to informacja o rozmiarze pliku po skompresowaniu:
$ echo "ibase=16;1423"|bc
5155
Dalej już jest z górki. Po rozpakowaniu, do dyspozycji mamy strukturę plików.
Hasło do modemu znajduje się w pliku "1":
$ cat 1
U>��?�H
sudokillall
Nazwa sieci WIFI i hasło do niej w pliku "a"
$ hexdump -C a
...
00000030 00 00 00 01 00 84 00 20 73 75 64 6f 2e 6b 69 6c |....... sudo.kil|
00000040 6c 2e 61 6c 6c 2e 62 6c 6f 67 00 00 00 00 00 00 |l.all.blog......|
00000050 00 00 00 00 00 00 00 00 00 85 00 04 00 00 00 02 |................|
...
000000f0 67 72 61 62 74 68 69 73 70 61 73 73 00 00 00 00 |grabthispass....|
00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
├── 0
├── 1
├── 2
├── 3
├── 4
├── 5
├── 6
├── 7
├── 8
├── 9
├── a
├── A
├── b
├── C
├── d
├── D
├── dhcpd
│ ├── udhcpd.192.168.0.1.host
│ └── udhcpd.192.168.100.1.host
├── e
├── E
├── f
├── F
├── g
├── G
├── h
├── H
├── i
├── I
├── j
├── J
├── k
├── l
├── lsddb.ini
├── m
├── n
├── o
├── p
├── parental.allow -> /var/tmp/parental.allow
├── parental.cpe_mac_filter -> /var/tmp/parental.cpe_mac_filter
├── parental.deny -> /var/tmp/parental.deny
├── parental.keyword -> /var/tmp/parental.keyword
├── parental.mac_passthru -> /var/tmp/parental.mac_passthru
├── parental.url -> /var/tmp/parental.url
├── pass.txt
├── q
├── r
├── revaliases
├── rnddb.ini
├── server-cache.xml
├── ssmtp.conf
└── y
Bonus, wywołanie poniższego linku, spowoduje możliwość uploadu testowego obrazu do pamięci flash:
http://192.168.0.1/cgi-bin/setup.cgi?gonext=RgSystemBurnSignedImage
http://192.168.0.1/cgi-bin/setup.cgi?gonext=RgSystemBurnSignedImage
Witaj,
ReplyDeletekawał dobrej roboty. Czy udało ci się może rozszyfrować format pliku Configuration_file.cfg w wersji v1 który przyszedł wraz z softem EVW3226_2.07 w lipcu 2016? Drugi bajt zamiast 00 ma 01 co sugeruje wersję v1 w porównaniu do poprzedniej v0:
P.S. bajty 3 i 4 składają się w 3226 co jest nazwą modelu Ubee 3226.
Reszta bajtów niestety nie składa się w żaden magic header znanego pakera nawet jak się zapisuje bez hasła:
00000000 00 01 32 26 f7 eb 5e 2e ec 4d 2b fa 2d ad 3a 26 |..2&..^..M+.-.:&|
00000010 b3 44 91 71 30 25 df 7b 49 be ee f2 47 b1 df d7 |.D.q0%.{I...G...|
00000020 82 38 f2 3e 70 4e e1 00 76 fe ed f1 0f 08 cc 4a |.8.>pN..v......J|
00000030 1a 49 33 7b eb 85 6e bc 36 b8 d8 c6 78 4d 0c 75 |.I3{..n.6...xM.u|
00000040 dd ad 46 ba b3 ab 7a 46 9a 48 9a 5d 2f cd 1f 49 |..F...zF.H.]/..I|
00000050 f0 fb 4d 1e 6d 03 84 24 25 6d dd 84 40 da 92 17 |..M.m..$%m..@...|
00000060 24 c4 49 20 6d fa 48 02 79 b4 69 d3 37 7d 3f 92 |$.I m.H.y.i.7}?.|
00000070 be d2 7e ed d7 d0 7b 35 77 34 da 9d d9 59 c9 dd |..~...{5w4...Y..|
00000080 d5 6a ec f3 c3 ac ae ae 7e ba 3a 3a 57 e7 de 7b |.j......~.::W..{|
00000090 ce d5 5c 09 dc d2 43 20 28 2a 8a bf 25 98 bb 15 |..\...C (*..%...|
Cześć. Dzięki! Niestety, sprawdziłem wersję softu jaki mam na modemie: Wersja oprogramowania EVW3226_1.0.16. Jeśli podeślesz mi na mejla/wrzucisz gdzieś plik, powalczę z nim. sudo.kill.all.blog@gmail.com
DeleteDzięki za chęci. Wersja 2.07 wgrała się 29 lipca o 8:00 rano kiedy włączyłem modem. Samo się zaciągnęło z UPC. Dziś jak zapisywałem konfigurację ściągnęła się w formacie który opisałeś i daje się rozpakować. Sprawdziłem wersję i okazało się, że wróciła do 1.0.16 która widać w logach, że zaciągnęła się o 2016-08-05 18:09:40. Jak się googluje po ciągu EVW3226_2.07 to widać, że trochę ludzi ją dostało w Polsce. Z nowych rzeczy zauważyłem nową pozycję w menu wifi to skaner wifi listujący wszystkie okoliczne sieci wifi. Może jeszcze kiedyś wróci.
DeleteHi, did you find something with this new configuration file from 2.07 version? I have this firmware version too in Slovakia for some months and cannot find anything.
DeleteThe old one was pretty easy to find as showed in this article - 00 00 32 26 (next 4b - CRC32 of archive) (4b - size of archive) (archive).
Hi. In a few days I'll make a article about getting a full root on this cable modem via serial port (soldering needed). I changed a ISP since 2017' and don't have this modem anymore.
DeleteThat's great! I tried serial port on old version of this modem but one port was disabled and the other one wanted login with password.
DeleteI did not tried this on my modem connected to cable yet, I wanted to try non-soldering first. I will be waiting then, soldering is no problem (I bought the modem from ISP so it is mine :) ).
Can you send me file from 2.07? I'll check if there is something to do with it.
DeleteI will send it at evening when I get home. To sudo.kill.all.blog@gmail.com?
DeleteYes. Thanks.
DeleteHi, did you get the configs?
DeleteHi, yeap, but your message falled into spam.
Delete