The big GSM write-up – how to capture, analyze and crack GSM? – 1.

So. I had some requests asking me about how I did what I did with GSM. What tools did I use, what hardware and what options?
Since I believe strongly that GSM needs to be “out in the hands of the people” meaning everybody should have access to cheap hardware and free, opensource software that helps understanding GSM in practice I thought I will create a series of write-ups describing the whole process from the beginning.
Enjoy! 🙂

First Step: understanding the basics of GSM, what’s the theory behind GSM-cracking?

GSM (Global System for Mobile communication) was introduced as a standard in 1991. The cipher used in GSM hasn’t been really well known but already in 1994 Ross Anderson published a theory about how to crack the encryption.

Later many people contributed to this theory essentially making GSM theoretically broken since 2003, but practical tools existed only for governmental organizations and mobile operators for such high prices nobody from the hacker community could buy them (not mentioning none of the manufacturers would have given him/her anything).
And this was the time when Karsten Nohl decided to dedicate some years as a researcher and as a manager to create both software and hardware that could turn theory into reality.

Every single year since 2009 Karsten and one member of his team released something, a milestone if you wish, which contributed to the death of myth that GSM is secure.

But there was one problem: all the details could never be released because of the rules of ‘responsible disclosure’ meaning that you can not give access to anybody to tools that exploit unpatched vulnerabilities in a live system. And boy, GSM does have quite some of these. However during the years we always got something, a piece of the puzzle so to speak:

  • 2009 – GSM rainbowtables with the tool Kraken (created by Frank A Stevenson) – they are useless without proper hardware that can capture GSM data but once we have the hardware cracking is possible
  • 2010 – airprobe which makes it possible to capture non-hopping GSM downlink channels with the USRP (combined with Kraken we have a full downlink sniffer on a single cell)

I am not listing 2011 here because there was no code released in that year (since the presented solution was a full blown GSM eavesdropping attack there was nothing to be released).

So, the landscape of GSM hacking consists of two hardware options: USRP or OsmocomBB. The USRP costs a lot, OsmocomBB has pretty much no code available.

My ideal setup would be a combination of these two: cheap hardware and software already available. Is there such a solution? Yes, there is.
You can use an RTL-SDR stick to capture GSM data from the air, just like you would do with a USRP. It is not as accurate, it does lose sync sometimes, but it works. And not only for single transmissions (SMS) but also for calls. I tested both, and I can confirm that it works.

So, now we have an established platform: we are going to sniff single frequency (non-hopping) GSM downlink-traffic. These are our limitations, airprobe is only capable of decoding the downlink and RTL-SDR isn’t capable of hopping along (although in theory you can use more sticks and lock each of them to a frequency and then re-construct the transmission by combining data from all dongles).

BEFORE YOU CONTINUE: if you haver never done anything with GSM, don’t know what a ‘burst’ is, or never heard of a ‘timeslot’ please stop reading this post and read at least the first 4 chapters of this introduction:

UPDATE: The page I referenced here went offline, so here is a PDF containing all its content.

Steps to crack GSM (originally outlined by Karsten Nohl):

  1. Get the TMSI of the victim
  2. Analyze the cell you and the victim are camping on
  3. Capture traffic and use the results of your analysis to construct input data for Kraken
  4. Use Kraken to crack the key
  5. Use the key to decode the data you captured

Get the TMSI of the victim

TMSI stands for Temporary Mobile Subscriber Identifier which is used on GSM networks to avoid the transmission of any information that would possibly identify a certain person (customer). We need to know this ID so we can tell when the victim is being paged (meaning that he/she is going to receive something from the network – call or SMS).
The idea behind uncovering a TMSI is quite simple: if the victim receives anything from the network he/she will get paged. So if we keep sending something to the victim (call/SMS) we can correlate the pagings we observe on the air with the frequency of the transactions we initiate. (this technique was first presented at 27c3 by Sylvain Munaut)
The ideal “thing” to send is a silent SMS: it will not show up at all on the victim’s phone (no sound, no notification, nothing) but we will get an acknowledge from the victim saying that our SMS was delivered.

