
Инструмент с открытым исходным кодом для перехвата нисходящих/восходящих каналов LTE
LTESniffer — это открытый инструмент для перехвата нисходящего (Downlink) и восходящего (Uplink) каналов LTE.
Сначала он декодирует физический нисходящий канал управления (PDCCH), чтобы получить информацию управления нисходящим каналом (DCI) и временные идентификаторы радио сети (RNTI) всех активных пользователей. Используя декодированные DCI и RNTI, LTESniffer далее декодирует физический нисходящий общий канал (PDSCH) и физический восходящий общий канал (PUSCH) для получения трафика данных нисходящего и восходящего направлений.
LTESniffer поддерживает API с тремя функциями для приложений безопасности и исследований. Многие исследования в области безопасности LTE предполагают наличие пассивного сниффера, способного захватывать пакеты, связанные с конфиденциальностью, из эфира. Однако ни один из существующих снифферов с открытым исходным кодом не удовлетворяет их требованиям, поскольку они не могут декодировать пакеты протоколов в PDSCH и PUSCH. Мы разработали доказательный API безопасности, поддерживающий три задачи, предложенные в предыдущих работах: 1) сопоставление идентификаторов, 2) сбор IMSI и 3) профилирование возможностей.
Подробнее см. в нашей статье.
LTESniffer — это инструмент, который может захватывать беспроводные сообщения LTE, передаваемые между базовой станцией и подключенными к ней смартфонами. LTESniffer поддерживает захват сообщений в обоих направлениях: от базовой станции к смартфонам и от смартфонов обратно к базовой станции.
LTESniffer НЕ МОЖЕТ РАСШИФРОВАТЬ зашифрованные сообщения между базовой станцией и смартфонами. Его можно использовать для анализа незашифрованных частей связи между базовой станцией и смартфонами. Например, для зашифрованных сообщений он позволяет пользователю анализировать незашифрованные части, такие как заголовки на MAC- и физическом уровнях. Однако те сообщения, которые отправляются в открытом виде, могут быть полностью проанализированы. Например, широковещательные сообщения, отправляемые базовой станцией, или сообщения в начале соединения полностью видимы.
Основная цель LTESniffer — поддержка исследований в области безопасности и анализа сотовых сетей. В связи со сбором пользовательских данных восходящего и нисходящего направлений любое использование LTESniffer должно соответствовать местным нормативным актам о перехвате трафика LTE. Мы не несем ответственности за любые незаконные цели, такие как преднамеренный сбор личной информации пользователей.
LTESniffer-record-subframe и её README.LTESniffer-multi-usrp и её README.LTESniffer реализован на основе FALCON с использованием библиотеки 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.Важное замечание: во избежание непредвиденных ошибок следуйте приведенным ниже инструкциям на 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.
Проверьте соединение и прошивку (только для USRP X310):
sudo sysctl -w net.core.rmem_max=33554432
sudo sysctl -w net.core.wmem_max=33554432
sudo ifconfig <интерфейс карты 10Gb> mtu 9000
sudo uhd_usrp_probe
sudo apt-get install build-essential git cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
sudo apt-get install libglib2.0-dev libudev-dev libcurl4-gnutls-dev libboost-all-dev qtdeclarative5-dev libqt5charts5-dev
Сборка LTESniffer из исходного кода:
git clone https://github.com/SysSec-KAIST/LTESniffer.git
cd LTESniffer
mkdir build
cd build
cmake ../
make -j 4 (используется 4 потока)
LTESniffer имеет 3 основные функции:
После сборки из исходного кода LTESniffer находится в <каталог-сборки>/src/LTESniffer.
Обратите внимание: перед использованием LTESniffer в коммерческих сетях необходимо проверить местные правила перехвата LTE-трафика, как указано в разделе Этические соображения.
Чтобы определить, к какой базовой станции и полосе восходящего/нисходящего каналов подключен тестируемый смартфон, установите на него приложение Cellular-Z (приложение поддерживает только Android). Оно покажет идентификатор соты и полосу/частоту восходящего/нисходящего каналов, к которым подключен смартфон. Убедитесь, что LTESniffer также подключается к той же соте и частоте.
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -C -m 0
пример: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0
-A: количество антенн
-W: количество потоков
-f: частота нисходящего канала
-C: включить поиск соты
-m: режим сниффера, 0 для нисходящего, 1 для восходящего
Примечание: для запуска LTESniffer с USRP B210 в режиме нисходящего канала добавьте опцию -a "num_recv_frames=512" в командную строку.
Эта опция расширяет приемный буфер для USRP B210 для достижения лучшей синхронизации.
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -C -m 0 -a "num_recv_frames=512"
пример: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0 -a "num_recv_frames=512"
Примечание: в режиме перехвата восходящего канала тестируемые смартфоны должны находиться рядом со сниффером, так как мощность сигнала восходящего канала от UE значительно слабее, чем мощность сигнала нисходящего канала от базовой станции.
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -u <частота UL> -C -m 1
пример: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1
-u: частота восходящего канала
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -u <частота UL> -C -m 1 -z 3
пример: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1 -z 3
-z: 3 - включение всех 3 функций сниффера: сопоставление идентификаторов, сбор IMSI и профилирование UECapability.
2 - профилирование UECapability
1 - сбор IMSI
0 - сопоставление идентификаторов
LTESniffer может перехватывать трафик на конкретной базовой станции с помощью опций -I <физический идентификатор соты (PCI)> -p <количество физических ресурсных блоков (PRB)>. В этом случае LTESniffer не выполняет поиск соты, а подключается непосредственно к указанной соте.
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -I <PCI> -p <PRB> -m 0
sudo ./<каталог-сборки>/src/LTESniffer -A 2 -W <количество потоков> -f <частота DL> -u <частота UL> -I <PCI> -p <PRB> -m 1
пример: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -I 379 -p 100 -m 1
Режим отладки можно включить с помощью опции -d. В этом случае сообщения отладки будут выводиться на терминал.
LTESniffer предоставляет pcap-файлы в качестве вывода. Pcap-файл можно открыть в WireShark для дальнейшего анализа и трассировки пакетов.
Имя pcap-файла нисходящего канала: sniffer_dl_mode.pcap, восходящего канала: sniffer_ul_mode.pcap, API: api_collector.pcap.
Pcap-файлы находятся в том же каталоге, откуда был запущен LTESniffer.
Чтобы WireShark мог правильно анализировать декодированные пакеты, обратитесь к руководству по настройке WireShark здесь. Там также приведены некоторые примеры pcap-файлов.
Примечание: Pcap-файл восходящего канала содержит как сообщения восходящего, так и нисходящего каналов. В WireShark используйте следующий фильтр для просмотра только восходящих сообщений: mac-lte.direction == 0; или этот фильтр для просмотра только нисходящих сообщений: mac-lte.direction == 1.
Эффективная дальность перехвата восходящего канала в LTESniffer ограничена из-за возможностей радиочастотного фронтэнда аппаратного обеспечения (SDR). Мощность сигнала восходящего канала от UE значительно слабее, чем мощность сигнала нисходящего канала, поскольку UE — это портативное устройство, оптимизирующее использование батареи, в то время как eNB использует достаточную мощность для покрытия большой площади. Для успешного захвата восходящего трафика LTESniffer может увеличить мощность сигнала: i) находясь физически близко к UE, или ii) улучшив возможности приема сигнала с помощью специализированного оборудования, такого как направленная антенна, выделенный радиочастотный фронтэнд и усилитель сигнала.
Режим перехвата нисходящего канала
Processed 1000/1000 subframes: Количество подкадров, обработанных LTESniffer за последнюю 1 секунду. По замыслу в LTE 1000 подкадров в секунду.
RNTI: Временный идентификатор радиосети UE.
Table: Максимальная схема модуляции, используемая смартфонами в нисходящем канале. LTESniffer поддерживает до 256QAM в нисходящем канале. Подробнее см. в нашей статье.
Active: Количество обнаруженных сообщений RNTI.
Success: Количество успешно декодированных сообщений относительно количества обнаруженных (Active).
New TX, ReTX, HARQ, Normal: Статистика новых и повторно переданных сообщений. Эта функция находится в разработке.
W_MIMO, W_pinfor, Other: Количество сообщений с неверной конфигурацией радио, только для отладки.
Режим перехвата восходящего канала
Max Mod: Максимальная схема модуляции, используемая смартфонами в восходящем канале. Может быть 16/64/256QAM в зависимости от поддержки смартфоном и конфигурации сети. Подробнее см. в нашей статье.
SNR: Отношение сигнал/шум (дБ). Низкое SNR означает плохое качество сигнала восходящего канала от смартфона. Возможная причина — смартфон находится далеко от сниффера.
DL-UL_delay: Средняя задержка между сигналом нисходящего канала от базовой станции и сигналом восходящего канала от смартфона.
Other Info: Информация только для отладки.
Режим API
Detected Identity: Название обнаруженного идентификатора.
Value: Значение обнаруженного идентификатора.
From Message: Название сообщения, содержащего обнаруженный идентификатор.
Мы искренне благодарны командам FALCON и SRS за предоставление своих замечательных программных продуктов.
Особая благодарность всем участникам, которые помогли исправить ошибки и улучшить LTESniffer:
Подробнее см. в нашей статье.
@inproceedings{hoang:ltesniffer,
title = {{LTESniffer: An Open-source LTE Downlink/Uplink Eavesdropper}},
author = {Hoang, Dinh Tuan and Park, CheolJun and Son, Mincheol and Oh, Taekkyung and Bae, Sangwook and Ahn, Junho and Oh, BeomSeok and Kim, Yongdae},
booktitle = {16th ACM Conference on Security and Privacy in Wireless and Mobile Networks (WiSec '23)},
year = {2023}
}
Q: Обязательно ли использовать GPSDO с USRP для работы LTESniffer?
A: GPSDO полезен для более стабильной синхронизации. Однако для режима перехвата нисходящего канала LTESniffer все еще может синхронизироваться с LTE-сигналом для декодирования пакетов без GPSDO. Для режима перехвата восходящего канала GPSDO требуется только при использовании 2 USRP B-серии, так как он служит источником тактовой частоты и временной привязки для синхронизации между каналами восходящего и нисходящего направлений. Другой вариант SDR для восходящего канала — использование одного USRP X310 — не требует GPSDO.
Q: Для нисходящего трафика можно ли использовать более дешевый SDR?
A: Технически любые SDR, поддерживаемые библиотекой srsRAN, такие как Blade RF, можно использовать для запуска LTESniffer в режиме перехвата нисходящего канала. Однако мы протестировали функцию перехвата нисходящего канала LTESniffer только с USRP B210 и X310.
Q: Незаконно ли использовать LTESniffer для перехвата LTE-трафика?
A: Вам необходимо проверить местные правила перехвата (незашифрованного) LTE-трафика. Другой способ протестировать LTESniffer — развернуть персональную LTE-сеть с помощью srsRAN — реализации LTE с открытым исходным кодом в клетке Фарадея.
Q: Можно ли с помощью LTESniffer просматривать содержимое сообщений между двумя пользователями?
A: Можно увидеть только "незашифрованную" часть сообщений. Обратите внимание, что большая часть эфирного трафика между базовой станцией и пользователями зашифрована.
Q: Есть ли какие-либо идентификаторы устройств, передаваемые в открытом виде в сети LTE?
A: Да, литература показывает, что существует множество идентификаторов, передаваемых в открытом виде, таких как TMSI, GUTI, IMSI и RNTI. Подробнее см. в академической литературе, например, Watching the Watchers: Practical Video Identification Attack in LTE Networks.