» »

Varnost slovenskih GSM omrežij

V članku so predstavljeni rezultati varnostne analize slovenskih GSM omrežij, ki smo jo opravili v prvi polovici leta 2012.

Namen članka je opozoriti na varnostne ranljivosti v slovenskih GSM omrežjih z namenom, da se varnostne ranljivosti odpravijo, posledično pa se poveča stopnja varnosti in zasebnosti uporabnikov mobilne telefonije ter z namenom, da slovenski operaterji mobilne telefonije začnejo več vlagati v varnost omrežij in zaščito svojih uporabnikov.

Opozarjamo, da je izvajanje opisanih postopkov brez ustreznega soglasja prizadetih uporabnikov nezakonito.

Pri izvajanju varnostnega pregleda smo uporabili lastno opremo oz. izvajali analizo lastnih komunikacij, prav tako v slovenskih GSM omrežjih nismo povzročali kakršnihkoli motenj. Da bi preprečili morebitne zlorabe, je članek napisan tako, da ponovitev opisanih postopkov ni mogoča na enostaven način, saj je nekaj vmesnih korakov izpuščenih ali zelo poenostavljenih.

Predzgodba

Junija 1903 je imel Guglielmo Marconi za člane britanske Royal Institution predstavitev radijske komunikacije dolgega dometa. Za potrebe demonstracije je Marconijev asistent John Ambrose Fleming eno izmed radijskih naprav postavil v Londonu, z drugo pa je v dobrih 482 km oddaljenem mestu Poldhu upravljal Marconi sam. A tik preden se je demonstracija tedaj nove tehnologije začela, se je iz sprejemnika v Londonu v morsejevi abecedi zaslišalo: "Podgane". Beseda se je ponavljala znova in znova, nato pa je sledila še posmehljiva "pesmica" o Marconiju.

Nova radijska tehnologija je tako že na eni prvih predstavitev doživela svoj "hack". "Heker", ki je Marconiju pokvaril njegovo demonstracijo pa je bil tedaj 39-letni Nevil Maskelyne, ki je kasneje za časopis The Times povedal, da je s tem hotel demonstrirati ranljivost radijske komunikacije. Kot v svojem delu The Codebreakers ugotavlja David Kahn, je razvoj sodobne kriptografije in zlasti kriptoanalize močno povezan z odkritjem radijskih komunikacij. Radijskim signalom je namreč mogoče enostavno prisluškovati, zato je šifriranje radijskih komunikacij v primeru izmenjave zasebnih sporočil zelo pomembno. To velja še zlasti za področje mobilne telefonije.

Začetki mobilne telefonije segajo že v leto 1946, ko so pri AT&T v ZDA izvedli prvi mobilni klic. Kot zanimivost naj omenimo, da je tedanji "mobilni" telefon tehtal dobrih 36 kg, vgrajen pa je bil v avto. Prvi dejansko mobilni telefon so leta 1973 razvili pri Motoroli. Trajalo je celih 10 let, da so tehnologijo začeli tudi tržiti, slab kilogram težka mobilna naprava z imenom Motorola Dynatac, ki je delovala zgolj pol ure (polnila se je 10 ur) pa je stala 3995 USD in si povsem upravičeno prislužila vzdevek "opeka".

Prvo komercialno mobilno omrežje so leta 1979 zagnali na Japonskem, leta 1981 pa so na Danskem, Finskem, Norveškem in švedskem zagnali NMT sistem telefonije (Nordic Mobile Telephone), ki je (tudi pri nas) delovalo na 450 MHz (in se je pogovore, ker niso bili šifrirani, dalo lepo poslušati z UKV radijskimi postajami). Kasneje so NMT standard sicer razširili še na 900 MHz.

Ker pa sistemi prve generacije mobilne telefonije med seboj niso bili združljivi, je bil leta 1987 razvit standard GSM. Gre za globalni sistem mobilne komunikacije, ki je bil v osnovi zasnovan tako, da uporabnikom omogoča gostovanje v različnih omrežjih, pogovori v omrežju pa so (praviloma) šifrirani. Prvo GSM-omrežje je bilo postavljeno na Finskem leta 1991, v Sloveniji pa so prvi GSM aparati zazvonili leta 1996.

GSM telefonija za šifriranje pogovorov med telefonom in bazno postajo ter prenos šifrirnih ključev uporablja različne algoritme. V osnovi sta bila za šifriranje pogovorov razvita A5/1 (ki omogoča močnejše šifriranje) in A5/2 (ki omogoča šibkejše šifriranje podatkov). Mimogrede, prenos pogovorov ali SMS sporočil v GSM omrežju lahko poteka tudi nešifrirano - včasih se zato navaja, da se za prenos uporablja "šifrirni" algoritem A5/0. Kasneje je bil sicer razvit tudi algoritem A5/3, ki je precej močnejši kot A5/1.

šifrirni algoritem A5/1 je bil razvit leta 1987, A5/2 pa leta 1989 in sicer kot oslabljena različica algoritma A5/1. Oba algoritma sta bila razvita na skrivaj (tim. security through obscurity) in ob sodelovanju tajnih služb, šibka zasnova pa je bila po mnenju prof. Rossa Andersona iz University of Cambridge namerna.

Raziskovalca Ian Goldberg in David Wagner sta algoritem za generiranje šifrirnih ključev A8 razbila aprila 1998, avgusta 1999 pa sta dokazala, da je razbitje A5/2 mogoče v realnem času. Prvi uspešni napad na algoritem A5/1 je izvedel Jovan Golić maja 1999, neodvisno od njega pa tudi Marc Briceno, ki je izvedel reverzni inženiring na GSM telefonu. Biryukov in Shamir pa sta dokazala, da ga je z ustrezno opremo mogoče razbiti v skoraj realnem času (več o tem je pisal Bruce Schneier na svojem blogu leta 1999).

Kljub vsemu so bili ti napadi ali bolj teoretični, ali pa je bila dejanska oprema za njihovo izvedbo razmeroma draga in dostopna zgolj državnim organom (tovrstna oprema je znana tudi pod imenom "IMSI cacther", uporabljala pa naj bi jo tudi slovenska policija). Leta 2007 je zato skupina varnostnih raziskovalcev in hekerjev na internetu pričela s projektom The A5 Cracking Project, katerega namen je bil izgradnja odprtokodne GSM prisluškovalne naprave za manj kot 1000 EUR. Namen projekta je bil javno pokazati na ranljivosti v algoritmu A5/1 (in A5/2) in s tem prisiliti industrijo ter operaterje v izboljšanje varnosti.

Na "hekerskem" srečanju Chaos Communication Camp leta 2007 sta vodji projekta David Hulton in Steve Muller predstavila cilje projekta in glavne ugotovitve.

Na kratko. Za zajem podatkov naj bi se uporabljal tim. USRP (Universal Software Radio Peripheral). Gre za napravo, ki služi kot univerzalni radijski sprejemnik (ali tudi oddajnik), ki zna sprejeti kakršenkoli radijski signal, analizo signalov pa izvaja posebna programska oprema na računalniku (odprtokodni GNU Radio). Tako je USRP s pomočjo programske opreme mogoče spremeniti v GPS sprejemnik, AM sprejemnik, FM sprejemnik, sprejemnik digitalnega TV signala, itd., žal pa je naprava razmeroma draga (okrog 1000 EUR).

Drugi del projekta pa bi bil dešifriranje z A5/1 šifriranih prestreženih pogovorov. Pri tem so si raziskovalci nameravali pomagati s tim. mavričnimi tabelami. Gre za tabele s predizračunanimi vrednostmi delov šifrirnih ključev, osnovna ideja pa je, da s pomočjo shranjenih vnaprej izračunanih vrednosti v tabeli za kriptoanalizo podatkov porabimo manj procesorskega časa.

Osnovna ideja izgradnje mavričnih tabel je bila, da bi jih zgradili distribuirano s pomočjo FPGA. FPGA ali Field Programmable Gate Array je posebno vezje, ki ga je mogoče poljubno programirati. Navadno ga uporabljajo pri razvoju procesorjev, FPGA naprave pa so uporabne tudi pri kriptoanalizi. Konkretno - trije nemški raziskovalci (Timo Gendrullis, Martin Novotny in Andy Ruppiz) iz nemškega Inštituta za IT varnost na Ruhr-University Bochum so leta 2008 objavili članek z naslovom A Real-World Attack Breaking A5/1 within Hours, v katerem opisujejo napad na GSM šifrirni algoritem A5/1, ki ga je mogoče izvesti v nekaj urah, napad pa se izvaja s posebno napravo COPACOBANA, ki je sestavljena iz FPGA čipovja.

Mimogrede, leta 1997 je bilo ugotovljeno, da je 10 bitov šifrirnega ključa Kc umetno nastavljenih na 0, zaradi česar je bil napad na A5/1 z grobo silo 1024-krat enostavnejši (to ranljivost naj bi odpravile po letu 2001 izdane SIM kartice), leta 2008 pa so bile v okviru A5 Cracking projekta ugotovljene še dodatne pomanjkljivosti, ki so pravo velikost šifrirnega ključa Kc v resnici zmanjšale še za dodatnih 10 bitov (tudi na novejših SIM karticah).

Kakorkoli že. V predstavitvi projekta na CCC 2007 sta David Hulton in Steve Muller poudarila, da bodo izsledki projekta javno dostopni. Na vprašanje zakaj, je Steve Muller odgovoril takole (čas na posnetku predavanja 51:55):

OK, why is this a public project. There were a couple of other people working on this, and one of persons working of this, you may have been noted this was **** and apparently killed himself a couple of years ago.

And then was a guy from **** in London who proclaimed that he has cracked A5 and never showed up in the meeting again.

And just a half a year ago there was a professor from the University in Sussex, who proclaimed that he has cracked A5 with a new idea, and he was supposed to speak at Infosek security conference in London and GHCQ, which is the UK equivalent for the German BND, basically didn't allowed speaking them.

And I tried to contact him, and I send him an e-mail and got a reply from mailer daemon, this e-mail is not valid anymore. So there are a lot of people who got the problem from cracking A5 and we thought, if we do it from the start, very public and we involve many people as we can, it is much more helpful for us.

Skratka, izkazalo se je, da je bil A5 algoritem namerno zasnovan kot šibek algoritem, raziskovalci, ki so se ukvarjali s kriptoanalizo tega algoritma pa so praviloma naleteli na težave oziroma so nepojasnjeno izginili.

Hulton in Muller sta nato na konferenci Blackhat Washington pripravila še eno predstavitev projekta, kjer sta predstavila že nekoliko bolj izdelano prisluškovalno napravo za 900 USD.

Vendar pa v času predstavitve projekt še ni bil povsem dokončan, saj mavrične tabele, ki sta jih raziskovalca uporabljala za kriptoanalizo GSM pogovorov še niso bile izdelane v celoti. Pri tem je pomemben podatek, da so se mavrične tabele računale distribuirano (torej, vsak član projekta, ki je imel ustrezno opremo, je računal svoj del mavričnih tabel), hranile pa so se centralno, pri vodjema projekta, Hultonu in Mullerju. Vodji projekta sta takrat napovedala, da bodo mavrične tabele zgrajene v prvih mesecih leta 2008, na spletni strani projekta pa je bila napovedana živa predstavitev delovanja prisluškovalne naprave na izbrani varnostni konferenci v marcu 2008. Naprava se je imenovala A5 Buster in naj bi zmogla izvesti kriptoanalizo prestreženih podatkov v cca. 30 sekundah.

A presenetljivo (?) do tega ni prišlo. 5. junija 2008 je bila namreč wiki spletna stran projekta izbrisana, Steve in David pa sta - izginila.

2. junija 2008 sem (Matej) na poštni seznamu GSM Cracking projekta poslal e-sporočilo z vprašanjem kaj je bilo s predstavitvijo marca 2008 in ali so mavrične tabele dokončane. Še isti dan sem od Steva Mullerja dobil sporočilo, naj mu posredujem svojo telefonsko številko, češ, da se bomo pogovorili po telefonu. Posredoval sem mu svoj Skype kontakt in 5. junija (torej na dan, ko je izginila spletna stran projekta) me je kontaktiral. Pogovor je bil precej nenavaden, saj se je začel s precej paranoičnimi vprašanji o tem za koga delam, med odgovori so bili nekajminutni premori, na koncu pa je Steve povedal, da podrobnosti ne bodo javno objavili, ker se bojijo, da bi tehnologija padla v roke kakšni kriminalni organizaciji (kot da tega niso vedeli že prej).

