• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья Разбираемся с osmocom-bb

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


Osmocom? Впервые слышу!
Osmocom - это открытая имплементация стека протоколов GSM. Включает в себя программное обеспечение и инструменты, реализующие различные стандарты мобильной связи, включая GSM, DECT, TETRA и другие. Так описано на .

Osmocom-bb реализует клиентскую часть протокола GSM. Для этого используются телефоны на базе чипсета calypso и mediatek. К таким телефонам относятся, например, motorola c115, motorola c118, motorola c123, Neo 1973, SciphoneDreamG2. Полный список можно посмотреть на официальном сайте:

По сути osmocombb соединяет osmocom-совместимый телефон и компьютер с линукс (как львиноботы, соединяющиеся в одного супербота), позволяя программировать устройство для работы с gsm или использовать уже готовые проекты для, например, создания собственной базовой станции gsm (2G), устройства для снифинга gsm трафика и ещё .


Hardware
Для того, что бы начать работу с osmocom, нужно обзавестись некоторыми прибамбасами, а именно:
  • Телефон из списка доверенных (желательно motorola на базе e88, но об этом позже)
  • USB-UART конвертер
  • mini jack 2.5 mm TRS (3 контакта)
  • детали для замены фильтров (опционально)
А теперь подробнее

Телефон
Полный список допустимых телефонов можно посмотреть . Однако авторы рекомендуют использовать motorola c123 / motorola c118 (телефоны на базе E88), так как проект изначально затачивался именно под них. Телефоны на базе E87 (motorola c115 / c117) так же отлично подойдут: E88 и E87 идентичны на 99%.

Я взял motorola c118, так как их было проще всего найти, всё нижеописанное я буду проводить именно с ним. Купить телефоны можно на местной барахолке, в переходе или на авито. Цена вопроса - около 500 р. за штуку.

18672

Если вы собираетесь поднимать свою базовую станцию, то понадобится 2 телефона и, соответственно, 2 USB-UART конвертера и 2 мини джека.

О перепайке фильтров
Изначально телефоны отбрасывают весь входящий трафик, не принадлежащий этому телефону (остальной ему просто не нужен). В некоторых проектах, например в снифинге gsm или поднятии собственной базовой станции (BTS), нам нужен весь входящий трафик. Что бы мы могли получать его, нужно перепаять фильтры.

Казалось бы, можно просто выпаять фильтры и замкнуть цепь. Но дело в том, что фильтры также преобразуют несбалансированный сигнал 50 ohm от антенны в сбалансированный на 100 ohm, который впоследствии идёт на чипсет RITA. По этому мы не можем просто удалить фильтры и замкнуть цепь.

Для перепайки фильтров понадобится паяльный фен, так как по другому удалить детали без повреждения телефона вряд ли получится (точно не получится, я пытался). Так же понадобится паяльник с тонким наконечником и прочие паяльные принадлежности (припой, флюз и т.д.)
Детали для перепайки в одном паке можно заказать на aliexpress (цена около 100 р.), или же в русских магазинах, но там цена меня совсем не порадовала.

О том, как и что припаивать, на официальном сайте. описано с теорией.

USB конвертер
Список поддерживаемых USB TTL конвертеров есть на . Конечно, можно купить готовый вариант переходника USB-minijack 2.5 mm, но это во первых дорого, во вторых не интересно. По этому лучше брать отдельно конвертер, отдельно миниджек. Самым дешёвым (цена - около 70 рублей на aliexpress) и стабильным USB-TTL конвертером является CP2102. Хотя для некоторых проектов его нужно перепрошить для возможности работы на нестандартных скоростях - это не является проблемой. О перепрошивке будет ниже, в разделе software

18675


mini jack
Нужен обычный трёхконтактный (TRS) minijack 2.5 mm. Проблема в том, что на дворе 2018 год, и достать 2.5-милиметровый миниджек может быть проблематичным занятием. Если вы везунчик, и вам удалось найти трёхконтактный миниджек, то распайка будет такой:
  • RXD - наконечник
  • TXD - середина
  • GND - нижняя часть
Припаивать надо к RXD, TXD и GND конвертера соответственно.

Мне же, как наверняка и многим другим, удалось найти только "тюльпан" 3RCA TRRS (4 контакта). Под спойлером о том, как его подсоединять
Распайка примерно такая же: берём от начала RXD, TXD и GND, а нижний контакт оставляем пустым.
18676


