В наше время сложно представить современного человека без мобильной связи. Темп жизни. заставляет держать телефон включенным на протяжении всего дня, а то и ночи. Но как этот телефон работает?
Речь пойдет о 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.
Так же производим настройку носителей.
Добавляем IDE контроллер с выбранным образом Ubuntu, который мы скачали.
Добавляем 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.patchcd ~/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, совсем скоро!