Как стать автором
Обновить
1982.45
Timeweb Cloud
То самое облако

Изучаем работу SIM-карт с помощью Osmocom SIMTrace2

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



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

Суть такова


Если вы читаете этот пост, то наверняка хотя бы в общих чертах представляете, как работает аутентификация в 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-канале



Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.
Теги:
Хабы:
+52
Комментарии16

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud