Blaze Blog /

Ataques práticos contra redes GSM (Parte 1/3): Impersonificação

Security
Sep 12, 2016
10min read
Ataques práticos contra redes GSM (Parte 1/3): Impersonificação

Introdução

O Global System for Mobile Communications (GSM) é uma tecnologia móvel e o padrão mais popular para telefones celulares em todo o mundo.

Originalmente conhecido como Groupe Spécial Mobile, o GSM surgiu através da CEPT (Conférence des Administrations Européenes des Postes et Télécommunications), que em 1982 trabalhou para desenvolver um padrão para telecomunicações celulares digitais europeias.

Em 1987, foi assinado um memorando para desenvolver e implementar um sistema comum de telecomunicações celulares digitais em toda a Europa, tornando o GSM um padrão obrigatório.

Atualmente, o GSM é um padrão aberto mantido e desenvolvido pelo 3rd Generation Partnership Project (3GPP).

Ao longo da última década, várias preocupações de segurança surgiram e ataques práticos contra o GSM foram discutidos e demonstrados publicamente, especialmente no Chaos Communication Congress. No entanto, foi apenas há alguns anos que estas vulnerabilidades de segurança puderam ser exploradas utilizando hardware acessível e software de código aberto.

Este é o primeiro de uma série de três artigos de blog sobre segurança e ataques práticos contra redes GSM.

A Parte 1 abordará a teoria e discutirá detalhes técnicos relevantes para impersonificar uma torre de celular, demonstrando também um ataque prático de spoofing que poderia ser usado para impersonificar uma operadora móvel legítima.

Aviso legal: Todos os experimentos foram realizados em um ambiente controlado nos escritórios da Blaze Information Security em Recife, Brasil. Nenhum ataque de spoofing ativo foi realizado contra telefones celulares ou outros dispositivos móveis que não estivessem localizados dentro de um pequeno raio cobrindo nosso espaço de laboratório. Este experimento não afetou nenhum assinante legítimo de operadoras móveis.

Impersonificando uma estação rádio base celular com SDR

Com a flexibilidade, o custo relativamente baixo do Software Defined Radio (SDR) e a abundância de projetos de código aberto que emulam uma torre de celular, impersonificar com sucesso uma Estação Rádio Base (BTS) GSM não é uma tarefa difícil hoje em dia.

Ataques de estação base falsa podem ser úteis em pesquisas de segurança legítimas. Por exemplo, em um cenário onde um dispositivo, como um equipamento de campo SCADA, se conecta à Internet via GSM e é necessário interceptar o tráfego entre o dispositivo e o back end. Um excelente exemplo de teste de segurança que se tornou viável através de um ataque semelhante é o invasão do Connected Drive da BMW por Dieter Spaar.

Em resumo, para se passar por uma BTS GSM, o atacante precisa do seguinte equipamento e informações:

  • Um SDR capaz de operar em frequências GSM específicas
  • Compilar, instalar e executar uma BTS baseada em software
  • Conhecimento dos parâmetros usados para identificar a operadora de rede móvel real

Nas próximas seções, discutiremos cada elemento da lista de requisitos para realizar um ataque de falsificação de BTS.

Comparação de Rádio Definido por Software (SDR)

SDR comparison table

Como podemos ver na tabela acima, Nuand bladeRF x40 é uma boa escolha pelo seu custo-benefício.

Projetos de estação rádio base definida por software

Existem vários projetos de código aberto que permitem a implementação de estações rádio base definidas por software:

Software-defined base station projects comparison table

Nossa configuração de laboratório

Nos laboratórios de segurança móvel da Blaze, decidimos usar o Nuand bladeRF x40 com duas antenas Quad-band Cellular Duck SMA.

Blaze lab setup with Nuand bladeRF x40 and antennas

Em nosso experimento, decidimos usar o YateBTS devido à sua maturidade como projeto, flexibilidade, suporte ao Nuand BladeRF x40, escalabilidade e facilidade de implementação de novos recursos.

Para detalhes sobre como configurar o Nuand bladeRF X40 com o YateBTS, veja esta postagem no blog de um pesquisador conhecido como strcpy.

Detalhes técnicos

Para simular uma estação rádio base de uma operadora móvel real, um adversário precisa simular a Identidade da Rede Local (HNI) da operadora alvo. Esta seção discute os parâmetros necessários para atingir esse objetivo.

HNI é a combinação do MCC (Código de País Móvel) e do MNC (Código de Rede Móvel). Este é o número que identifica a rede "de origem" dos assinantes, também conhecida como PLMN (Rede Móvel Terrestre Pública).

Nota: A combinação usada para identificar a operadora de rede móvel também é chamada de tupla MCC/MNC.

Código de País Móvel (MCC)

A sigla MCC significa Mobile Country Code (Código de País Móvel). Este parâmetro é usado para definir informações sobre o país e a região geográfica.