Example scenario: we observe pagings and figure out that they page twice for each transaction, so if we send 3 silent messages there should be a TMSI which has been paged 6 times. By altering the number of messages sent we can quickly distinguish false positives from the real answers.

Test results: I actually did this attack at Hacktivity with a room full of people (meaning that the cell serving us was quite busy) and on my first attempt using 3 messages I only got two results back (meaning one of them was a false positive). Repeating the process would probably eliminate the false positive easily (there is very little chance that the same false positive would show up).


Analyze the cell

Since GSM cracking is based on knowing the content of encrypted bursts we need to figure out some information about the cell’s configuration. But wait you might say, what’s the point of this, ‘knowing the content of encrypted bursts’ renders encryption useless, doesn’t it?
Yes and no. Of course if you know the content of something that is encrypted there is no point in encryption. But in case of GSM it isn’t so simple: there are some bursts that are transmitted periodically, usually containing information about the system (System Information bursts). The only rule about these bursts is that they need to be transmitted no matter what. Even if the connection is currently encrypted these bursts will be transmitted (naturally in encrypted form).
So if we keep looking at the cell’s broadcast channel we can easily find a pattern which could be for example something like this

Paging Request for TMSI 11223344
Paging Request for TMSI 55667788
System Information Type 6
Empty Burst

Paging Request for TMSI 99887766
Paging Request for TMSI 00112233
System Information Type 5
Empty Burst

Paging Request containing TMSI 77001122
Paging Request containing TMSI 66005577
System Information Type 1
Empty Burst
and so on. As you can see the pattern repeats itself, just the type of the System Information changes, but for example there is always an empty burst at the end. This is just a fictional pattern but I hope you see the idea: some of these bursts are transmitted even if the connection is encrypted.
So if we look at the cell’s traffic, save the cleartext of a System Information Type 5 message, then capture some encrypted data containing the same message we can do:

cleartext System Information Type 5 XOR encrypted System Information Type 5

The result is the so called keystream (that comes out of the encryption function A5/1). Guess what do we need to feed our cracker, Kraken with? Yep, A5/1 keystream.

The challenge of course is to determine which burst of all the encrypted ones is the one containing in this case the System Information Type 5 message (again, we could have chosen any other message which has a known content). That’s why we need to analyze the cell’s configuration and make maybe one-two test calls to see the call setup.
Usually the call setup always happens the same way, so once you figured out what messages are sent during a call-setup you can safely assume that the same messages will be transmitted whenever there is a call-setup.

Using Kraken

That’s pretty straight forward: download the 1.6 TB of rainbow-tables, write them out to a hard drive and then fire up Kraken.
After it is ready just give it the crack command followed by the burst you would like to crack, like this:

Kraken> crack 001101110011000000001000001100011000100110110110011011010011110001101010100100101111111010111100000110101001101011

Decrypting traffic

Since GSM could be running in many different configurations you might need to try out more config. options of the tool go.sh to get it working properly. Otherwise there isn’t anything fancy about this step, all you need to do is pretty much giving it the key, the filename and ‘let it do the magic’.

This is the end of the first part of the series. I covered just the history of GSM hacking, what hardware do we have to do GSM hacking and basic theory behind the attack. In the next part we are going to set up our environment, then start real hacking with it. Stay tuned!

FEMTOresearch: egy váratlan segítő kéz

A mai napom igen igen nagy hírrel kezdődött: a berlini srácok megengedték, hogy az ő Vodafone FEMTOcellájukat használjam az idén, azaz végre abbahagyhatom az eBay kutakodást, és egy megfelelő eszközzel láthatok neki a dolognak.

Az egészben annyi a szépséghiba, hogy sajnos nem tettem bele érdemi munkát egyelőre, hiszen innentől kezdve a click-and-hack metódus fog érvényesülni, de ettől függetlenül legalább a témára felhívhatom a figyelmet, ami azért egy eredmény.

