• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Радиохакинг ч.1 «GSM»

utrom

(L2) cache
Пользователь
Регистрация
14.12.2018
Сообщения
342
Реакции
339
Статья для участия в Конкурсе

Перехват «GSM» трафика с помощью SDR, GNU-Radio, Wireshark, Kraken.


«В фантастических романах главное это было радио.
При нем ожидалось счастье человечества.
Вот радио есть, а счастья нет.»


(с) Илья Ильф, Евгений Петров




Введение

Попытаюсь сразу не согласиться с легендарными советскими писателями о том что «радио есть, а счастья нет». Радио в современном представлении дало нам такие замечательные вещи как – Wi-Fi, сигнализация, рация, GSM, 2/3/4/5G и кучу других G-овно устройств :smile55:, которые в реальном времени вещают на разных частотах и, конечно же, подвержены всевозможным уязвимостям, что не может не делать нас чуточку счастливее :smile94:.

В статье пойдет речь про всеми любимый протокол и «прародитель» сотовой связи – это, конечно, GSM.

Суть темы – уязвимость алгоритма шифрования A5/1 и её эксплуатация. Ходят слухи, что до сих пор используется практически всеми операторами сотовой связи даже в мегаполисах. У МТС изредка проскакивает A5/3. Сам я этого, конечно же, не проверял :smile25:, но доверюсь общедоступному мнению что так и есть, а значит все виды двухфакторной аутентификации(!), разговоры(!), трафик, - подвержены данной атаке.

Есть много информации в открытом доступе на данную тему, но когда начинаешь экспериментировать с нуля, возникает огромное количество вопросов и нестыковок. Еще бы - эти нестыковки начали появляться с самого 2009 года, когда Карстен Нол рассказал миру о проблеме. Стали появляться в сети испорченные билды программ, пропадать таблицы из общего доступа и вообще - «Ассоциация GSM описала планы Нола как незаконные и опровергла». Все дело в том, что для решения данного вопроса требуются нехилые вливания финансов, а операторы, особенно стран ближнего зарубежья и РФ «просвистели» все деньги вместо того что бы вливать их в инфраструктуру как оказалось, а тут еще Яровая со своими ЦОД-ами :smile35:

На написание данной статьи подтолкнул DefCon 21, Balint Seeber, Karsten Nohl и банальное любопытство :smile92:. Не буду размусоливать долго о работе протоколов, информация направлена на «максимально быстрое включение из коробки».

Минимальные знания для прочтения и усвоения статьи:
*IMSI - международный идентификатор мобильного абонента (индивидуальный номер абонента), ассоциированный с каждым пользователем мобильной связи стандарта GSM, UMTS или CDMA. Во избежание перехвата, этот номер посылается через сеть настолько редко (только аутентификация пользователя), насколько это возможно — в тех случаях, когда это возможно, вместо него посылается случайно сгенерированный TMSI.
*TMSI - временный идентификатор мобильной станции GSM (мобильного телефона). TMSI назначается после успешной аутентификации и используется в процессе установки звонка, регистрации в сети и т. д. TMSI используется из соображений безопасности, для сокрытия других идентификаторов абонента, а именно, во избежание передачи IMSI через радиоэфир.
*MCC - мобильный код страны в комбинации с MNC является уникальным идентификатором сотового оператора сетей GSM, CDMA, iDEN, TETRA и UMTS, а также некоторых операторов спутниковой связи.
*Кс - сеансовый ключ шифрации, который нам и нужно получить.
*ARFCN - В сетях GSM абсолютный номер канала.
*A5/1 - поточный шифр, наиболее распространенный на сегодня.

Все действия необходимо проводить только в тестовой сети, о которой могу рассказать по желанию форумчан т.к. информации в клирнете более чем предостаточно, но материал будет слишком перенасыщен. Кроме того, подменная БС (базовая станция) является не менее интересным вектором атаки в данном направлении :smile86:.



:smile81:Перехват чужих переговоров и СМС являются нарушением закона!:smile6:


Шаг 1. Подбор железа

