• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Разбираемся с 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.
 
Последнее редактирование:

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Clone в mobile,эту функцию добавлял Positive Technologies,в свою версию прошивки Osmocom.

В исходниках такой функции не предусмотренно.
Спасибо за инфу, я скачал архив с образом, использованным в том PHDays. Сырки там есть...

В этом образе две сборки Osmocom-BB. Master и Silvain... А в /usr/local/lib / есть такая либа, как libosmosim. Думаю, стоит пошариться по сыркам...
 

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Доброго дня Вам, swap3r! Интересует возможность пользоваться одним телефоном вместо 4х, (своих), когда припечёт, возможность знать по tmsi, imsi примерное положение звонящего мне... Просто "клонировать" свои аппараты без заморочек с "Жужлом", шнурками, передёргиванием симок...
Не умею ещё ничего - потому и спрашиваю :)
 
  • Нравится
Реакции: swap3r

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Доброго вечера всем! "Накопал" кое-чего по silent sms... (Один из форков osmocombb, с "турецким акцентом")... Сейчас пытаюсь вникнуть в содержимое собственно самих команд ( к примеру: что есть 6433 1; 6433 2; и т.д.). Что стоит "покурить"?
 

swap3r

Green Team
06.11.2016
71
59
BIT
0
там ничего особенного в обычных сайлент смс нету, на самом деле. просто смс, которые телефон не отображает (по разным причинам, либо это флеш смс, либо смс со сбитым хедером). гораздо более интересны разные ота смс для манипуляциями с настройками телефона и симкарты (вот об этом в открытых источниках инфы очень мало)
 

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Кто- то задавал вопрос о "Малинке"? - одна проблемка с согласованием линии "TX"... Хотя бы транзистором... Других проблем нет.
Нагуглил один сайт о структуре смсок, "Бдю секурити блог", посчитал весьма полезным для понимания своего поста выше :)
 

ьгкфв

Member
14.11.2017
7
0
BIT
5
У кого сохранился этот файл ctf_mobile.7z скачанный в 2015 году ? хочу именно тот что был скачан в 2015 , заранее спасибо.
 

cefar

New member
25.10.2019
3
0
BIT
0
Кто-нибудь скинет рабочие конфиги
osmo-bts.cfg
osmo-bsc.cfg
??
 

Alex333

Green Team
26.05.2019
14
2
BIT
0
Доброго времени суток! Собираю осмокомбб на 4 малине. Ваш кросс-компилятор прекрасно собрался. Собрал хорошо осмокон, работают Хэлло и Рсси... Но вот когда делаю:
make HOST_layer23_иCONFARGS=--enable-transceiver
Т.е. собирают передатчик, сначала собирается, но под конец выдает ошибки... Понимаю, что мануал не для АРМ.. но раз уж кросскомпилятор собрал осмкон, то почему бы и не собрать ему программу передатчика. Как вы считаете, есть тут решение?
 

wot

Member
06.01.2020
15
0
BIT
0
Сам не перепаивал фильтр , поручил работу одному умельцу . С виду спаял аккуратно . Решил проверить работу вставив симку , сеть не словил никакую . Должен ли телефон с перепаянными фильтрами работать как обычный телефон ?
 

Dr.Lafa

Green Team
30.12.2016
507
1 049
BIT
0
Сам не перепаивал фильтр , поручил работу одному умельцу . С виду спаял аккуратно . Решил проверить работу вставив симку , сеть не словил никакую . Должен ли телефон с перепаянными фильтрами работать как обычный телефон ?
Попробуйте загрузить прошивку RSSI, если она не будет работать, значит не правильно распаяли.
 

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Сам не перепаивал фильтр , поручил работу одному умельцу . С виду спаял аккуратно . Решил проверить работу вставив симку , сеть не словил никакую . Должен ли телефон с перепаянными фильтрами работать как обычный телефон ?
Нет, ибо как на RX, так и на TX стоят фильтра на один и тот же диапазон... А "нормальный аппарат" передаёт в одном участка диапазона, а принимает в другом... Вы хоть какие-нить доки читали-смотрели?
 