O MCC é composto por três dígitos decimais, onde o primeiro dígito identifica a região geográfica, como pode ser visto na tabela a seguir:

MCC first digit geographic region table

Nota: Os dígitos 1 e 8 não são utilizados.

Código de Rede Móvel (MNC)

MNC é uma abreviação para Mobile Network Code (Código de Rede Móvel). Este parâmetro é usado para identificar exclusivamente uma PLMN específica em um determinado país (definido pelo MCC). O MNC era composto inicialmente por dois dígitos decimais, variando de 00 a 99. Com a expansão das redes GSM, atualmente o MNC pode conter até 3 dígitos decimais.

Importante: O MNC 01 não é tratado da mesma forma que o MNC 001. O MNC é usado na Identidade Internacional de Assinante Móvel (IMSI) e na Identidade de Área de Localização (LAI).

Código de Área de Localização (LAC)

O Código de Área de Localização (LAC) é um número único das áreas de localização atuais. Uma área de localização é um conjunto de estações rádio base agrupadas para otimizar a sinalização.

Identificação de Área de Localização (LAI)

A Identificação de Área de Localização (LAI) é a concatenação do MCC, MNC e LAC. Esta informação é transmitida periodicamente nas informações do sistema de cada célula. Aqui, o MNC indica o número da rede PLMN. A estação móvel utiliza essa informação recebida como uma base importante para selecionar a rede.

LAI structure diagram showing MCC, MNC, and LAC fields

Detalhes sobre operadoras móveis brasileiras

Como nosso escritório principal está localizado no Brasil, assim como a maior parte da nossa equipe, escolher este país como exemplo foi um caminho natural para estes experimentos.

A tabela a seguir contém algumas especificações técnicas de redes móveis no Brasil:

Brazilian mobile operators MCC/MNC reference table

MCC, MNC e nomes de rede

Muitos artigos relacionados ao GSM não explicam como as estações móveis atribuem nomes às tuplas MCC/MNC, deixando sempre a mesma dúvida: como as redes são identificadas pela concatenação de MCC + MNC (apenas números), como uma estação móvel sabe e exibe corretamente o nome da operadora de rede?

Primeiramente, a estação móvel buscará em sua memória interna esperando encontrar alguma informação sobre a rede em questão. Geralmente, as informações sobre a tupla 001 01 (Test PLMN 1-1) estão armazenadas na memória interna da estação móvel. Se a estação móvel não encontrar informações sobre a rede na memória interna, ela buscará tais informações no cartão SIM.

O cartão SIM geralmente contém informações sobre as operadoras móveis que atuam na região geográfica onde foi adquirido. Por fim, caso a estação móvel não consiga encontrar nenhuma informação sobre a rede na memória interna ou no cartão SIM, algumas estações móveis podem receber essas informações via rede após o registro.

Para ilustrar melhor a explicação acima, escaneamos as redes ao redor dos nossos laboratórios para observar o que a estação móvel conseguia encontrar:

Mobile station network scan results showing available networks

Observe que a rede 724-666 não é associada automaticamente a um nome, sendo identificada apenas pela tupla MCC/MNC. Isso nos leva à conclusão de que não há informações sobre essa rede na memória interna da estação móvel ou no cartão SIM. Podemos inferir que o cartão SIM contém as seguintes informações:

SIM card network names table

Ataque prático de spoofing

Esta seção demonstra um exemplo prático de spoofing de BTS contra uma operadora móvel brasileira popular. Vale ressaltar novamente que isso é apenas para fins ilustrativos e nenhum cliente legítimo foi afetado durante esta demonstração, já que o rádio foi configurado em modo de baixa potência para operar apenas dentro do espaço do laboratório.

No YateBTS, configuramos o arquivo de configuração com o MCC e o MNC da operadora móvel legítima, como pode ser visto abaixo:

YateBTS configuration file showing MCC and MNC values

Após o telefone buscar por redes, teremos uma nova rede, borrada na captura de tela abaixo:

Mobile network scan showing the spoofed BTS alongside legitimate operators (operator name blurred)

Isso mostra que a BTS falsa está configurada e ativa, podendo agora ser usada para atrair clientes de operadoras móveis a se conectarem à BTS controlada pelo atacante em vez da torre de celular real da operadora. Isso pode servir como base para ataques ativos e passivos, como interceptação de chamadas, SMS e dados GPRS.

Conclusão

A primeira parte deste post mostrou como pode ser fácil falsificar uma estação rádio base legítima usando equipamentos acessíveis e software de código aberto. Com um ambiente devidamente configurado, um adversário pode falsificar uma operadora móvel GSM legítima, forçando os clientes dentro da área de cobertura do rádio a se conectarem à BTS falsa e, subsequentemente, interceptar chamadas, mensagens SMS, tráfego GPRS e muito mais.

Do you have questions? Let's talk.

Get in touch with our cybersecurity experts

Read More