Meglátjuk, hova fajul a dolog, most viszont irány az eBay: van 3 eladó femtocellám 😉

Vodafone FEMTOcell: nem adod magad könnyen?

Itthon az íróasztalom lassan úgy néz ki, mint egy rosszabb elektronikai bazár.

Az elmúlt hetekben erőteljesen ráfeküdtem a Vodafone FEMTOcellák problémájára, egyelőre annyit sikerült elérnem, hogy összesen 3 db ül itt kibelezve az íróasztalomon, bámulván rám mint egy árulóra. Az első, a Sure Signal 2 jelenleg pihenőpályán van, ha az van amit sejtek és hardveresen kilőtték benne a JTAG & Debug lehetőségeket, akkor valószínűleg megy vissza az eBayre.

A második pont a megfelelő verziójú, Sure Signal 1, még hozzá az 1.0-s NYÁK revízió. Természetesen ezt sikerült elrontani, az előző képen látható forrasztás egyik vezetéke elengedett, de maga a forrasztás olyan jól sikerült, hogy az alaplapi réz-szemet is magával hozta a kis aranyos, ezzel csak TXD-vé (azaz egyirányúvá) alakítván a kommunikációt. Próbáltam mindenféle varázsszóval (root <enter> newsys <enter> ping <ipcímem>) tesztelni, hogy hall-e engem, de sajnos nem, szóval valószínűleg kapott egy szoftver-frissítést ami kiiktatta a serial-logint.

A harmadik szintén egy Sure Signal I, a hirdető szerint nem vette olyan régen, és alig volt csatlakoztatva a hálózatra. Felcsillant a remény, hogy ez akkor nem kaphatott szoftver-frissítést. Már már azt hittem, sima az ügy. Meghozta a postás, szétnyitom, belül minden rendben lévőnek tűnik, de hiányzik a HiLo (2G-s modul, melynek szerepe egyszerű: a környező 2G-s adóállomásokkal meghatározza a pozícióját és ezáltal finomhangolja a rádiós részét a femtonak) chip. Gondoltam nem akkora gond ez, a THC szerint amúgy is leforrasztható a HiLo mindenféle következmény nélkül. Összekötvén mindent semmi jel nem volt. Kellemetlen szituáció, százszor is ellenőriztem a kapcsolási rajzot pontosan kimértem multiméterrel is a pineket, és valóban nem stimmelt valami: a FEMTO adó, azaz TXD pinje konstans 3,6V-ot adott, holott a soros kommunikációban egy éppen adó pinen az áram 0,6-3,6V között ugrál folyamatosan! Ezt egyszerűen tesztelheti bárki, pl. egy USB-soros átalakító megfelelő pinjére rácuppanva multiméterrel azonnal látszik, hogy elkezd ugrálni össze vissza a műszer.
Megkérdezvén a berlini srácokat kiderült, hogy a dolog azért nem működik, mert a Vodafone mielőtt kihozta volna a Sure Signal 2-t még gyorsan meg akarta oldani a Sure Signal I-ek biztonsági gondjait, méghozzá a következő módon:
-v1.0 NYÁK: biztonsági szoftver-frissítés a neten át, a soros porton deaktiválja a login-promptot (elméletileg boot üzenetek vannak, de azokat én nem láthatom lévén csak TXD vagyok)
-v1.5 NYÁK: ez a kellemetlen, egy kívülről teljesen ugyanolyan doboz, csak éppen belül már egy újragondolt verzió van, ebből hiányzik a HiLo modul és hardveresen ki van iktatva a JTAG & serial stb.

Így már jól látható, hogy a szituáció egyelőre nem túl rózsás, de nem adom meg magam egykönnyen, addig járom továbbra is az eBayt, amíg nem találok egy soha ki nem nyitott, hálózathoz soha nem csatlakoztatott, több mint egy éves Sure Signal I-t ;-).

Vodafone FEMTOcella: második sebesség