Штекер в телефон нужно вставлять не полностью, а до того момента, когда начнёт светиться вторая лампочка на USB-TTL конвертере:
18670

обратите внимание на расположение контактов

Проверяем соединение
Что бы проверить связь, будем использовать minicom из под Linux (все дальнейшие действия будут проводиться под Debian 9.4 x86_64)
Выключаем телефон, соединяем с компьютером и в терминале ищем подключенный адаптер: ls /dev | grep ttyUSB
18708


Открываем конфигурацию minicom sudo minicom -s > Настройка последовательного порта, в Последовательный порт вводим найденный адаптер.
18709

Выбираем Выход, затем на телефоне коротко нажимаем кнопку включения. Если в выводе, помимо мусора, появилась надпись @ftmtoolerror, то можно переходить к сборке софтовой части.
18710

выход из minicom - ctrl + a, x, Enter


Software
Для начала определимся со структурой проекта: /opt/osmocom - библиотеки проекта и кросс-компилятор, ~/osmocombb - ветки проекта.
Все действия будут проводиться на Debian 9.4 x86_64

Собираем libosmocore
libosmocore - основная библиотека проекта, почитать про неё можно .
Bash:
su
#устанавливаем зависимости
apt-get update && apt-get install build-essential libtool libtalloc-dev shtool autoconf automake git-core pkg-config make gcc libpcsclite-dev
#создаём рабочее место
mkdir /opt/osmocom
cd /opt/osmocom
#клонируем основные библиотеки
git clone git://git.osmocom.org/libosmocore.git
#компилируем
cd libosmocore/
autoreconf -i
./configure
make
make install
ldconfig -i
cd ..

Собираем кросс-компилятор
У меня возникли проблемы со сборкой по , по этому я сделал .
Bash:
su
apt update && apt install libmpfr-dev libmpc-dev libgmp-dev libgnutls28-dev libgnutlsxx28 texinfo
cd /opt/osmocom
mkdir gnu-arm-toolchain
cd gnu-arm-toolchain
mkdir build install src
cd src/
качаем программы нужных версий
#в официальном мануале используется gcc версии 4.8.2, у меня скомпилировался только 4.9.4
wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
wget http://ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
wget ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz
#разархивируем
tar jxvf gcc-4.9.4.tar.bz2
tar jxvf binutils-2.21.1a.tar.bz2
tar xfvz newlib-1.19.0.tar.gz
cd ../
# качаем установщик
wget https://raw.githubusercontent.com/DrLafa/gnu-arm-toolchain-installer/master/gnu-arm-build.sh
#даём права на исполнение
chmod +x gnu-arm-build.sh
#выполняем установку
./gnu-arm-build.sh
Этот установщик работает на Debian 9.4 x86_64 с gcc 6.3.0 и texinfo 6.3.0. С другими верияси gcc и texinfo могут быть проблемы.
После компиляции нужно прописать путь до бинарников в переменную PATH. Прописываем в конец файла .zshrc, .bashrc или каким ещё терминалом вы пользуетесь:
Код:
export PATH=/opt/osmocom/gnu-arm-toolchain/install/bin:${PATH}
На этом сборка кросс-компилятора закончена. Если возникли проблемы компиляции, можете писать в комментариях. Попробуем решить коллективно.

Собираем OsmocomBB
Настало время собрать основную ветку проекта
Код:
# создаём рабочее место
cd ~/
mkdir osmocombb
cd osmocombb
#клониурем основную ветку
git clone git://git.osmocom.org/osmocom-bb.git master
cd master/src
Тут стоит отметить, что если вы хотите иметь возможность отправлять трафик gsm (а не только принимать), то в файле src/target/firmware/Makefile практически в самом низу нужно раскомментировать строку CFLAGS += -DCONFIG_TX_ENABLE. Однако имейте ввиду, что вещание на частотах gsm в России регулируется законом, так что вас могут счесть за врага народа и отправить в концлагерь призвать к судебной ответственности. Подробнее читайте в разделе .

Чуть ниже есть 2 строки, раскомментировав которые, вы получите возможность загружать прошивку в постоянную память, а не только в RAM.
18647


Перед компиляцией основной ветки давайте поговорим о перепрошивке USB-TTL конвертера CP2102.
Перепрошивка требуется для работы на нестандартных скоростях. Это может понадобиться в некоторых ветках проекта.
Нам понадобится программа-прошивальщик. Скачать её можно .
Втавляем cp2102 в компьютер и выгружаем модуль ядра:
Код:
sudo rmmod cp210x
Запускаем прошивальщик, что бы убедиться, что всё в порядке:
Код:
sudo ./cp210x-program
18648


Он должен вывести таблицу скоростей, содержащей следующие значения:
Код:
[baudrate table]
[...]
921600 = FFE6, FFF6, 1 #  923077 Baud, 20 us
[...]
460800 = FFCC, FFEC, 1 #  461538 Baud, 40 us
[...]
230400 = FF98, FFD9, 1 #  230769 Baud, 78 us
[...]
115200 = FF30, FFB2, 1 #  115385 Baud, 156 us
[...]

На всякий случай сделаем бекап памяти конвертера:
Код:
sudo ./cp210x-program -f eeprom.hex

Теперь мы можем перепрошить конвертер:
Код:
sudo ./cp210x-program -p -F eeprom.hex -w --set-baudrate 812500:FFE2,FFF4,1 --set-baudrate 406250:FFC5,FFE9,1 --set-baudrate 203125:FF8A,FFD3,1

Проверяем работу:
Код:
sudo ./cp210x-program
В выводе таблицы скоростей теперь должны быть следующие значения:
Код:
[baudrate table]
[...]
812500 = FFE2, FFF4, 1 #  800000 Baud, 24 us
[...]
406250 = FFC5, FFE9, 1 #  406780 Baud, 46 us
[...]
203125 = FF8A, FFD3, 1 #  203390 Baud, 90 us
[...]
115200 = FF30, FFB2, 1 #  115385 Baud, 156 us
[...]
Переподключите конвертер. На этом перепрошивка завершена.
Итак, если у вас cp2102 и вы перепрошили его, то перед компиляцией основного проекта в файл src/host/osmocon/osmocon.c нужно добавить строку #define I_HAVE_A_CP210x
18649


Теперь вы готовы собрать основную ветку
Код:
cd ~/osmocombb/master/src/
make
Если компиляция завершилась без ошибок, то можно переходить к самому интересному. К тестированию


Тестируем
Прошивки ветки master для motorola c115, c118, c123 и прочих на платформе compal_e88 (и 87) находятся по пути src/target/firmware/board/compal_e88/
Прошивки заливаются на телефон с помощью . Синтаксис загрузчика следующий:
  • -m {c123,c123xor,c140,c140xor,c155,romload,mtk} - платформа телефона. Для motorola c118 это c123xor,
  • -p /dev/ttyXXXX - путь к USB-TTL конвертеру
  • -c - загрузка по цепочке. Указывается, если вы загружаете тяжеловесную прошивку, в названии которых фигурирует слово hightram (например rssi.highram.bin)
  • file.bin - прошивка
Для удобства я сделал ссылку на osmocon и добавил её в переменную PATH
Код:
cd ~/osmocombb/master/src/host/osmocon/
mkdir osmocon-link
ln -s ~/osmocombb/master/src/host/osmocon/osmocon osmocon

Выключаем телефон и подключаем к компьютеру
Код:
#идём в папку с прошивками
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 hello_world.compalram.bin
#коротко жмём кнопку включения на телефоне. Начинается загрузка.

18653


Могут быть проблемы с загрузкой прошивки из-за плохого соединения. Просто переподсоедините телефон и попробуйте снова.

Что со всем этим можно сделать
У osmocom . Есть, допустим, burst_int, нацеленный на снифинг gsm-трафика, emi для дос-атак на устройства gsm, но это всё темы для отдельных статей.

О том, что есть в ветке мастер (которую мы только что скомпилировали) можно почитать на оффициальном сайте: . Рассмотрим пример одной прошивки, использующей только телефон и другой, использующей телефон и компьютер одновременно.

RSSI
RSSI может работать без кмопьютера после прошивки. Он показывает системную информацию о базовой станции. Давайте загрузим эту прошивку на телефон:
Код:
#идём в папку с прошивками
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 -c hello_world.compalram.bin
#коротко жмём кнопку включения на телефоне. Начинается загрузка.
Здесь используется параметр -c, так как это hightram-прошивка

После того, как прошивка загрузилась, в выводе терминала будет системная информация о ближайшей базовой станции. Есть возможность менять канал (ARFCN). А ещё он пикает, если нажать кнопку "вверх" :)
18662