На что ловим. Software-defined radio (SDR) Программно-определяемое радио - это система радиосвязи, в которой компоненты, которые традиционно применяются в аппаратном обеспечении (например, микшеры, фильтры, усилители, модуляторы / демодуляторы, детекторы и т.д.), вместо этого реализуются с помощью программного обеспечения на персональном компьютере или встроенной системы. Хотя концепция SDR не нова, быстро развивающиеся возможности цифровой электроники делают практическими многие процессы, которые когда-то были возможны только теоретически.

Необходимым программным обеспечением будет - Gnu-Radio. Это очень крутой открытый проект, возможности в котором ограничиваются только вашими знаниями.


Необходимым железом для перехвата пакетов будет любой SDR-комплект. От самого простейшего RTL-SDR «свистка» (~1000 рублей) :
dongle.png






До лютейшего комплекса, который работает в режиме full-duplex - UmTRX Price: $950.00 (и который, кстати, подойдет для организации собственной тестовой сети :smile54:):
LEDs_1.jpg






Или готовая БС которой мне посчастливилось пользоваться UmDesk Price: $3,000 (на базе того же UmTRX):
570293.jpg







«Таскать» такое с собой в кармане не получится, поэтому самым приемлемым портативным вариантом с более широкой полосой пропускания, чем у RTL-SDR будет HackRF One. Цена без кейса ~100$:
maxresdefault.jpg







Есть вот такое интересное решение для апгрейда. PortaPack 220$:
S1130114_final_1024x1024.jpg


Как видим, кейс с дисплеем и регулятором для HackRF. Отлично подойдет для поиска «жучков» и просто как анализатор спектра частот :smile49:. Честно… open-source, но ценник чересчур не демократичный при наличии прямых рук можно сделать дисплей, регулятор, звук отдельно. Частично перекрывается Android смартфоном и SDR-софтом.




  • Лучше взять сразу full-duplex, но и цена значительно разнится с простым приемником. Знакомство с SDR и Gnu-Radio однозначно только GSM не ограничится!

  • Для корректного приема потребуется антенна, которая уверенно принимает на 900Mhz. Часто комплектной достаточно на небольшие дистанции.

  • Обязательно потребуется наличие двух жестких дисков по 2TB каждый, - для расшифровки трафика программным комплексом Kraken.

  • Не слабый компьютер. При установки одного из важных пакетов уйдет не мало ресурсов, как и при записи трафика широкой полосой.


Шаг 2. Установка и конфигурация

  • Ставим Linux Ubuntu 16.04. Только на ней с коробки все корректно «заколосилось» и не было никаких претензий к работе Gnu-Radio и SDR. Экспериментируйте :)
  • Далее соблюдая очередность ставим необходимые пакеты:
Код:
sudo apt-get install git

git clone https://github.com/pybombs/pybombs.git

cd pybombs

sudo python setup.py install

sudo pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git

//грузим так называемые «рецепты»
sudo pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git

sudo pybombs prefix init /usr/local/ -a gr-gsm

// установка Gr-Gsm крайне долгая процедура ~4 часа. На i3 c 4Gb ОЗУ не установилось вообще. Работаю на i7.
sudo pybombs -p gr-gsm install gr-gsm

sudo ldconfig



  • Самое страшное и долгое - радужные таблицы с помощью которых идет подбор Kс ключа. По данной ссылке нужно скачать ~1600Gb таблиц (40 файлов по 40) - https://opensource.srlabs.de/projects/a51-decrypt). Оооооочень медленно, начните с этого :) :) :)
Клонируем и компилим git:

Код:
git clone https://github.com/joswr1ght/kraken

//есть вариации подбора ключа из радужных таблиц с помощью видеокарты, что происходит немного быстрее, но я делал под процессор
make noati

  • Далее нужно изменить файл конфигурации tables.conf в папке indexes (там должен быть файл с примером tables.conf.sample), в нем нужно указать на диск (именно на диск, а не раздел(!), так как Kraken будет переносить таблицы на чистую, без файловой системы).

  • После этого нужно запустить скрипт из папки indexes:

Код:
python ./Behemoth.py /path/to/a51/tables/

и указать ему в качестве параметра папку, со скачанными заранее таблицами.



Шаг 3. Запуск и анализ

Переходим в каталог с .grc файлами (GNU Radio Companion). Готовая блок схема для корректного получения трафика:


Код:
cd /usr/local/src/gr-gsm/apps
//и запускаем
sudo gnuradio-companion grgsm_livemon.grc

