» »

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 navedbe odlo─Źili preveriti.

V naslednjem koraku smo opisali teoreti─Źne osnove in prakti─Źno izvedbo kriptoanalize A5/1 protokola in prikazali, kako je mogo─Źe razbiti s tem algoritmom ┼íifrirana SMS sporo─Źila.

Ponovno opozarjamo, da je uporaba opisanih metod za prestrezanje tujih komunikacij protizakonita.

Kriptoanaliza SMS sporo─Źila

Kot re─Źeno, je ┼íifrirni algoritem A5/1 s kriptoanalizo mogo─Źe dokaj preprosto zlomiti. V nadaljevanju bomo pokazali, kako je to mogo─Źe storiti v primeru SMS sporo─Źil. Zelo podoben, ─Źeprav ne povsem enak postopek, je mogo─Źe uporabiti za kriptoanalizo govornih komunikacij.

Za zajem ustreznih podatkov iz GSM omre┼żja potrebujemo burst_ind vejo OsmocomBB Git skladi┼í─Źa. Vendar njihova programska oprema vsebuje dolo─Źene napake, zato smo OsmocomBB programsko opremo nekoliko prilagodili in popravili aplikacijo ccch_scan, da omogo─Źa zajem podatkov iz poljubnega ARFCN-ja.

Aplikacija omogo─Źa de┼íifriranje kontrolnega kanala in tudi prehod na ┼íifriran kanal (ko opazi sporo─Źila Immediate Assignment), prej pa moramo poznati najmo─Źnej┼íi kontrolni kanal operaterja, na katerem ┼żelimo analizirati promet.

Cilj kriptoanalize ┼íifriranega sporo─Źila je seveda pridobitev sejnega ┼íifrirnega klju─Źa (Kc).

Za za─Źetek smo iz posameznih podatkovnih izbruhov ┼żeleli pridobiti surove podatke (to smo potrebovali za potrebe razhro┼í─Źevanja). Zato smo pripravili orodji burst_decode in burst_encode. Orodji omogo─Źata, da podatkovne izbruhe sestavimo v podatkovni okvir, nato pa s pomo─Źjo ┼íifrirnega klju─Źa na koncu iz vsega skupaj pridobimo surove podatke.

Izbruhi so konvolucijsko ┼íifrirani ter prepleteni. S tem na─Źinom vnesemo redundanco v podatke in tako omogo─Źimo de┼íifriranje tudi v primeru napak pri zajemu. Orodji burst_decode in burst_encode se mo─Źno opirata na kodo v datoteki xcch.c, katere del za ┼íifriranje smo ravno tako spisali sami, saj v OsmocomBB datotekah ni javno dostopen. V podrobnosti delovanja konvolucijskega ┼íifriranja ali prepletanja se ne bomo poglabljali, le na kratko omenimo, da gre pri konvoluciji za nekaj podobnega kot navzkri┼żno korelacijo (ang. cross-correlation), kar nam v kriptografijo prina┼ía redundanco oziroma omogo─Źa de┼íifriranje med prenosom rahlo okvarjenih podatkov.

Primer šifriranja/dešifriranja podatkov okvirja.

Primer šifriranja/dešifriranja podatkov okvirja.

Dešifriranje podatkovnega okvirja v praksi...

Dešifriranje podatkovnega okvirja v praksi...

Kriptoanaliza A5/1 s pomo─Źjo mavri─Źnih tabel

Predpostavimo, da v nekem ┼íifriranem okvirju vemo kak┼íni podatki se prena┼íajo (torej vemo kak┼íno je ne┼íifrirano besedilo). Na podlagi tega lahko s pomo─Źjo programa burst_encode dobimo posamezne podatkovne izbruhe, dobimo pa lahko tudi kodni tok podatkov (ang. key stream; KS), ki je takrat podatke za┼íifriral. Algoritem A5/1 zgenerira 114 bitov KS za navzdolnjo (ang. downlink) in 114 bitov za navzgornjo (ang. uplink) povezavo. ─îe vzamemo samo kodni tok podatkov za navzdolnjo povezavo in naredimo reverzno operacijo nad podatki, pridemo do razli─Źnih za─Źetnih stanj A5/1 algoritma. V praksi se izka┼że, da dobimo le eno ali dve za─Źetni stanji, ostala niso mogo─Źa. Zapleten postopek delovanja reverznih operacij A5/1 si lahko preberemo na naslovu http://reflextor.com/trac/a51/wiki/Back....

V osnovi za razbijanje A5/1 potrebujemo 2TB trdi disk z mavri─Źnimi tabelami in indeksnimi datotekami, mobilni telefon na katerem te─Źe OsmocomBB in kak┼íen mesec dela in dopolnjevanja OsmocomBB orodij do te mere, da je to prakti─Źno izvedljivo, saj javno dostopna OsmocomBB orodja nekaterih klju─Źnih delov ne vsebujejo.

Posebej poudarjamo, da je kriptoanaliza ┼íifriranih sej nezakonita, razen seveda v primeru, ko razbijamo podatke lastnih sej! Poudarjamo tudi, da so bili v nadaljevanju opisani postopki izvedeni izklju─Źno v raziskovalne namene na lastnih sejah, prav tako opisani postopki ne vsebujejo nekaj klju─Źnih informacij, zato enostavna ponovitev opisanih postopkov ni mogo─Źa. ┼áe enkrat poudarjamo, da smo prestrezali in razbijali samo svoje lastne seje.

Program Kraken, ki ga uporabljamo za kriptoanalizo obstaja v dveh razli─Źicah. Prva uradna razli─Źica je na voljo na naslovu git://git.srlabs.de/kraken.git, druga pa na naslovu http://svn.g3gg0.de/svn/kraken-win32/. Obe razli─Źice znata koristiti mo─Ź grafi─Źnih kartic, ter ve─Ź diskov, tako da lahko iskanje pravilnega klju─Źa v optimalnih pogojih traja le nekaj minut (v praksi kar nekaj minut). Po na┼íih izku┼ínjah je druga razli─Źica bolj stabilna, deluje tudi v okolju Windows, ter ima bolj┼ío funkcionalnost, ─Źeprav se obe aplikaciji ob naklju─Źnih trenutkih sesujeta in nista preve─Ź stabilni. Gsmcrack.py je bil posodobljen za delovanje z drugo razli─Źico.

V naslednjem koraku potrebujemo A5/1 mavri─Źne tabele (cca. 1.5 Tb), ki jih s pomo─Źjo programa Behemoth (Kraken in Behemoth sta sicer tudi znani mitolo┼íki po┼íasti) zapi┼íemo na trdi disk v surovi obliki in indeks datoteke (cca. 800 Mb), ki jih shranimo v podimenik kraken/indexes). Postopek kako zapi┼íemo mavri─Źne tabele na disk je opisan na URL naslovu: <http://lists.lists.reflextor.com/piperm...> in ga ne bomo opisovali oz. bomo to nalogo prepustili bralcu. V naprej predvidevamo, da so indeksne table, ter konfiguracija nahajajo v mapi kraken/indexes.

Program Kraken nato za┼żenemo z ukazom:

./kraken ../indexes/

Program gsmcrack.py ima mo─Źan predikcijski sistem, ter zna zajete podatke razbiti samodejno, ter ugotoviti enkripcijski klju─Ź. Primer razbijanja seje s gsmcrack je naveden spodaj.

./gsmcrack.py capture --crack --data bursts_20120125_1318_112_811308_41.dat --prediction predictions/sys
Loading file crack/bursts_20120501_0320_116_2188034_41.dat 
Loading file crack/bursts_20120501_0321_116_2207014_51.dat 
Loading file crack/bursts_20120501_0322_116_2212824_49.dat 
Cracking following captures: 
Capture file: crack/bursts_20120501_0320_116_2188034_41.dat 
With, 57 frames available 
Capture file: crack/bursts_20120501_0321_116_2207014_51.dat 
With, 51 frames available 
Capture file: crack/bursts_20120501_0322_116_2212824_49.dat 
With, 55 frames available 
We are guessing: 
{ "method": "offset", "args": { "offset": 5, "prediction": "03620d0518032b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b", "process_count": 2}, "seek_mode": "normal"} 
{ "method": "offset", "args": { "offset": 3, "prediction": "03420d0518032b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b", "process_count": 2}, "seek_mode": "normal"} 
{ "method": "offset", "args": { "offset": 1, "prediction": "03420d0518032b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b", "process_count": 2}, "seek_mode": "normal"} 
{ "method": "offset", "args": { "offset": 7, "prediction": "03620d0518032b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b", "process_count": 2}, "seek_mode": "normal"} 
Using file crack/bursts_20120501_0321_116_2207014_51.dat 
Start of cipher is at frame 2207153 
Cracking ul: 0 frame 2207240 with prediction, 03620d0518032b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b 
Using burst 3 
Running kraken for keystream 000011100001110110110000011010010111001101001010111010110110110000001010101100100001000111000100001100101001111110 
Crack id is: 4 
New result for crack: 4 DDD08577F92F710D 29 
End of crack: 4 
Kraken was sucesfull 
Trying to find Kc for burst 0 
Trying to find kc for key DDD08577F92F710D, offset 29, framecount1 3408246, framecount2 3408147 and keystream 000010101010011111110010001111011000111100010000010101000011110100011000111111001110001110011111101001001010110000 
Kc was found 
Key crack/bursts_20120501_0321_116_2207014_51.dat for capture 211159d51948a1df found with rule 0 in 0 rounds 
('crack/bursts_20120501_0321_116_2207014_51.dat', '211159d51948a1df', 0, 0)
Samodejno iskanje &#353;ifrirnega klju&#269;a Kc s pomo&#269;jo gsmcrack.py

