Конец формыПрослушивание сетевых сообщений системы стандарта 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”).
Этот же модуль позволяет откалибровать приемник. Для этого, выбрав
частоту, необходимо набрать команду:
kal –c 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
.
py
–
s
1
e
6 –
f
Xe
6 –
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;