//далее запускаем Wireshark «натравленный» на GSM:
sudo wireshark -k -f udp -Y gsmtap -i lo


Тем самым мы можем видеть трафик в real-time.


Для работы в реальных сетях и потребуется любой калькулятор ARFCN, допустим - http://niviuk.free.fr/gsm_band.php


В общем доступе есть списки принадлежности к тому или иному оператору ARFCN которые нужно сопоставить с вашей целью для анализа непосредственно этой частоты.


Как узнать к какому ARFCN подключен абонент? Подумать :smile87: Это не сложно.


Для iPhone *3001#12345#*

Для Android *#*#4636#*#* или *#*#197328640#*#*

Необходимо выяснить TMSI цели. Самый простой способ – отправка СМС.



Шаг 4. Получение Kc

Данный пункт в текстовом варианте решил опустить по той причине, что есть информативное видео от Датских коллег. За исключением моментов:

  • GR-GSM мы уже установили.
  • Вы выяснили на каком канале сидит абон, далее записали эфир grgsm_capture.
  • Для декодирования и анализа в Wireshark gsm_decode.





И далее работа с голосом:



Ознакомьтесь со всеми возможностями GR-GSM:
https://github.com/ptrkrysik/gr-gsm/wiki/Usage
https://github.com/ptrkrysik/gr-gsm/wiki/Usage:-Decoding-How-To



Обратите внимание на нижние строки "Decode hopping channels". Этот пункт понадобиться для работы с речью. Во время звонка происходят прыжки между каналами, для улучшения качества связи. Для борьбы с этим пунктом требуется grgsm_channelize.


Настоятельно рекомендую к просмотру канал Датчан!



Заключение

Это только маленькая вершинка айсберга во всем потоке радиоволн. Есть еще дырявые автосигнализации, обычные сигнализации которые вещают в радио и gsm канале, всевозможные рации служб которые в открытом доступе транслируют персональные данные, наплевав на ФЗ о Защите персональных данных, спутники, RFID, пассивная сборка данных с Wi-Fi и многое другое что вы сможете изучить погрузившись в изучение SDR . Спасибо за внимание :smile60:


Данная статья ни призывает к противоправным действиям, а написана в целях обеспечения личной безопастности и указания на очевидные дыры в организации сотовых сетей.
 
Последнее редактирование:
Спасибо за метериал, очень подробно! Но остались ряд вопросов, почему-то все опускают эти темы в своих статьях.

Описанный метод работает только в 2g?
Вы выяснили на каком канале сидит абон, далее записали эфир grgsm_capture.
Как? А как же хоупинг, когда абонент прыгает с канала на канал. В таком случае нужно снифать трафик со всех каналов, дабы ничего не пропустить. И тут уже hack rf будет недостаточно.
HackRF One. Цена без кейса ~100$:
Поделитесь ссылочкой, где можно за такую цену купить. Везде цена +/- 300$

Буду рад почитать от вас еще такой-же четкий и подробный материал по теме SDR.
 
Спасибо за метериал, очень подробно! Но остались ряд вопросов, почему-то все опускают эти темы в своих статьях.

Описанный метод работает только в 2g?

Как? А как же хоупинг, когда абонент прыгает с канала на канал. В таком случае нужно снифать трафик со всех каналов, дабы ничего не пропустить. И тут уже hack rf будет недостаточно.

Поделитесь ссылочкой, где можно за такую цену купить. Везде цена +/- 300$

Буду рад почитать от вас еще такой-же четкий и подробный материал по теме SDR.
1. Да (соответсвенно надо глушить о чем во второй части речь идет)

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

3. Aliexpress. Первый в поиске бьется на 96$.

Буду рад написать что то еще, как появится свободное время :smile75:
 
Сразу скажу, я SDR даже в руках не держал, пока только присматриваюсь, изучаю, поэтому могу задавать глупые вопросы :)
2. Совершенно точно, нужно записывать всю ширину. Данные о хоппинге есть в инфо сообщениях ответа оператора (предположительно, как пишут в интернете), а дальше нарезать для правильной обработки, прыжки по 100 каналам пиздеж спецслужб для отведения глаз от проблемы
Тут есть несколько вопросов.
Какое максимальное кол-во каналов может быть? Вроде многие пишут про 8, но на соседнем форуме, в теме про osmocom-bb (в которой вы тоже отписывались) тоже читал про сотни.
На сколько трудно объеденить несколько SDR? Например взять два LimeSDR, там на сколько я помню 4 канала, что в итоге даст 8. Или есть другие варианты?
3. Aliexpress. Первый в поиске бьется на 96$.
Ну там подделка, видел сравнение где-то в буржунете, вроде не сильно проигрывала. Сами какие-то косяки замечали за ней, если вы там брали?
 
