Cатсн²² (in)sесuяitу / ChrisJohnRiley

Because we're damned if we do, and we're damned if we don't!

Airprobe: Monitoring GSM traffic with USRP

Information (and hopefully the slides soon) from the presentation can be found on the HAR2009 Wiki and the CCC Projects page. The project homepage is http://airprobe.org/ but appears to be down currently.

Airprobe is a project for creating an OpenSource GSM protocol decoder.

  • Using gnuradio Software Defined Radio (SDR)
  • GSM layer 1 demodulation / decode
  • GSM TDMA demultiplex
  • Recombining bursts into mac blocks
  • Handling of mac blacks to protocol analyzer

Why ? because wardrivers must be getting bored with just Wireless LANs. There are other networks out there that are vulnerable (DECT, GSM, etc…). Raising public awareness is very important. It’s ok to look at the specs and say “There might be  a problem here”, but testing and proof are needed to effect change.

The chips and parts required to build your own GSM sniffer are not available to the general public (at least at the low quantities required for normal usage). This is where the SDR comes in.

Airprobe decoders supported

  • gsmsp
  • gssm
    • Considered alpha
  • gsm-tvoid
  • gsm-receiver
    • Latest GSM decoder
    • Much better decoding
  • gsmdecode
    • GSM Layer 2+ decoder from hex bytes to human readable
  • gsmstack
    • GSM MAC Layer from demodulated bits to MAC blocks
    • Incomplete (will be integrated with gsm-receiver)

The Project are currently looking for developers with DSP experience –> get in touch through airprobe.org if you can help

Demo: Using the USRP and SDR to eavesdrop on GSM traffic. The demo used pre-recorded data from the USRP to input into gsm-receiver and view the MAC blocks.

MAC blocks are displayed in 23 Byte blocks and use [2b] as a filler if there isn’t enough data to fill a Block.

By taking these MAC blocks and piping them into gsm-decode it’s possible to decode and view the system information paging traffic (clear-text). This capture was taken on a non-frequency hoping network. Frequency hoping however isn’t a security solution as the frequency hoping pattern is sent in clear-text and is publicly known. Frequency hoping is used to avoid interference. the current setup, doesn’t support frequency hoping, but there are a number of solutions being considered.

As the capture from gsm-receiver outputs to PCAP format, it’s possible to open within Wireshark to get a full graphical representation. The patches for wireshark are available in SVN currently.

All the building blocks are in place to enable decoding of GSM encryption. The final step is a working proof of concept to break the encryption. There are a few weaknesses, however no full PoC currently. The tools are here, but they need to be made more user friendly.

Currently no support for GPRS/EDGE, however this should be possible with some work. However GPRS uses different encryption than GSM, so research will need to be made in this area.


8 responses to “Airprobe: Monitoring GSM traffic with USRP

  1. Seeker September 4, 2009 at 20:39

    Do you have any idea about the version of the gunradio airprobe is compatible with?

  2. ChrisJohnRiley September 4, 2009 at 20:51

    I don’t recall much mention of it in the talk. Best bet would be to checkout the airprobe homepage and checkout the mailinglist. They should be able to give you specific advice about USRP versions and support.

    Direct link to project homepage –> https://svn.berlin.ccc.de/projects/airprobe/wiki
    Link to talk recordings –> http://har2009-videos.verbrennung.org/
    Direct link to Airprobe talk (HAR2009) –> http://har2009-videos.verbrennung.org/309_l3447_Airprobe.mp4

  3. Alexsander Loula September 15, 2009 at 14:31

    Looking at the source code I found that it was tested with GNU Radio 3.0.2 and 3.0.3. I’m installing the 3.0.3 to see if it works. I tried with 3.1.3 and 3.2 and didn’t work.

  4. Alexsander Loula September 15, 2009 at 15:42

    The GNU Radio 3.0.3 does not compile with GCC 4.3.3. I tried with GNU Radio 3.2.2 and didn’t work too. There are some Python imports from gsm.scan.py not located (blks, stdgui).

  5. ChrisJohnRiley September 15, 2009 at 20:04

    Thanks for the updates. Unfortunately I don’t have a USRP to play with at the moment. Maybe for Christmas 😉

%d bloggers like this: