Nové trendy v GSM odpočúvaní - Nethemba

BLOG

Nové trendy v GSM odpočúvaní

2011-01-03 20:28 Pavol Lupták

Ešte minulý rok svetová GSM asociácia verejne prehlásila, že GSM odpočúvanie je stalé príliš drahé a komplexné, nakoľko útočník musí disponovať špeciálnym odpočúvacím zariadením (typu USRP2) a použivať komplexný “signal processing” softvér na identifikáciu a zaznamenávanie odchytávaných hovorov.

Na tohtoročnom 27c3 (Chaos Communication Congress) v Berlíne sme mali možnosť vidieť šokujúcu prezentáciu (výskumníkov Karstena Nohla a Sylvaina Munauta), ktorá demonštrovala, že to už vôbec nie je pravda a GSM komunikáciu je možné kompletne odpočúvať a prelomiť len s použitím veľmi lacných bežne dostupných telefónov so špeciálne upraveným firmwarom (OsmocomBB).

Cena reálneho útoku na GSM sa teda drasticky znižila na desiatky €!

Architektúra GSM, známe zraniteľnosti a problémy GSM

GSM hacked
Váš telefón je pripojený / asociovaný na BTS (Base Transceiver Station) stanicu, stovky BTS stanic sú prepojené na BSC (Base Station Controller), ktoré medzi sebou komunikujú pomocou protokolu A-BIS. Tento celý systém (Base Station Subsystem) je prepojený s NSS (Network Sub System), ktorý pozostáva z centrálneho switchu (MSC), databázy účastníkov siete (HLR), databázy autentifikačných kľúčov (AUC), registra účastníkov použivajúcich roaming (VLR) a registra ukradnutých telefónov (EIR).
Medzi telefónom a GSM sieťou neexistuje obojstranná autentifikácia, čo samozrejme môže viesť k riziku podvrhnutých GSM sietí, MITM útokov atď.

Algoritmy A5/1, A5/2 sú už niekoľko rokov tiež prelomené. Čo je horšie, šifrovanie je samozrejme voliteľné a vlastník telefónu samozrejme nikdy nie je informovaný o tom, či je dané GSM šifrovanie zapnuté alebo nie.

Baseband procesor nad ktorým beži GSM stack je obvykle ARM7 (2G/2.5G telefóny) alebo ARM9 (3G/3.5G telefóny), ktorý nedisponuje žiadnymi modernými bezpečnostnými ochranami (ako napríklad ochrana voči pretečeniu buffra, veľa presunov v pamäti je stále realizovaných cez memcpy(), chýbajú non-executable stránky, či randomizácia adries, adresovový priestor medzi baseband procesorom a aplikáciami nie je oddelený atď). Existujú preto reálne koncepty ako na diaľku získať kontrolu nad baseband čipsetom napríklad pomocou pretečenia bufra (známa zraniteľnosť sa objavila prednedávnom napríklad v QCOM codebase).

Útočník, ktorý si je vedomý týchto chýb telefónov, dokáže sfunkčniť podvrhnutú BTS (napríklad použitím USRP2) a jednoducho získať kontrolu nad asociovanými telefónmi (vrátane nasadenie zadných vrátok), nijako prehnané nebude ani uvažovať na mobilnými vírmy, či trojanmi, ktoré sa budú šíriť podvrhnutými BTS.

GSM používa symetrické A5/1 klúče, kedy náhodný “nonce” a kľúč pre daný GSM hovor je zasielaný zo strany “Operator Home Location Register”. Odpočúvaním komunikácie medzi BTS stanicou a mobilným telefónom je možné získať uvedený kľúč pre daný GSM hovor, nakoľko je zraniteľný na tzv. “memory trade-off” útoky. Kvôli tomu, že sa používa v rámcoch rovnaké zarovnenie (padding), kedy posledných 12 bitov sú vždy nuly, útočník dokáže determinovať bity už v šifrovaných rámcoch a pomocou A5/1 rainbow tabuľky získať uvedený kľúč “session key” behom pár sekúnd.