С вышкой можно синхронизироваться (зелёная кнопка), тогда будет выдано ещё больше информации:
18664
Здесь MMC (Mobile Country Code) - код страны, MNC (Mobile Network Code) - код оператора, LAC (Location Area Code) - код локальной зоны. В двух словах LAC - это объединение некоторого количества базовых станций, которые обслуживаются одним контроллером базовых станций (BSC). cell id - идентификатор базовой станции.
С помощью этой информации можно узнать примерное местоположение вашего телефона. Учитывая то, что телефон подключён к сети для экстренных вызовов, вы теперь знаете, как вас смогут найти сверху :)

mobile
Другая, самая интересная на мой взгляд прошивка в этой ветке - mobile. Превращает ваш компьютер в телефон со всеми вытекающими плюшками (возможность просмотра трафика в wireshark, выполнение DTMF команд и комечто же звонки и смс-ки). Mobile использует телефон как физический уровень gsm, а всё остальное (layer 2-3) располагается на компьютере. Для нормальной работы нужна, конечно же, рабочая симка.

Зальём прошивку на телефон:
Код:
#подключаем выключенный телефон
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 -c layer1.highram.bin
#коротко жмём на кнопку включения
Здесь, опять же, для загрузки прошивки использовался параметр -c, потому что для тяжеловесных прошивок используется загрузка по цепочке: сначала загружается кастомный загрузчик, который загружает прошивку типа hightram. Физическое взаимодействие с сетью (layer 1 модели OSI) запустился, сворачиваем это окно.

Во второй консоли запускаем наш "мобильник" mobile, выступающий в качестве 2 и 3 уровня модели OSI
~/osmocombb/master/src/host/layer23/src/mobile/mobile -i 127.0.0.1
Мобильник запущен. Мы можем подключиться к консоли управления через telnet:
telnet 127.0.0.1 4247

Давайте откроем wireshark и попробуем отловить смс-ку. В акуле телефон будет loopback-интерфейсом
18671

Ну разве не восхитительно!

Пожалуй на этом я и закончу данную статью, она и так уже довольно затянулась. Желаю всем дешёвых моторол, удачной пайки, компиляции с первого раза и не забывать об УК РФ, прежде чем соберётесь поднимать свою BTS.
 
Последнее редактирование:

HakJob

Green Team
17.04.2018
248
167
BIT
0
Копмлект без доставки получился 1130 вроде ( сам BladeRF + Transverter + Amplyfer + case + GPIO expansion board )
почему выбрал именно это железо ? все просто - на тот момент были свободные деньги и пообщавшись с одним из известных в сети специалистом в этой области пришел к выводу, что этот комплект - "некий Мерседес подобного рода оборудования" , практически лучшее из всего возможного в этом ценовом сегменте
 
  • Нравится
Реакции: ghost

ghost

Well-known member
12.05.2016
1 636
3 288
BIT
0
Сколько денег обошлось? Почему выбор пали именно на это железо? Почему не HackrfOne? Он дешевле
Не специалист в этом, но насколько мне известно BladeRF фуллдуплексный (работает на приём и передачу) а HackrfOne нет. Могу и ошибаться. Поправьте если не так.
Ну и Ondrik8 может рассказать подробнее...
 

HakJob

Green Team
17.04.2018
248
167
BIT
0
Изначально комплект покупал как раз под MITM GSM , фуллдуплекс в этом случае просто жизненно необходим
 
  • Нравится
Реакции: utrom, Rollly и ghost

pr0phet

Platinum
02.04.2018
358
496
BIT
12
Не специалист в этом, но насколько мне известно BladeRF фуллдуплексный (работает на приём и передачу) а HackrfOne нет. Могу и ошибаться. Поправьте если не так.
Ну и Ondrik8 может рассказать подробнее...
Все верно.
 
  • Нравится
Реакции: ghost

HakJob

Green Team
17.04.2018
248
167
BIT
0
по утверждению специалиста , комплект с амплифером может работать на дистанции до 1-1.5 км
 
  • Нравится
Реакции: utrom, Vertigo и pr0phet

pr0phet

Platinum
02.04.2018
358
496
BIT
12
по утверждению специалиста , комплект с амплифером может работать на дистанции до 1-1.5 км
А вот это аргумент! Но за вещание на таком расстоянии в черте города голову открутят... Моторолы с переделанными фильтрами и антенной тоже говорят неплохо бьют. Плюс реальные БС могут болеть из-за таких махинаций. Начнут искать причину - и они ее найдут
 

shooter

Green Team
25.10.2016
184
146
BIT
0
Ну, а кто открутит то? Если вещать с пол часа-час, то имхо ничего не произойдет, учитывая как всем ничего не нужно, так эти открутиватели и работают.
 
  • Нравится
Реакции: HakJob и pr0phet

HakJob

Green Team
17.04.2018
248
167
BIT
0
думаю, учитывая любые обстоятельства, всегда есть час-полтора на МИТМ
а этого порой более, чем достаточно. Если же митм затяжной - достаточно точку правильную подобрать после переподключения, чтоб оборудование транслировало сигнал на примерной мощности перехваченного телефона, хотя не совсем панацея.....
 

shooter

Green Team
25.10.2016
184
146
BIT
0
К тому же можно оставить "прибор" автономно пахать, а следить за процессом из далека.
 

Глюк

Red Team
03.01.2018
1 185
1 878
BIT
144
Цена вопроса - около 500 р. за штуку.
сегодня зашёл в сервис по ремонту сотовых телефонов. взял моторолу с115. цена вопроса 100 рублей. сказали есть и с118, но не нашли аккумуляторы. зайду через пару дней, может найдут... )
 

pr0phet

Platinum
02.04.2018
358
496
BIT
12
сегодня зашёл в сервис по ремонту сотовых телефонов. взял моторолу с115. цена вопроса 100 рублей. сказали есть и с118, но не нашли аккумуляторы. зайду через пару дней, может найдут... )
лошары не шарят ))
 
  • Нравится
Реакции: Vertigo, n01n02h и ALF

Глюк

Red Team
03.01.2018
1 185
1 878
BIT
144
лошары не шарят ))
всё допытывались зачем мне этот хлам.... ) сказал хочу сигналку через мобильник сделать... )
но зато видеокарты для майнинг ферм днём с огнём не найдёшь, а если найдёшь то цена как за чугунный мост...
 
Последнее редактирование:

swap3r

Green Team
06.11.2016
71
59
BIT
0
Изначально комплект покупал как раз под MITM GSM , фуллдуплекс в этом случае просто жизненно необходим
А зачем митмить, если в таком случае пакеты проще из эфира отлавливать и скармливать кракену? Беда митма в в том, что в джсме он работает только на исходящий трафик звонков и смс (с интернетом иначе, там все работает в полной мере). Есть два небольших исключения, насколько я поимаю, но первое в наших краях не работает, а второе очень уж малоизвесное (информации в открытом доступе в сети нет) и труднореализуемое.

Моторолки лучше заказывать с таобао пачками (они там дешевые). Если у кого много денег и кривые руки (про руки, это как у меня :( ), то есть один селлер на ебее продает уже с перепаянными фильтрами (он там один такой, не ошибетесь :)).
 

Ondrik8

prodigy
Green Team
08.11.2016
1 129
3 188
BIT
0
в теории фул дуплекс можно сделать на прием поставить обычную rtl-sdr за 10уе а на отправку hack-rf но это опять таки теория сам не делал такого но в принципе реально нужно это все дело gnu-radio по дружить... так что касаемо оборудования у hack-rf есть преимущество то что у него спектр радиочастот больше чем у бритвы если докупить данный девайс всего за 5-10уе

касаемо GSM раньше люди работали с 2-мя blade-rf для работы с этими сетями но сейчас все меняется и не в лучшую сторону техники атак устаревают и по сему скажу для того что бы провести такую атаку нужно вложится и не слабо вложится... как то так
 
U

Underwood

Копмлект без доставки получился 1130 вроде ( сам BladeRF + Transverter + Amplyfer + case + GPIO expansion board )
В качестве более бюджетной альтернативы, можно рассматривать на новейшем чипе за 299$, который в сравнении с BladeRF абсолютно ничем не уступает и имеет 2x2 MIMO Rx/Tx каналы. Для начинающих идеально подойдет младший брат
lime.gif
 

swap3r

Green Team
06.11.2016
71
59
BIT
0
рекомендую... к просмотру оказывается, тема жива)
Ondrik8, спасибо, весьма и весьма интересное видео
в Китае точно будет работать, на наших просторах пока не уверен на 100%, будем разбираться.
точно не будет работать в ЮСА, там уже нет 2Дж сетей. Точно не помню, вроде в RU в одного из опсосов нет 2Дж сети тоже, для него тоже работать не будет.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!