Конец формыПрослушивание сетевых сообщений системы стандарта GSM. Часть 3.

В последней части будет рассмотрена непосредственная работа с приемником RTL-SDR в среде Linux для прослушивания служебных сообщения стандарта GSM.

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

В реализации этой задачи важную роль играет декодер представленный на рис.1. 


Рис.1. Схема GSM декодера

Данная структура имеется в программном модуле GNURadio 3.7.

Какие блоки имеются в GSM декодере:

Источник сигнала – в нашем случае это найденный сигнал GSM(см.п.1);

Непосредственно приемник  для обработки сигнала;

Блоки декодера – данные блоки дешифруют сигнал с помощью сеансового ключа Kc используя алгоритм А5.

Теперь рассмотрим работу декодера на практике.

1.Получение реального канала связи.

Во второй части курсовой работы были рассмотрены программы SDRSharp в Windows и модуль Gqrx в Linux. С помощью этих программ и приемника RTL-SDR можно поймать сигнал на частотах 900+50 МГц. Необходимо определить наиболее устойчивый сигнал от базовой станции (БС) в вашем районе. Это можно сделать двумя способами:

1 способ – перебор вручную.

Меня частоту на 1 МГц визуально можно определить максимально высокий уровень сигнала. Для этого в перечисленных выше программах имеется визуальное отображение сигналов.

2 способ – используя модуль kalibrate-rtl для ОС Linux.

Для установки данной программы необходимо открыть терминал и набрать следующие команды:

./sdr git clone https://github.com/steve-m/kalibrate-rtl;

./bootstrap && CXXFLAGS=’-W –Wall-O3’;

./configure;

make;

make install;

kal –s 900.

После этих команда приемник просканирует все частоты стандарта GSM 900 и выведет на экран их частоту и мощность рис.2.


Рис.2. Сигналы GSM.

Далее выбираем наиболее подходящую частоту (основным критерием выбора является величина “power”).

Этот же модуль позволяет откалибровать приемник. Для этого, выбрав частоту, необходимо набрать команду:

kalc X;

Где “Х” значение переменной chan выбранной частоты.

После выполнения этой команды, будет оценено рассогласование приемника по частоте и выведено в окно терминала значение в ppm.

Что значит ppm? ppm - Part Per Million (или единиц на миллион), у нас обычно указывают
как x*10-6 , то есть точность в  1ppm - это точность в 1Гц на частоте в 1 МГЦ, или точность 27Гц на частоте в 27МГц.

После того как была выбрана центральная частота переходим к вопросу о том, как получить канал в реальном масштабе времени.

Необходимо в терминале набрать команду:

cd airprobe/gsm-receiver/src/python;

./gsm_receive_rtl.py –s 1e6.

Стоит отметить, что у модуля ./gsm_receive_rtl.py есть много конфигураций, обо всем списке можно узнать, набрав команду:

./gsm_receive_rtl.py –h;

В данной работе будут использовать следующие конфигурации:

-s – частота дискретизации;

-f – центральная частота;

-g – усиление.

 Т.О. итоговая команда будет выглядеть так:

./gsm_receive_rtl.pys 1e6 –f  Xe6 –g 44.5; где X – выбранная частота ± рассогласование, найденное модулем kalibrate-rtl.

 В итоге получаем широкополосный спектр сигнала и спектр канала связи рис.3.


Рис.3. Спектр сигнала и канала связи.

2.Декодирование сигнала GSM с помощью Wireshark.

Для декодирования сигнала необходимо сначала его записать. Это может сделать программа Wireshark. Перед тем  как запускать модуль  gsm_receive_rtl.py, описанный в предыдущем пункте, откройте еще один терминал и запустите Wireshark с правами администратора (sudo wireshark).

После того, как запустился анализатор сетевого трафика необходимо его настроить:

Поставить захват на себя (to lo (loopback)) и нажать клавишу «начать». Затем в поле фильтр ввести gsmtap. Это обеспечит отображение только данных GSM.

После настройки Wireshark,проделать пункт 1. В результате в терминале будут отображаться декодированные сигналы в 16 системе,а Wireshark будет их отображать, распределяя по назначению (рис.4, рис.5 и рис.6).


Рис.4. Декодированные сигналы.


Рис.5.Сигналы GSM в Wireshark.


Рис.6. Анализ декодированного сигнала.

Согласно рис.6,набор шестнадцатеричных символов разбивается на несколько блоков, каждый из которых несет свою смысловую нагрузку:

header length – длинна заголовка;

time slot – временной слот;

signal/noise ratio – отношение сигнал/шум;

signal level – уровень сигнала;

gsm frame number – номер gsm кадра;

chanel type – тип канала;

antenna number – номер антенны;

L2 pseudo Length – длинна сообщения канального уровня;

Message type – тип сообщения;

Таким образом, были рассмотрены функции декодера, практически реализовано декодирование служебных сообщений стандарта GSM, проанализированы полученные результаты.

Список литературы:

1. http://www.rtl-sdr.com/rtl-sdr-tutorial-analyzing-gsm-with-airprobe-and-wireshark/;

2. http://rus-linux.net/nlib.php?name=/MyLDP/lvs/wireshark/wireshark.html;

3. http://omoled.ru/publications/view/719; Прослушивание сетевых сообщений системы стандарта GSM. Часть 1;

4. http://omoled.ru/publications/view/721; Прослушивание сетевых сообщений системы стандарта GSM. Часть 2;