Сразу скажу, я SDR даже в руках не держал, пока только присматриваюсь, изучаю, поэтому могу задавать глупые вопросы :)

Тут есть несколько вопросов.
Какое максимальное кол-во каналов может быть? Вроде многие пишут про 8, но на соседнем форуме, в теме про osmocom-bb (в которой вы тоже отписывались) тоже читал про сотни.
На сколько трудно объеденить несколько SDR? Например взять два LimeSDR, там на сколько я помню 4 канала, что в итоге даст 8. Или есть другие варианты?

Ну там подделка, видел сравнение где-то в буржунете, вроде не сильно проигрывала. Сами какие-то косяки замечали за ней, если вы там брали?
Что такое канал? Это опорная точка с определенной частотой 9хх (gsm, но не всегда) которая вещает что то в эфир в закодированном и зашифрованном виде. Что такое хоппинг? Хоппинг - это "прыжок" между этими каналами соответсвенно частотами. Узнав политику сети, мы знаем частоты и логически - записываем кусок в диапазоне от 9хх до 9хх. (Я этого знать не могу т.к. опыты проводил в своей сети и не советую этого делать вматают по самые помидоры, делаю исключительно из любознательности и для обращения внимания на проблему:smile81::smile58:) Поэтому параметр количество каналов в SDR второстепенный, но конечно в перспективе Лайм лучше.
Смотрите в сторону ширины.
Объединение возможно программным методом - изучить код рф и "срастить", на выходе одна инфа в итоге. Как вариант средствами Gnu-Radio, а это серьезный продукт и знания Python будут очень нужны.

Про соседний форум скажу одно - площадка под красным флагом дрейфует, так что выводы сами делайте, но бывает интересная информация ;)

HackRF: Особой разницы не заметил, не балуйтесь с программными амплиферами - башку сожжете.

Возьми RTL-SDR поковыряй и поймешь что тебе нужно, а свисток вещь не заменимая даже при наличии мощного Лайма.
 
Что такое канал? Это опорная точка с определенной частотой 9хх (gsm, но не всегда) которая вещает что то в эфир в закодированном и зашифрованном виде. Что такое хоппинг? Хоппинг - это "прыжок" между этими каналами соответсвенно частотами. Узнав политику сети, мы знаем частоты и логически - записываем кусок в диапазоне от 9хх до 9хх. (Я этого знать не могу т.к. опыты проводил в своей сети и не советую этого делать вматают по самые помидоры, делаю исключительно из любознательности и для обращения внимания на проблему:smile81::smile58:) Поэтому параметр количество каналов в SDR второстепенный, но конечно в перспективе Лайм лучше.
Смотрите в сторону ширины.
Объединение возможно программным методом - изучить код рф и "срастить", на выходе одна инфа в итоге. Как вариант средствами Gnu-Radio, а это серьезный продукт и знания Python будут очень нужны.
Спасибо за развернутые ответы! Буду учить матчасть, пока больше вопросов, чем ответов.
Про соседний форум скажу одно - площадка под красным флагом дрейфует, так что выводы сами делайте, но бывает интересная информация ;)
Да, тоже это подметил, потихоньку перехожу там в режим read-only ;)
 
Возник следующий вопрос на древних дефконовских презентациях Карстена Нола обсуждалось, что для "захвата траффа" одной мобильной станции (телефона) нужно 8 моторол/2 USRP. В статье немного другой метод захвата используется с использованием gr_gsm от Петра Крысика. Вопрос, при такой схеме сколько штук хакрф'ин надо для захвата траффа одного телефона, если в сети опсоса присутствует хоппинг?
 
Вот интересно. не лучше использовать уже фемтосоты. тока неясно нужно ли ей дать интернет.
выход из фемтосоты куда сделаешь? как к оператору сотовой связи подключишь?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх