Вторая статья будет посвящена работе с 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.
UPD: Напоминаю, что про практические примеры создания базовой станции и анализ мобильного трафика я расскажу и покажу (на стенде) на Pentestit Security Conference в своем докладе: «Имплементация стека протоколов GSM».
Комментарии (25)
erlyvideo
11.07.2017 22:06А 2G ещё актуально?
ChukotkaJazz
12.07.2017 09:37конечно же актуально! частоты 2G обеспечивают хорошее покрытие… для России это особо актуально!
nevzorofff
12.07.2017 11:12Что такое «частоты 2G»? 900мгц? Там отлично работает WCDMA.
ps А в 450 и 800 — LTE. И эти частоты обеспечат покрытие ещё лучше чем 2G.ChukotkaJazz
12.07.2017 12:47Тема о GSM, и человек сверху задал вопрос по этой теме. К чему Вы написали про WCDMA? Никто и не спорит, что 2100 тоже дает неплохое покрытие. Но частоты GSM 900/1800 лучше всего справляются с этой задачей. Почитайте теорию волн…
З.Ы. И часто операторы в России используют LTE450? О, да! Отлично решение для голоса при отсутствии полноценного IMS.antgorka
12.07.2017 12:53Совершенно верно. Спасибо.
nevzorofff
12.07.2017 13:37Что верно? Что «частоты GSM 900» лучше всего справляются с покрытием? Даже лучше чем WCDMA-900? 3G одним 2100 не ограничен.
ChukotkaJazz
12.07.2017 15:13И часто встречали у операторов UMTS 900? =) Есть проблемы лицензирования и получения технологической нейтральности. Да и встретить аппарат, который поддерживал бы UMTS 900 крайне затруднительно. =)
ChukotkaJazz
12.07.2017 15:18И вообще, мы ушли в оффтоп!)
nevzorofff
12.07.2017 18:26Да если бы тут ещё было обсуждение. В виду малой актуальности GSM тут и комментариев немного.
nevzorofff
12.07.2017 18:14В Оренбурге у Теле2 все базы оборудованы по схеме WCDMA900+DCS1800 и примерно на половине баз вдовесок к этому WCDMA2100. Так что да, последние три года — почти каждый день.
И не думаю, что наш город такой один в России.
По аппаратам: назовите хоть один 2016-2017 года, который умеет WCDMA в 2100 и не умеет в 900? Я, как раз, за этим очень слежу. Сейчас пользуюсь древним Lenovo A789, он умеет.
Из того, что не умело могу вспомнить только Lenovo P780, хороший аппарат, но уже сто лет даже не продаётся.antgorka
12.07.2017 21:07По-моему обсуждаем мы тут только Оренбург =)
Я вам говорю, что в центре города миллионника в супер-современном бизнес-центре у меня регулярно телефон работает на 2.75G. Т.е. 2G+EDGE. Это факт. Может там и 1800, а не 900. Не спорю. Но это все еще 2G.
nevzorofff
12.07.2017 13:34Я это написал к тому, что подтверждать актуальность GSM тем, что он работает на 900мгц и хорошо покрывает местность — некорректно, т.к. тот же WCDMA работает на 900мгц.
К тому же на 900 в WCDMA я спокойно могу разговаривать с сигналами ниже -100, а у GSM это квакания и булькания. В общем итоге тот же WCDMA обеспечит на 900 покрытие лучшее, да ещё и с интернетом.antgorka
12.07.2017 14:24Я не утверждал, что GSM актуальна потому что работает на 900 МГц. Я Вам говорю, что GSM абонентов еще очень много и GSM частоты это 900 МГц и 1800 МГц в России. Все что работает на этих частотах и не является GSM, за бортом моего материала.
nevzorofff
12.07.2017 11:10Всё меньше и меньше.
В Оренбурге у Теле2, например, 2G остался в виде костыля на 1800 мгц, в 900 запустили 3G сеть.
Свой телефон в городе держу в режиме 3G-only, процент успешных вызовов близок к 100%.
Очень надеюсь, что 2G уже скоро похоронят совсем.antgorka
12.07.2017 12:48Почему костыля? 1800 МГц такой же естественный диапазон для GSM, как и 900.
Я считаю, что 2G будет существовать еще очень долго, особенно, когда сейчас есть такие проекты как osmocom, fairwaves, openBTS и другие. Возможно в коммерческих сетях доля 2G будет становиться меньше, но то же касается и 3G, кстати, т.к. 3G сети — переходный момент, скажем так. В итоге останется только LTE.
Но не думаю, что через 3-5 лет мы не сможем пользоваться GSM «бабушкафонами». Так что изучать 2G можно и нужно.nevzorofff
12.07.2017 13:361800 назвал костылём потому что за городом обеспечит покрытие хуже, чем 900, а в городе обладает худшей проникающей способностью.
А я очень надеюсь, что от 2G откажутся как можно скорее, чтобы не занимать частотный диапазон устаревшими технологиями с низкой спектральной эффективностью.
catharsis
19.07.2017 02:10Очень надеюсь, что 2G уже скоро похоронят совсем.
В каких-то странах уже похоронили, в других только отдельные операторы, в каких-то обещают работать по крайней мере до 2021 года: https://en.wikipedia.org/wiki/2G#2G_Shutdown
Когда похоронят в России сказать сложно, давайте сначала посмотрим, как похоронят аналоговое телевещание.
antgorka
11.07.2017 23:04Актуальнее чем может казаться. Я регулярно подключаюсь к 2G сетям в городе, где много где доступен 4G.И уж тем более молчу про небольшие города и села.
movsarisaev
12.07.2017 00:15Как вы записывайте траффик, в виде burst ?
movsarisaev
12.07.2017 08:08Как вы записывайте траффик в виде burst ?
antgorka
12.07.2017 08:48В данном случае я его не записываю в файл, а захватываю через wireshark по пути от OsmoBTS к OpenBSC. Они расположены на одной машине и поэтому я прослушиваю loopback интерфейс.
В случае с mobile я указал отправлять трафик в виде gsmtap на loopback.
Так что, можно сказать, что трафик приходит в виде udp пакетов, а не busrt-ов.
movsarisaev
Спасибо! Очень понравилась данная статья.Желаю удачи!