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

Именно о такой штуке мы сейчас и поговорим. Узнаем, что интересного можно сделать этим устройством, разберёмся с тем, как установить и настроить софт, и, конечно же, посмотрим на всё это в работе.
❯ Суть такова
❯ SIMTrace и всё о них
Есть такие девайсы как SIMTrace и его более актуальный собрат SIMTrace2.

Оба этих устройства являются проектами небезызвестного Osmocom и представляют собой аппаратные анализаторы протоколов смарт-карт (вообще, SIMTrace предназначается в первую очередь для SIM-карт, но никто не мешает использовать его для любой другой смарт-карты типа ISO7816 T=0, к числу которых принадлежат симки).

Вот так выглядит тестовый стенд в сборе: SIM-карта вставляется в плату, а телефон подключается гибким шлейфом.
Также на базе SIMTrace было создано ещё несколько интересных устройств. Во-первых, это ngff-cardem, по сути тот же SIMTrace, но со встроенным модемом.

И, во-вторых, это sysmoQMOD, довольно специфический проприетарный девайс от Sysmocom в виде отладочной платы для четырёх модемов. Он позволяет разрабатывать и отлаживать такие интересные штуки как SIM-банки, резервированные сотовые модемы, тестовые стенды для сетей мобильной связи и тому подобные устройства.
❯ Где достать SIMTrace2?
Так получилось, что в начале февраля со мной связался товарищ Elian, который рассказал, что некогда экспериментировал с такими платами и готов предоставить мне пару штук на обзор. Разумеется, я согласился, и уже в начале марта два собранных устройства с комплектом кабелей были у меня, за что выражаю огромную благодарность.
Но где же вообще можно найти такое устройство?

Если вы живёте в Европе, то у вас есть возможность просто взять и заказать его у Sysmocom. Это самый простой, хотя и не совсем дешёвый вариант.

Есть эта штука и на Али, однако цена совершенно неадекватная.

Если возможности заказать где-то устройство в сборе нет (или есть, но по невменяемой цене), то его можно собрать самому, благо схемы и прошивки есть в открытом доступе. Плата всего двухслойная, в теории можно даже попробовать сделать её фоторезистом (там нет какой-то сложной в установке и очень критичной к размерам элементной базы типа чипов в корпусе BGA), но проще всего будет заказать её в любой фирме по изготовлению печатных плат. Остаётся только установить детали и прошить микроконтроллер.
❯ Обзор оборудования
Итак, будем считать, что если вы готовы к опытам, то свой девайс успешно нашли.

А вот и сама плата. На ней микроконтроллер, слот для симки и разъём для шлейфа, кнопки сброса и активации загрузчика, светодиоды индикации обмена данными, UART для отладки (распиновка совпадает с таковой для «осмофонов» Motorola) и miniUSB для подключения к компьютеру.

С обратной стороны список разработчиков.

Также понадобятся шлейфы для подключения к разъёму SIM-карты на телефоне. Если вы заказывали плату у Sysmocom, то они будут в комплекте, в противном случае придётся искать их на Али.

Они бывают в двух исполнениях — прямые и угловые.
❯ Неожиданные трудности

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

Решение было очень простым: отрезать этот коннектор, зачистить шлейф и спаять обратными сторонами. К счастью, проводники здесь толстые и соединение получается весьма надёжным (во время моих опытов ни один шлейф не развалился).
❯ Подключение
Само собой, для полноценной работы платы нужен и телефон, а также активная симка.

Поэтому идём в кладовку и достаём несколько трубок.

Выбирать надо экземпляр, конструкция которого позволит проложить шлейф и при этом обеспечить надёжный контакт, ничего не повредив. Современные смартфоны с их SIM-лотками отпадают сразу же (при попытке закрыть его острый край просто отрежет шлейф как ножницами), с другими надо смотреть индивидуально.

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

Обычно во всех инструкциях к телефонам пишут, что использовать какие-то переходники не допускается, но тут nanoSIM шлейф засел в miniSIM-адаптер как влитой. Чтобы шлейф не выскочил, для надёжности сверху положил сложенный несколько раз кусок термобумаги.

