Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #115, ИЮЛЬ 2008 г.

GSM-хакинг – взгляд изнутри

Андрей «Skvoznoy» Комаров

Хакер, номер #115, стр. 115-048-1

Расшифровка GSM: миф или реальность?

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

Ценность GSM

GSM – основной стандарт, используемый в сфере сотовой связи. В качестве способа доступа к радиополосе он использует TDMA (множественный доступ с разделением по времени). Эта особенность отличает GSM-сети от CDMA-сетей, в которых доступ каждого абонента обеспечивается ко всей ширине канала, без отведения времени, но с кодовым разделением. Хотя выигрыш в скорости очевиден, полный переход на CDMA пока невозможен.

Абонент, производящий вызов, связывается с одной из базовых станций в близлежащей соте (на то она и сотовая связь). Актуально для начала самостоятельно изучить процесс поиска базовых станций (GSM Towers). Для этого тебе потребуется специальное ПО, зависящее от платформы телефона и его марки. Осветим наиболее популярный софт среди любителей поиска мачт оператора.

Nokia

Большинство моделей этой марки имеют штатное средство Netmonitor для отображения информации о базовой станции и ряде других параметров. На некоторых моделях NetMonitor или Field Test (как он еще именуется) необходимо набрать комбинацию «*3001#12345#*» и нажать клавишу вызова. Из полученной информации можно узнать много интересного. Основной характеристикой для базовой станции является CID (Cell Identity; не путать с СallerID). Согласно спецификации, CID принимает значение от 0 до 65535 для сот стандарта GSM, и более – для сот стандарта UTMS (универсальная телекоммуникационная система стандарта 3G). По-хорошему, это идентификатор самой соты, являющийся частью CGI (Cell Global Identity). Замечу, что контроль данного параметра позволяет грубо установить местонахождение абонента без обращения к Location Measurement Unit (LMU) на стороне базовой станции. В зависимости от распределения базовых станций местоположение пользователя может варьироваться от нескольких сотен метров до километров. Тем не менее, этот фактор используют многие службы быстрого реагирования и спасатели, что вылилось в название технологии позиционирования E-CID (Enhanced Cell Identification). Более того, был открыт любительский сервис, задача которого – определение местоположения по CID: gsmloc.org/code.

Второй важной характеристикой твоего телефона является LAC (Location Area Code). Все базовые станции объединены в определенные логические группы (LA), каждая из которых имеет номер. Связка CID и LAC является уникальной для отдельно взятого телефона. Подробности ищи на http://pro-gsm.info/location-update.html

Windows Mobile

Из пяти испробованных программ на моем HTC s710 (платформа Windows Mobile 6) захотела работать только одна – под названием CIDLog. Прога отображает MCC, MNC, LAC, CellID, CCH, TA и уровень сигнала. Весьма капризно себя ведет: на ряде устройств программа выводила только LAC, но других вообще не хотела запускаться.

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

Ближе к делу

В начале 2007 года известная хакерская команда THC начала работу над составлением базы данных по GSM-безопасности (и ее компрометации, в частности). Основной целью работы было создание анализатора (GSM Scanner), способного разбирать накопленную информацию – для продолжения исследования в более широком виде. Прямо скажем, такие вещи уже давно созданы и, в первую очередь, предназначены для использования в качестве контрольно-измерительного и калибровочного оборудования. Например, аппаратура SAGEM OT200/OT460 (sagem.com.ua/ua/mobile/ot/SAGEM-OT200-file.pdf). Дамп данных в дальнейшем декодируется EdgeView (segfault.net/gsm/EDGEView/) или Wireshark. Все данные и примеры, отмеченные авторами проекта в разделе DebugTrace (wiki.thc.org/gsm/debugtrace), тебе под силу получить и привести самому.

Данные, передаваемые по воздуху, шифрованы и расшифровываются непосредственно на точке доступа, которая знает ключ сессии и передается оператору. Теоретически, возможна дорогостоящая авантюра с организацией собственной GSM-мачты (чтобы отслеживать пользовательские данные в режиме пассивного анализа). Но некоторые данные можно изучить в «clear text» и без этого. По анализу эфира можно понять, какое шифрование применено, IMSI ID, RAND Cipher Key, SRES. Рассмотрим подходы и способы получения данных с эфира GSM-сессий.

Переделанное оборудование

