Вторая статья будет посвящена работе с GSM трафиком в Wireshark. Рекомендую ознакомиться с первой, если Вы хотите получить больше возможностей для практики.
Для работы нам osmocom-bb совместимый телефон, способный принимать сигнал на частотах GSM, для России это 900 МГц и 1800 МГц и компьютер с установленным сниффером Wireshark.
GSMTAP
Для корректного отображения протоколов GSM в Wireshark последних версий не нужно устанавливать никаких дополнительных диссекторов.
Единственное, что нужно выставить настройку для протокола LAPD – Use GSM SAPI values.
GSM протоколы будут инкапсулироваться в UDP пакеты с заголовком GSMTAP при передаче через Um интерфейс или в TCP пакеты с заголовками OML, RSL при трассировке A-bis интерфейса.
Запустим Wireshark на прослушивание loopback-интерфейса и зададим фильтры, чтобы видеть только GSM Um трафик.
wireshark -k -f udp -Y gsmtap -i lo
Приложения, способные генерировать GSMTAP трафик для Wireshark обычно действуют следующим образом:
- Получают Um фрейм по радио интерфейсу
- Добавляют GSMTAP заголовок
- Отправляют все это на указанный IP адрес в UDP пакетах (в нашем случае на loopback)
Помимо фильтра GSMTAP, можно использовать другие фильтры, начинающиеся с gsm, например gsm_sms, для поиска SMS-сообщений в трафике. Но использование фильтра GSMTAP позволит просматривать весь GSM Um трафик, поскольку все прочие заголовки вложены в GSMTAP.
Захват трафика
Для изучения GSM трафика его нужно сначала как-то записать. Используя SDR устройство в качестве приемника, Вы сможете изучать данные, передаваемые на общедоступных каналах CCCH, если только вам не известен Kc — сессионный ключ шифрования.
Однако при использовании OsmocomBB, телефона с SIM-картой и приложения mobile Вы знаете свой ключ шифрования Kc и сможете просматривать весь свой трафик в открытом виде, передаваемый через Um интерфейс (радио интерфейс) в Wireshark, и изучать как работают реальные сотовые сети.
Если Вы запустили свою GSM сеть на основе двух OsmocomBB-совместимых телефонов, как было указано в предыдущей статье, Вы можете передавать GSMTAP пакеты из OsmoBTS в Wireshark и таким образом изучать работу сети.
Если Вы хотите поупражняться в захвате своего трафика при помощи SDR-трансиверов, то рекомендую ознакомиться с пакетом утилит gr-gsm.
Самым бюджетным вариантом будет покупка RTL-SDR приемника.
Я не рекомендую покупать дешевые китайские приемники, вроде такого за 700 рублей.
Лично у меня он работал нестабильно и спустя неделю вовсе перестал. На форумах по RTL-SDR у людей возникали похожие проблемы. Так что это не единичный случай.
Дело в том, что оба чипа rtl2832u и r820t2, обычно используемые RTL-SDR совместимыми устройствами, очень сильно греются при работе, а никакого охлаждения дешевые приемники не предусматривают. Во-вторых, нет никакой защиты от статики и можно запросто сжечь приемник при неаккуратном обращении. Есть и другие проблемы.
Поэтому, я рекомендую приобрести официальный RTL-SDR приемник последней версии в алюминиевом корпусе. Он стоит всего 1500 рублей, но в комплекте Вы получите 2 антенны, пассивное охлаждение, защиту от статики, стабильную работу, улучшенную фильтрацию, и много другое. Как известно «Скупой платит дважды».
Анализ трафика
Я не буду здесь рассматривать работу с gr-gsm и RTL-SDR, поэтому сразу переходим к Osmocom.
Вы можете работать с любой коммерческой GSM сетью используя Open Source имплементацию стека протоколов GSM от Osmocom. Другими словами, Вы можете подключить телефон на чипсете Calypso к компьютеру, запустить приложение из пакета OsmocomBB и звонить, отправлять СМС и делать все то, что умеет делать обычный 2G телефон, плюс получать доступ к любой технической информации о текущем сеансе связи.
Приложение, которое нам нужно для этого, называется mobile и находится здесь src/host/layer23/src/mobile
Надеюсь, все уже скомпилировали OsmocomBB на своих компьютерах. Процесс описан в моей предыдущей статье и в этом цикле.
Mobile — это приложение, которое запускается на стороне компьютера, но Вы также должны загрузить в телефон прошивку layer1
В базовом виде Вам нужно:
- Подключить телефон к компьютеру через USB-TTL конвертер
- Проверить, что появилось устройство /dev/ttyUSBx, загрузить в телефон прошивку layer1 через osmocon.
- Запустить mobile и указать интерфейс для отправки GSMTAP, чтобы мы могли прослушать этот интерфейс в Wireshark.
О том как загрузить прошивку в телефон я уже писал в предыдущей статье. Чтобы запустить mobile, перейдите к директорию с приложением и выполните следующую команду
./mobile -i 127.0.0.1
При первом запуске Вы можете увидеть сообщение об отсутствии конфигурационного файла. Создайте его пустым в директории, указанной в сообщении об ошибке. (У меня это /root/.osmocom/bb).
Если Вы все сделали правильно, то увидите в консоли лог работы mobile.
Теперь вы можете подключиться к терминалу mobile и управлять телефоном так
telnet localhost 4247
Вы попадете в интуитивно понятный cisco-подобный VTY интерфейс. Используйте команду help, TAB для авто дополнения или SHIFT+?
Команды show ms, show subscriber, show ba и show cell помогут получить информацию о текущем подключении. Для перехода в привилегированный режим используйте enable и для записи изменений в файл write file.
Wireshark у нас уже запущен, и Вы можете видеть GSMTAP пакеты в списке. Пока телефон находится в режиме ожидания, а нам никто не присылает СМС и не звонит, вывод будет состоять из открытого трафика с управляющих каналов.
Вы можете отправить СМС со своего личного номера на телефон mobile или отправить СМС самому себе через VTY интерфейс. Тогда, если поискать в Wireshark трафик по фильтру gsm_sms, мы увидим.
Есть и другие утилиты, позволяющие захватывать различного рода GSM трафик, их Вы можете найти тут src/host/layer23/src/misc
В частности, cell_log позволяет определить, какие базовые станции находятся вокруг Вас и умеет отправлять GSMTAP пакеты в Wireshark.
ccch_scan позволяет прослушивать сообщения на CCCH каналах, в том числе SMS, если использовать модифицированную версию из osmocombb ветки sylvain/burst_ind, которая позволяет задать ключ шифрования Kc.
Однако в этом случае Вам придется еще прошить ваш USB-TTL конвертер для работы на нестандартных скоростях.
Что касается захвата голосовых вызовов, то здесь все становится сложнее, так как реальный оператор может использовать Frequency Hopping, что «размазывает» burst-ы по разным частотам и нам требуется следовать за изменением частоты телефона, либо записывать весь трафик на всех возможных TCH частотах соты, что в свою очередь может не позволять сделать ваш приемник из-за физических ограничений.
Если Вы исследуете свою собственную сеть, то вам не нужен Frequency Hopping, однако Osmocom не предоставляет утилит для сниффинга голосовых вызовов при помощи osmocombb-совместимых телефонов.
Но утилита grgsm_decode пакета gr-gsm, способны декодировать речь, при захвате трафика SDR приемником и grgsm_capture.
Анализ трафика интерфейса A-bis
A-bis – интерфейс обмена сообщениями между BTS и BSC. У нас нет доступа к исследованиям такого рода трафика коммерческих сетей. Но Вы можете изучать подобные вещи на примере собственной GSM сети.
Чтобы просмотреть RSL сообщения, нужно начать прослушивать loopback интерфейс (обратите внимание, что здесь используется TCP, а не UDP) и вы увидите сообщения вроде этих:
Для RSL можно использовать фильтр gsm_abis_rsl.
И для OML. Можно воспользоваться фильтром gsm_abis_oml либо фильтровать по портам 3002 и 3003.
В то же время SMS сообщения будут вложены в RSL пакеты, а не в GSMTAP, как в случае с передачей через Um интерфейс.
На этом всё. В следующий раз я расскажу про добавление в Вашу домашнюю сеть поддержку GPRS.
Автор: antgorka