5 November 2013

Декодируем GSM с RTL-SDR за 30$

Information Security
Sandbox
Tutorial
Доброе время суток, Хабр!

Мы живем в удивительное предсингулярное время. Технологии развиваются стремительно. То, что несколько лет назад казалось фантастикой, сегодня становится реальностью. Удивительно, но сейчас при наличии компьютера с простым ТВ-тюнером можно принимать координаты самолетов и кораблей, спутниковые снимки, данные метеозондов.
Я не являюсь специалистом в области информационной безопасности, все операции были проделаны исключительно в целях обучения. В данном тексте речь пойдет о том, как произвести декодирование (не дешифрование) GSM-трафика. По традиции вместо эпиграфа:

Статья 138 УК РФ. Нарушение тайны переписки, телефонных переговоров, почтовых, телеграфных или иных сообщений
1. Нарушение тайны переписки, телефонных переговоров, почтовых, телеграфных или иных сообщений граждан — наказывается штрафом в размере до восьмидесяти тысяч рублей или в размере заработной платы или иного дохода осужденного за период до шести месяцев, либо обязательными работами на срок до трехсот шестидесяти часов, либо исправительными работами на срок до одного года.


Основные вехи

  • 1991 — опубликованы первые спецификации стандарта GSM.
  • 2005 — первое упоминание в летописях ТВ-тюнеров на чипе E4000.
  • 2008 — на конференции Black Hat продемонстрирован взлом GSM при помощи SDR-приемника USRP ценой около 1000$.
  • 2008 — первый коммит в публичном репозитории Osmocom OpenBSC, реализующем ПО контроллера базовых станций GSM.
  • 2008 — первые коммиты в проекте Airprobe. Внимание, по ссылке проблемы с сертификатом.
  • 2009 — Карстен Нол демонстрирует способ взлома алгоритма шифрования A5/1.
  • 2010 — первый коммит в публичном репозитории проекта OsmocomBB, реализующем стек протоколов GSM на железе обычных телефонов.
  • 2010 — презентация Kraken — ПО, позволяющего дешифровать данные GSM, зашифрованные при помощи алгоритма A5/1. Демонстрация производилась при помощи обычного телефона.
  • 2013 — В блоге RTL-SDR опубликован мануал по декодированию трафика GSM.
  • 2013 — Домонкош Томчаний опубликовал очередной способ взлома GSM.


Перехват

Для перехвата нам понадобятся:
  • Сам тюнер на базе E4000. Месторождение этих чипов исчерпано, поэтому цена тюнеров на их базе со временем растет. Остальные чипы тоже годятся, но они не поддерживают диапазон GSM1800/1900.
  • 75-омная антенна. Пойдет и штатная от тюнера. Я разместил обычную телевизионную антенну на подоконнике вот таким экстравагантным способом, прокинув USB-удлинитель.
    image
  • Машина с установленным дистрибутивом семейства Debian. Убунту подойдет. Я использовал старый ноутбук с Kali Linux, к которому коннектился через ssh по Wi-Fi. Раскочегарить с первой попытки ПО под Федору мне не удалось, я решил особо не ломать голову и поступить как в примере. Грабли №0: если будете делать установочную флэшку с Kali Linux — прочитайте вот это. Unetbootin не создаст рабочего образа.
  • Изрядное количество терпения и вот эта инструкция.


Расписано все довольно подробно, я лишь прокомментирую только те грабли, на которые наступил сам.
Грабли №1: не стоит ставить последнюю версию GNURadio. Начиная с версии 3.7.0 меняются пространства имен и собрать ПО не получится. Используйте версию 3.6.5. Также проверяйте ветки в git-репозитории airprobe. Тегами и комментариями там указано с какой версией GNURadio нужно собирать проекты.
Грабли №2: не забудьте поставить dev-пакеты вдобавок ко всем перечисленным.
Грабли №3: найти рабочую частоту GSM с помощью SDRSharp зачастую нелегко. Домонкош Томчаний предлагает для этой цели программу kalibrate-rtl. Она выдаст нечто вроде:

username@hostname:~$ kal -s GSM900
Found 1 device(s):
  0:  Terratec T Stick PLUS

Using device 0: Terratec T Stick PLUS
Found Elonics E4000 tuner
Exact sample rate is: 270833.002142 Hz
kal: Scanning for GSM-900 base stations.
GSM-900:
        chan: 10 (937.0MHz - 20.572kHz) power: 1467419.20
        chan: 12 (937.4MHz - 20.602kHz) power: 242714.33
        chan: 25 (940.0MHz - 20.308kHz) power: 364373.98
        chan: 32 (941.4MHz - 20.340kHz) power: 1562694.12
        chan: 52 (945.4MHz - 20.100kHz) power: 206568.21
        chan: 54 (945.8MHz - 20.184kHz) power: 628970.43
        chan: 71 (949.2MHz - 20.052kHz) power: 396199.27
        chan: 86 (952.2MHz - 20.081kHz) power: 1095374.22
        chan: 112 (957.4MHz - 20.047kHz)        power: 594273.38

Выбираем канал с амплитудой побольше и запускаем перехват на нем. В консоли появятся байтики GSM-трафика:

168815 0: 49 06 1b 0a 35 52 f0 10 00 e8 c8 02 28 13 65 45 bd 00 00 83 1f 40 1b
168819 0: 15 06 21 00 01 f0 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
168825 0: 41 06 21 a0 05 f4 44 46 03 b7 17 05 f4 16 4e fc 29 2b 2b 2b 2b 2b 2b
168829 0: 41 06 21 a0 05 f4 41 4d ef 18 17 05 f4 1d 5c 2a 63 2b 2b 2b 2b 2b 2b
168835 0: 4d 06 24 a0 f6 ce c3 7a df d4 7e 21 fc 80 0a 40 cb 25 e2 3c d3 2b 2b
168839 0: 49 06 22 a0 d1 6c 9f 44 11 40 57 92 17 05 f4 ef 59 34 1d cb 2b 2b 2b
168845 0: 41 06 21 a0 05 f4 35 4a 5b 9d 17 05 f4 20 4a 56 e2 2b 2b 2b 2b 2b 2b
168849 0: 25 06 21 20 05 f4 e8 24 47 7f 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
168855 0: 49 06 22 a0 c8 9c 63 0a ee e8 45 0c 17 05 f4 d3 04 7f 49 cb 2b 2b 2b
168859 0: 41 06 21 a0 05 f4 d8 5f d2 1f 17 05 f4 51 42 81 53 2b 2b 2b 2b 2b 2b


Выводы

Пара слов о дешифровании. Для него, судя по всему, помимо 30$ за тюнер, придется потратиться еще на двухтерабайтный винчестер под радужные таблицы. Скрипт для их генерации нашелся в репозитории Airprobe, думается, что и Kraken найти проблемы не составит.

Чем конкретно этот способ интересен? Тем, что на его базе можно строить дешевые, но довольно серьезные универсальные системы перехвата. Ведь есть еще DECT (ссылки не будет, сайт Osmocom DECT временно лежит), который широко применяется в офисах. Шифрование там послабее, а секреты посерьезнее.
Ну и двухфакторная аутентификация теперь под вопросом.

«Неужели все так плохо?» — спросите вы.
Не совсем. 3G-трафик перехватить таким способом пока не удастся — слишком широкая полоса сигнала. Но злоумышленнику никто не запрещает производить перехват в месте, где такого покрытия нет или с постановкой помехи. И прогресс не стоит на месте. Когда железо типа HackRF Jawbreaker станет дешевле и популярнее, перехват 3G на нем не заставит себя долго ждать.

Благодарю за внимание.
Tags:KrakenGSM-hackingA5GSMRTL2832SDRDECT
Hubs: Information Security
+37
114.3k 306
Comments 20
Popular right now
SEO-специалист
December 7, 202064,900 ₽Нетология
iOS-разработчик с нуля
December 7, 202070,740 ₽Нетология
Python для работы с данными
December 7, 202031,500 ₽Нетология
UX-дизайнер
December 7, 202047,940 ₽Нетология