Kasneje se je izkazalo, da so nekaj mesecev pred tem Steva Mullerja ob izstopu iz Britanije povabili na informativni pogovor in mu (začasno) zasegli nekaj opreme, po neuradnih informacijah iz poštnega seznama GSM Cracking projekta pa naj bi to storila britanska tajna služba MI5. Kasneje se je izvedelo, da vodji projekta nista čisto zares izginila, pač pa naj bi v ZDA ustanovila podjetje, ki naj bi se ukvarjalo z izdelavo IMSI catcherjev, seveda samo za vladne organizacije.

Kljub temu pa projekt ni zamrl. Nekaj mesecev za tem so ga namreč oživili pri nemškem Computer Chaos Clubu pod imenom AirProbe, v okviru katerega je potekal poseben podprojekt, ki se je ukvarjal z izgradnjo mavričnih tabel, s pomočjo katerih je mogoče zlomiti A5/1 zaščito.

Ker je strojna oprema FPGA za običajne smrtnike nekoliko težje dosegljiva so pri obnovljenem projektu mavrične tabele začeli graditi s pomočjo GPU (grafičnih kartic) in bili precej bolj uspešni. Vmes je sicer prihajalo do precej banalnih težav (zaradi napake v algoritmu je bilo na neki točki potrebno vse mavrične tabele zavreči), a projekt se je uspešno približal koncu (na CCC konferenci leta 2009 sta Karsten Nohl in Chris Paget predstavila prve izsledke projekta).

V tem času je namreč skupina 24 prostovoljcev zgradila okrog 2TB mavričnih tabel. Razvijalci tokrat niso ponovili napake prejšnjega projekta in so mavrične tabele hranili distribuirano. Danes jih je mogoče dobiti na torrent omrežju.

Kasneje (leta 2010) je skupina zbrana okrog projekta AirProbe izdala program Kraken, ki omogoča kriptoanalizo prestreženih podatkov s pomočjo že omenjenih mavričnih tabel, v okviru projekta OsmocomBB pa je bila razvita tudi posebna strojna programska oprema, ki jo je mogoče naložiti na določene mobilne telefone in jih s tem spremeniti v GSM sprejemnike (s tem odpade potreba po nakupu drage USRP naprave).

Tako danes za prestrezanje z A5/1 šifriranih podatkov v GSM omrežju potrebujemo enega izmed podprtih mobilnih telefonov, ki uporablja Calypso vezje (cena na eBayu ali Bolhi je do 30 EUR), poseben kabel, ki omogoča povezavo računalnika in mobilnega telefona preko USB (kable je mogoče kupiti za nekaj EUR ali pa si jih naredimo sami), 2 TB disk z mavričnimi tabelami (ki jih dobimo na torrent omrežju), računalnik (lahko povsem običajen) in ustrezno programsko opremo (Osmocom paket, Kraken in Wireshark z podporo za analizo GSM protokola).

V Osmocom paketu je najprej iz izvorne kode potrebno prevesti strojno programsko opremo, ki jo nato s programom osmocon naložimo na mobilni telefon. Pri tem je potrebno programsko kodo prevesti za ARM procesorsko arhitekturo. Strojno programsko opremo nato začasno naložimo na mobilni telefon (torej je na njem aktivna dokler telefona ne ugasnemo in odstranimo baterije), tako predelan mobilni telefon pa nato zna poslušati v GSM omrežju. Telefon ne oddaja signalov, niti vanj ni potrebno vstaviti SIM kartice, zato je celotno prestrezanje povsem pasivno. Nekatere mobilne telefone lahko še dodatno modificiramo tako, da fizično zamenjamo določena vezja na njem, kar nam omogoči tudi spremljanje tim. navzgornje (ang. uplink) povezave. Seveda ni odveč poudarjati, da vsa navedena programska oprema deluje na Linuxu, pomembno pa je vedeti, da nekateri ključni deli te programske opreme zaradi potrebe po natančni časovni sinhronizaciji ne delujejo v virtualnem okolju (vsaj zadovoljivo ne) pač pa zgolj na fizičnem računalniku. Tudi na sistemih strojne virtualizacije lahko pri zajemu prihaja do izgube podatkov, zato priporočamo uporabo fizičnega računalnika, oziroma kvečjemu virtualizacije na ravni operacijskega sistema. V javnem Osmocom Git skladišču sicer ni dostopna vsa programska koda za analizo prometa in razbijanje GSM šifrirnih ključev. Za začetek pa si za lažje razumevanje tematike oglejmo nekaj osnov GSM omrežja.

Nekaj osnov o GSM

GSM protokol je sicer zelo obsežen, v tokratnem prispevku pa si bomo ogledali le nekatere ključne oziroma za namen varnostne analize GSM najbolj zanimive dele. Signalizacija in podatki so ločeni po različnih kanalih, opravka pa imamo z več časovno-frekvenčnimi problemi, zato je za razumevanje v tem članku opisanih postopkov potrebno vsaj osnovno poznavanje GSM-a.

GSM protokol opredeljuje različne načine komunikacije - komunikacijo med bazno postajo in mobilnim telefonom (oz. mobilno postajo), pa tudi komunikacijo od same bazne postaje do centra. V pričujočem članku si bomo podrobneje ogledali le komunikacijo med mobilnim telefonom in bazno postajo, kljub temu pa je potrebno vsaj okvirno poznati celotno sliko dogajanja v sistemu.

Slika: shema GSM omrežja, vir: http://www.gsmfordummies.com.

Na sliki lahko vidimo različne dele operaterskega GSM omrežja. Na levi strani je mobilni telefon, sledi bazna postaja (BTS - Base Transceiver Station), ki je oddajnik za GSM pakete, vsa logika se skriva v kontrolnem centru (BSC - Base Station Controller), ta pa je povezan na preklopni center (MSC - Mobile Switching Center), ki skrbi za povezovanje klicev, SMS sporočil in podobno.

Informacije o trenutnih uporabnikih se nahajajo v registru obiskovalcev (VLR - Visitor Location Register), informacije o naročnikih pa v domačem registru (HLR - Home Location Register). Ta dva sistema oz. bazi podatkov skrbita tudi za registracijo uporabnikov.

Za povezovanje s tujimi operaterji skrbi prehodni preklopni center (GMSC - Gateway Mobile Switching Centre oziroma Network switching subsystem), priklopljen na omrežje SS7. To omrežje nam omogoča opravljanje mednarodnih telefonskih storitev oziroma izmenjavo klicev in drugih podatkov, nanj pa so povezani vsi operaterji. SS7 omrežje sporoča tudi lokacijo nekega želenega uporabnika, za potrebe preusmeritev klicev k pravemu operaterju, če je uporabnik v tujini.

Mobilni telefon in SIM kartica

Mobilni telefon je v resnici sestavljen iz dveh delov – fizične naprave (ang. mobile equipment) in SIM kartice. Med tem ko sama fizična naprava skrbi zlasti za radijsko komunikacijo, SIM kartica skrbi za avtentikacijo uporabnika v omrežju. SIM kartica je tim. pametna kartica (vsebuje mikroprocesor), ki vsebuje podatke za avtentikacijo in avtorizacijo uporabnika mobilnega telefona v mobilnem omrežju.

Na SIM kartici je shranjen šifrirni ključ, ki omogoča šifriranje pogovorov med mobilnim telefonom in bazno postajo v GSM omrežju, poleg tega pa je na SIM kartico mogoče shranjevati tudi določene uporabniške podatke. Najpomembnejši med njimi so seznam kontaktov uporabnika (tim. telefonski imenik) in SMS sporočila. Nekateri starejši mobilni telefoni pa so na SIM kartico shranjevali tudi zadnje klicane številke. Naj dodamo, da novejši mobilni telefoni uporabniških podatkov na SIM kartico praviloma ne shranjujejo, pač pa se ti podatki shranjujejo v telefon.

SIM kartica vsebuje naslednje podatke:

  • ICCID številko,
  • IMSI številko,
  • avtentikacijski šifrirni ključ (Ki),
  • Local Area Identity (LAI),
  • številke za klic v sili (specifično za vsakega operaterja),
  • ostale podatke za prenos podatkov med operaterjem in naročnikom, kot npr. SMSC (Short Message Service Center) številko, Service Provider Name (SPN), Service Dialing Numbers (SDN), itd.

Poleg tega SIM kartica vsebuje še:

  • PIN in PUK kodo,
  • avtenikacijski algoritem,
  • algoritem generiranja šifrirnih ključev A8,
  • šifrirni ključ Kc, ki izvira iz Ki ključa,
  • logične kontrole za kontrolo dostopa do podatkov na kartici,
  • prostor za uporabniške podatke.
ICCID oz. serijska številka SIM kartice