Aj napriek tomu, že od roku 2008 podľa TS44.006 je potrebné “randomizovať” uvedený “padding” (čo samozrejme väčšina mobilných operátorov ignoruje), stále je možné v samotných rámcoch odhaliť veľa známeho alebo determinovateľného plaintextu (napríklad pri terminovaní hovoru), čo stále implikuje bezpečnostné riziko.

Zaujímavé na tom je, že veľa GSM operátorov umožňuje znovupoužiť “session” kľúče pre daný hovor na ďalšiu komunikáciu (takže kľúč získaný napríklad zo zaslanej SMS správy je znovupoužitý na GSM hovor!).
Použitim RRLP protokolu (Radio Resource Location Protocol) sieť dokáže jednoducho zistiť GPS koordináty alebo surové GSM dáta z telefónu.

Ďalšie úskalie predstavuje SS7 protokol, ktorým komunikujú samotní telco operátori – operátori sa totiž navzájom neautentifikujú (čo má za následok v súčasnej dobe masívne zvýšenie SMS spamu) a častokrát umožňujú prezradzovať citlivé data o svojich účastníkoch.

OsmocomBB (Open Source MObile COMmunication Base Band)

Dôvod na napísanie OsmocomBB GSM stack implementácie bol jednoduchý – GSM siete sú prudko uzavreté (existujú dohromady 4 GSM stack uzavreté implementácie, ktoré výrobcovia GSM čipov nikdy nezverejnili a k ich zdrojovým kódom nemajú dokonca prístup ani výrobcovia niektorých telefónov). Z biznis hľadiska má táto uzavretosť samozrejme zmysel – GSM sieťovy hardware vyrába na svete len pár firiem, jeho ceny pre mobilných operátorov sú potom automaticky úplne premrštené (10-40k € za BTS). Taktiež množstvo ľudí, ktorí hĺbkovo vidia do GSM protokolu / GSM stacku je na svete veľmi málo a samotní mobilní operátori väčšinou týmito ľudmi obvykle nedisponujú. Trpí tým samozrejme nezávislý bezpečnostný výskum v oblasti GSM a ak nejaký je, tak sa týka len aplikačnej vrstvy alebo teoretickej kryptoanalýzy A5/1 a A5/2. Preveriť zabezpečenie GSM stack implementácii je teda temer nemožné.

osmocomBBVšetky tieto dôvody viedli k napísaniu prvej opensource implementácie OsmocomBB. Možno by bolo dobré poznamenať, že v minulosti bolo viacero pokusov o tvorbu opensource GSM stack implementácie (THC GSM, mados) – žiadny z týchto projektov bohužiaľ nebol úspešný.
Vzhľadom k tomu, že vytvorenie vlastného GSM baseband chipsetu (na customizovanom hardvéri) je časovo náročná operácia, autori OsmocomBB sa na to rozhodli využiť jednoduchý, lacný, existujúci, hotový a hlavne fungujúci hardvér súčasných mobilných telefónov. Toto rozhodnutie znamenalo, že bolo potrebné spraviť reverzné inžinierstvo a na základe toho napísať hardvérové ovládače. Aby toho reverzného inžinierstva bolo čo najmenej, boli vybrané telefóny, o ktorých GSM baseband čipsetov bolo “leaknutých” čo najviac informácií a to špeciálne “Texas Instrument Calypso” a “Mediatek MT622x”, ku ktorým existuje (na čínských stránkach) zverejnené SDK a príslušné GSM stack knižnice. Tieto baseband čipsety bežia napríklad v telefónoch Motorola C11x, C12x, C13x, C14x, C15X, prípadne Openmoko Neo1973 / Freerunner. Vývojari OsmocomBB sa rozhodli zamerať na vývoj a testovanie hlavne pre telefóny Motorola C123 a C155. OsmocomBB bol napísaný prakticky od nuly behom 9-tich mesiacov a ide o prvú funkčnú opensource GSM baseband implementáciu, ktorá v sebe zahrňuje ovládače na všetok potrebný GSM hardvér (DBB, ABB, RF transceiver, LCD/LCM) ako aj implementáciu fyzickej, linkovej a sieťovej vrstvy (L1-L3). O tom, že je OsmocomBB skutočne funkčný svedčí fakt, že je už možné vykonaváť GSM hovory (viac ako 30+ minút), šifrovať pomocou A5/1, A5/2 a používať Full Rate(FR) a Enhanced Full Rate(EFR) codec. Niektoré veci (ako presmerovanie na inú BTS počas samotného hovoru) ale ešte stále nefungujú.Vzhľadom k tomu, že ide o kompletnú “from-scratch” opensource implementáciu, je možné mať plnú kontrolu nad zasielaným dátami, čo v praxi znamená možnosť zasielať ľubovoľné (s ľubovoľnou hlavičkou) RR správy BSC, MM/CC správy MSC, SMS správy do MSC/SMSC atď – teda realizovať “krásne” GSM “fuzzy” testovanie. Prístup na telefón je cez VTY (telnet) s veľmi podobným a príjemným rozhraním akým disponuje Cisco, prípadne je možné telefón napojiť na linuxový call PBX router.

