Приветствую всех!

Интересующиеся сотовыми сетями наверняка слышали про то, что сигнальные сообщения, передающиеся открытым текстом, можно принять на самый обычный ТВ-тюнер на чипе от Realtek. Для более опытных пользователей существует прошивка Osmocom, софт Airprobe и более продвинутые модели SDR. Но как насчёт анализа вообще без использования SDR и тому подобных устройств? Не так давно появился инструмент, позволяющий ещё больше снизить порог вхождения для таких опытов.

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

❯ Суть такова

Давным-давно я уже как-то рассказывал про такой проект как Osmocom. Но одной лишь базовой станцией список их прошивок для таких телефонов не ограничивается. Одна из них позволяет принимать и записывать GSM-трафик для его дальнейшего анализа, о чём тут даже была отдельная статья. Но далеко немногие захотят специально искать старый телефон (часто по совершенно негуманной для древней кнопочной трубки цене), паять кабель, разбираться со сборкой и настройкой софта. То же самое можно сказать и про RTL SDR: его цена в ~1500 рублей (для самого бюджетного варианта) хоть и сравнительно мала, но всё же может показаться слишком высокой для единичного опыта. Есть ли ещё более простое решение? Как оказалось — да.

❯ Что это за софт?

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

В начале прошлого года P1 Security выкатила QCSuper — утилиту для приёма и анализа сигнального трафика GSM (а не так давно вышел QCSuper v2 с поддержкой и более современных сетей). Для её работы не нужен ни SDR, ни какое-то другое сложное или редкое железо, достаточно всего лишь обычного телефона на Android или USB-модема. К телефону предъявляется всего два требования: чипсет Qualcomm и наличие на нём root. Это резко увеличивает круг доступных девайсов: наверняка у многих дома завалялась парочка телефонов, полностью рабочих, но списанных из-за устаревания. Кто-то же, напротив, может использовать для этих целей свою основную трубку. В процессе работы софт не производит никаких изменений конфигурации телефона или каких-то данных на нём, так что можно не опасаться того, что аппарат сдохнет. Какой-либо передачи сигнала тоже не осуществляется.
Также может подойти USB-модем, опять таки на чипсете от Qualcomm, но тут есть пара нюансов, о которых поговорим чуть позже.

❯ Как работает QCSuper

В чём-то этот софт напоминает Osmocom: тут тоже используются некоторые специфические возможности телефонов. Правда, здесь всё куда проще: если там была нужна прошивка, которая загружалась через последовательный порт в ОЗУ или Flash, то этот софт использует штатный диагностический интерфейс. Этим интерфейсом (Qualcomm Diag) оснащено подавляющее большинство аппаратов на чипсете данного производителя. В большинстве случаев для работы с ним нужен root (так как требуется обращаться к файлу /dev/diag), но на некоторых телефонах его можно активировать вводом комбинации цифр. Примерно так же обстоят дела с модемами. На них диагностический режим активируется отправкой специальной AT-команды.

А вот так телефон в диагностическом режиме выглядит в диспетчере устройств.
В своё время при помощи специального софта через данный интерфейс можно было делать много интересного. Например, изменять IMEI и серийный номер, редактировать калибровочные коэффициенты и прочие установленные на заводе значения и совершать множество других низкоуровневых операций. Сейчас большинство из них закрыто, но кое-что всё же осталось. Этого и будет достаточно для того, чтобы запустить наш софт. Он представляет собой скрипт на Python, который взаимодействует с телефоном через ADB, после чего либо сохраняет принятые пакеты, либо создаёт подключение для Wireshark, позволяющее анализировать их в реальном времени.

❯ Обзор оборудования

Самое время посмотреть на девайсы для опытов. Так получилось, что смартфонов на Qualcomm в ходу у меня никогда не было («рабочий» телефон — на Samsung Exynos, предыдущие трубки были на Mediatek), поэтому пришлось обратиться к щедрым закромам Родины.

Старенький Samsung Galaxy S5. Девайс уже фигурировал в опытах с домашней сетью LTE и отлично работает.

Терминал сбора данных РЖД, также оснащённый процессором от Qualcomm. Бонусом идёт root, предоставленный в этой прошивке прямо с завода.

На дне одной из коробок отыскался и древний модем. К моему удивлению, оператор «Мотив» всё ещё жив и вроде как работает.

