Az idei BlackHat egyik lenagyobb médiavisszhangot kiváltó előadása az iOS eszközök töltőn keresztüli 0wnolása volt - az előadás után kikerültek a slide-ok, illetve a kapcsolódó cikk is, lássuk tehát, hogyan működik ez a támadás!
A módszer szépségét az adja, hogy a sérülékenységet felfedező Georgia Tech-es kutatók nem valamiféle alacsony-szintű feketemágiát használtak, hanem az iOS (néha túlzottan széles lehetőségeket adó) kényelmi funkcióit, valamint az Apple fejlesztők számára kialakított folyamatainak hiányosságait kötötték láncba és hozták létre a Mactans nevű, töltőnek látszó eszközt (valójában egy kis beágyazott számítógép, de az iOS interfésze számára ez mindegy), amely képes a legtöbb csatlakoztatott készüléket uralma alá hajtani. A kihasznált problémák/lehjetőségek listája a következő (itt a kliens az iOS-t futtató kütyü, a csatlakozó eszköz pedig a hoszt):
- Az iOS készülékek számára minden fizikailag csatlakoztatott hoszt alapértelmezetten megbízható
- A felhasználó nem kap tájékoztatást arról, ha a csatlakoztatott hoszt lekérdezéseket vagy módosításokat hajt végre a kliensen
- A telepített alkalmazások elrejthetők a felhasználó elől ugyanazzal a módszerrel, ahogy az Apple is elrejti a saját demó/teszt alkalmazásait a legyártott készülékeken
- A csatlakoztatott hoszt a felhasználó tudta és beleegyezése nélkül indíthat el alkalmazásokat a kliensen
- Az Apple Provisioning Portalon automatizáltan regisztrálhatók új készülékek
Mindezek ismeretében a támadás a következő módon zajlik:
- A felhasználó feltolja a kütyüjét egy Mactans töltőre
- Az 1. pont miatt a Mactans képes lekérni a kütyü egyedi azonosítóját, a UDID-t
- A Mactans a beépített WiFi/3G modemsegítségéval kapcsolódik az Apple Provisioning Portal-jához, és az UDID-t felhasználva regisztrálja a készüléket (az 5. pont miatt ezt egy szoftver is megteheti). Ekkor a Mactans szert tesz egy Apple által aláírt tanúsítványra, ami lehetővé teszi számára, hogy módosítsa a kliens állapotát - pl. új alkalmazásokat telepítsen és elindítsa azokat
- A Mactans telepíti a kapott provisioning profile-t a készülékre
- A Mactans tetszőleges alkalmazást telepíthet a kliensre, melyet el is indíthat.
Ennél a pontnál felhasználó nem vett észre semmit, a támadó lehetőségei pedig szerteágazóak (2., 3., 4. pontok):
Egyrészt a 3. pont miatt a Mactans pl. indíthat egy rejtett alkalmazást a háttérben, amely bizonyos időközönként képernyőképet készít, és így megvalósít egy érintőképernyős billentyűzetfigyelőt. Az alkalmazás elrejtéséhez mindössze egy "hidden" tartalmú node-ot kell elhelyezni az alkalmazás Info.plist fájljában, az ilyen alkalmazások sem a kliens menüjében, sem a folyamatkezelőben nem jelennek meg.
Mindezt továbbgondolva láthatjuk, hogy a Mactans egyszerűen kikerüli az Apple szoftver-ellenőrzési folyamatát, így egyszerűen telepíthetünk olyan alkalmazásokat, melyek az AppStore-ba soha nem kerülhettek volna be, mindezt jalibreak nélkül. A legitim felhasználási módok mellett egy támadó könnyen telepíthet hátsú kaput biztosító alkalmazásokat, vagy jailbreakelheti a készüléket.
A támadás kihasználhatóságát csökkenti, ha a kliens passcode-dal védett, ilyen esetben a felhasználónak fel kell oldania a zárat, miközben a készüléke a Mactans-hoz kapcsolódik. Az Apple ezen kívül legfeljebb 100 készülékre ad provisioning jogot egy fejlesztőnek, így nagy mennyiségű kliens megfertőzéséhez több fejlesztői hozzáférésre vna szükség. Végleges megoldásként a bétában elérhető iOS 7 már beleegyezést kér a felhasználótól, ha egy addig ismeretlen hosz próbál csatlakozni az eszközhöz.