
Инструмент с открытым исходным кодом для перехвата нисходящих/восходящих каналов LTE
LTESniffer — это открытый инструмент для перехвата нисходящего (Downlink) и восходящего (Uplink) каналов LTE.
Сначала он декодирует физический нисходящий канал управления (PDCCH), чтобы получить информацию управления нисходящим каналом (DCI) и временные идентификаторы радио сети (RNTI) всех активных пользователей. Используя декодированные DCI и RNTI, LTESniffer далее декодирует физический нисходящий общий канал (PDSCH) и физический восходящий общий канал (PUSCH) для получения трафика данных нисходящего и восходящего направлений.
LTESniffer поддерживает API с тремя функциями для приложений безопасности и исследований. Многие исследования в области безопасности LTE предполагают наличие пассивного сниффера, способного захватывать пакеты, связанные с конфиденциальностью, из эфира. Однако ни один из существующих снифферов с открытым исходным кодом не удовлетворяет их требованиям, поскольку они не могут декодировать пакеты протоколов в PDSCH и PUSCH. Мы разработали доказательный API безопасности, поддерживающий три задачи, предложенные в предыдущих работах: 1) сопоставление идентификаторов, 2) сбор IMSI и 3) профилирование возможностей.
Подробнее см. в нашей [статье][paper].
LTESniffer — это инструмент, который может захватывать беспроводные сообщения LTE, передаваемые между базовой станцией и подключенными к ней смартфонами. LTESniffer поддерживает захват сообщений в обоих направлениях: от базовой станции к смартфонам и от смартфонов обратно к базовой станции.
LTESniffer НЕ МОЖЕТ РАСШИФРОВАТЬ зашифрованные сообщения между базовой станцией и смартфонами. Его можно использовать для анализа незашифрованных частей связи между базовой станцией и смартфонами. Например, для зашифрованных сообщений он позволяет пользователю анализировать незашифрованные части, такие как заголовки на MAC- и физическом уровнях. Однако те сообщения, которые отправляются в открытом виде, могут быть полностью проанализированы. Например, широковещательные сообщения, отправляемые базовой станцией, или сообщения в начале соединения полностью видимы.
Основная цель LTESniffer — поддержка исследований в области безопасности и анализа сотовых сетей. В связи со сбором пользовательских данных восходящего и нисходящего направлений любое использование LTESniffer должно соответствовать местным нормативным актам о перехвате трафика LTE. Мы не несем ответственности за любые незаконные цели, такие как преднамеренный сбор личной информации пользователей.
LTESniffer-record-subframe и её [README][capture-readme].LTESniffer-multi-usrp и её [README][multi-readme].LTESniffer реализован на основе [FALCON][falcon] с использованием библиотеки [srsRAN][srsran]. LTESniffer поддерживает:
В настоящее время LTESniffer стабильно работает на Ubuntu 18.04/20.04/22.04.
Для достижения декодирования трафика LTE в реальном времени требуется высокопроизводительный CPU с несколькими физическими ядрами, особенно в часы пик, когда на базовой станции много активных пользователей. LTESniffer успешно достиг декодирования в реальном времени при развертывании на ПК с Intel i7-9700K, декодируя трафик с базовой станции с 150 активными пользователями.
Рекомендуется следующее оборудование:
LTESniffer требует разные SDR для режимов перехвата восходящего и нисходящего каналов.
Для перехвата только нисходящего трафика от базовой станции LTESniffer совместим с большинством SDR, поддерживаемых библиотекой srsRAN (например, USRP или BladeRF). SDR должен подключаться к ПК через порт USB 3.0. Кроме того, он должен быть оснащен двумя приемными антеннами для декодирования нисходящих сообщений в режимах передачи 3 и 4. Если ваш SDR имеет только одну приемную антенну, LTESniffer будет декодировать только нисходящие сообщения в режиме передачи 1. Обратите внимание, что GPSDO является опциональным для перехвата нисходящего канала; он помогает улучшить синхронизацию, но не обязателен.
С другой стороны, для перехвата восходящего трафика от смартфонов к базовым станциям LTESniffer необходимо одновременно прослушивать две разные частоты (восходящую и нисходящую). Для решения этой проблемы LTESniffer поддерживает два варианта:
main LTESniffer.LTESniffer-multi-usrp LTESniffer и её [README][multi-readme].Важное замечание: во избежание непредвиденных ошибок следуйте приведенным ниже инструкциям на Ubuntu 18.04/20.04/22.04.
Зависимости
Зависимости UHD:
sudo apt update
sudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils doxygen ethtool \
g++ git inetutils-tools libboost-all-dev libncurses5 libncurses5-dev libusb-1.0-0 libusb-1.0-0-dev \
libusb-dev python3-dev python3-mako python3-numpy python3-requests python3-scipy python3-setuptools \
python3-ruamel.yaml
Клонируйте и соберите UHD из исходного кода (убедитесь, что текущая ветка выше 4.0):
git clone https://github.com/EttusResearch/uhd.git
cd <путь-к-uhd>/host
mkdir build
cd build
cmake ../
make -j 4
make test
sudo make install
sudo ldconfig
Загрузите прошивки для USRP:
sudo uhd_images_downloader
Мы используем карту 10Gb для подключения USRP X310 к ПК. Для настройки интерфейса USRP X310 и карты 10Gb обратитесь к руководству UHD [1], [2]. Для USRP B210 его следует подключать к ПК через порт USB 3.0.