ICC-ID (Integrated Circuit Card ID) številka je identifikacijska številka SIM kartice. Shranjena je v sami SIM kartici, je pa tudi natisnjena oz. vgravirana na njeni površini. ICCID se generira v procesu tim. »personalizacije« SIM kartice. Številka je dolga 19 (za Phase 2 SIM kartice) ali 20 (za Phase 1 SIM kartice) znakov, sestavljena pa je iz naslednjih elementov, ki temeljijo na ISO/IEC standardu 7812:

  • identifikacijska številka izdajatelja (največ 7 cifer: prva dva znaka: Major Industry Identifier (MII) (za področje telekomunikacij je koda 89) / naslednji eden do trije znaki: oznaka države (za Slovenijo 386) / preostanek: identifikacija izdajatelja (npr. 40 za Simobil);
  • identifikacijska številka kartice (do 12 znakov: številka »računa« (account identification number) / en znak: kontrolna vsota izračunana po Luhnovem algoritmu).
IMSI in TMSI številka

IMSI številka služi kot identifikator naročnika v GSM omrežju. Identifikator telefonskega aparata pa je IMEI številka (International Mobile Equipment Identity), gre za neke vrste serijsko številko mobilne naprave (telefona).

IMSI številka je zapisana na SIM kartici. Na podlagi IMSI številke se mobilni uporabnik predstavi mobilnemu omrežju, omrežje pa mu »dodeli« naročniško telefonsko številko. Zaradi možnosti lažjega prisluškovanja in zlasti sledenja uporabnikom naj bi se IMSI številka po omrežju prenašala čim redkeje (kako je s tem v resnici pri nekaterih slovenskih operaterjih bomo videli v nadaljevanju). Namesto nje se prenaša naključno generirana TMSI številka. IMSI se prenese preko omrežja v trenutku, ko se telefon vključi ali ko je potrebno obnoviti povezavo med IMSI in TMSI (oz. generirati nov TMSI). TMSI številka je omejena na lokacijsko območje, kar pomeni, da je potrebno nov TMSI generirati vsakič, ko se mobilni uporabnik premakne v novo lokacijsko območje. Lokacijska območja tvori ena ali več baznih postaj. Vsako lokacijsko območje ima svojo lastno kodo lokacijskega območja, kodo pa v intervalih oddajajo posebne bazne postaje in sicer tim. »base transceiver station« ali BTS v GSM omrežjih oziroma Node B v UMTS omrežjih.

Prve tri cifre IMSI številke označujejo kodo države – Mobile Country Code (MCC), sledita dva znaka (po evropskem oziroma trije znaki po severnoameriškem standardu) za oznako omrežja – Mobile Network Code (MNC). Preostanek je identifikacijska številka uporabnika – Mobile Subscriber Identification Number (MSIN). Mobile Country Code (MCC) koda za Slovenijo je 293. Oznaka 901 je oznaka za International Shared Codes. 901 08 služi za za identifikacijo telefona brez SIM kartice (za klice v sili). Naj dodamo, da v nekaterih državah ni mogoče opraviti klica v sili zgolj s telefonom, torej brez kakršnekoli SIM kartice.

Avtentikacijski šifrirni ključ (Ki)

Avtentikacijski šifrirni ključ ali Ki je 128-bitna spremenljivka, ki služi za avtentikacijo SIM kartice mobilnemu omrežju. Ki je unikaten in določen v procesu personalizacije. Shranjen je na SIM kartici in v podatkovni bazi mobilnega operaterja, v tim. Home Location Registru (HLR). Ki ključa ni mogoče izpisati, pač pa ima SIM kartica posebno funkcijo RUN GSM ALGORITHM, ki telefonu omogoča, da SIM kartici pošlje podatke, le-ta pa jih podpiše s Ki ključem.

Zaradi tega se uporabi SIM kartice v GSM omrežju ni mogoče izogniti, saj je SIM kartica nujno potreben element GSM omrežja. Zaradi slabe varnostne zasnove je bilo stare SIM kartice mogoče razmeroma enostavno klonirati oz. prekopirati Ki šifrirni ključ. To je bilo mogoče preko radijske povezave v nešifriranih omrežjih (več informacij o tem v članku GSM Cloning avtorjev Iana Goldberga in Marca Bricena iz leta 1998). Druga možnost je fizični dostop, kjer napadalec SIM kartici pošilja poizvedbe (tim. challenge) in v cca. 4 do 8 urah iz nje izlušči Ki ključ (pri tem procesu je obstajala tudi cca. 40% verjetnost poškodovanja oz. uničenja kartice). Pri novejših SIM karticah je kloniranje bistveno težje.

Pomembno je tudi vedeti, da lahko napadalec, ki pridobi dostop do Ki ključa oz. SIM kartice, dešifrira pogovore med mobilnim telefonom in omrežjem. V primeru, da se ne uporablja tim. poudarjena zaupnost (ang. perfect forward secrecy), je mogoče pogovore dešifrirati tudi za nazaj (v primeru, da bi napadalec snemal GSM pogovore žrtve, in bi nato kasneje pridobil SIM kartico, bi lahko za nazaj dešifriral vse šifrirane pogovore).

Local Area Identity (LAI)

Vsako lokacijsko območje ima svojo unikatno identifikacijsko številko, ki je sestavljena iz:

  • E.212 mobilne oznake države (tri cifre, 293 za Slovenijo);
  • oznake mobilnega omrežja (Mobile Network Code – MNC, dva znaka, npr. 40 za Simobil);
  • oznake lokacijskega področja (Location Area Code, 5 znakov).

Podatke o lokaciji (Mobile Country Code, Mobile Network Code ter Local Area Code) oddaja mobilno omrežje na tim. Broadcast Control kanalu (BCCH). Mobilni telefon pa LAI številko shrani v SIM kartico. Ob spremembi lokacijskega območja, se podatek obnovi.

Radijska komunikacija - fizični nivo

Naslednji pomemben del GSM omrežja in tudi tisti do katerega imamo neposreden dostop, je radijska komunikacija med bazno postajo in mobilnim telefonom, za katero je zadolžen večji del GSM protokolov. V osnovi ga delimo na 3 sloje. Prvi sloj nudi fizično povezavo, na drugih dveh slojih pa se pretakata signalizacija in prenos podatkov.

Za potrebe varne in učinkovite komunikacije je frekvenčni prostor razdeljen. V osnovi imamo nekaj kanalov, ki so razdeljeni v tim. navzgornjo povezavo (ang. uplink) in tim. navzdoljno povezavo (ang. downlink) in so zamaknjeni za 200kHz. V GSM ne govorimo o frekvenci na kateri mobilni telefon komunicira z bazno postajo, pač pa o paru dveh kanalov (tim. uplink in downlink) za prenos signalov. Označujemo ju z ARFCN (Absolute Radio Frequency Number). Iz te številke je mogoče izračunati tim. navzgornjo (ang. uplink) in navzdoljno (ang. downlink) frekvenco glede na to na katerem frekvenčnem območju komuniciramo.

Komunikacijski prostor pa ni razdeljen samo po frekvenci, ampak tudi po času. Ta način se imenuje TDMA (Time Division Multiple Access), z njim razdelimo podatkovne okvirje na časovnice - kdaj se določeni podatki prenašajo. V GSM imamo 8 tako imenovanih časovnih rezin, poimenovanih v TDMA okvir (zato je v GSM omrežju tako pomembna natančna časovna sihronizacija).

V eni časovni rezini lahko prenesemo 148 bitov informacije, ki jim rečemo “izbruhi” (ang. burst; podatkovni paketki). Če združimo več okvirjev skupaj, dobimo multiokvir. En multiokvir kontrolnega kanala traja 51 TDMA okvirjev, v primeru podatkovnega pa 26 TDMA okvirjev.

2. 3. GSM logični kanali

Obstaja dva osnovna tipa kanalov, podatkovni in kontrolni. Kanale pa delimo še na logične kanale, odvisno od tipa podatkov, ki se po njih prenašajo.

Podatkovni kanali - Traffic Channels (TCH)

Full rate kanali (TCH/F): uporabljajo 24 okvirjev celotnega 26 multiokvirja, z bitno hitrostjo 22,7 kbit/s. En okvir se porabi še za signalizacijo eden pa je prazen, da se lahko v tem času išče bazne postaje z večjo močjo.

Half rate kanali (TCH/H): pa so polovični - 12 okvirjev, z bitno hitrostjo 11,4 kbit/s. Tako je omogočeno, da se prenašata 2 pogovora na istem kanalu.

Namenski kontrolni kanali - Dedicated Control Channels

  1. Standalone Dedicated Control Channel (SDCCH): se uporablja za večino kratkih transakcij, vključno z inicializacijo vzpostavitve klica, registracijo in pošiljanjem SMS sporočil. Nosilna hitrost je0,8 kbit/s. Do največ osem SDCCH-jev je lahko časovno multipleksiranih v enem fizičnem kanalu. JSDCCH je podatkovni kanal za dialog med mobilnim telefonom in omrežjem in ni povezan z drugimi TCH kanali.
  2. Fast Associated Control Channel (FACCH): je združen s podatkovnim kanalom. Le temu odvzema tim. “izbruhe”. Tim. “izbruhi”, ki nosijo FACCH vsebino, se od podatkovnih “izbruhov” razlikujejo po tem, da odvzemajo bite na koncu podatkovnega kanala. FACCH je prisoten pri klicni signalizaciji, pri prekinitvi klica in kasnejših fazah vzpostavitve klica. Bitna hitrost je 9,2 kbit/s za tim. full rate in 4,6 kbit/s za tim. half rate. FACCH uporablja isto multiframe strukturo kot njegov podatkovni kanal.
  3. Slow Associated Control Channel (SACCH): nosi sistemska sporočila v tim. navzdoljni povezavi (ang. downlink) in prejemnikova merilna poročila v tim. navzgornji povezavi (ang. uplink), izvaja časovni nadzor ter nadzor moči in jakosti signala. Vsakemu FACCH in SDCCH kanalu pripada SACCH kanal.

Skupni kontrolni kanali - Common Control Channels

Ti kanali se uporabljajo izključno za upravljanje z mobilnim telefonom.

  1. Broadcast Control Channel (BCCH): ponavljajoče prenaša sistemska sporočila z informacijami o identiteti, LAI (Location Area Identity), konfiguraciji in možnimi funkcijami baznih postaj.
  2. Synchronization Channel (SCH): vsebuje kodo bazne postaje - Base Station Identity Code (BSIC), ki je unikatna koda vsake postaje, in trenutno vrednost TDMA števca. S tem lahko ugotovi v katerem delu sprejema je in kako sporočila sprejemati naprej. Preko tega kanala vzpostavimo tudi časovno sinhronizacijo.
  3. Frequency Correction Channel (FCCH): generira ton na radio kanalu, katerega bazna postaja uporabi za uskladitev lastnega oscilatorja.
  4. Paging Channel (PCH): nosi storitvene pozive določenim mobilnim napravam, poslane s strani omrežja. Mobilni telefon povezan z bazno postajo, na PCH kanalu neprestano spremlja pozive iz omrežja.
  5. Access Grant Channel (AGCH): je namenjen za odzive bazne postaje na zahteve po prostih kanalih, poslane s strani mobilnih telefonov preko RACH kanala.
  6. Random Access Channel (RACH): je tim. navzgornji kanal (ang. uplink) AGCH kanala; je deljiv kanal na katerem mobilne naprave pošiljajo baznim postajam naključne dostopovne “izbruhe” z zahtevo po prostem kanalu do bazne postaje. Vsi RACH kanali imajo specifično “lokacijo” (glede na frekvence in časovne rezine).

Preslikava kanalov na časovne rezine

Logični kanali se na tim. navzgornje/navzdolnje (ang. uplink/downlink) časovne rezine preslikajo na različne načine. Gre za različne kombinacije kanalov.

Radijska oprema v baznih postajah in predvsem v mobilnih telefonih je taka, da ne more ob istem času hkrati oddajati in sprejemati, vendar pa lahko v neki časovni rezini mobilni telefon oddaja, bazna postaja pa sprejema.

Sprejemnik posluša signal tri časovne rezine za oddajanjem. Ko torej mobilni telefon oddaja na rezini 3, bazna postaja v tem času posluša, in obratno. V primeru ko nastopi prosti (ang. idle) “izbruh”, mobilni telefon po drugih frekvencah išče močnejše bazne postaje, kar uporabniku omogoči preklop iz ene bazne postaje na drugo brez motenj, tudi če se uporabnik med klicem giblje.

Skakanje med frekvencami

Sistem skakanja med frekvencami (ang. frequency hopping) se uporablja zaradi večje spektralne učinkovitosti. Obstajata dva načina skakanja med frekvencami:

  1. Ciklično skakanje: sprejemnik bazne postaje skače po seznamu vnaprej definiranih frekvenc krožno.
  2. Naključno skakanje: sprejmnik skače med frekvencami v psevdonaključnem slogu.

V GSM omrežju obstaja 63 različnih algoritmov skakanja med frekvencami. Ko bazna postaja od mobilnega telefona zahteva naj preklopi v način skakanja med frekvencami, le-temu pošlje seznam kanalov (ARFCN) med katerimi naj skače in algoritem po katerem naj skače (HSN).

Iz stališča bazne postaje obstajata dva načina skakanja:

  1. Sintizirano skakanje: v tem primeru nek oddajnik bazne postaje skače med istimi frekvencami kot mobilni telefon.
  2. Skakanje v osnovnem pasu: bazna postaja ima več oddajnikov, vsak je na fiksni frekvenci med tistimi po katerih lahko skače mobilni telefon. Vsakemu oddajniku je dodeljen ena fiksna časovna rezina za TDMA okvir. Tako je na primer ob nekem času rezina 1 dodeljena oddajniku 2 za en TDMA okvir, v naslednjem TDMA okvirju pa je dodeljena oddajniku 3. Na tak način so podatki poslani na različnih frekvencah ob različnih časih, oddajnikom pa ni potrebno skakati po frekvencah, pač pa bazna postaja le zamenjuje oddajnike.

Potek klica, postopki in razni scenariji

Inicializacija mobilne naprave

Prižgan mobilni telefon se inicializira skozi tri dogodke, katerih namen je zaznavanje osnovnega frekvenčnega signala (Base Frequency Signal oz. Beacon Signal). Bazna postaja s tem signalom označuje svojo prisotnost, identiteto operaterja in osnovne informacije glede logičnih kanalov.

Frekvenčna sinhronizacija je proces iskanja osnovnega frekvenčnega signala, ki poteka skozi dva koraka:

  1. Iskanje GSM signala: prižgan mobilni telefon prične z iskanjem radijskih signalov na GSM frekvenčnem pasu, ki ga podpira - 900 in 1800 MHz. Meri jakost radijskega signala in ugotavlja ali je zadovoljiva za vzpostavitev povezave. Takrat mobilni telefon sprejme frekvenco in nadaljuje s koraki sinhronizacije. V kolikor jakost ni zadovoljiva, prične s ponovnim iskanjem.
  2. Določanje osnovnega frekvenčnega signala: ko mobilni telefon najde primeren signal, preveri če je to iskan osnovni frekvenčni signal. Pravilen signal zabeleži in nadaljuje s časovno sinhronizacijo. V nasprotnem primeru ponovno prične z iskanjem.

Časovna sinhronizacija je proces iskanja začetka niza bitov in časovnih rezin. FCCH kanalu (časovna rezina v osnovni frekvenci) sledi časovna rezina SCH, preko česar poteka časovna sinhronizacija. “Izbruh” vsebuje tako imenovano “učno sekvenco” (znano bitno sekvenco), ki pomaga vzpostaviti bitno sinhronizacijo. Ta ista sekvenca tudi “nauči” dinamično optimizirati izenačevalnik (ang. equalizer) prejemnika za boljši sprejem signala. Mobilni telefon po SCH kanalu prejme še osnovne informacije o povezani bazni postaji in mobilnem operaterju.

Ko je mobilni telefon časovno in frekvenčno sinhroniziran ter seznanjen z identiteto mobilnega operaterja, bo v primeru domačega omrežja prešel v naslednjo fazo pridobivanja informacij o omrežju. Če pa je omrežje tuje, se bo vrnil na frekvenčno sinhronizacijo na drugih frekvencah.

V fazi pridobivanja informacije o omrežju in celici mobilni telefon prebere štiri časovne rezine dolg BCCH, ki vsebuje množico sistemskih informacij: lokacijsko območje (Location Area ID, LAI), Mobile Country Code (MCC, Mobile Network Code (MNC), Location Area Code (LAC), Cell ID, lokacije kontrolnih kanalov, itd.

Na tej stopnji je mobilni telefon pripravljen na komunikacijo z omrežjem, a nanj še ni povezan. Potrebna je še IMSI priključitev in posodobitev lokacije.

Vzpostavitev radijske zveze

Zahteva po kanalu za začetek komunikacije: za vsak klic, podatkovni prenos, SMS, oddajanje lokacije itd. mobilni telefon omrežju pošlje zahtevo po prostem namenskem kanalu preko RACH kanala. Mobilni telefon, ki je že seznanjen z omrežjem (preko FCCH, SCH in BCCH kanalov), pozna frekvenčno lokacijo in časovno rezino kanala.

Če pride do kolizije – torej, da ob istem času zahtevo po istem RACH pošlje več mobilnih telefonov hkrati, bo mobilni telefon zahtevo poslal ponovno.

Ko sprejemnik bazne postaje (BTS) prejme zahtevo, jo posreduje kontrolnemu centru (BSC). Ta izbere prost podatkovni kanal DSCCH, namenjen dialogu med mobilnim telefonom in omrežjem. Po kanalu si izmenjata informacijo o tipu storitve, ki jo bo mobilni telefon izvršil (klic, SMS itd.), avtentikacijo ter varnostne nastavitve. Kontrolni center pošlje ID izbranega SDCCH bazni postaji, ta pa aktivira kanal. Postaja uporabi AGCH kanal preko katerega mobilnemu telefonu sporoči kateri SDCCH kanal mu je bil dodeljen. V nekaterih primerih SDCCH nadomesti TCH.

Medtem ko si bazna postaja in preklopni center izmenjujeta informacije, mobilni telefon na kanalu AGCH čaka na odgovor.

Zahteva po storitvi: ko je mobilnemu telefonu dodeljen radijski kanal (SDCCH oziroma TCH v signalnem načinu), pošlje po tem kanalu storitveno zahtevo. Sporočilo vsebuje kodo zahtevane storitve to je lahko:

  1. odziv na poziv (ang. paging response)
  2. vzpostavitev novega klica
  3. posodobitev lokacije

Sporočilo SABM (Set Asynchronous Balance Mode) vsebuje informacijo zahtevane storitve, ki je poslano kot navodilo bazni postaji. Postaja vrne sporočilo UA (Unnumbered Acknowledgement), da je seznanjena s SABM. Končni rezultat tega odgovora je, da mobilni telefon prične zvoniti, pred tem pa nastopijo še avtentikacijski in varnostnimi postopki.

Avtentikacija, avtorizacija in varnost

Avtentikacija in generiranje ključa

Avtentikacijski proces se prične takoj po zahtevi za vzpostavitev zveze. Podatke si izmenjujeta mobilni telefon in preklopni center (MSC) preko SDCCH (občasno tudi TCH) kanala.

Avtentikacijski proces se v celoti izvede takrat, ko mobilni telefon prvič po tem ko smo ga prižgali, pošlje zahtevo baznemu centru.

  1. Ko je zahteva po storitvi uspešno zaključena preklopni center preveri, če obstaja varnostni zapis, ki vsebuje RAND (random challenge), SRES (signed response) in šifrirni ključ Kc v registru obiskovalcev (VLR) za nek mobilni telefon. Če le ta ni na voljo, ga bazni center zahteva v domačem registru (HLR) s pomočjo algoritma A5. HLR s pomočjo avtentikacijskega centra pripravi navadno 5 varnostnih zapisov, ki so nato shranjeni v register obiskovalcev (VLR).
  2. Avtentikacijska zahteva od preklopnega centra do mobilnega telefona vsebuje 128 bitno naključno število (RAND) in šifrirno kodno sekvenčno številko (CKSN). S pomočjo naključne številke, ki jo mobilni telefon sprejme, le ta izračuna 32 bitni podpisan odziv (SRES), ki je tudi del varnostnega zapisa. Šifrirno kodna sekvenčna številka je indeks varnostnega zapisa v registru obiskovalcev, prav tako pa je shranjena v SIM kartici mobilnega telefona. To je uporabno za naslednjo avtentikacijo (o čemer nekoliko več kasneje).
  3. V tej fazi mobilni telefon zgenerira šifrirni ključ Kc z uporabo prejete naključne številke (RAND) in IMSI s pomočjo A3 algoritma, le tega pa uporabi kot vhod v A5 algoritem (algoritem za šifriranje v mobilne komunikacije).
  4. Vrednost podpisanega odziva (SRES) se pošlje nazaj preklopnemu centru, ki preveri če se le ta ujema s tistim, ki ga ima tudi sam.
  5. Avtentikacijski proces ima lahko dodatno fazo verifikacije IMSI številke.

Ko je celotna avtentikacija uspešno zaključena, omrežje ne potrebuje njene ponovitve za vsak klic, seveda le dokler je mobilni telefon priključen na omrežje. Pri zahtevi za vzpostavitev zveze mobilni telefon pošlje le šifrirno kodno sekvenčno številko (CKSN). Preklopni center preveri pravilnost številke v VLR bazi, in v kolikor je pravilna, preskoči proces avtentikacije.

Nastavitve šifriranja komunikacij

Če je zahtevano šifriranje komunikacij, preklopni center kontrolnemu centru pošlje ukaz za šifriranje in zahtevo za šifrirni ključ Kc. Kontrolni center bazni postaji pošlje šifrirni ključ in 22 bitni TDMA okvir, ta vrednosti shrani in posreduje šifrirni ukaz mobilnemu telefonu. Pomembno je poudariti, da mobilni telefon ustrezen šifrirni ključ zgenerira sam - bazna postaja mu ga ne pošlje preko radijske povezave. Ključ Kc in TDMA okvir sta ključna parametra za šifrirni algoritem.

Preverjanje IMEI številke

Omrežje lahko izvede tudi IMEI preverjanje. Ko od mobilnega telefona pridobi IMEI številko (gre za identifikator telefonskega telefona (International Mobile Equipment Identity), gre za neke vrste serijsko številko mobilnega telefona), jo bazni center preveri na svoji beli listi (spisek IMEI številk, ki imajo odobren dostop do omrežja), črni listi (spisek blokiranih IMEI številk) in sivi listi (spisek IMEI številk, pri katerih so določeni problemi, npr. nepotrjeni mobilni telefoni ipd.). Od vsakega mobilnega operaterja je odvisno ali lahko telefon z določeno IMEI številko uporablja omrežje ali ne. Bazni center hrani IMEI seznam v EIR (Equipment Identity Register). Naj dodamo, da je IMEI številko mobilnega telefona mogoče razmeroma enostavno ponarediti (kar je bilo izpostavljeno tudi v znanem sodnem postopku v primeru Milica Makoter) - čeprav je to v številnih državah nezakonito - zato je ne moremo šteti kot zanesljiv identifikator mobilne naprave.

Dodelitev TMSI

Omrežje mobilnemu telefonu, ki je avtenticiran v omrežju, le-to lahko zagotovi TMSI. Gre za začasno IMSI številko, dodaten varnostni mehanizem, ki otežuje identifikacijo mobilnega telefona v omrežju (če imamo telefonsko številko uporabnika je namrel IMSI številko mogoče povsem enostavno pridobiti preko SS7 signalizacije). Omrežje TMSI mobilnemu telefonu dodeli po tem ko je avtentikacija pri preklopnem centru že opravljena - torej ob prižigu mobilnega telefona ali posodobitvi lokacije. TMSI zgenerira preklopni center na podlagi IMSI, ter ga pošlje mobilnemu telefonu. Ta ga shrani v SIM kartico, preklopni center pa v VLR (register obiskovalcev). Dodeljeni TMSI mobilni telefon uporablja za identifikacijo pri zahtevi po vzpostavitvi zveze namesto IMSI številke.

Priključitev IMSI

Mobilni telefon je lahko prižgan ali ugasnjen. V prižganem stanju se inicializira (sinhronizacija frekvence, časovna sinhronizacija in izmenjava sistemskih informacij) in poveže v omrežje. To je znak, da lahko sprejme zahtevo po klicu (poziv na dohodni klic).

Proces sporočanja omrežju, da je mobilni telefon prižgan in pripravljen na sprejemanje in oddajanje klicev se imenuje IMSI priključitev. IMSI je primarni identifikator, ki unikatno identificira vsak mobilni telefon v omrežju.

Postopek IMSI priključitve

Ko mobilni telefon prižgemo, ta preko SDCCH kanala pošlje sporočilo omrežju in ga obvesti o svoji prisotnosti. Preklopni center sprva opravi avtentikacijsko proceduro, potem v svojem VLR preveri informacijo o mobilnem telefonu. Če ima informacijo shranjeno (pomeni, da je bil mobilni telefon že prej priklopljen na ta center), obnovi vsebino VLR (IMSI priključitev in izbris IMSI izključitev zastavice). Preklopni center obnovi tudi HLR vsebino, ter posodobitev lokacije mobilnega telefona glede na lokacijsko kodo (LAI), ki jo je poslal mobilni telefon.

Če center zazna mobilni telefon kot novo napravo, brez vpisa v VLR, poizve informacije o mobilnem telefonu pri HLR. Potem za nov mobilni telefon kreira vpis v VLR s statusom “IMSI priključen”. HLR obnovi svoje podatke tega mobilnega telefona in pošlje sporočilo tistemu preklopnemu centru, pri katerem se je mobilni telefon nahajal prej, z namenom da prejšnji center obnovi svoj VLR.

Postopek IMSI izključitve

Postopek IMSI izključitve steče pri ugašanju mobilnega telefona. V VLR je ugasnjen telefon označen kot “izključen” in tak mobilni telefon ne bo pozvan ob dohodnem klicu. Sistemske informacije, ki so bile poslane preko kanala BCCH obvestijo mobilni telefon, če je potrebna procedura IMSI izključitev ali IMSI priključitev.

Ko je mobilni telefon izključen ali mu odstranimo SIM kartico, mobilni telefon zahteva IMSI izključitev. Kot za vse ostale storitvene zahteve, tudi za to zahtevo uporabi kanal SDCCH. Preko njega informira omrežje o svojem izklopu. VLR označi IMSI kot “izključen” (postavi IMSI izključitev zastavico). Potem preklopni center o nameri obvesti še HLR.

Posodabljanje lokacije in periodično registriranje

Ko mobilni telefon prižgemo, oziroma ko se z njim premaknemo iz območja ene celice v območje druge, le-ta obvesti omrežje o posodobitvi lokacije.

Mobilni telefon posluša osnovni frekvenčni signal bazne postaje (tim. beacon signal) in preveri ali se njen LAI ujema z LAI shranjenim na SIM kartici (le-ta je shranjen iz predhodne posodobitve lokacije). Če se razlikujeta, mobilni telefon omrežju pošlje sporočilo o spremenjeni lokaciji (nov LAI) skozi SDCCH kanal. Preklopni center opravi avtentikacijo in obnovi VLR. V kolikor se je mobilni telefon ob tem dogodku priključil na drug preklopni center, ta v HLR poišče potrebne informacije o mobilnem telefonu in obnovi svoj VLR z novim vpisom. HLR je do takrat posodabljal informacije o mobilnem telefonu in obveščal preklopni center, kje se je mobilni telefon nahajal prej. Zatem center mobilnemu telefonu vrne odobritveno sporočilo in SDCCH kanal je spet sproščen.

S periodičnim registriranjem se izognemo nepotrebnim pozivom mobilnega telefona, v primeru ko preklopni center ne prejme IMSI izključitvenega sporočila. Registracija je poslana skozi BCCH kanal. Mobilni telefon in bazni center nato resetirata svoje števce. Ko števec na mobilnem telefonu poteče, le-ta pošlje posodobitev lokacije, števca mobilnega telefona ter preklopnega centra pa se postavita na začetek. Če se mobilni telefon v določenem časovnem intervalu ne registrira ponovno, center predvideva da je mobilni telefon izključen, zato obnovi VLR in HLR. Ob tem pošlje mobilnemu telefonu odobritveno sporočilo.

Odhodni glasovni klic

Začetni proces

Ob pričetku glasovnega klica mobilni telefon preko SDCCH kanala pošlje preklopnemu centru zahtevo za klic. S tem obvesti omrežje, da želi glasovno povezavo. Preklopni center opravi avtentikacijo in pripravi šifrirni ključ za glasovno šifriranje. Mobilni telefon nato pošlje centru sporočilo s klicano telefonsko številko. Center preveri ali je mobilnemu telefonu klicanje dovoljeno, in prične z dodeljevanjem podatkovnega kanala za glasovni klic.

Dodelitev podatkovnega kanala

Preklopni center skuša vzpostaviti glasovni klic tako, da skozi omrežje (v drug center ali PSTN stikalo) poveže klicano napravo (mobilni telefon ali stacionarni telefon) in od kontrolnega centra (BSC), s katero je povezana klicana naprava, zahteva, da le-ta dodeli podatkovni kanal med kontrolnim centrom in mobilnim telefonom. Za tem center nastavi stanje mobilnega telefona na “zasedeno”.

Izbiro glasovnih kanalov med kontrolnim centrom in preklopnim centrom določi preklopni center, kanal med bazno postajo in mobilnim telefonom (TCH kanala) pa izbere in aktivira bazna postaja. Če nima prostega kanala, ga skuša najti pri sosednji celici. V tem primeru je potrebna tudi posodobitev lokacije. Preko SDCCH kanala postaja pošlje mobilnemu telefon ukaz, kateri TCH kanal mu je bil dodeljen. Pri dodeljevanju podatkovnega kanala se uporablja tudi SACCH kanal, ki se ga uporablja za nastavitev dinamične zmogljivosti povezave (časovni in energijski nadzor), in FACCH signalni kanal, kjer se prenašajo podatki o nastavitvi in prekinitvi klica, če SDCCH kanal ni dostopen.

Ko je TCH dodeljen, mu mobilni telefon priredi svoj oddajnik in postaji pošlje SABM - potrditveno sporočilo o uspešni priključitvi na kanal. Postaja odgovori z UA potrditvenim sporočilom. In SDCCH je sproščen.

Potrditev klica, sprejem in prekinitev

Ko se klicoči mobilni telefon uspešno priključi na TCH, pošlje omrežju sporočilo o uspešni dodelitvi kanala. Za tem preklopni center pričakuje zaključno naslovno sporočilo z omrežja (drugega centra ali PSTN stikala), ki sporoča, da klicana naprava zvoni. Takoj ko center prejme zaključno naslovno sporočilo, pošlje klicočemu mobilnemu telefonu opozorilni signal. Ta centru vrne zahtevo po povezavi. Preklopni center odobri povezavo s sporočilom mobilnemu telefonu in čaka na odgovor s strani omrežja (čaka na potrditev, da je klic sprejet). Čim odgovor prejme, ustvari povezavo med klicanim in klicočim.

Dohodni glasovni klic

Dodeljevanje MSRN

Dodeljevanje MSRN je proces dodeljevanja posebne številke (Mobile Station Roaming Number) klicanemu telefonu. MSRN je začasna telefonska številka, preko katere preklopni center poveže dohodni klic.

Tisti center, ki mobilnemu telefonu dodeli številko je zanj “domač”. Če se mobilni telefon premakne v območje drugega preklopnega centra, ga ta center zazna kot “gosta”. V nasprotnem primeru se povezava dohodnega klica v gostujočem centru ne bi mogla vzpostaviti.

Ko gostujoči mobilni telefon (povezan na drug center) sprejema klic, sistem s pomočjo HLR in VLR registrov zazna kateri preklopni center ga trenutno gosti. Problem je, da center gostitelj ne more povezati klica z uporabo prvotnega MSRN gostujočega mobilnega telefona, ker številka ne pripada centru gostitelju. Problemu se izognemo s postopkom, kjer klicateljev preklopni center preko HLR poizve IMSI in VLR identiteto klicanega mobilnega telefona, in posledično preklopnega centra, ki gosti klican telefon. Ta center dodeli prost MSRN in ga posreduje HLR, HLR pa novi MSRN poda klicateljevemu preklopnemu centru. Izvede se zamenjava MSRN številk.

Pozivanje (paging)

Pri dohodnem klicu določen preklopni center prek VLR poziva klicani mobilni telefon ko je le-ta dostopen za klic ali pa je v zasedenem stanju (pri nastavitvi klica na čakanju) oziroma ko le-temu dodeli MSRN, če mu MSRN prej še ni bil dodeljen.

V ostalih primerih preklopni center mobilnega telefona ne poziva (npr. ko je ugasnjen), klicani telefon pa dobi ustrezno sporočilo.

Center za namene pozivanja iz VLR uporabi LAI (Local Area Identity) in PGN (Paging Group Number) klicanega mobilnega telefona. Preko LAI dostopa do lokacije oz. bazne postaje, ki mu bo poziv poslala, preko PGN pa dostopa do kanala uporabnega za poziv (kanal na katerem mobilni telefon posluša). Lahko pa se zgodi, da se mobilni telefon premakne na novo lokacijo, lokacija pa se še ne posodobi. V tem primeru poziv preklopnega centra ne uspe. Preden sporoči neuspešnost vzpostavitve klica, omrežje pošlje pozivni ukaz vsem kontrolnim centrom določenega območja. Ta poziv vsebuje IMSI/TMSI, LAI in PGN klicanega mobilnega telefona.

Kontrolni center preko LAI ugotovi CI (Cell Identity) telefona, in isti poziv z dodano številko kanala (Channel Number) posreduje baznim postajam. Številka kanala nosi informacijo o tipu kanala (downlink CCCH, PCH) in številu časovne rezine. Pozivna sporočila se prenašajo preko PCH kanala.

Sprejem klica

Ko klican mobilni telefon sprejme poziv, vrne omrežju zahtevo po dodelitvi SDCCH kanala. Po avtentikaciji in varnostnem postopku prejme z omrežja sporočilo o pričetku glasovnega klica. Mobilni telefon pošlje potrditveno sporočilo, da je pripravljen na sprejem klica. Omrežje mu dodeli glasovni kanal (TCH kanal), mobilni telefon pa potrdi, da je nanj povezan. Takrat telefon prične zvoniti in o tem opozori omrežje. Preklopni center obvesti klicočega na drugi strani omrežja, da klicani telefon zvoni. Ko uporabnik klic sprejme, mobilni telefon pošlje omrežju zahtevo za vzpostavitev povezave. Omrežje oba telefona poveže in zveza je vzpostavljena.

SMS

Podatki SMS sporočil se pošiljajo preko SDCCH kanala. Ta kanal je dodeljen le po storitveni zahtevi. Pošiljatelj SMS sporočila odda zahtevo po SMS storitvi in dobi SDCCH kanal. Po avtentikaciji in varnostnem postopku, pošiljatelj odda sporočilo preklopnemu centru. Ta ga posreduje SMS centru ter vrne potrdilno informacijo mobilnemu telefonu. Pri postopku sprejemanja SMS sporočila preklopni center pozove mobilni telefon, nato pa le-ta zahteva storitev za sprejem SMS sporočila, ki ga sprejme od SMS centra.

SMS sporočilo lahko pošljemo tudi med klicno zvezo (ko je kanal TCH dodeljen). V tem primeru SMS storitev uporabi kanal FACCH. Na novejših telefonih se lahko SMS sporočila prenašajo tudi preko podatkovnih kanalov.

Varnostna analiza GSM omrežja

V prejšnjem poglavju smo si na kratko ogledali osnove delovanja GSM omrežja. Kljub temu, da je tematika morda suhoparna, je poznavanje osnov nujno za razumevanje ranljivosti varnostnih mehanizmov GSM. Sledi zanimivejši del, v katerem smo izvedli varnostno analizo več GSM omrežij slovenskih operaterjev.

Seveda je povsem na mestu vprašanje zakaj bi se sploh še ukvarjali z GSM tehnologijo, ko pa dandanes ogromno uporabnikov že uporablja omrežja tretje in četrte generacije, ki pa se jih zaradi njihove zapletenosti in zaprtosti v odprotokodnem svetu še nismo dodobra dotaknili. A dejstvo je, da napadalci vedno iščejo najšibkejši člen in ta je še vedno GSM. Izkaže se, da se da uporabnika z uporabo najrazličnejših metod za motenje, kjer uporabniku onemogočimo komunikacijo na omrežjih tretje in kasneje četrte generacije, vedno prisiliti, da za komunikacijo uporablja GSM omrežje. Dokler torej operater popolnoma ne izklopi GSM omrežja, bo vedno obstajala varnostna ranljivost, ki jo lahko napadalec izkoristi, če operater ne poskrbi ustrezno za varnost celotnega omrežja. Kdor se tega ne zaveda in ne skrbi za varnost celotnega omrežja, kjer lahko komunicirajo uporabniki, ne razume problema varnosti. Nima namreč smisla skrbeti za varnost ostalega dela omrežja, če pri tem ne poskrbimo za odpravo varnostnih ranljivosti v GSM omrežju.

Za GSM, pa tudi ostale telefonske tehnologije je dolgo veljalo, da gre za izrazito zaprte tehnologije. Za razliko od klasičnega računalništva ali interneta, je dolgo časa veljalo, da je podrobnosti delovanja telefonije, zlasti pa GSM telefonije poznala le peščica ljudi. S pomočjo interneta in odprtokodnih skupnosti so postale informacije o omenjenih tehnologijah dostopnejše.

Žal se danes zdi, da naprednejše mobilne tehnologije, kot npr. LTE (ang. Long Term Evolution – gre za standard na področju mobilnih telekomunikacij, ki predstavlja nadgradnjo UMTS in HSPA) še dolgo časa ne bodo postale bolj odprte. Odprta tehnologija namreč v telekomunikacijah ne pomeni le odprtih standardov, pač pa tudi implementacijo programske kode na cenovno ugodnejšo strojno opremo. To pa seveda ni v interesu podjetij, ki proizvajajo strojno in programsko opremo za mobilne telefone in bazne postaje.

V odprtokodonem svetu je že dlje časa poznan projekt z GNU Radio, ki smo ga že omenili na začetku tega članka. Gre za programsko ogrodje, ki uporabnikom olajšuje dostop do radijske opreme, saj vsebuje različne filtre, demodulatorje, analizatorje in podobne komponente, ki jih potrebujejo radioamaterji. Pomemben del projekta GNU Radio je bil tudi razviti odprtokodni programski radio (SDR). Razvit je bil tim. USRP (Universal Software Radio Peripheral), strojna oprema, ki služi kot univerzalni radijski sprejemnik (ali tudi oddajnik), in ki zna sprejeti kakršenkoli radijski signal. USRP uporabniku omogoča prejemanje in oddajanje signala do pasovnih širin 16 Mhz na poljubnih frekvencah. Sicer je cena tega radia v primerjavi s podobnimi enako zmogljivimi SDR napravami razmeroma nizka, a še vedno precej visoka za običajne posameznike (giblje se nekje med 1500 in 2000 EUR). Na srečo se je pred kratkim izkazalo, da je kot programski radio mogoče uporabiti tudi cenene DVB-T sprejemnike (cena se giblje okrog 25 EUR), kar je dalo projekti GNU Radio popolnoma nov pospešek. Žal so te naprave le sprejemniki, torej ne morejo oddajati, zato z njimi ne moremo npr. postaviti svoje lastne GSM/GPRS bazne postaje. Obenem kvaliteta sprejetega signala ni tako dobra, vendar se izkaže da z njimi brez težav zajemamo GSM, TETRO, GPS in še kaj. Več informacij lahko najdemo na Osmocom rtl-sdr spletni strani.

Z GSM se sicer ukvarja kar nekaj odprtokodnih projektov. Projekt Airprobe se ukvarja z zajemanjem GSM signala (na začetku so za zajemanje uporabili USRP). OpenBSC je projekt, ki se ukvarja z odprtokodnimi baznimi kontrolerji (BSC) in je odprotokodna implementacija protokola Abis - protokol med baznim kontrolerjem (BSC) in bazno postajo (BTS). Projekt OpenBTS pa se ukvarja z izdelavo odprtokodne bazne postaje (in kontrolerja skupaj), ki uporablja prej omenjeni USRP programski radio (SDR). Projekt je zelo zanimiv, saj nam omogoča, da si za razmeroma dostopno ceno postavimo lastno GSM bazno postajo. S takšno bazno postajo je mogoče početi tudi neprimerne stvari. Tako se lahko takšna bazna postaja lažno predstavlja in posledično izvaja prestrezanje glasovnih klicev in SMS sporočil, seveda pa je takšno prestrezanje aktivno in ga je (vsaj v teoriji) mogoče zaznati. Poleg tega je takšno oddajanje v mobilnem omrežju nezakonito.

Zadnji in morda najzanimivejši projekt pa se imenuje OsmocomBB. Namen projekta je izdelati odprtokodno programsko opremo za GSM, konkretneje odprtokodne gonilnike za GSM naprave ter "telefonski" del GSM protokola (layer 1 do layer 3). Glavna težava s katero se srečujejo razvijalci OsmocomBB projekta so zaprte specifikacije čipov vgrajenih v mobilne telefone. Ker le-te niso znane je z reverznim inženiringom potrebno ugotoviti kako posamezni deli mobilnega telefona delujejo in na podlagi tega nato napisati odprtokodno strojno programsko opremo (ang. firmware).

OsmocomBB je odprtokodna implementacija GSM sklada protokolov (ang. protocol stack) na Texas instruments Calypso čipovju, ki teče na ARM arhitekturi. Calypso čipovje je poceni DBB (digital baseband procesor) implementacija, ki združuje anteno, demodulator, filtre, ojačevalnike, AD pretvornik in DSP (Digital signal processing). Razvijalcem je pri tem vsekakor zelo pomagalo dejstvo, da je pred časom na internet “ušla” dokumentacija s podrobnostmi o delovanju Calypso čipovja.

Mimogrede, v Calypso čipovju je sam DSP zadolžen za dešifriranje GSM podatkov in še za podobne naloge. Teh nalog ne opravlja vgrajeni ARM procesor. Je pa mogoče vse skupaj tudi tako preprogramirati, da iz te strojne opreme na računalnik pridobimo surove (neobdelane) GSM “izbruhe”.

Priprava strojne opreme

Če na telefon naložimo Osmocom strojno programsko opremo, se le-ta obnaša kot RF sprejemnik prvega GSM sloja, ki nam preko serijskih vrat pošilja “izbruhe” ene časovne rezine. Ključni del opreme je torej telefon z ustreznim kablom za povezavo z računalnikom.

Mimogrede, posebej poudarjamo, da je v nadaljevanju navedena strojna programska oprema za mobilni telefon prevedena brez podpore oddajanju signalov v GSM omrežje. Gre torej samo za sprejemanje GSM signalov (RX podpora) brez kakršnegakoli oddajanja (torej brez TX podpore). V GSM omrežju zato s takšno programsko opremo ne moremo povzročati motenj, po drugi strani pa je takšno prestrezanje signalov povsem nezaznavno (za razliko od klasičnega IMSI catcherja, kjer prestrezanje deluje tako, da prestrezna naprava oddaja GSM signal in izvaja napad s posrednikom (tim. man-in-the-middle napad).

Izbira telefona in priprava kabla

Pomembno je vedeti, da Osmocom programska oprema ne teče na vseh mobilnih telefonih, pač pa le na tistih, ki vsebujejo ustrezno Calypso čipovje. To pa so:

  1. MotorolaC115/C117 (E87)
  2. MotorolaC123/C121/C118 (E88)
  3. MotorolaC140/C139 (E86)
  4. MotorolaC155 (E99)
  5. MotorolaV171 (E68/E69)
  6. SonyEricssonJ100i
  7. Pirelli DP-L10
  8. Neo 1973 (GTA01)
  9. OpenMoko - Neo Freerunner (GTA02)

v začetkih analiz GSM omrežja se je uporabljala Nokia 3310 (900/1800 Mhz) oziroma Nokia 3390 (1900 Mhz) z MBUS podatkovnim kablom NK-33. Omenjena modela telefonov sta vsebovala napako v programski strojni opremi, ki je omogočala pridobivanje določenih podatkov o GSM omrežju. Potrebno je bilo uporabiti še program gsmdecode

V okviru naše varnostne analize smo uporabili dva telefona, ki smo ju rabljena preko spleta kupili za razmeroma nizko ceno (10 oz. 20 EUR s poštnino): SonyEricssonJ100i ter Motorola C115. Na spletnih straneh kot so Ebay in Amazon teh mobilnih telefonov ni veliko, saj uradno niso več naprodaj.

Omenjena telefona je potrebno preko serijskih vrat z ustreznim kablom povezati na računalnik. Ustrezen kabel je mogoče kupiti na spletu, lahko pa ga naredimo tudi sami.

Če na računalnik želimo prejemati surove “izbruhe”, ki jih je mogoče uporabiti za kasnejšo kriptoanalizo podatkov v GSM omrežju, potrebujemo hitrejši serijski kabel. RS232 zmore hitrosti le do 115200 bit/s, v našem primeru pa potrebujemo višje hitrosti (vse do 812500 bit/s). Le-te nam omogočajo FTDI kabli in kabli s Pirellijevim čipovjem, vendar je slednje treba programsko nadgraditi (ang. to reflash).

Postopek reprogramiranja CP2102 kabla je razmeroma enostaven. Najprej iz spleta prenesemo program cp210x-program (iz naslova http://cp210x-program.sourceforge.net/ - uporabili smo različico 0.2), nato pa program zaženemo. Seveda ni odveč poudarjati, da program teče samo na Linux sistemih:

cd ~/osmocom/cp210x-program-0.2/
sudo rmmod cp210x
sudo ./cp210x-program

Najprej naredimo varnostno kopijo vsebine obstoječega EEPROM-a:

sudo ./cp210x-program -f eeprom.hex

Nato na čip zapišemo nov EEPROM:

sudo ./cp210x-program -p -F eeprom.hex -w --set-baudrate 812500:FFE2,FFF4,1 --set-baudrate 406250:FFC5,FFE9,1 --set-baudrate 203125:FF8A,FFD3,1

Na koncu preverimo, če vse deluje kot je treba:

sudo ./cp210x-program

Na izpisu mora biti vidno:

[baudrate table]
[...]
812500 = FFE2, FFF4, 1 # 800000 Baud, 24 us
[...]
406250 = FFC5, FFE9, 1 # 406780 Baud, 46 us
[...]
203125 = FF8A, FFD3, 1 # 203390 Baud, 90 us
[...]
115200 = FF30, FFB2, 1 # 115385 Baud, 156 us
[...]

Kabel izključimo in ponovno priključimo. S tem je postopek reprogramiranja kabla končan. Naj dodamo, da smo v našem primeru uporabili obe vrsti kablov (na SonyEricssonJ100i kabel s FTDI čipom, na Motorola C115 pa reprogramirani kabel s Pirellijevim čipom).

SonyEricssonJ100i z doma narejenim serijskim vmesnikom

Doma narejen serijski vmesnik.

SonyEricssonJ100i in Motorola C115

V naslednjem koraku je potrebno na telefon preko serijskega vmesnika naložiti OsmocomBB strojno programsko opremo, ki nam omogoča “pogovarjanje” s telefonom ter predvsem sprejemanje podatkov iz prvega sloja GSM protokola.

Programska oprema za nalaganje strojne programske opreme na telefon se imenuje osmocon (N, ne M na koncu besede) in je na voljo v obliki izvorne kode. Prav tako je v obliki izvorne kode strojna programska oprema za telefon. Obe programski kodi je torej potrebno prevesti, pri čemer mora biti strojna programska oprema prevedena za točno določeno ARM arhitekturo. Kar seveda pomeni, da si moramo namestiti tudi ustrezen ARM prevajalnik za tim. cross compiling.

Priprava programske kode in njena namestitev

Kot že rečeno, DSP (Digital signal processing) na mobilnem telefonu sam dešifrira podatkovne “izbruhe”, za namene varnostne analize pa so veliko bolj zanimivi tim. “surovi” “izbruhi”. Zato je v programski kodi potreben manjši popravek, ki omogoča zajem surovih “izbruhov”. Obstaja tudi ustrezna OsmocomBB programska koda, ki omogoča zajem “surovih” “izbruhov”, vendar le-ta vsebuje nekaj (verjetno celo namernih) napak zaradi česar je na telefonu ni mogoče preprosto zagnati. Poleg tega je del funkcionalnosti te programske opreme iz javno dostopnega skladišča izpuščen in jo je bilo potrebno ponovno sprogramirati.

Osmocomov Git repozitorij ima več vej. Za nas je zanimiva le veja burst_ind, saj le ta vsebuje potrebne popravke za DSP (Digital signal processing), vendar je le-tej izpuščena določena fukncionalnost, ki nam onemogoča praktično analizo. Kodo smo popravili do te mere in dodali dodatno funkcionalnost, da so orodja praktično uporabna za analizo.

Če je šlo vse po sreči, se je programska koda prevedla brez napak in na svojem računalniku imamo sedaj tudi ustrezno programsko opremo za analizo GSM omrežij.

Vsebina OsmocomBB programske opreme

Shema OsmocomBB programske opreme se nahaja na naslednji sliki. Iz slike je razvidno, da s programom osmocon preko serijskega vmesnika na mobilni telefon naložimo tim. nalagalnik ROM (ang. romloader) preko katerega nato na telefonu poganjamo ustrezne programe, ki pošiljajo podatke na računalnik.

Mimogrede: OsmocomBB strojno programsko opremo na mobilni telefon naložimo v pomnilnik, kar pomeni, da ob odstranitvi baterije iz telefona modificirana strojna oprema izgine iz pomnilnika, telefon pa ohrani originalno nameščeno strojno programsko opremo. Posledično telefona z namestitvijo napačne strojne programske opreme ne moremo uničiti, hkrati pa tudi kakršna koli kasnejša (forenzična) analiza telefona na njem ne bi našla digitalnih sledov, da je bil telefon uporabljen za varnostno analizo GSM omrežja.

Shema OsmocomBB programske opreme

OsmocomBB je sicer razdeljen na več podprogramov. Za nalaganje uporabljamo že omenjeni osmocon, ki je osnovni multiplekser tudi za vse kasnejše povezave z mobilnim telefonom. Za analizo prometa so napisani majhni programi, ki nam omogočajo analizo posameznih kanalov. Programi se nahajajo v različnih podimenikih. Podimenik host vsebuje programsko kodo namenjeno poganjanju na računalniku, podimenik target pa strojno programsko opremo za mobilni telefon. V nadaljevanju so bomo pogledali nekaj glavnih OsmocomBB programskih modulov.

V host/layer23/src/misc se nahajajo razni programi za analizo GSM protokola:

  • app_cell_log - aplikacija, ki preskenira in izpiše okoliške bazne postaje, ter njihove informacije;
  • ccch_scan - aplikacija, ki nam omogoča zajem GSM prometa;
  • burst_decode – aplikacija za dešifriranje podatkovnih okvirjev;
  • burst_encode – aplikacija za šifriranje podatkovnih okvirjev;
  • gsmcrack.py - aplikacija za osnovno dešifriranje podatkov, ter nekatere dodatne funkcionalnosti, ki nam pridejo prav pri testiranju varnosti mobilnih omrežij;
  • mobile - aplikacija za simulacijo mobilnega telefona na mobilnem telefonu.

V podimeniku target/firmware/board se nahaja strojna programska oprema za različne različice telefonov, temelječih na Calypso čipovju. Ob raznličnih programskih kodah kot so “hello world”, “loader” ter “chainloader” obstaja tudi “layer1”, ki je implementacija fizičnega GSM sloja. Tega bomo kasneje tudi naložili na mobilni telefon.

Med programsko kodo se nahaja tudi popravek za program za analizo omrežij Wireshark, ki nam omogoča grafično analizo GSM prometa. Naj dodamo, da je v programskih paketih Wiresharka na novejših distribucijah operacijskih sistemov ta popravek vgrajen že dlje časa.

Mimogrede: Za analizo prometa in kasnejšo kriptoanalizo podatkov so bila razvita tudi lastna orodja, ki zaenkrat ne bodo javno objavljena.

Zagon ROM nalagalnika (ang. romloader)

Sledi sam zagon ustrezne programske opreme. Za poganjanje OsmocomBB programske opreme potrebujemo administratorske privilegije oziroma je na sistemu potrebno nastaviti ustrezne pravice dostopa do serijskih vmesnikov, itd.

Najprej odpremo prvo ukazno vrstico in zaženemo ROM nalagalnik. To storimo s programom osmocon, ki mu moramo podati ustrezne parametre s katerimi mu povemo kateri tip telefona je uporabljen in kateri tip komunikacijskega kabla je uporabljen. V nadaljevanju podajamo primer za Motorolo C115:

./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/layer1.compalram.bin -f 1</p>

Pred zaganjanjem navedenih ukazov mora biti mobilni telefon priključen, a ugasnjen. Vanj ni potrebno vstaviti SIM kartice. Telefon nato aktiviramo z (zelo) kratkim pritiskom na gumb za vklop (in ne z običajnim dolgim pritiskom na gumb za vklop) in nalaganje strojne programske opreme v ROM pomnilnik steče.

Uspešno nalaganje strojne programske opreme v ROM pomnilnik telefona.

Po uspešnem zagonu programa in uspešnem nalaganju strojne programske opreme na mobilni telefon moramo to ukazno vrstico pustiti aktivno.

Osnovni pregled GSM omrežja

Za povsem osnovni pregled GSM omrežja smo uporabili lastne modificirane OsmocomBB programe.

Pregled baznih postaj

Za začetek si ogledamo seznam ARFCN-jev oziroma baznih postaj. To storimo z ukazom:

./cell_log

Orodje cell_log nam omogoča iskanje in ugotavljanje moči posameznih baznih postaj. Cell_log se poskuša povezati na posamezne ARFCN-je, obenem pa ugotavlja kateri operater se nahaja na danem kanalu. ARFCN, ki pripada nam najbližji bazni postaji, ima tudi največjo oddajno moč. Informacija o oddajni moči je zapisana v stolpcu pod rxlev. Primer izpisa je razviden na spodnji sliki.

Pregled baznih postaj.

Kot omenjeno, podatke lahko shranjujemo tudi v datoteko. Iz zbranih podatkov lahko identificiramo bazne postaje posameznih operaterjev:

cell_log.c:340 Sync ARFCN 54 (rxlev -53, 372 syncs left) 
cell_log.c:190 Cell: ARFCN=54 MCC=293 MNC=40 (Slovenia, Si.mobil) 
cell_log.c:340 Sync ARFCN 1013 (rxlev -73, 366 syncs left)
cell_log.c:190 Cell: ARFCN=1013 MCC=293 MNC=70 (Slovenia, Tušmobil)
cell_log.c:340 Sync ARFCN 116 (rxlev -78, 363 syncs left)
cell_log.c:190 Cell: ARFCN=116 MCC=293 MNC=41 (Slovenia, iPKO)

Mimogrede: Mobilni telefon se ponavadi poveže na bazno postajo (ARFCN) z največjo močjo. Problem lahko predstavlja, če imamo več baznih postaj, katerih moči so dokaj podobne. Takrat se lahko zgodi da mobilni telefon preskakuje iz ene bazne postaje na drugo. V takem primeru je zelo težko analizirati GSM, sploh če imamo na voljo le en mobilni telefon na kateremu poganjamo Osmocom BB programsko opremo, saj zelo težko določimo pravilen ARFCN.

Poslušanje komunikacij na CCCH kanalu

V osnovi z mobilnimi telefoni navedenimi zgoraj lahko poslušamo komunikacijo na navzdolnjem (ang. downlink) CCCH kanalu. Za to lahko uporabimo orodje ccch_scan. Nekatere telefone, npr. ravno našo Motorolo C115, pa je mogoče nekoliko strojno predelati in sicer tako, da jim odstranimo (odlotamo) oziroma zamenjamo radijske filtre, s čimer pridobimo možnost poslušanja tudi navzgornjih (ang. uplink) povezav.

Za poslušanje CCCH kanala uporabimo naslednji ukaz:

./ccch_scan -a 54 -i 127.0.0.1 -f 1 -o 1 -m

Pri ukazu smo uporabili nekaj parametrov. S parametrom -a povemo številko ARFCN-ja (bazne postaje), za katero naj se izvaja poslušanje. Z ukazom -i 127.0.0.1 zajete podatke pošiljamo na localhost, kjer jih nato lahko preberemo z Wiresharkom. Z ukazom -f 1 pa zahtevamo sleditvi sporočilom za dodelitev na namenski kanal tim. “Immediate assignment”. Zadnja dva parametra omogočita zapis surovih podatkov iz namenskih kanalov na izhod in to v obliki XML.

Wireshark bo morda potrebno zagnati z administratorskimi privilegiji, priporočljivo pa je uporabiti filter “gsmtap”, saj s tem izločimo prikaz ostalih (sistemskih) omrežnih podatkov.

Promet lahko vidimo tudi v Wiresharku, če poslušamo na lo, tim. “localhost” napravi in nastavimo filter gsmtap.

Mimogrede: Poslušanje navzgornjega kanala deluje na kratkih razdaljah (nekaj centimetrov) tudi, če ne predelamo telefona. Prav tako ccch_scan vsebuje TMSI filter za filtriranje le sleditvam na namenski kanal namenjenim samo določeni TMSI številki, preko parametra -t TMSI.

Poziv mobilnega telefona, prehod na namenske kanale, lociranje uporabnika

Bazna postaja neprestano pošilja pozive za preklop mobilnih telefonov na namenske kanale (ob klicu ali SMS sporočilih). Pri tem mobilni telefon identificira z IMSI oziroma TMSI številko. Če je poziv namenjen našemu mobilnemu aparatu, se le-ta odzove z odgovorom na poziv s pošiljanjem svojega TMSI-ja/IMSI-ja na RACH kanal. Bazna postaja za tem odda sporočilo za prehod na namenski kanal. Namenski kanal je lahko statičen ali pa skakajoč med frekvencami. Po preklopu na le-tega mobilni telefon odgovori z odgovorom na poziv tim. “Paging Response” sporočilom. Mobilni telefon nato zahteva spremembo tim. klase (ang. classmark change), in s tem preide v šifrirni način, bazna postaja pa odgovori z ukazom za šifriranje (ang. chipering mode command). Od tu dalje je promet šifriran.

Primer zajetega prometa z modificirano OsmocomBB programsko opremo

Zbiranje informacij o uporabniku preko SS7 signalnega protokola

Ker se mobilni telefoni v GSM omrežju ne identificirajo s svojo klicno številko, pač pa z IMSI oziroma TMSI, iz same analize zajetega prometa ni mogoče preprosto ugotoviti kateri mobilni telefoni se nahajajo v okolici.

Pri ugotavljanju identitete mobilnih telefonov si lahko pomagamo s SS7 omrežjem. Gre za omrežje (in signalni protokol), preko katerega se med seboj povezujejo vsi mobilni operaterji. Omrežje sicer ni javno dostopno, je pa do njega mogoče dostopati v primeru, da pridobimo operaterski dostop oziroma preko nekaterih operaterjev, ki ponujajo internetne storitve, ki omogočajo ne le HLR vpoglede (ang. HLR lookup).

Storitev takih operaterjev je na spletu mogoče najti kar nekaj, za namene priprave tega članka smo uporabili spletno stran http://www.routomessaging.com/, ki omogoča HLR vpoglede. Po brezplačni registraciji v spletni obrazec vpišemo telefonsko številko v mednarodni obliki, sistem pa nam vrne IMSI številko uporabnika, kodo države (MCC) in omrežno kodo (MNC) njegovega operaterja, ime domačega operaterja in države le tega ter kodo MSC (Mobile switching center).

Ravno MSC koda nam omogoča natančnejše lociranje uporabnika. Z informacijo o okvirni lokaciji posameznih uporabnikov bazirano na podatkih telefonskega imenika lahko na preprost način pridobimo informacijo dosega posameznih MSC centrov, s tem pa lahko uporabnika natančneje lociramo.

HLR vpogled preko Routo Messaging. Operater ponuja tudi masovno pošiljanje SMS sporočil

Lociranje mobilnega telefona je torej mogoče izvesti na več načinov. Če imamo telefonsko številko uporabnika izvedemo HLR vpogled in pridobimo njegovo IMSI številko. Če operater ne uporablja TMSI številk je identifikacija uporabnika v mobilnem omrežju preprosta.

Če pa operater uporablja TMSI številke imamo dve možnosti. Prva možnost je, da počakamo na posodobitev lokacije mobilnega telefona - takrat se preko omrežja prenese IMSI številka (in določi nova TMSI številka).

Druga možnost je, da mobilnemu telefonu pošljemo več SMS sporočil in potem gledamo katera TMSI številka sprejema podatke oziroma se v omrežju odziva. Množico poslanih SMS sporočil uporabniku pa lahko zakrijemo tako, da pošiljamo tihe oz. slepe SMS-e, ki jih uporabnik mobilnega aparata ne vidi. Taka SMS sporočila lahko oddamo preko GSM modema, pri pošiljanju pa v SMS PDU načinu nastavimo posebno zastavico PID=64 (SMS sporočila namreč lahko pošiljamo na dva načina - v tekstovnem načinu ali pa preko PDU (protocol description unit) načina). Obenem včasih tudi želimo potrdilo o prejetem sporočilu. To naredimo z zastavico TP_SRR.

Ta zastavica mobilnemu telefonu pove da naj le-ta zavrne SMS sporočilo (in naj ga tudi ne prikaže uporabniku), vendar pa nekateri operaterji taka sporočila blokirajo. V tem primeru lahko pošiljamo namerno pokvarjena sporočila, ki jih mobilni telefon ravno tako zavrne, operater pa ne.

Primer modemskih ukazov za pošiljanje takšnega SMS sporočila je naveden spodaj:

AT+CMGF=0 // nastavitev PDU načina
AT+CSMS=0 // preverimo ali modem podpira SMS ukaze
AT+CMGS=23 // pošlji sporočilo dolgo 23 oktetov
>0011000B916407281553F80000AA0AE8329BFD4697D9EC37

SMS PDU je najlažje zakodirati s Python knjižnico smspdu.

Podatke, ki jih vrne knjižnica nato vstavimo v zgoraj navedene modemske ukaze.

Obstaja pa tudi možnost, da ne vemo telefonske številke ciljne osebe (vemo pa, da mobilni telefon nosi s seboj). V tem primeru je osebo potrebno spremljati na več lokacijah in njen mobilni telefon prisiliti v posodobitev lokacije. Ob posodobitvi lokacije, se preko omrežja v nešifriranem načinu prenese IMSI številka mobilnega telefona ciljne osebe. Če na različnih lokacijah ugotovimo, da se preko omrežja prenaša ista IMSI številka, je to dober indic, da je IMSI številka morda pripada mobilnemu telefonu ciljne osebe.

V posodobitev lokacije mobilni telefon prisilimo tako, da ga za kratek čas “izključimo” iz omrežja. To je mogoče storiti z motilcem GSM signala in sicer tako, da GSM signal v okolici ciljnega telefona motimo za več kot 6 sekund. Po tem času mobilni telefon izgubi povezavo z omrežjem, sledi pa samodejen ponoven priklop v omrežje. GSM motilce je mogoče kupiti preko spleta, vendar slovenska carina zadnja leta aktivno preverja pošiljke z elektronsko opremo, če se v njih ne nahaja takšna oprema. Lahko pa si GSM motilec s pomočjo načrtov na spletu izdelamo sami.

Vsekakor pa velja opozoriti, da je uporaba motilcev GSM signala v Sloveniji prepovedana. Naj poudarimo, da za potrebe tega članka v slovenskih GSM omrežjih nismo uporabljali motilcev niti v GSM omrežje nismo oddajali kakršnikoli motilnih signalov.

samodejno iskanje TMSI-ja tarče

Varnost slovenskih mobilnih operaterjev

V okviru varnostne analize GSM omrežij slovenskih operaterjev smo najprej preverili uporabo TMSI številk ter uporabo šifrirnih algoritmov za zaščito podatkov pri prenosu v GSM omrežju.

Pogledali smo tudi katere podatke o naročnikih posameznega operaterja je mogoče dobiti preko SS7 omrežja z HLR vpogledom.

Kot je bilo pokazano v članku o spreminjanju klicne identifikacije, je poljubno spreminjanje klicne identifikacije mogoče pri vseh slovenskih operaterjih, poleg tega niti ne gre za varnostno ranljivost, pač pa za lastnost telefonskega omrežja, zato se s tem v tokratnem članku nismo ukvarjali. Smo pa ugotovili, da je mogoče v slabo zaščitenih GSM omrežjih ponarediti celotno mobilno identiteto uporabnika in to brez posedovanja njegovega mobilnega telefona in/ali njegove SIM kartice.

Uporaba TMSI številk pri slovenskih mobilnih operaterjih

Kot smo že navedli, naj bi se zaradi možnosti prisluškovanja in sledenja uporabnikom IMSI številka po omrežju prenašala čim redkeje. Kot smo namreč prikazali, je mogoče na podlagi telefonske številke zelo enostavno pridobiti IMSI številko, hkrati pa je mogoče IMSI številke v GSM omrežju zelo enostavno identificirati pri poslušanju pozivov omrežja telefonu in pošiljanju zahtev po storitvah.

Namesto IMSI številke naj bi GSM omrežje za identifikacijo mobilnega telefona uporabljalo naključno generirano TMSI številko. IMSI se preko omrežja še vedno prenese v trenutku, ko se telefon vključi ali ob lokacijski posodobitvi (ali pa, ko je potrebno obnoviti povezavo med IMSI in TMSI oz. generirati nov TMSI), primarno pa naj bi se za identifikacijo uporabljala TMSI številka.

Uporabo IMSI in TMSI številk smo preverili s približno 20-minutnim zajemom podatkov z naslednjim ukazom za TMSI in IMSI številko:

timeout 20 ./ccch_scan -a [ARFCN] 2> [ime_operaterja]
cat [ime_operaterja] | less | grep 'M([0-9x]\{8,12\})' | wc -l
cat [ime_operaterja] | less | grep 'M([0-9x]\{15\})' | wc -l

Pregled je pokazal, da od slovenskih operaterjev TMSI številko najbolj dosledno uporablja Mobitel (opaženih 8 IMSIjev, 24799 TMSIjev -- razmerje 0,000322594). Simobil je pri uporabi TMSI številke precej manj dosleden, saj je na njihovih baznih postajah mogoče opaziti precej več IMSI številk (opaženih 105 IMSIjev, 1749 TMSIjev -- razmerje 0,060034305). Najslabše pa je stanje pri Tušmobilu, kjer se IMSI številke uporablja najbolj pogosto (opaženih 19 IMSIjev in 123 TMSIjev -- razmerje 0,154471545). Spodnje slike nakazujejo uporabo TMSI in IMSI številk v različnih omrežjih. IMSI številke so tiste daljše, TMSI pa tiste, ki so krajše.

TMSI številke v Mobitelovem omrežju

TMSI in IMSI številke v Simobilovem omrežju.

TMSI številke v Tušmobilovem omrežju.

Uporaba šifrirnih algoritmov pri slovenskih mobilnih operaterjih

Način šifriranja posameznih operaterjev lahko ugotovimo z vpogledom v ukaz Ciphering mode, ki se prenese po omrežju. Iz ukaza lahko vidimo kateri način šifriranja oz. uporabo katerega algoritma zahteva bazna postaja. Pregled je pokazal, da slovenski operaterji uporabljajo sledeče šifrirne algoritme:

  • Mobitel: A5/1
  • Simobil: A5/3
  • Tušmobil: A5/1

Uporaba A5/1 algoritma v Mobitelovem omrežju.

V omrežju Mobitela smo uporabo A5/1 nekoliko podrobneje preverili. Mobilni telefon smo nastavili tako, da je zahteval uporabo A5/3, vendar je bilo – kot je razvidno iz spodnjih slik – sporočilo omrežja, da je na voljo samo A5/1:

Naš mobilni telefon Mobitelovemu omrežju sporoči, da je na voljo za A5/3 šifriranje...

...Mobitelovo omrežje pa odgovori, da se bo uporabljalo šifriranje A5/1.

Uporaba A5/3 algoritma v Simobilovem omrežju.

Uporaba A5/1 algoritma v Tušmobilovem omrežju.

Kot je bilo povedano že na začetku, je šifrirni algoritem A5/1 s kriptoanalizo mogoče dokaj preprosto zlomiti. Na srednje zmogljivem računalniku lahko tudi v nekaj minutah. Pri tem si lahko pomagamo tim. mavričnimi tabelami (gre za tabele s predizračunanimi vrednostmi delov šifrirnih ključev), ki so bile pripravljene v okviru projekta Airprobe in posebnim programom Kraken. Omenjene mavrične tabele in programska oprema so na voljo na internetu. O sami kriptoanalizi A5/1 morda kdaj drugič.

Po drugi strani je algoritem A5/3 veliko močnejši in je zato njegova kriptoanaliza bistveno trši oreh. Kot smo videli, Simobilovo GSM omrežje uporablja močnejši šifrirni algoritem (čeprav po naših informacijah to ne velja za vse dele Simobilovega omrežja), vendar je uporaba A5/3 šifriranja pri Simobilu precej zanimiva.

Preverjali smo namreč ali operaterji dovolijo uporabo A5/0 (to pomeni nešifriran prenos podatkov). To preverjanje smo izvedli s pomočjo aplikacije mobile (opisana je v nadaljevanju) s pomočjo ukaza “show support” (oziroma z ustrezno spremembo konfiguracijske datoteke ~/.osmocom/bb/mobile.cfg). Izkaže se, da Mobitel uporabe A5/0 ne dovoli, Simobil pa uporabo A5/0 dovoli (kar so sicer v lanskem intervjuju za Monitor absolutno zanikali), kar po našem mnenju predstavlja dodatno varnostno ranljivost. V omrežju Tušmobil tega nismo preverjali.

Če telefon to izrecno zahteva, Simobil omogoča izklop šifriranja (uporaba A5/0)

Odzivi mobilnih operaterjev

Do objave tega članka smo komentar prejeli samo s strani Telekoma. Zaradi njegove zgodovinske vrednosti ga objavljamo v celoti:

Spoštovani,

Mobitelovo omrežje je izjemno kakovostno, zanesljivo in varno. Zadostuje najstrožjim kriterijem in kljub številnim tovrstnim navedbam o vdorih in zlorabah mobilni komunikacij v Mobitelovem omrežju nismo zabeležili nobenega primera zlorabe identitete uporabnika.

Kar se tiče samega kodiranja, naj dodamo nekaj dejstev. Vsako mobilno omrežje je potencialno ranljivo, tudi kodirni protokol A5/1, predvsem zaradi številnih poizkusov vdora, ki jim je v zadnjih letih vedno bolj izpostavljen. Zato operaterji in proizvajalci stalno analiziramo nove možnosti, s katerimi bi zagotovili večjo varnost mobilnih omrežij. Za uspešno zaščito pred prestrezanjem pogovorov se v mobilnih omrežjih uporablja več različnih mehanizmov zaščite, ne le kodirni protokol A5 (ki je namenjen zagotavljanju zaupnosti samo na radijskem vmesniku med mobilnikom in bazno postajo), s katerimi je zagotovljena visoka stopnja varnosti. Pri tem je pomembno, da varnost zagotavljajo tako operaterji kot proizvajalci, in sicer na obeh segmentih, omrežju in mobilnih terminalih.

Kodirni protokol A5/3 sicer ni najnovejša rešitev*. GSMA se za njegovo uvedbo v terminalih in opremi omrežja prizadeva že vsaj od leta 2004. V omrežja, predvsem pa v terminale, se postopoma uvaja že nekaj let tako pri nas kot po svetu, vendar imajo nekateri stari terminali težave z A5/3, zato še ni v celoti nadomestil A5/1. Nove bazne postaje pa že podpirajo protokol A5/3 pri govornih storitvah v omrežju GSM. V Telekomu pa seveda intenzivno spremljamo nadaljnji razvoj na tem področju (za več informacij obiščite ETSI).

Omeniti pa moramo, da je bil tudi že protokol A5/3 tarča napadov in je kar se tega tiče prav tako ranljiv. Zaradi tega poteka intenzivni razvoj novih algoritmov za zaščito vsebine komunikacije med telefoni in baznimi postajami s sistemih GSM, npr. A5/4. Jasno pa je, da bo tarča vsak šifrirni protokol, saj se bodo vedno našli posamezniki oz. skupine, ki bodo zaradi različnih interesov skušali razbiti zaupnost šifrirane komunikacije brezžičnega radijskega prenosa (na terenu, izven prostora pod kontrolo operaterja).

Sicer je naš fokus razvoja na sodobnih tehnologijah 3 G in LTE, kjer so aktualni še močnejši principi šifriranja komunikacije uporabnikov. Naši uporabniki pa vse več prometa opravijo preko našega 3,5 G omrežja, ki je z vidika šifriranja komunikacije tudi najbolj varno.

Poleg tega naj opozorimo, da gre pri nezakonitem prestrezanju komunikacij za delovanje na področjih, ki ni v dosegu kontrole operaterja (brezžični radijski prenos). Hkrati ne pozabimo, da je vsakršno nezakonito prestrezanje komunikacije ne glede na obliko ali način nezakonito početje.

Lep pozdrav,

Nataša Osolnik

Služba za korporativno komuniciranje

Nadaljevanje

Zakoniti nadzor v Sloveniji (2.del)

Zakoniti nadzor v Sloveniji (2.del)

V soboto, 2. oktobra 2004, je v zgodnjih jutranjih urah, v času predvolilnega molka, več kot 70.000 uporabnikov Mobitela prejelo nezaželena in nenaročena sporočila SMS s politično vsebino. Iz fotografije spornega SMS sporočila, objavljene v Mladini, je razvidno, ...

Preberi cel članek »

Spreminjanje klicne identifikacije 101

Spreminjanje klicne identifikacije 101

Konec leta 2011 je več slovenskih medijev poročalo, da naj bi poslanka Državnega zbora Melita Župevc iz enega svojega mobilnega telefona prejela klic na svoj drugi mobilni telefon, javil pa naj bi se neznan moški glas. Na novinarska vprašanja so mobilni operaterji pojasnili, da takih primerov še niso ...

Preberi cel članek »

Varnost slovenskih GSM omrežij II

Varnost slovenskih GSM omrežij II

Članek je dopolnitev predhodno objavljenega članka. Ker se je izkazalo, da nekateri mobilni operaterji skrbijo za zaupnost komunikacije v svojih omrežjih z več mehanizmi zaščite (in domnevno ne samo s kodiranjem z zastarelim algoritmom), s katerimi je zagotovljena visoka stopnja zaščite, smo se tovrstne ...

Preberi cel članek »

Varnost slovenskih GSM omrežij III

Varnost slovenskih GSM omrežij III

del I, del II V torek smo pisali tudi o tem, da Si.Mobil v svojem omrežju dovoli uporabo A5/0 (nešifriranega prenosa podatkov). Tudi njih smo poprosili za komentar. Med čakanjem na odgovor so se razmere rahlo spremenite, a najprej nekaj uvoda. V okviru projekta OsmocomBB je bila razvita aplikacija ...

Preberi cel članek »

Varnost slovenskih GSM omrežij IV

Varnost slovenskih GSM omrežij IV

Štirinajst dni po zadnjem članku na to temo je čas, si si še enkrat pogledamo odzive. S strani Tušmobila kljub večkratnim obljubam še vedno nismo prejeli odgovora, so pa zato zmogli napisati odziv za Delo: V članku Zaradi slabe zaščite omrežja mogoče prisluškovati (Delo, 13. 6. 2012, stran 3) so ...

Preberi cel članek »