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



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

Суть такова


Если вы читаете этот пост, то наверняка хотя бы в общих чертах представляете, как работает аутентификация в GSM-сетях и какую роль там выполняет симка. Но на этом её функции не заканчиваются. На «боевых» (то есть используемых в реальных сотовых сетях карточках) помимо непосредственно самого приложения, реализующего криптографические функции, установлено много чего ещё. Особой документации на это нет, поэтому зачастую симке приписывают разные мифические свойства (и потом рассказывают про «слежку через SIM-карты»). И действительно, как я уже ранее рассказывал, SIM-карта по запросу оператора может делать многое: выполнять AT-команды, отправлять служебные SMS, посылать и принимать вызовы, управлять файлами и приложениями в своей ФС. Поэтому будет весьма интересно посмотреть на то, какие данные отправляются при работе телефона и что примечательного в них есть. Этим-то мы сейчас и займёмся.

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-команд) не будет требоваться вообще.

Также подобные средства позволяют увидеть «скрытые» отправки SMS и посылки вызовов — то, что делают практически все современные симки. Делается это, впрочем, не для слежки, а, например, для автоматического получения параметров вроде APN: если обнаруживается, что симка вставлена в телефон с IMEI, отличным от того, в котором она была замечена ранее, на него служебным сообщением отправляется конфигурация интернета. Вот тут есть неплохой пример того, как подобное исследование проводилось для доказательства того, что отражённое в детализации сообщение было отправлено автоматически, а значит, водитель, попавший в аварию, не пользовался телефоном в этот момент.

А вот более подробное изучение такой автоматической отправки у разных операторов.
Ещё эту штуку можно использовать для того, чтобы разрабатывать различные приложения SIM Toolkit. Если от такого апплета требуется взаимодействие с сетью, зачастую его очень трудно отлаживать, так как каких-то программных эмуляторов SIM-карт в открытом доступе нет. Этот же девайс позволит «на лету» посмотреть, что вообще происходит и почему приложение не работает или работает не так, как надо.

Что же в итоге?


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

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

Такие дела.



Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале



Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