Sokáig nem írtam erről a projektről, pedig nem felejtettem el, csak félreraktam egy kicsit amíg nem jut rá több időm.

Most, hogy vége a vizsgaidőszaknak, és van egy kis szabadidőm azonnal visszatértem a dologra és egy multiméterrel felszerelkezve elkezdtem méregetni a NYÁK-on található, összesen mintegy 30 darab réz-szemet, keresgélvén egy serial-port szerűséget rajtuk. Közben felvettem a kapcsolatot azzal a 3 sráccal, akik a berlini egyetemen kutatják a témát és igen szép eredményről tudtak beszámolni a 2011. októberi Blackhaten (konkrétan mindent feltörtek, amit csak lehetett ezzel az eszközzel -> nice job :D). Ők a francia SFR által használt femtocellába törtek be, majd a rajta futó HTTP-server PUT parancs-feldolgozójában talált hibával szépen remote root-ra törték az eszközt. Egy nagyon szép, részletes és jól megírt blogposzt mutatja be az exploitot.

Én viszont egy másik modellel rendelkezem, a Vodafone Sure Signal II-vel, amelyiknek több jellegzetessége is van:
1. Nem létezik rá egyelőre semmilyen hozzáférés (vagy csakis nem dokumentált)
2. A magyar Vodafone is használja, és “feltörhetetlen szoftverrel rendelkezik” (tavalyi sajtóközlemény a femtocellák biztonságát firtató kérdésekre)

Természetes, hogy ezek után már nagyon is adott a motiváció, hogy sikeresen behatoljak az eszközbe, ám ez egyelőre még nem sikerült. Itthon csak egy multiméterem van, amely nem elég egy serial port felfedezéséhez, ehhez mindenképpen igénybe kell vennem egy egyetemi oszcilloszkópot is. Mivel jelenleg nincs egyetem, ezért a projekt ezen részét addig hanyagolom, amíg újra nem indul a mókuskerék.

Addig viszont sikerült eBay-ről igen nyomott áron szereznem egy Sure Signal I-et, amelynek fő tulajdonsága, hogy a THC már darabokra törte, kb. pontosan olyan szinten, mint a berlini srácok az SFR-féle hardvert.

Első körben tehát ezen a kitaposott ösvényen fogok elindulni, remélhetőleg sikerrel. Amint eredményre jutok, először a Vodafone-nak szólok, hiszen ez teljes mértékben az ő dolguk elsősorban.

Remélem, hamarosan újabb posztot írhatok a témában.


Sajnálom, hogy ennyire elhanyagoltam a blogot mostanság, de sok dolgom volt, rohangáltam erre arra.

Nézzük csak mi a helyzet:
– A Vodafone dobozt félreraktam, nincs idÅ‘m most ezzel dolgozni, majd talán októberben
– Sikerült megoldani az eddigi közösségi WiFi-törés gondjaimat, mostantól kezdve akár 20 ember is törheti velem együtt ugyanazt az AccessPointot anélkül, hogy bárkinek is elszállna a cucc, jeee
– Az Linuxos ExpressCard support és a ExpressCard-to-PCMCIA átalakító gyártóját mind elküldeném egy kicsit nyaralni, mivel 2 nap tömény szívás után sem működik a cucc (not at all), köszönöm…
– Megszereztem az EC-Council féle C|EH, azaz Certified Ethical Hacker (312-50) minÅ‘sítést

Vodafone doboz – a homály kezd oszladozni

Ma megkaptam hegylako20 kollégától a hűtőborda-mentesített Vodafone NYÁK-ot, hatalmas köszönet illeti őt ezért! Bárkinek bármilyen finomelektronikai-munkára lenne szüksége őt keresse, mert gyorsan, pontosan, szépen dolgozik.

