Безопасность GSM сетей. Теория и практика на примере SDR для чайников.

May 16, 2016 02:17


В наше время сложно представить современного человека без мобильной связи. Темп жизни. заставляет держать телефон включенным на протяжении всего дня, а то и ночи. Но как этот телефон работает?
Речь пойдет о GSM сетях, именно этот стандарт связи занял наибольшую распространенность в мире.





Теория:

Я думаю все понимают, что мобильный телефон работает на радио частотах. Так что такие данные свободно ходят в радиоэфире и доступны для изучения. С помощью обычного, бытового радиоприемника прослушать сотовый телефон не получится, так как сигнал является цифровым и благодаря чему - зашифрованным, но есть несколько интересных способов как прослушать такой сигнал, что и заставляет задуматься о введении новых правил безопасности в сетях GSM стандарта.

До цифрового стандарта 2G, устройства работали в аналоговом режиме (1G). Абонентов в то время было совсем не много, по этому канала вполне хватало на потребности тех лет. В нашей стране мобильная связь тоже была,по стандарту NMT (Для России), а ещё раньше, в 0G стандарте (подвижная радиотелефонная связь). Такую связь можно было слушать без какой либо обработки.




Давайте посмотрим на радиочастоты с базовой станции в программе SDR#.



Как можно видеть, это сигнал не имеющий какой либо информации без обработки.  Если его прослушать, то можно услышать лишь шипение и треск. Но как же получить из этого сигнала цифровую информацию?
Давайте вспомним как работает цифровой мир. Любое представление данных при ближайшем рассмотрении выглядит как двоичный код в виде нулей и едениц.
Но как же перевести эту неразбериху с частотами в нужные нам «00101010000100100101000100101010100001001000»?

В этом нам поможет частотная модуляция с непрерывной фазой «Гауссовская манипуляция с минимальным частотным сдвигом (Gaussian Minimum Shift Keying (GMSK))»



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

На практике такие преобразования легко сделать с помощью программных средств, доступных в свободном доступе, например gr-gsm.

И так, мы получаем цифровые данные из базовой станции. Часть открыта для чтения, например обмен подготовительной информации, сведения о БС. Чуть позже мы посмотрим эти данные через программу wireshark.

Сколько данных на одной частоте, с картинки? Одна базовая станция обычно способна поддерживать до 12 передатчиков, каждый из них может поддерживать связь с 8 устройствами одновременно. Это солидное количество в 96 устройств. На практике в дневное время, дамп одной БС занимает 30-40 мб в секунду. Это не мало.

В России распространены частоты приёма MS и передачи BTS (downlink), 925-970 МГц. Изучать необходимо именно этот диапазон.

Схема работы телефона с базовой станцией

1. Телефон подключается к БС и отправляет TMSI (Временный идентификационный код)

2. БС отвечает отвечает случайным числом (RAND) в наборе трипетов(данных).

3. Телефон зашифровывает это число, используя секретный ключ Ki из SIM карты с помощью алгоритма A3. И отправляет первые 32 бита обратно.

4. БС делает такой же код по имеющимся у оператора данным и сравнивает первые 32 бита данных с полученными битами от телефона.. Если все ок, то телефон и бс являются авторизованными. И далее работают с ключом KC = A5(Ki и RAND)

5. Обмен данными (SMS,VOICE) зашифрованными KC ключом.



Об алгоритме шифрования А5 и взломе вышеизложенной авторизации.

А5 изначально секретный алгоритм, секрет которого разгадали уже к 94 году и сделали его достоянием общественности. Так и живем =)

Изначально для взлома использовали метод открытых текстов посылая жертве sms с заранее известными данными, но позже, популярность приобрел метод предвычислений с созданием радужных таблиц, о нем я расскажу позже.

Спецслужбы некоторых стран и особо предпреимчивые граждане используют IMSI-catcher. Это специальное устройство маскирует себя под базовую станцию и подает команду на работу телефона без функции шифрования. Т.е. KC код уже не нужен. Таким образом собираются все данные его дальнейшей работы.
Подробнее о взломах через IMSI можно почитать тут https://blog.kaspersky.ru/hacking-cellular-networks/9862/

Подготовка к практике:

Устройство:

Подойдет любой sdr приемник. Если же у вас вообще нет приемника, то для данной цели подойдет самый дешевый rtl-sdr приемник за 450 рублей на чипе от реалтек RTL2832U & R820T / E4000.





Софт:

Весь необходимый софт работает под операционной системой LINUX, по этому нам необходимо её установить. Сделаем это на виртуальной машине.
Для этого подойдет VM(Virtual Machine) VirtualBOX от Oracle и дистрибутив Ubuntu 16.04.

https://www.virtualbox.org/wiki/Downloads

http://releases.ubuntu.com/16.04/ - Десктопная 64 битная версия подойдет.

Скачиваем все файлы, производим установку VirtualBox и создаем новую машину.

В настройках машины указываем её тип, это Ubuntu x64.

Так же производим настройку носителей.

  1. Добавляем IDE контроллер с выбранным образом Ubuntu, который мы скачали.

  2. Добавляем HDD Sata контроллер и добавляем туда жесткий диск на 100гб. (80гб нужны для радужных таблиц)

Запускаем машину и производим установку на жесткий диск.

После установки убеждаемся что при перезагрузке, установленная система работает нормально.

Отлично. Теперь ставим драйвера и программы.

Для начала создадим папочку sdr, чтобы не мусорить в домашней папке

cd ~

mkdir sdr

cd sdr

OSMO RTL-SDR

git clone git://git.osmocom.org/gr-osmosdr

cd rtl-sdr/

mkdir build

cd build

cmake ../ -DINSTALL_UDEV_RULES=ON

make

sudo make install

sudo ldconfig

cd ~/sdr

GNURADIO-COMPANION

sudo apt-get -y install git-core cmake g++ python-dev swig \

pkg-config libfftw3-dev libboost1.55-all-dev libcppunit-dev libgsl0-dev \

libusb-dev libsdl1.2-dev python-wxgtk2.8 python-numpy \

python-cheetah python-lxml doxygen libxi-dev python-sip \

libqt4-opengl-dev libqwt-dev libfontconfig1-dev libxrender-dev \

python-sip python-sip-dev

export PYTHONPATH=/opt/qt/lib/python2.7/dist-package

GR-GSM

https://github.com/ptrkrysik/gr-gsm/wiki/Manual-compilation-and-installation

AIRPROBE

git clone git://git.gnumonks.org/airprobe.git
cd airprobe
cd gsm-receiver
./bootstrap
./configure
make
cd ~/sdr

Так же нужно уставновить два патча zmiana.patch
Если все заработает, то возможно патч ставить не нужно.

https://github.com/scateu/airprobe-3...r/zmiana.patch
cd ~/sdr/airprobe
patch -p1 < zmiana.patch

http://pastebin.com/5XAYprEh (c) 2014 SopaXorzTaker
cd ~/sdr/airprobe/gsm-receiver/src/python/
patch -p1 < patch.patch

cd ~/sdr/airprobe/gsm-receiver/src/python/lib
make
cp ./gsm.py ../python

GQRX

Не обязательно, но можно

KRAKEN

git clone http://github.com/joswr1ght/kraken.git

cd kraken

make

WIRESHARK

sudo apt-get install wireshark.

Практика:

Материала много, так что будет в части 2, совсем скоро!

#gsmcracking, #grc, #a5.1, #kc, #hackrf, #безопасность, #kraken, #gr-gsm, #airprobe, #wareshark, #gsm

Previous post Next post
Up