Приветствую всех!
Интересующиеся сотовыми сетями наверняка слышали про то, что сигнальные сообщения, передающиеся открытым текстом, можно принять на самый обычный ТВ-тюнер на чипе от 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-канале ↩
Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.