В сборе всё выглядит так. Убедившись, что шлейф не перегибается и не продавливается, ставим аккумулятор и насаживаем крышку.
❯ Ставим софт
Теперь традиционно самое сложное: установить и настроить софт. Для этого нам понадобится любой дистрибутив Linux. Если у вас установлены более старые версии софта Osmocom, то лучше использовать «чистую» установку, дабы ничего не сломать. Использовать какие-то специальные дистрибутивы вроде DragonOS очень не рекомендую: установленные там библиотеки (в частности, libosmocore) будут конфликтовать с новыми. Если же ранее на выбранной машине никакого ПО от Osmocom не стояло, то установка будет простой как никогда.
Не стоит ставить софт на виртуальную машину. Вариант с пробросом USB-порта работает, но могут наблюдаться потери пакетов. Чтобы этого не было, используйте настоящий ПК. Каких-то больших скоростей там нет, так что на его роль сгодится даже Raspberry.
Итак, для начала добавим репозиторий Osmocom:
sudo apt install extrepo
sudo extrepo enable osmocom-nightly
sudo apt update
Теперь очередь самого софта:
sudo apt install simtrace2-utils
После этого необходимое ПО вместе с его зависимостями будет установлено.

Также его можно собрать из исходников, о чём рассказывается тут.
❯ Запуск
Ну что же, время пробовать!
SIMTrace2 работает в двух режимах: анализатор протокола и эмулятор карты. Сейчас поговорим о первом из них, второй затронем в следующий раз в отдельной статье.

Итак, собираем всё воедино. Шлейф втыкаем в телефон, симку — в плату, плату — в компьютер. На плате загорятся два светодиода, а система обнаружит новое устройство.
Теперь вводим команду:
sudo simtrace2-list
Если устройство собрано и прошито правильно, система найдёт его:

Отлично.
❯ Слушаем пакеты
Ну что же, время пробовать!
Теперь очередь анализатора:
sudo simtrace2-sniff
Софт установит соединение с платой и будет ждать начала обмена данными.

Пойманные пакеты отправляются в UDP-порт 4729, дабы их можно было регистрировать или использовать в стороннем ПО.

Чтобы иметь возможность их просматривать в каком-то воспроизводимом формате, в отдельном окне консоли сразу включим запись:
sudo tcpdump -npi lo -w ~/simtrace.pcap udp port 4729
После этого всё, что будет происходить между телефоном и симкой, окажется в дампе, который мы позже просмотрим.

Теперь на телефоне нажимаем кнопку включения и смотрим, что будет.

Светодиодики на плате замигают, а в окне консоли посыпятся перехваченные пакеты.
❯ Анализ
Теперь немного о том, что же делать с полученным дампом.
Как и в большинстве других случаев, его можно исследовать при помощи Wireshark (вообще, он и дальше будет неразрывно связан со всем, что как-либо связано с анализом работы сетей).

Открываем наш файл. Как видно, пакетов здесь весьма много: даже если телефон просто лежит и не используется, он всё равно активно обменивается данными с симкой.

Вот так происходит запрос данных вроде IMSI, зашитого в симку номера или параметров SMS-центра: командой на чтение соответствующего файла из ФС карты.

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

А вот такие пакеты отправляются, когда с телефона совершается звонок.
❯ Где это всё используется?
Перво-наперво, всё это позволяет на примере реальной симки и реальной сети увидеть, как происходит процесс аутентификации. Если есть SDR, можно даже скопировать перехваченный ключ Kc и попробовать расшифровать собственный трафик, как это детально описывалось тут, причём в этом случае какое-либо взаимодействие с модемом телефона (вроде отправки AT-команд) не будет требоваться вообще.
❯ Что же в итоге?
Как можно догадаться, SIMTrace2 — штука ещё более специфическая, чем оборудование для запуска базовой станции в лабораторных условиях.
Разумеется, на этом её функции не заканчиваются: например, помимо простого сниффера она также может работать как эмулятор карты, что открывает целый простор для разных опытов. Но об этом поговорим уже в отдельной статье.
Такие дела.
Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите на баланс.
Автор: MaFrance351
