
Um espião open-source de downlink/uplink LTE
LTESniffer é um espião open-source de Downlink/Uplink LTE
Primeiro, ele decodifica o Physical Downlink Control Channel (PDCCH) para obter as Downlink Control Informations (DCIs) e os Radio Network Temporary Identifiers (RNTIs) de todos os usuários ativos. Usando as DCIs e RNTIs decodificados, o LTESniffer decodifica ainda o Physical Downlink Shared Channel (PDSCH) e o Physical Uplink Shared Channel (PUSCH) para recuperar o tráfego de dados de uplink e downlink.
O LTESniffer suporta uma API com três funções para aplicações e pesquisas de segurança. Muitas pesquisas de segurança em LTE assumem um sniffer passivo que possa capturar pacotes relacionados à privacidade no ar. No entanto, nenhum dos sniffers open-source atuais atende a esses requisitos, pois não conseguem decodificar pacotes de protocolo em PDSCH e PUSCH. Desenvolvemos uma API de segurança de prova de conceito que suporta três tarefas propostas por trabalhos anteriores: 1) Mapeamento de identidade, 2) Coleta de IMSI e 3) Perfil de capacidade.
Consulte nosso artigo para mais detalhes.
O LTESniffer é uma ferramenta que pode capturar as mensagens sem fio LTE enviadas entre uma torre de celular e os smartphones conectados a ela. O LTESniffer suporta a captura de mensagens em ambas as direções, da torre para os smartphones e dos smartphones de volta para a torre de celular.
O LTESniffer NÃO PODE DESCRIPTOGRAFAR mensagens criptografadas entre a torre de celular e os smartphones. Ele pode ser usado para analisar partes não criptografadas da comunicação entre a torre de celular e os smartphones. Por exemplo, para mensagens criptografadas, ele pode permitir que o usuário analise partes não criptografadas, como cabeçalhos nas camadas MAC e física. No entanto, as mensagens enviadas em texto puro podem ser completamente analisáveis. Por exemplo, as mensagens de broadcast enviadas pela torre de celular, ou as mensagens no início da conexão, são completamente visíveis.
O principal propósito do LTESniffer é apoiar pesquisas de segurança e análise na rede celular. Devido à coleta de dados de usuário de uplink-downlink, qualquer uso do LTESniffer deve seguir as regulamentações locais sobre sniffing de tráfego LTE. Não somos responsáveis por quaisquer propósitos ilegais, como a coleta intencional de informações relacionadas à privacidade dos usuários.
LTESniffer-record-subframe e seu README para mais detalhes.LTESniffer-multi-usrp e seu README para mais detalhes.O LTESniffer é implementado sobre o FALCON com a ajuda da biblioteca srsRAN. O LTESniffer suporta:
Atualmente, o LTESniffer funciona de forma estável no Ubuntu 18.04/20.04/22.04.
Alcançar a decodificação em tempo real do tráfego LTE exige uma CPU de alto desempenho com múltiplos núcleos físicos, especialmente durante horários de pico, quando a estação base tem muitos usuários ativos. O LTESniffer alcançou com sucesso a decodificação em tempo real quando implantado em um PC Intel i7-9700K, decodificando tráfego de uma estação base com 150 usuários ativos.
O seguinte hardware é recomendado
O LTESniffer exige SDRs diferentes para seus modos de sniffing de uplink e downlink.
Para snifar apenas o tráfego de downlink da estação base, o LTESniffer é compatível com a maioria dos SDRs suportados pela biblioteca srsRAN (por exemplo, USRP ou BladeRF). O SDR deve ser conectado ao PC por meio de uma porta USB 3.0. Além disso, ele deve estar equipado com duas antenas RX para decodificar mensagens de downlink nos modos de transmissão 3 e 4. Se o seu SDR tiver apenas uma antena RX, o LTESniffer só decodificará mensagens de downlink no modo de transmissão 1. Observe que o GPSDO é opcional para o sniffing de downlink; ele ajuda a melhorar a sincronização, mas não é obrigatório.
Por outro lado, para snifar o tráfego de uplink dos smartphones para as estações base, o LTESniffer precisa ouvir duas frequências diferentes (Uplink e Downlink) simultaneamente. Para resolver esse problema, o LTESniffer oferece duas opções:
main do LTESniffer.LTESniffer-multi-usrp do LTESniffer e seu README.Nota importante: Para evitar erros inesperados, siga os passos abaixo no Ubuntu 18.04/20.04/22.04.
Dependências
Dependências do 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
Clone e compile o UHD a partir do código-fonte (certifique-se de que o branch atual seja superior a 4.0)
git clone https://github.com/EttusResearch/uhd.git
cd <uhd-repo-path>/host
mkdir build
cd build
cmake ../
make -j 4
make test
sudo make install
sudo ldconfig
Baixe os firmwares para USRPs:
sudo uhd_images_downloader
Usamos uma placa de 10Gb para conectar o USRP X310 ao PC; consulte o Manual do UHD [1], [2] para configurar o USRP X310 e a interface da placa de 10Gb. Para o USRP B210, ele deve ser conectado ao PC por meio de uma porta USB 3.0.
Teste a conexão e o firmware (somente para USRP X310):
sudo sysctl -w net.core.rmem_max=33554432
sudo sysctl -w net.core.wmem_max=33554432
sudo ifconfig <10Gb card interface> 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
Compile o LTESniffer a partir do código-fonte:
git clone https://github.com/SysSec-KAIST/LTESniffer.git
cd LTESniffer
mkdir build
cd build
cmake ../
make -j 4 (use 4 threads)
O LTESniffer tem 3 funções principais:
Depois de compilar a partir do código-fonte, o LTESniffer está localizado em <build-dir>/src/LTESniffer
Observe que, antes de usar o LTESniffer em redes comerciais, é necessário verificar as regulamentações locais sobre sniffing de tráfego LTE, como explicamos na Consideração Ética.
Para descobrir a estação base e a banda Uplink-Downlink à qual o smartphone de teste está conectado, instale o aplicativo Cellular-Z no smartphone de teste (o aplicativo só suporta Android). Ele mostrará o ID da célula e a banda/frequência Uplink-Downlink à qual o smartphone de teste está conectado. Certifique-se de que o LTESniffer também se conecte à mesma célula e frequência.
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -C -m 0
example: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0
-A: number of antennas
-W: number of threads
-f: downlink frequency
-C: turn on cell search
-m: sniffer mode, 0 for downlink sniffing and 1 for uplink sniffing
Nota: para executar o LTESniffer com USRP B210 no modo downlink, adicione a opção -a "num_recv_frames=512" à linha de comando.
Essa opção estende o buffer de recepção do USRP B210 para obter melhor sincronização.
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -C -m 0 -a "num_recv_frames=512"
example: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -C -m 0 -a "num_recv_frames=512"
Nota: No modo de sniffing de uplink, os smartphones de teste devem estar localizados próximos ao sniffer, porque a potência do sinal de uplink do UE é significativamente mais fraca em comparação ao sinal de downlink da estação base.
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -u <UL Freq> -C -m 1
example: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1
-u: uplink frequency
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -u <UL Freq> -C -m 1 -z 3
example: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -C -m 1 -z 3
-z: 3 for turnning on 3 functions of sniffer, which are identity mapping, IMSI collecting, and UECapability profiling.
2 for UECapability profiling
1 for IMSI collecting
0 for identity mapping
O LTESniffer pode snifar uma estação base específica usando as opções -I <Phycial Cell ID (PCI)> -p <number of Physical Resource Block (PRB)>. Nesse caso, o LTESniffer não faz a busca de célula, mas se conecta diretamente à célula especificada.
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -I <PCI> -p <PRB> -m 0
sudo ./<build-dir>/src/LTESniffer -A 2 -W <number of threads> -f <DL Freq> -u <UL Freq> -I <PCI> -p <PRB> -m 1
example: sudo ./src/LTESniffer -A 2 -W 4 -f 1840e6 -u 1745e6 -I 379 -p 100 -m 1
O modo de depuração pode ser habilitado usando a opção -d. Nesse caso, as mensagens de depuração serão impressas no terminal.
O LTESniffer fornece arquivos pcap na saída. O arquivo pcap pode ser aberto no WireShark para análise adicional e rastreamento de pacotes.
O nome do arquivo pcap de downlink: sniffer_dl_mode.pcap, arquivo pcap de uplink: sniffer_ul_mode.pcap e arquivo pcap da API: api_collector.pcap.
Os arquivos pcap estão localizados no mesmo diretório em que o LTESniffer foi executado.
Para habilitar o WireShark a analisar corretamente os pacotes decodificados, consulte o guia de configuração do WireShark aqui. Há também alguns exemplos de arquivos pcap no link.
Nota: O arquivo pcap de uplink contém mensagens de uplink e downlink. No WireShark, use este filtro para monitorar apenas mensagens de uplink: mac-lte.direction == 0; ou este filtro para monitorar apenas mensagens de downlink: mac-lte.direction == 1.
O alcance efetivo para o sniffing de uplink é limitado no LTESniffer devido à capacidade do front-end de RF do hardware (ou seja, SDR). A potência do sinal de uplink do UE é significativamente mais fraca em comparação ao sinal de downlink, porque o UE é um dispositivo portátil que otimiza o uso da bateria, enquanto o eNB usa potência suficiente para cobrir uma grande área. Para capturar com sucesso o tráfego de uplink, o LTESniffer pode aumentar a intensidade do sinal i) estando fisicamente próximo ao UE, ou ii) melhorando a capacidade de recepção do sinal com hardware especializado, como uma antena direcional, front-end de RF dedicado e amplificador de sinal.
Modo de Sniffing de Downlink
Processed 1000/1000 subframes: Número de subtramas processadas pelo LTESniffer no último 1 segundo. Existem 1000 subtramas LTE por segundo por projeto.
RNTI: Radio Network Temporary Identifier dos UEs.
Table: O esquema máximo de modulação usado pelos smartphones no downlink. O LTESniffer suporta até 256QAM no downlink. Consulte nosso artigo para mais detalhes.
Active: Número de mensagens detectadas de RNTIs.
Success: Número de mensagens decodificadas com sucesso em relação ao número de mensagens detectadas (Active).
New TX, ReTX, HARQ, Normal: Estatísticas de novas mensagens e mensagens retransmitidas. Esta função está em desenvolvimento.
W_MIMO, W_pinfor, Other: Número de mensagens com configuração de rádio incorreta, apenas para depuração.
Modo de Sniffing de Uplink
Max Mod: O esquema máximo de modulação usado pelos smartphones no uplink. Pode ser 16/64/256QAM dependendo do suporte dos smartphones e da configuração da rede. Consulte nosso artigo para mais detalhes.
SNR: Relação sinal-ruído (dB). SNR baixo significa que a qualidade do sinal de uplink do smartphone está ruim. Uma possível razão é o smartphone estar longe do sniffer.
DL-UL_delay: A média do atraso de tempo entre o sinal de downlink da estação base e o sinal de uplink do smartphone.
Other Info: Informação apenas para depuração.
Modo API
Detected Identity: O nome da identidade detectada.
Value: O valor da identidade detectada.
From Message: O nome da mensagem que contém a identidade detectada.
Expressamos nosso sincero agradecimento ao FALCON e à equipe SRS por disponibilizarem seus excelentes softwares.
Agradecimentos especiais a todos os colaboradores que nos ajudaram a corrigir bugs e melhorar o LTESniffer
Consulte nosso artigo para mais detalhes.
@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}
}
P: É obrigatório usar GPSDO com o USRP para executar o LTESniffer?
R: O GPSDO é útil para uma sincronização mais estável. No entanto, para o modo de sniffing de downlink, o LTESniffer ainda consegue sincronizar com o sinal LTE para decodificar os pacotes sem GPSDO. Para o modo de sniffing de uplink, o GPSDO é obrigatório apenas ao usar 2 USRPs da série B, pois é a fonte de referência de tempo e clock para a sincronização entre os canais de uplink e downlink. A outra opção de SDR para uplink, usando um único USRP X310, não exige GPSDO.
P: Para tráfego de downlink, posso usar um SDR mais barato?
R: Tecnicamente, qualquer SDR suportado pela biblioteca srsRAN, como Blade RF, pode ser usado para executar o LTESniffer no modo de sniffing de downlink. No entanto, testamos a função de sniffing de downlink do LTESniffer apenas com USRP B210 e X310.
P: É ilegal usar o LTESniffer para snifar o tráfego LTE?
R: Você deve verificar as regulamentações locais sobre sniffing de tráfego LTE (não criptografado). Outra forma de testar o LTESniffer é montar uma rede LTE pessoal usando srsRAN - uma implementação LTE de código aberto em uma gaiola de Faraday.
P: O LTESniffer pode ser usado para visualizar o conteúdo das mensagens entre dois usuários?
R: Pode-se ver apenas a parte "não criptografada" das mensagens. Observe que o tráfego aéreo entre a estação base e os usuários é majoritariamente criptografado.
P: Existe alguma identidade de dispositivo exposta em texto puro na rede LTE?
R: Sim, a literatura mostra que múltiplas identidades são expostas, como TMSI, GUTI, IMSI e RNTI. Consulte a literatura acadêmica para mais detalhes, por exemplo, Watching the Watchers: Practical Video Identification Attack in LTE Networks.