wot

Member
06.01.2020
15
0
BIT
0
Нет, ибо как на RX, так и на TX стоят фильтра на один и тот же диапазон... А "нормальный аппарат" передаёт в одном участка диапазона, а принимает в другом... Вы хоть какие-нить доки читали-смотрели?
Нет , не читал особо .Времени нет .Иначе не задавал бы вопросы.

Попробуйте загрузить прошивку RSSI, если она не будет работать, значит не правильно распаяли.
при попытке выполнить команду :
root@debian:~/osmocombb/master/src/target/firmware/board/compal_e88# osmocon -m c140xor -p /dev/ttyUSB0 hello_world.compalram.bin
Выдаёт ошибку :
bash: osmocon: команда не найдена

Попробуйте загрузить прошивку RSSI, если она не будет работать, значит не правильно распаяли.
Есть ещё сомнения по поводу правильности припайки проводов . Красный я припаял к RXD, белый TXD , так как на фото выше, на тюльпанах так было указано .После , на следующих фото наблюдаю , что белый припаян к RXD на cp2102 , ну и соответственно красный к TXD . Запутался я короче ... Телефон
 

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Нет , не читал особо .Времени нет .Иначе не задавал бы вопросы.


при попытке выполнить команду :
root@debian:~/osmocombb/master/src/target/firmware/board/compal_e88# osmocon -m c140xor -p /dev/ttyUSB0 hello_world.compalram.bin
Выдаёт ошибку :
bash: osmocon: команда не найдена
Из той же папки, откуда пытался запустить осмокоН, запускай через "./" или пропиши полный путь в команде... И для данных в команде путя нужны тоже...
 

wot

Member
06.01.2020
15
0
BIT
0
Из той же папки, откуда пытался запустить осмокоН, запускай через "./" или пропиши полный путь в команде... И для данных в команде путя нужны тоже...
Благодарю. А на счёт правильной распиновки что скажете?
 

Jhinn

Green Team
16.06.2019
18
1
BIT
0
Благодарю. А на счёт правильной распиновки что скажете?
Ничего, к сожалению... Подбирал методом "околонаучного тыка"... Хотя - "масса" сидит правильно, да и после покупки пары джеков, потыкавши их в телефон, "отправил их к одной маме" - выбросил: - центральная жила приклёпывалась к лепестку, и, что на первом, что на втором разъёмах контакт пропадал почти сразу... Подыскал пару гарнитур и слепил шнурки из них, кОльца вместе... Правильность определял по "начала грузиться прошивка или нет". Но, вообще-то кто-то выкладывал схему телефона, можно поглядеть на 4PDA... Да и на сайте Osmocom материала немало...

И вдогонку - растачивал дырку в корпусе телефона надфилем, не доставал покупной джек куда надо самый мизер...

Будете проверять распиновку - сначала сделайте всё на скрутках, и подключите только RX... Бог с ним, что прошива не пошла, но лоадер скажет, что аппарат увидел...
 
Последнее редактирование:

cefar

New member
25.10.2019
3
0
BIT
0
Сам не перепаивал фильтр , поручил работу одному умельцу . С виду спаял аккуратно . Решил проверить работу вставив симку , сеть не словил никакую . Должен ли телефон с перепаянными фильтрами работать как обычный телефон ?
Выложите фотографию, перепайки. У меня была такая же проблема, думаю смогу Вам помочь
 

shoruh mustafoev

New member
04.04.2020
1
0
BIT
0
Предупреждение. Достаточно одного знака вопроса. Администрация.
Privet
USB TTL CH340G poydyot ???????????????????????????????
 

dicer

Member
04.07.2020
9
1
BIT
0
Кто-нибудь скинет рабочие конфиги
osmo-bts.cfg
osmo-bsc.cfg
??

Файлы для LimeSDR, но структура отступов аналогичной должна быть
Все проблемы исключительно в отступах в началах строк, они задают вложенность каждой строки
 
Последнее редактирование:
  • Нравится
Реакции: Архип Борисов
Мы в соцсетях:

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