Érdekes módon a nagyobbik lap alatt nem volt semmi, csak réz, ez gondolom az antenna. A kisebbik alatt viszont ott volt maga a főnök: picoChip PC302-es femtocella SoC, amely sok mindenből áll, többek között egy ARM processzorból is. Ajánlott a gyártó oldalát áttanulmányozni, ahol ingyenes regisztráció után letölthető pár információ a cuccról. Egyelőre látok közvetlenül mellette 4 darab réz-pöttyöt, erős a gyanúm, hogy ezeket nem véletlenül vezették ki pont a chip mellé.

Vodafone doboz, még mindig :)

Folytatom a Vodafone doboz NYÁK-jának visszafejtegetését, Zoltán kommenterem hathatós közreműködésének köszönhetően újra kedvet kaptam a dologhoz, lássuk egyelőre az összes már azonosított IC-t:

Jövő héten leszedem a hűtőlapokat a két fő ICről, meglátjuk mit találok alattuk.

Vodafone doboz, folytatás

Volt egy kis idÅ‘m, kiméregettem multiméterrel az eszközön meredezÅ‘ 4 darab tüskét (reménykedvén, hogy egy soros port 4 pinjét tapogatom éppen), itt az eredmény…hát szerintem ez nem egy soros port, de holnap beszélek egy kompetensebb emberrel ez ügyben, valaki esetleg látott már ilyet?

Mivel olvashatatlanok a mérések: 0V, 2,59V, 3,3V, 0,01V
Minden illik a képbe, kivéve a 2,59V-ot, annak ott nem kéne lennie :S


Még kb. 1 hónapja beszereztem az Egyesült Királyságból egy Vodafone Femtocellát, ismertebb nevén Sure Signal-t. A lényege, hogy az otthoni Internetkapcsolaton át bemegy a Vodeafone központba, a másik oldalon viszont 3G jelet “csinál”, így akinél gyenge a jelerÅ‘sség, az feldobhatja maga körül kicsit a térerÅ‘t.

Persze engem nem ez a része izgatott, sokkal inkább az, hogy ezzel lehallgatható-e bármilyen 3G-s adatforgalom, vagy sem? A válasz érdekében mélyebbre kell kicsit ásnunk, hogyan is működik egy ilyen kis cella?
Van benne egy rádiós részleg, egy ARM processzor ami egy nagyon miniatűr, lecsupaszított embedded Linuxot futtat, illetve egy hálózati interfész, amely IPsec-et épít fel a központtal, és nagyjából csak továbbít mindent ami bejön a rádión be a központba. Azt mondanom sem kell, hogy az embedded Linux-ba való betörés és root jog szerzés már megoldották mások, sÅ‘t annál sokkal többet is csináltak: saját IPsec kulcsok felpakolása révén lehetséges az egész rendszert elirányítani, átirányítani, stb… szóval röviden: minden környékünkön lévÅ‘ 3G-s emberkét lehallgatni, ha átállnak a mi hálózatunkra. Ezt kombinálva a tavalyi CCC-s GSM elÅ‘adással eljutottunk odáig, hogy ha valaki le AKAR hallgatni egy valakit, akkor azt megteheti, anélkül, hogy errÅ‘l a célszemélynek tudomása lenne/tehetne ellene. Komoly.
Persze a srácok a The Hacker’s Choice-nál nem aludtak, megnézték, hogy mi a helyzet a túloldalon, hiszen ha minden stimmel, akkor ez a kis doboz nagyon mélyen belenyúl a gerinchálózatba.
Mit tapasztaltak?
Mindenhol ugyanaz a jelszó (newsys)….a többit el lehet képzelni.

UPDATE: hülye módon elhittem az ITcafés cikket, csak a femtocellákra törtek be, szóval a gerinchálózat még érintetlen…címeres ökör vagyok mert az adott THC wiki bejegyzést több hónapja olvasgatom…

A BlackHat-en pedig előadást tartanak belőle.
UPDATE: és addig nem mondanak el semmit (emailes megkeresésre tuti nem, azt már próbáltam).

Azt hiszem no comment, ezt én benéztem. Mondjuk kutatni már nem kell, csak az ötletet sajnálom (bár ahogy elnézem, őnekik jutott eszükbe először).

Ajánlott irodalom: