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

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

Мы живем в удивительное предсингулярное время. Технологии развиваются стремительно. То, что несколько лет назад казалось фантастикой, сегодня становится реальностью. Удивительно, но сейчас при наличии компьютера с простым ТВ-тюнером можно принимать координаты самолетов и кораблей, спутниковые снимки, данные метеозондов.
Я не являюсь специалистом в области информационной безопасности, все операции были проделаны исключительно в целях обучения. В данном тексте речь пойдет о том, как произвести декодирование (не дешифрование) 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 на нем не заставит себя долго ждать.

Благодарю за внимание.
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 20
  • +10
    Название поста звучит как:
    Декодируем GSM с RTL-SDR за 30$


    И я зашёл сюда в надеде прочитать не только запись GSM-трафика, но и собственно процесс декодирования. Напомню википидийное трактование слова декодирование

    Декодирование — процесс обратного преобразования кода(совершается получателем) к форме исходной символической системы(задаётся отправителем), для получения исходного сообщения. Декодирование — включает восприятие (факт получения) послания получателем, его интерпретацию (как понял) и оценку (что и как принял).Если символы отправителя имеют точно такое же значение для получателя, последний будет знать, что именно имел в виду отправитель, формулируя идею.


    Наибольший интерес представляет знания о процессе декодирования, что такое эти радужные таблицы, как долго идёт раскодировка и что благодаря этому можно получить. Какие ваши лично результаты в этой области, кроме записи зашифрованного трафика, который пока представляет собой мусор, без декодирования? Какие механизмы дешифрирования есть, сколько времени это занимает на домашних ПК и т.п.? Всё это безумно интересно прочитать. Спасибо.
    • +2
      На мой взгляд информации в статье достаточно, чтобы начать копать в нужную сторону.
      • +8
        Чтобы начать копать в нужную сторону достаточно гугла. Если вы пишите статью, и тем более указываете что вы собираетесь декодировать, то наверное стоит таки написать об этом.

        Прошу прощения, не понял что вы не автор. Но суть посыла от этого не меняется.
        • +2
          так сигнал декодирован в цифры. теперь нужно расшифровать.
          толкование терминов в статье правильное.
          (Мы и восстанавливаем тот сигнал который был подан грубо на модулятор, а там он уже зашифрован)
          • 0
            Не буду спорить, однако запись шифрованных сообщений бесполезна, без их дешифрации
            • 0
              Дешифровать уже потом, в режиме offline, про это как раз таки часть с радужными таблицами, но если учесть, что в первом абзаце указанно: — " В данном тексте речь пойдет о том, как произвести декодирование (не дешифрование) GSM-трафика.", то и ее могло не быть
      • +4
        Все так, спасибо за замечания. Это мой первый топик на Хабре и надеюсь, что не последний. Замечания я постараюсь устранить в следующих сериях.
        • +1
          Будем ждать продолжения!
        • +1
          Расписали бы поподробнее про процесс взлома (или можно сделать перевод указанных ссылок), а то получился пост просто со ссылками.
          Диски с таблицами кстати можно покупать, а не генерить, в листе рассылки (a51.lists.srlabs.de), посвященном взлому алгоритма A5/1, не раз уже видел просьбы продать диски.

          3G-трафик перехватить таким способом пока не удастся — слишком широкая полоса сигнала

          можете пояснить этот момент? «таким» способом это каким? широкополосные SDR приемники давно существуют, полоса в 5МГц не такая уж и большая.

          2008 — первый коммит в публичном репозитории Osmocom OpenBSC, реализующем ПО базовой станции GSM.

          Только не станции, а контроллера базовых станций (BSC — Base Site Controller)

          2010 — первый коммит в публичном репозитории проекта OsmocomBB, реализующем GSM-сниффер на железе обычных телефонов

          И опять — не сниффер, а BaseBand Stack (код, который реализует GSM-ный стек протоколов на стороне телефона) для определенных моделей телефонов, который можно использовать уже для чего угодно (по прямому назначению и нет).
          • 0
            Спасибо, учту.
            Диски с таблицами кстати можно покупать

            Можно и с торрентов качать.
            широкополосные SDR приемники давно существуют, полоса в 5МГц не такая уж и большая.

            Имелась в виду полоса конкретно этого тюнера.
            Топик поправил.
          • 0
            Вам удалось воспользоваться кракеном?
            • 0
              Пока такой задачи не ставилось. Я слишком долго разбирался с сопутствующими трудностями и как только появился первый результат, тут же написал о нем.
            • 0
              > Выбираем канал с амплитудой побольше и запускаем перехват на нем. В консоли появятся байтики GSM-трафика:

              Ничего не получится. В GSM есть и должно работать по-нормальному такое понятие как frequency hopping, когда частота меняется по кругу около 200 раз в секунду. Это делается для лучшего приема. Если конкретно одна частота тут замирает, то 5 других будут работать, и потери качества будут почти незаметны. Не зная схемы перестановки. вы видите байтики от совершенно разных источников.

              В Беларуси frequency hopping работал и работает. Было время, когда в России это дело было чуть ли не искусственно отключено, т.к. «с ним тяжелее перехватывать». Как сейчас обстоит дело — не в курсе.
              • 0
                Не везде в РФ и не у всех операторов он включен. Это легко проверяется.
                • 0
                  Это сугубо частный случай России. В Беларуси он включен всегда у всех и везде.
                  • 0
                    А не подскажите как собственно проверить?
                    • 0
                      Поставить звонок и посмотреть, скажет ли БС делать hopping.
                      Я знаю как это сделать, используя OsmocomBB (на соответствующем железе) — там есть доступ ко всем полям во всех сообщениях.
                      Не знаю, можно ли сделать проще. Потому, что я не помню, есть ли упоминание о hopping-е в сообщениях, которые можно пассивно слушать (тем же RTL-SDR) — системные сообщения для всех мобил (доступны всем) или всякие channel assignment для конкретной мобилы (это сообщение может уже быть зашифровано).
                  • 0
                    Верно, но как написал Вам выше pab перескок работает не везде. Причем это справедливо не только для России.
                  • 0
                    В Москве можно купить? и где?

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.