Samodejno iskanje šifrirnega ključa Kc s pomočjo gsmcrack.py

Na┼í program gsmcrack.py i┼í─Źe za┼íifrirane okvirje, izra─Źuna kodni tok podatkov s pomo─Źjo predikcij ter te podatke po┼ílje programu Kraken (program Kraken lahko te─Źe tudi kot stre┼żnik na drugem ra─Źunalniku).

Program najde ┼íifrirni klju─Ź, ko so predikcije dovolj dobre in napak v podatkih ni veliko. Podatki se namre─Ź ┼íifrirajo po redundan─Źnem ┼íifriranju, torej jih razbijamo z mo┼żnimi napakami. Podrobnosti o sami kriptoanalizi v ─Źlanku ne bomo opisovali.

Po na┼íih izku┼ínjah je najte┼żje najti dobre predikcije in pri tem efektivno razbiti klju─Ź v doglednem ─Źasu.

Poganjanje Krakena v &#382;ivo. Na sredini je trdi disk z A5/1 mavri&#269;nimi tabelami.

Poganjanje Krakena v živo. Na sredini je trdi disk z A5/1 mavričnimi tabelami.

de&#353;ifrirano SMS sporo&#269;ilo, SMS sporo&#269;ila je mogo&#269;e de&#353;ifrirati, &#269;e se prena&#353;ajo preko 2G

dešifrirano SMS sporočilo, SMS sporočila je mogoče dešifrirati, če se prenašajo preko 2G

Ko enkrat pridobimo sejni ┼íifrirni klju─Ź Kc, lahko do naslednje menjave le-tega prestrezamo vso z A5/1 ┼íifrirano komunikacijo med mobilnim telefonom in GSM omre┼żjem. S pomo─Źjo tega klju─Źa je mogo─Źe prislu┼íkovanje pogovorom in prestrezanje vsebine SMS sporo─Źil, vendar slednje velja le v primeru, da se SMS sporo─Źila prena┼íajo po 2G omre┼żju in ne preko GPRS. GPRS za ┼íifriranje sicer uporablja algoritme GEA/x (GPRS Encryption Algorithm), ki so sicer ravno tako kot A5/x lastni┼íki oz. tajni, njihovo delovanje pa je zelo podobno delovanju A5/x algoritmov. A kot so pokazali raziskovalci podjetja SRLabs, je tudi GEA/x mogo─Źe zlomiti z razli─Źnimi napadi.

Demonstracija

V spodnjem videu si lahko ogledate postopek identifikacije ciljnega mobilnega aparata glede na telefonsko ┼ítevilko z uporabo tihih SMS sporo─Źil in postopek de┼íifriranja SMS sporo─Źila, ki je bil poslan ciljnemu aparatu.

Komentarja SiMobila in Tu┼ímobila kljub zagotovilom njunih PR slu┼żb, da bodo komentarje dostavili tekom v─Źeraj┼ínjega dne, do objave tega dodatka ┼íe nismo prejeli.

Šifriranje nosilcev podatkov v okolju Linux in Windows

Šifriranje nosilcev podatkov v okolju Linux in Windows

Cryptography is a data-protection technology just as gloves are a hand-protection technology. Cryptography protects data from hackers, corporate spies and con artists, whereas gloves protect hands from cuts, scrapes, heat, cold and infection. The former can frustrate FBI wiretapping, and the latter can ...

Preberi cel članek »

Vzpostavitev v celoti šifriranega sistema

Vzpostavitev v celoti šifriranega sistema

Priporočamo, da si najprej preberete članek z naslovom: [st.povezava /clanki/07003 Šifriranje nosilcev podatkov v okolju Linux in Windows]. Opozorilo: Uporaba spodaj opisanih postopkov lahko privede do resne izgube podatkov ali do okvare sistema. V nekaterih nedemokratičnih državah je osebna uporaba ...

Preberi cel članek »

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

Intervju z Dustinom Kirklandom, glavnim razvijalcem sistemov za šifriranje v Ubuntuju

English version Dustin Kirkland je Ubuntu Core razvijalec, zaposlen pri podjetju Canonical. Preden je začel delati na razvoju Ubuntu serverja, je preživel 8 let pri IBM-u. Trenutno je osredotočen na razvoj Ubuntu Enterprise oblaka za prihajajočo različico Ubuntuja, 10.04 LTS, pred tem pa je delal na ...

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

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 ...

Preberi cel članek »