Стандартные мобильные телефоны могут быть перепрошиты на захват/генерацию фреймов эфира. Одним из наиболее наглядных примеров сего факта является проект OpenTSM. Под тривиальный телефон TSM30 предлагается установить специальный софт, который будет осуществлять эти опции. Кстати, создатели THC хвастают тем, что используют для того же самую старенькую модель NOKIA 3310. Отмечу, что вся серия NOKIA dct3 (3210, 3310, 3330, 3390 и т.п.) способна на такое с использованием специального патча (nokix.pasjagsm.pl/help/blacksphere/sub_250software/sub_sendcode.htm) под недокументированные фишки ядра NOKIA. Проект BlackSphere как-то даже решил копнуть в сторону создания собственной операционной системы под Nokia dct3 – MADos. Про метод перепрошивки ты можешь узнать на форуме любителей реверса NOKIA (http://nokiafree.org/forums/index.php).

USRP

Она же – универсальная радио-периферия. Обычно используется в следующей конфигурации: стационарный компьютер, материнская плата с радио-периферией (USRP-PKG), ресивер на материнскую плату (DBSRX-LF, работает в диапазоне 800-2400MHz), LPO926 (антенна). В качестве сподручного софта юзают: gnuradio, gsmsp или Wireshark по вкладке GSM. В качестве примера я расскажу про пакет GSSM (thre.at/gsm/), который предназначен для мониторинга каналов GSM.

Пакет состоит из специального модуля захвата, названного GNU RADIO, для демодуляции захваченного и Wireshark – для отображения информации. GSSM распознает большинство известных природе каналов, наиболее часто используемых в GSM. Все они с указанием частот приведены в таблице на полях статьи. Вот расшифровки аббревиатур: FCCH (The frequency correction channel), SCH (The synchronization channel), BCCH (The broadcast control channel), PCH (The paging channel. Downlink only, used to page mobiles), AGCH (The access grant channel. Downlink only, used to allocate an SDCCH or directly a TCH), SACCH (Slow associated control channel), SDCCH (Stand-alone dedicated control channel).

Ход установки предельно прост. Сначала собираем GNU RADIO:

svn co http://gnuradio.org/svn/gnuradio/trunk gnuradio

$ ./bootstrap

$ ./configure

$ make

$ make check

$ sudo make install

Затем тянем gssm.

wget http://thre.at/gsm/gsm-v0.1.tar.bz2

tar –xvjf gsm-v0.1.tar.bz2

./bootstrap && ./configure && make && sudo make install

Советую также скачать последнюю версию Wireshark в качестве графического фронтенда. Если же ты все-таки уперся в «старое доброе», – то пропатч его специальным модом из пакета gssm. Просто помести мод в папку с сорцами:

patch -p1 < ~/src/gssm/patch/wireshark-0.99.5-gssm.patch

./configure && make && sudo make install

Для связки захвата пакетов и их отправки Wireshark используются некоторые функции из модуля tun, так что не забудь подгрузить его командой sudo modprobe tun и проверить наличие модуля командой lsmod.

Итак, основные шаги выполнены. Следующая операция заключается в создании интерфейса нашего канала, после чего можно смело натравливать Wireshark на интерфейс. Для создания применяется программа mktun, которая входит в поставку пакета gssm: sudo /usr/local/bin/mktun gsm. Осмотрись в ifconfig; если все прошло успешно, то обрати внимание на набор специальных скрипов на python: usrp_fft.py, gssm_usrp.py. Первый из них задает частоту для мониторинга:

usrp_fft.py --decim=32 --gain=26 --freq=921M

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

Вторым интересным набором для примерно тех же целей является GSMSP (http://wiki.thc.org/gsm?action=AttachFile&do=get&target=gsmsp-0.2a.tar.gz).

Средство может быть собрано под Windows с помощью Cygwin. Оно обладает более дружелюбным видом.

Что делать с собранным?

Ответ очевиден: разбирать и пытаться расшифровать. Часть вещей уже создано за тебя и вполне может помочь. Сначала рекомендую обратиться к программе GSMdecode (http://wiki.thc.org/gsm?action=AttachFile&do=get&target=gsmdecode-0.5-win32.exe). Она предназначена для расшифровки лога с gammu или лога с любой собранной тобой программы.

Стоит сказать, что алгоритм A5/0 был взломан еще в девяностых, а A5/1 лабораторно ломается по атаке таблицей RainBow Table, размер которой должен быть около двух терабайт. По расчетам ученых на создание такой таблицы потребуется около 40 специальных вычислительных плат FPGA для распараллеливания процесса. Псевдокод программы для генерации таблицы ты можешь найти на диске к журналу.

Happy End

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

Позиционирование абонентов

В одном из выпусков «][акера» ты уже мог видеть мою статью, где перечислялись основные вещи, которые логирует оператор сотовой связи в своих базах. Одной из наиболее важных баз является реестр местоположения (HLR), по которому тебя можно быстро обнаружить, – нравится тебе это или нет. Вдобавок, советую ознакомиться с вариантами современных технологий позиционирования, в том числе E-CID (trueposition.com/positioning_ecid.php).

INFO

Анализ собственного GSM-трафика, декодирование и изучение не является уголовно наказуемым делом. Вне закона ты станешь при условии совершения таких действий против других абонентов.

Rand-ключ – установление подлинности начинается сетью в виде сообщения опознавательного запроса, посланного мобильной станции. Это сообщение содержит 128-битовое случайное число

Sres-ключ – ответ от базовой станции (Signed RESult)

WARNING

Участник THC, известный GSM-хакер Skyper, был задержан в аэропорту во время своей поездки на одну из Security-конференций в Дубай, на которой выступить ему так и не удалось. Исходя из опыта известного ресечера, имей меру в своих действиях.

Содержание