Pular para o conteúdo principal

DOE AGORA Qualquer valor

Usando SMS silencioso para localizar usuários LTE

Usando SMS silencioso para localizar usuários LTEImplementação de prova de conceito

Nesta postagem do blog, vou me aprofundar em uma técnica intrigante: usar mensagens SMS silenciosas para rastrear a localização dos usuários LTE. Veremos como um invasor pode enviar mensagens SMS silenciosas com um padrão definido e analisar o tráfego LTE para verificar a localização da vítima. As seguintes ferramentas formam coletivamente o arsenal para esta prova de conceito:

  • OnePlus2 (Rooted) – Este dispositivo funciona como um modem explorado pelo invasor para enviar mensagens SMS silenciosas.
  • Celular da Vítima - Qualquer telefone com cartão SIM válido pode ser usado. Um telefone Android pode ser mais conveniente para utilizar aplicativos como o Network Signal Guru para recuperar informações cruciais sobre o eNodeB ao qual o telefone da vítima está conectado (sim, estamos alterando um pouco as regras).
  • USRP B210 - Rádio Definido por Software (SDR) usado para interceptar tráfego LTE no downlink.
  • LTESniffer – Um software de código aberto usado em conjunto com o USRP para interceptar tráfego LTE.
  • Pelo menos dois cartões SIM – necessários para o telefone da vítima e o modem do invasor.
  • Ubuntu 20.04 – O sistema operacional usado pelo invasor.

Mas primeiro, vamos começar com alguma teoria.

Nota: Como as mesmas definições descritas no 3GPP TS 23.0.40 foram utilizadas neste post, o glossário abaixo é o mesmo utilizado no GSM. Por exemplo, o termo “estação móvel” (MS) é sinônimo do termo “equipamento de usuário” (UE), conforme definido em UMTS e LTE.

Estrutura SMSTPDU

O 3GPP definiu seis tipos de mensagens que podem ser trocadas entre a Estação Móvel (MS) e a Central SMS (SC), e cada uma possui um formato diferente dependendo da direção da comunicação. No nosso caso, estamos interessados ​​no tipo SMS-SUBMIT, que define a estrutura de uma mensagem enviada pelo usuário.

De acordo com a definição, o SMS SUBMIT é uma unidade de dados de protocolo de transferência de mensagens curtas contendo dados do usuário (a mensagem curta), sendo enviada de uma MS para um SC. O formato Transfer Protocol Data Uniti (TPDU) consiste em uma série de informações codificadas de 8 bits, representadas por uma string ASCII composta por pares de dígitos hexadecimais, cada um representando 8 bits. A representação esquemática de um TPDU é a seguinte:

TPDU

A especificação nos diz que o identificador de protocolo TP (TP-PID) consiste em um octeto. Entre as várias configurações de bits neste octeto, lemos que no caso em que o bit 7 é 0, o bit 6 é 1 e os bits 5 a 0 são todos zeros, uma PDU SMS-SUBMIT do tipo “Short Message Type 0” é configurada .

Este tipo de mensagem, conforme descrito logo a seguir no documento da secção 9.2.3.9, estabelece que “o ME deve acusar a recepção da mensagem curta, mas deve descartar o seu conteúdo”. Isso significa que o Equipamento Móvel (ME) receberá a mensagem, mas não a armazenará nem no cartão SIM nem na memória do telefone e, o que é mais interessante, não notificará o usuário sobre o recebimento da mensagem com notificações ou sons.

Para criar uma PDU facilmente, você pode usar um dos serviços online como você pode ver na foto abaixo. O serviço irá gerar uma mensagem padrão. Para deixar claro, agora que identificamos o bit responsável por esta configuração, basta seguir o cenário descrito acima, onde TP-PID deve ser igual a 01000000 (40 em hexadecimal).

TPDU

Enviando um SMS silencioso