С обратной стороны видим модель — Huawei EG162G. Девайс довольно распространённый, в своё время также продавался у «Мегафона».

Гуглим. Девайс построен на чипе от Qualcomm, так что для опытов тоже подойдёт.

❯ Ставим софт

Для опытов понадобится машина с Linux и девайс, удовлетворяющий критериям выше. На виртуальной машине софт тоже работает, но очень плохо. Итак, открываем терминал и выполняем следующие команды:

sudo apt install python3-pip adb wireshark
sudo pip3 install --upgrade qcsuper

В общем-то, на этом всё. После недолгого ожидания софт успешно встанет.

❯ Телефон

Теперь очередь телефона. О том, как получить на нём root, рассказывать не вижу смысла: для разных девайсов дела обстоят по-разному. Также необходимо зайти в режим разработчика и включить ADB (пункт «Отладка по USBи»).

Теперь на компьютере пробуем запустить ADB: adb shell
Скорее всего, в ответ мы получим ошибку. Чтобы её убрать, необходимо обновить разрешения.

Первым делом, нужно узнать VID и PID нашего телефона, для чего вводим:

lsusb

В моём случае этими данными оказались 05C6:9027. Записываем куда-нибудь эти числа. Теперь открываем файл конфигурации:

sudo nano /etc/udev/rules.d/51-android.rules

В конец его дописываем следующую строку:

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="9027", MODE="0666", GROUP="plugdev"

Само собой, VID и PID надо поменять на наши. Если в файле есть какие-то записи, жмякаем Enter и добавляем новой строкой нашу, если же он пуст или не существует, то просто вставляем туда этот текст с изменёнными для нашего устройства значениями и сохраняем изменения. Теперь обновляем список правил:

sudo udevadm control --reload-rules

Далее отключаем телефон от компьютера, втыкаем его заново и снова пробуем подключиться.

После этого откроется ADB shell. Убедившись, что подключение успешно, выходим. Всё, ADB настроен, теперь можно пробовать запускать софт.

❯ Использование софта

Ну что же, время пробовать. Для запуска вводим следующую команду:

qcsuper --adb --wireshark-live

После этого в консоли должно будет появиться примерно следующее:

После нескольких не слишком удачных попыток на виртуальной машине я перешёл на обычный ПК. На ВМ софт тоже работал, но ловил только единичные пакеты, подозреваю, из-за того, что скорость USB-порта при его пробросе сильно проседала.

Далее на телефоне подтверждаем подключение по ADB. Если этого не сделать, то софт вылетит с ошибкой и придётся повторить снова.

После непродолжительной загрузки откроется Wireshark. Вот и всё, можно приступать к анализу захваченных пакетов. Помимо приёма их в реальном времени QCSuper поддерживает также запись в *.pcap-файл для дальнейшего анализа в том же Wireshark или другом ПО. При использовании ADB не запускайте софт от пользователя root, иначе при открытии Wireshark вы получите примерно то, что на скриншоте.

❯ Про модемы

Как уже говорилось ранее, QCSuper работает и с USB-модемами на чипсете Qualcomm.
В этом случае используется он практически идентично телефону. Запускается софт на этот раз следующей командой:

qcsuper --usb-modem /dev/ttyUSB0 --wireshark-live

/dev/ttyUSB0 нужно заменить на используемый устройством порт, а сам модем - разлочить (привязанный к симке одного оператора модем работать не будет) и активировать на нём диагностический порт. Для этого надо выполнить AT-команду AT$QCDMG.
Также модем должен быть переведён в режим USB-модема (а не USB-накопителя).

❯ Что с этим делать дальше?

В процессе работы весь перехваченный трафик либо записывается Wireshark, либо сохраняется в *.pcap-файл для его дальнейшего анализа.

Здесь записывается всё, что происходит с телефоном, от установления соединения до разрыва связи.

Если попробовать позвонить, отправить SMS или выйти в интернет, пакетов будет ещё больше.

Поскольку при записи пакетов используются стандартные для этой области протоколы (например, GSMTAP), их можно анализировать всё теми же инструментами, о которых рассказывалось в многочисленных статьях про SDR, например, при помощи gr-gsm.

❯ Так что же в итоге?

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

Такие дела.


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

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

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