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.
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.
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.
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.
Následne je nutné zariadenie prevrátiť a odskrutkovať skrutky zo spodnej strany.
Po odobratí spodného krytu sa nám ukážu vnútornosti zariadenia.
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.
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.
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.
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.
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.
Po úspešnom flashnutí zariadenia sa naňho môžeme pripojiť pomocou SSH.
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.
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é.