Vďaka OsmocomBB je možné použiť viacero zaujimavých aplikácií ako “cell_log” – scanovanie a logovanie informácie “beacon” rámcov bunky (ako napríklad GPS pozícia), “gsmmap” na zistenie presnej polohy pomocou triangulácie, “bcch_scan” – získavanie sily signálu enumeráciou cez celé frekvenčné spektrum, “cbch_sniff” – dumpovanie broadcast správ (použitie napríklad pre wireshark).

GSM útok cez upravený OsmocomBB

Samotné šifrovanie hovoru sa inicializuje v riadiacom kanáli (“control channel”), pričom samotný hlas je prenášaný v dátovom kanáli (“traffic channel”), kde funguje “frequency hopping” (GSM hovory sú prenášané šifrovane cez rôzne nepredikovateľné frekvencie). Lacné Motorola telefóny s OsmocomBB firmwareom a vypnutým šifrovaním (patch DSP kódu) je možné použiť na odpočúvanie “frequency hopping” hovoru. Na samotný cielený útok stačia dva telefóny (ak nie je známy TMSI, tak je nutné viacero telefónov) – jeden telefón na zachytávanie riadiacich správ pre cieľové TMSI a druhý na to, aby “skákal” na tých istých frekvenciach ako cieľový odpočúvaný telefon a zachytával samotný odpočúvaný hovor. Zo zachytenej SI správy (pri vytvorení hovoru) je pomocou Kraken crackera a príslušných rainbow tabuliek získať šifrovací kľúč pre daný hovor (“session key”) a následne zachytený hovor dešifrovať. Tu je dobré poznamenať, že samotný “lookup” do rainbow tabuliek trvá na bežnom hardvéri menej ako 20 sekúnd, takže dešifrovanie je skutočne veľmi rýchle.

A ako získať identifikáciu adresáta (TMSI)?

V SS7 je možné (zo strany Telco operátora) zaslať tzv.”HLR žiadosť” s otázkou, kde presne vo svete sa nachádza daný účastník X. Odpoveď na túto žiadosť je mesto + IMSI, teda približná poloha daného účastníka. Vzhľadom k tomu, že OsmocomBB má plnú kontrolu nad zasielanou štrukturou SMS správ, je možné použiť tzv. “silent” (alebo narušené) SMS správy, ktorého cieľovému adresátovi síce neprídu (lebo majú poškodenú predpísanú štruktúru, takže telefón ich zahodí), umožnia ale získať jeho presnú polohu bunky. Odpočúvanie GSM siete počas posielania SMS a príjimania odpovede cieľovému telefónu stačí na presné determinovanie TMSI cieľového telefónu. Následne je možné hovory pre tento telefónov odpočúvať a prelomiť.

Nutno poznamenať, že OsmocomBB nebol dizajnový ako sniffer ale ako implementácia basebandu. Podľa Sylvain Munauta nástroje na samotné prevedenie útoku nie sú a ani nebudú dostupné (alebo predané ako sa niekoľko ľudí pýtalo). Vlastná implementácia sniffera vyžaduje hĺbkové pochopenie GSM, čo sú tisíce strán GSM špecifikácií a tisíce riadkov kódu.
Odkazy


Prelomený GSM a legálne problémy s tým spojené

Anatomy of contemporary GSM cellphone hardware

Running your own GSM stack on a phone

The Baseband Apocalypse

Wideband GSM Sniffing

SMS-o-Death