Flashing IoT firmware – odstrihnutie zariadenia od Cloudu
Tento článok je ďalším článkom zo série Reverse Engineering IoT zariadení. Nebudeme v ňom tentokrát detailne analyzovať zariadenie ale ukážeme si spôsob akým môžeme nahrať vlastný firmware a tým sa odstrihnúť od Cloudového riešenie výrobcu.
Naším dnešným hosťom (IoT zariadením) bude robotický vysávač Roborock S5 Max. Tento domáci pomocník dokáže jak zametať, tak i umývať podlahu. Ovládanie je jednoduché, stačí si nainštalovať na mobilný telefón aplikáciu, pripojiť vysávač k domácej WiFi sieti a môžete ho ovládať kdekoľvek zo sveta. Kľudne môže upratovať zakiaľ čo vy ste v práci. Niektoré novšie modely majú dokonca aj kameru, ktorá zlepšuje efektivitu upratovania.
![Picture2 Picture2](/media/images/Picture2.original.jpg)
![Picture3 Picture3](/media/images/Picture3.original.jpg)
Zariadenie nám síce uľahčuje život ale teraz sa skúsme pozrieť na problém z pohľadu IT Security človeka. Zasa raz si púšťame do bytu neznámeho človeka. Dobre, možno to nie je priamo človek, je to zariadenie, ktoré je nonstop pripojené do Cloudu. Z tohto Cloudu získava inštrukcie čo a kedy má spraviť. Tentokrát už nejde ani o statický predmet v jednej izbe ale o pohyblivé zariadenie, ktoré v kombinácii s kamerou (vyššia verzia) už naozaj predstavuje špióna u vás doma. Obrázok nižšie zobrazuje obecný pohľad na komunikáciu rôznych zariadení v rámci jedného ekosystému.
![Picture4 Picture4](/media/images/Picture4_q14kJg2.original.png)
Komunikácia s Cloudom je zobrazená na obrázku nižšie a veľmi pripomína komunikáciu IoT zariadenia z predošlého článku.
![Picture5 Picture5](/media/images/Picture5_XjAJt4r.original.png)
Neuškodí trochu zdravej paranoje a môžeme si klásť otázky, prečo zariadenie nie je možné ovládať lokálne? Prečo zariadenie musí posielať o nás informácie, ktoré naozaj nepotrebuje ku svojej funkcionalite? Ako je zabezpečený samotný Cloud a môže kompromitáciou dôjsť ku kompromitácii nášho zariadenia? Kto všetko má prístup k našim údajom? Mohli by sme sa pýtať ďalej no už toto nás môže dostatočne motivovať na to, oslobodiť sa od tohto riešenia a mať zariadenie pod vlastnou kontrolou.
Našťastie pre nás existuje cesta ako zariadenie odtrhnúť od Cloudu. V dobe písania článku to ale bola cesta skrz fyzické rozobratie zariadenie a flash pamäte na základnej doske. Začneme teda z rozoberaním. Obrázok nižšie zobrazuje odstránenie horného krytu.
![Picture6 Picture6](/media/images/Picture6_tuEHfkj.original.png)
Následne je nutné zariadenie prevrátiť a odskrutkovať skrutky zo spodnej strany.
![Picture7 Picture7](/media/images/Picture7_GKRVY5G.original.png)
Po odobratí spodného krytu sa nám ukážu vnútornosti zariadenia.
![Picture8 Picture8](/media/images/Picture8.original.jpg)
Bohužiaľ, potrebujeme sa dostať k základnej doske z druhej strany a teda sme so skrutkovaním ešte neskončili. Po odskrutkovaní posledných skrutiek a vybratí základnej dosky sa môžeme na ňu pozrieť z druhej strany.
![Picture9 Picture9](/media/images/Picture9.original.jpg)
Toto je práve tá strana, na ktorej máme prístup k UART rozhraniu. Stačí na internete nájsť to správne miesto a prispájkovať kontakty.
![Picture10 Picture10](/media/images/Picture10.original.jpg)
Tak ako v minulom článku budeme potrebovať USB – UART prevodník. Celé zapojenie je zobrazené na nasledujúcom obrázku. Pre prevodník nám stačilo prispájkovať iba Rx a Tx kontakty. Dosku napájame z baterky vysávača a pre Gnd je využitý ďalší USB kábel (na obrázku je to biely kábel napravo). Komunikácia prebieha skrz šedý USB kábel.
![Picture11 Picture11](/media/images/Picture11.original.jpg)
Teraz stačí zvoliť správne parametre pre komunikáciu, držať si palce a ak sme úspešní tak sa nám zobrazí obmedzený príkazový riadok.
![Picture12a Picture12a](/media/images/Picture12a.original.png)
![Picture12b Picture12b](/media/images/Picture12b.original.png)
V tomto kroku nám stačí využiť to, čo nadšenci pred nami už vymysleli – prepísať originálny firmware upraveným, ktorý ma povolenú SSH službu a zablokovanú komunikáciu s Cloudom.
![Picture13 Picture13](/media/images/Picture13_n83lXGt.original.png)
Po úspešnom flashnutí zariadenia sa naňho môžeme pripojiť pomocou SSH.
![Picture14 Picture14](/media/images/Picture14_vEkDUQm.original.png)
Zariadenie teraz môžeme ovládať buď pomocou knižnice miio pre python alebo pomocou web prehliadača a nástroja Valetudo. Oba tieto nástroje sú open-source a každý môže nahliadnuť do ich útrob a fungovania.
![Picture16 Picture16](/media/images/Picture16_W6ACfa8.original.png)
![Picture15 Picture15](/media/images/Picture15_ZWdbWHe.original.png)
Záver
IoT zariadenia sú súčasťou dnešného sveta a mnohých domácností. Nemôžeme ale zabúdať na bezpečnostné riziko spojené s použitím týchto zariadení i v domácnosti. Okrem očividného rizika spojeného so súkromím vo vlastnom dome je na mieste myslieť aj na to komu dávame prístup k našej domácej sieti a zariadeniam v nej. Ako príklad môžeme uviesť, že dnes sa môže i bežný človek stať terčom hackerov, ktorí mu zašifrujú celoživotné fotky na domácom NAS úložisku. A to len preto, že jeho vysávač/chladnička/lampa bola zraniteľná a umožnila hackerom získať prístup do domácej siete. Je preto na mieste mať prehľad, ktoré zariadenie sa kam pripája a ideálne nedôverovať v bezpečnosť tretích strán o ktorých nič nevieme.
Referencie
Tento článok by neexistoval nebyť ľudí, ktorí sa spoločne podieľali na tom aby IoT zariadenia mohli byť slobodné.