Комментарии (11)


  1. mmMike
    23.05.2025 08:38

    Особой документации на это нет, поэтому зачастую симке приписывают разные мифические свойства (и потом рассказывают про «слежку через SIM-карты»).

    Да ну.. вот прям нет :)
    10 лет назад даже в открытом доступе найти можно все было (когда я этим плотно занимался)

    SIM-карта по запросу оператора может делать многое: выполнять AT-команды, отправлять служебные SMS, посылать и принимать вызовы,

    Ээ.. Карта ISO7816 может принимать APDU команды. Отправляет SMS и пр. не карта. Вы имели в виду sim toolkit.. Но все равно фраза звучит коряво и режет глаз.

    Цены на железки простое не адекватные. Наверное потому что это для "cool хакеров" предназначено :)
    А так, перехватчик проткола ISO7816 T0 и T1 делается на STM32F108 практически без обвязки.
    А имея самодельный перехватчик ISO7816, автоматичски получаем эмулятор. По факту, эмуляторы карт то же не сложные. Много кода в апплетах JavaCard не бывает (просто не лезет).


    1. MaFrance351 Автор
      23.05.2025 08:38

      Ну, имел в виду, что приложение, установленное на карте, может отправлять команды, которые STK интерпретирует как звонок или отправку SMS.


      1. mmMike
        23.05.2025 08:38

        Да я так и понял.
        Просто в сочетании с "мифическими свойствами" в предыдущем предложение и этой фразой, может у тех кто считает, что SIM карта это магия вызвать еще большую веру в магию :)

        А так в сущьности там все просто и примитивно.. В первую очередь из за размеров приложений.
        Ну 2..3тыс строк кода Java.. превращающиеся в 12-16Кб загружаемого.
        Да и такие то монстры были редкостью. EMV платежное приложение (полноценное) умещается в 2100 строк кода. А максимальное STK в ~1000 строк писал.

        И вообще, время STK приложений ушло с кнопочными телефонами. RIP.
        С концами ушло. Спроси у кого, как в смартфоне добраться до STK меню - мало кто вообще скажет что это такое.


        1. MaFrance351 Автор
          23.05.2025 08:38

          Просто в сочетании с "мифическими свойствами" в предыдущем предложение и этой фразой, может у тех кто считает, что SIM карта это магия вызвать еще большую веру в магию :)

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

          По ощущениям, сейчас всё, что связано с "меню SIM" у всех ассоциируется только с разводом на деньги. Несколько неловких нажатий в том разделе, и какая-нибудь мусорная подписка уже оформлена.

          У Tele2 одно время (в 2019-2020 году, кажется) был прикол с отправкой уведомлений через служебные сообщения, которые отображались не как обычные SMS в общем списке, а как всплывающее окно (напоминающее ответ на запрос USSD). На ведроиде оно тоже отображалось средствами того самого приложения com.android.stk. Если в этот момент вместо "Отмена" жмякнуть "ОК", то тоже можно было подключить подписку.


          1. mmMike
            23.05.2025 08:38

            Если в этот момент вместо "Отмена" жмякнуть "ОК", то тоже можно было подключить подписку.

            не в тему STK и подписок , но..
            Опсосам теперь и подверждения не нужны.

            Мне вот недавно на тарифе для модема сняли за услугу "развлечение" (МТС). Чем они собирались модем развлекать - не знаю (причем, в списке подключеных услуг ее не было). После жалобы в чате - деньги вернули. Но кто то наверняка и не заметил. "десять старушек - рубль".

            Так что МТС я воспринимаю с некоторй брезгливостью. Как мелкого жулика/неуклюжего вора карманника. За руками которого нужно следить.

            Такое же ощущение и на МТС банк распространяется. Понятно, что как бы разное. Но ирационально и то и другое бренд/клеймо МТС.


            1. MaFrance351 Автор
              23.05.2025 08:38

              Так что МТС я воспринимаю с некоторй брезгливостью. Как мелкого жулика/неуклюжего вора карманника. За руками которого нужно следить.

              Впрочем, на других ОпСоСов это тоже распространяется. Аналогичным образом подхватили какую-то муть на Tele2. Подозреваю, что жмякнули по какой-то всплывающей рекламе, выйдя в сеть с мобильного интернета.


  1. Nick0las
    23.05.2025 08:38

    Спасибо за статью. Оказывается теперь обмен SIM-ME можно просто смотреть в wireshark. Я когда-то очень давно перехватывал траффик SIM-ME с помошью самодельного сниффера переделанного из самодельного SIM card reader. Ничего сложного в этом нет. Ридер подключался к аппаратному COM порту на компе. В режиме ридера симка тактировалась от 3.57мГц, что соответствовало скорости 9600Бод. В режиме сниффера я просто подключал GND и DATA к телефону. Телефон тактирует симку частотой 13МГц/4=3.25МГц. Поэтому начальная скорость соответствует 3.25e6/372~=8736Бод. Если на 16550 UART настроить делитель 13 как раз получается близкая частота (115200/13~=8861) и данные отлично снифаются. Осложнения начинаются по той причине что новые телефоны и SIM поддерживают более высокую скорость которая активируется процедурой PPS. После этого сим работает на скорости не CLK/372 а, если ничего не путаю, CLK/64 и тут уже со сниффингом возникают проблемы. Нужно поймав PPS перенастроить скорость. Однако в те времена такого сниффера мне хватило чтобы изучить как работает SIM toolkit и сделать свой мультисим.

    А спецификации к стати и сейчас легко доступны. Обмен SIM-ME описан в стандарте GSM11.11, команды SIM Toolkit в GSM11.14. Спецификации легко гуглятся. Вот на 4G SIM более новые стандарты, но когда я делал свой мультисим 4G еще не было.

    Еще из интересного по SIM-ME обмену: однажды мне присылали дампы обмена с MTKшных чипсетов. Меня удивило обилие бессмысленных запросов в том числе явно ошибочных, на которые карта всегда отвечает ошибкой.


    1. MaFrance351 Автор
      23.05.2025 08:38

      сделать свой мультисим

      Вот, кстати, теперь, когда наконец в руки попали шлейфы для считывателя, можно тоже пробовать собирать аппаратный эмулятор на МК.

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

      Интересно, с чем это связано...


      1. mmMike
        23.05.2025 08:38

        Вот, кстати, теперь, когда наконец в руки попали шлейфы для считывателя, можно тоже пробовать собирать аппаратный эмулятор на МК.

        https://habr.com/ru/articles/795217/


  1. p0isk
    23.05.2025 08:38

    Странно, что за столько лет существования SIMTrace2, нигде не появился проект SIMTrace32 на базе stm32.


    1. MaFrance351 Автор
      23.05.2025 08:38

      Видимо, эта конструкция уже себя зарекомендовала и смысла собирать новую без добавления каких-то новых функций особо не было.