Para enviar a mensagem silenciosa, aproveitei os comandos AT usados ​​para gerenciamento da funcionalidade do modem. Como dispositivo ME, usei um OnePlus2 com privilégios de root. Conectando via ADB, inicialmente enviei o comando echo -e "AT\r" > /dev/smd0para verificar se o modem estava pronto para a conexão. Simultaneamente, verifiquei as respostas do modem com um shell no qual executei o cat /dev/sdm0O restante dos comandos, juntamente com uma breve explicação, estão listados abaixo.

AT+CMGF=0    //Set PDU mode          
AT+CMGS=19  //Send message, 19 octets (excluding the two initial zeros) 
> 0011000C919333143244650000FF05F4F29C1E02 //Actual message (fake number)
^Z

//^Z acts as an "enter"

enviando silêncio

Para verificar a recepção da mensagem silenciosa, conectei o telefone alvo a um PC e iniciei o QCsuper . Como você pode ver na imagem abaixo, a mensagem silenciosa foi recebida corretamente!

sms recebidossms recebidos

Encontrar a localização da vítima

Agora que sabemos como enviar mensagens silenciosas, vamos imaginar um invasor que pretende determinar se a vítima está ou não em uma área específica. Para simplificar, vamos supor que o invasor conheça o número de telefone da vítima e tenha pelo menos conhecimento parcial de seus movimentos típicos. Para verificar se a vítima está em uma das áreas previamente identificadas, o invasor pode usar um Rádio Definido por Software (SDR) para detectar conexões de downlink e, ao mesmo tempo, enviar mensagens silenciosas para a vítima (sem que ela perceba), criando um padrão reconhecível. Eles podem então analisar os pacotes transmitidos em busca desse padrão para determinar se a vítima está ou não fisicamente naquele local.

Vamos ver como isso pode ser feito. Primeiramente, o invasor pode criar um script muito simples como o seguinte:

 echo -e "AT\r" > /dev/smd0

 for i in {1..10}
 do
    echo -e "AT+CMGS=19\r" > /dev/smd0
    echo -e "0011000C919333143244650000FF05F4F29C1E02" > /dev/smd0
    echo -e "^Z" > /dev/smd0
    sleep 2
done

Este script enviará 10 mensagens, cada uma com intervalo de 2 segundos entre elas, criando um padrão bastante reconhecível, como veremos mais adiante. É claro que, num cenário real com centenas de utilizadores ligados à mesma Estação Base (BS), poderá ser necessário um padrão ainda mais distinto.

Neste ponto, tudo o que o invasor precisa fazer é conectar seu próprio USRP B210 e usar o LTEsniffer para detectar o tráfego de downlink LTE da estação base. Como mencionamos anteriormente, para esta prova de conceito simplificada, o invasor precisa estar ciente da área onde procura a vítima. Isto significa descobrir a frequência da estação base que cobre a área (ou, alternativamente, o seu ID). Para resolver este problema, pode-se utilizar um aplicativo de smartphone como o Network Signal Guru na área de interesse, utilizando um cartão SIM do mesmo provedor da vítima.

pacotes

O invasor hipotético, depois de ouvir as transmissões LTE com LTEsniffer por um período de tempo suficiente, acabará com um arquivo pcap contendo as informações de controle de downlink (DCIs) e os identificadores temporários de rede de rádio (RNTIs) de todos os usuários ativos.

Ao analisar essas transmissões, eles conseguem identificar se a vítima está ou não presente na área monitorada. Pela imagem acima, podemos ver que a partir das 17h20, a vítima recebeu pacotes em intervalos de dois segundos (aproximadamente, contabilizando eventuais atrasos e interferências) para um total de 10 conexões, assim como o padrão implementado pelo script :D.

Deve-se notar que o RNTI obtido também pode ser usado para ataques posteriores.

Fique atento aos trabalhos futuros. Obrigado!

Referências:

https://www.slideshare.net/iazza/dcm-final-23052013fullmentecensurado

https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=747

https://www.ndss-symposium.org/wp-content/uploads/2018/02/ndss2018_02A-4_Hong_paper.pdf

Comentários

Ebook

Postagens mais visitadas