COVIL HACKER

, ! .


» COVIL HACKER » Ataques em redes sem fio » Artigo Ataque ao GSM: relatório de medição do pacote UPLINK


Artigo Ataque ao GSM: relatório de medição do pacote UPLINK

1 2 2

1

Introdução
Relatório de Medição - mensagem transmitida por um telefone celular na frequência do canal Uplink - em resposta a solicitações da estação base no canal SACCH. A mensagem contém informações sobre o nível com que o dispositivo assinante (telefone ou modem) recebe a estação base que abriu o canal dedicado, bem como os níveis de sinal dos "vizinhos" - BSok, que estão presentes na lista de vizinhos transmitida por o serviço BS. De referir que a lista de vizinhos pode mudar, pelo que o operador pode pedir ao telefone para medir o nível de sinal de qualquer uma das BSs, mas apenas dentro da sua rede, definida pelo identificador PLMN - MCC/MNC. Esses relatórios são necessários para a infraestrutura de rede regular a potência dos transmissores, planejar handovers ao mover uma unidade de assinante (MS) entre LACs, e, é claro, mesclar informações no SORM para localizar o assinante no local. A mesma mensagem está presente nas redes 3G/4G mais recentes e, às vezes, até as coordenadas GPS do telefone estão presentes.

O objetivo do ataque é extrair o gama do gerador A5/1 para converter os registradores com realimentação linear para o estado inicial correspondente ao momento em que Kc e o número do quadro são carregados nos registradores da máquina de cifra A5/1, para a extração subsequente da chave de sessão (KS).

Características da mensagem
ID da mensagem - 0x15
O telefone deve estar no modo IDLE e o modo Canal Dedicado deve estar ativo, ou seja, A BS deve trocar dados com o dispositivo assinante para configurar o modo de cifragem ou se registrar na rede.
A mensagem é enviada pelo telefone no canal UPLINK SACCH a cada 480ms.
A mensagem é transmitida pela interface A-bis do BTS para o BSC praticamente sem alteração
A mensagem é transmitida antes e depois que o modo de criptografia é habilitado.
Ataque
Como sabemos que uma mensagem é transmitida a cada 480ms, ou seja, uma vez a cada 102 quadros TDMA SDCCH - podemos prever os números do quadro da mensagem do relatório de medição simplesmente adicionando os números 102, 204, 306 e assim por diante à mensagem de texto simples conhecida.

Com a ajuda de um sniffer, registramos continuamente todos os Meas Reports até que a mensagem Ciphering Mode Command apareça. Podemos selecioná-los pelo identificador de tipo de quadro 0x15 . Estamos interessados ​​no relatório mais recente antes de habilitar a criptografia com o comando CMCommand. Se

https://forumupload.ru/uploads/001b/c9/09/2/t717920.png

parece com isso
Anotamos o número do quadro GSM = 347166 e, sabendo que a mensagem é transmitida em um intervalo de 480ms, calculamos os números do quadro após habilitar a criptografia:

347166 + 102 = 347268
347166 + 204 = 347370
347166 + 306 = 347472

Presumivelmente, estes serão os mesmos quadros do Meas Report, mas já criptografados. Portanto, depois que a criptografia é acionada, escrevemos esses números de quadro.
Por exemplo, um quadro MeasReport criptografado (depois de decodificar com uma chave de sessão conhecida) se parece com isto:

https://forumupload.ru/uploads/001b/c9/09/2/t497710.png

Como você pode ver, o número do quadro é 347370, ou seja, a suposição sobre a multiplicidade de números do quadro, o número 102, funciona.
Infelizmente, o quadro depois de ativar o CM é um pouco diferente do mesmo texto simples e não podemos obter o gama executando uma operação XOR entre esses quadros. Mas...

Otimização de ataque
0x01No MeasReport, o telefone transmite sua potência irradiada e o modo de controle de potência. Bits de mensagem MS power Level (valor de 0 a 15, 15 - potência máxima) e modos FPC (Fast Power Control). Precisamos ouvir bem o telefone, então com antecedência, até o momento de solicitar os identificadores imsi e imei, forçamos o FPC nele e enviamos um comando para nossa BS para solicitar o nível máximo de energia (15). Assim, matamos 2 problemas. 1 - obtemos um bom nível de sinal do telefone. 2- bits de nível de potência e fpc temer são conhecidos por nós com certeza.

Há uma nuance - o telefone no modo de energia 15 pousa a bateria muito rapidamente. Isso deve ser levado em consideração. Normalmente o próprio dono do telefone se encarrega de manter seu "bug" funcionando e carregado. Durante os ataques noturnos - o telefone geralmente está conectado ao carregador, o que também não é um problema. Mas se o dono estiver longe da civilização, corremos o risco de esgotar a bateria do telefone e perder a capacidade de conexão com ele.

0x02 O telefone transmite a distância medida para a estação base. Avanço de tempo real de bits. Mas, do lado da estação base, é possível formar tal pacote de medição TA que o telefone pense que a distância é sempre igual a TA=0 ou TA=1. Aqueles. reduzimos o espaço variante de 255 bits para

2.0x03O telefone mede os níveis de sinal apenas até as estações listadas na lista de vizinhos transmitida pela estação base nas mensagens SIB5, SIB6. Se passarmos uma lista vazia de vizinhos, eliminamos 2 problemas. Primeiro - o telefone não vai querer pular para outra base da nossa, porque. ele agora simplesmente não sabe sobre a existência deles. A segunda coisa positiva é que os últimos 13 bytes da mensagem do meas report agora são iguais a zero (e não são 2b paddings, ou seja, o telefone não tem o direito de randomizá-los, é apenas uma referência pura 0x00!!! ) . E também mais 3 bits se tornaram conhecidos - NO-NCELL-M assumiu o valor 0 0 0.

0x04RXLEV-FULL-SERVING-CELL e SUB-SERVING-CELL. Tudo está ruim aqui. Este é o nível de sinal com o qual o telefone ouve nosso BSK. É necessário fornecer um sinal estável e esperar que em 480 milissegundos esse nível de sinal não mude em mais de 3 ... 5 decibéis (requer esclarecimento, você precisa olhar para o padrão - qual é a gradação neste mensagem). Em geral, um amplificador de 20-50 watts, uma antena direcional e quase sempre esta mensagem não causa problemas. É útil avaliar quanto o nível do sinal salta usando relatórios de medição anteriores. Se pular muito, você precisa se aproximar do alvo ou aumentar a potência dos transmissores ao máximo.

0x05BER - percentual de erros na troca com a BS. Novamente, veja o ponto 4 - os mesmos princípios se aplicam aqui. Mas, se não podemos fornecer boa qualidade de sinal para um dispositivo móvel, há um truque útil aqui - distorcemos o sinal emitido pelo codificador Viterbi para a mensagem CMCommand para que o BER se torne máximo - a mensagem passa após 2-3 tentativas e agora sabemos que o BER tornou-se o valor máximo possível.

0x06 Hipótese de // censurado- intervalo de mensagem (102, 204 ou 306) - pode ser medido antes de habilitar a criptografia diretamente para o processador de banda base do dispositivo móvel com o qual a comunicação é estabelecida no momento. Esse valor deve ser usado para prever onde será o próximo quadro de texto cifrado, o que reduz a complexidade do ataque em um fator de 3. A hipótese precisa ser testada.

Outras possibilidades de uso deste quadro para fazer o bem ao dono do aparelho assinante
1.Ao manipular o poder do telefone, você pode simplificar a tarefa de encontrar a direção. Quando estamos longe do alvo, usamos o nível máximo de 15 (1W de potência). À medida que nos aproximamos do alvo com um localizador (um dispositivo portátil que mostra o nível do sinal e, às vezes, a direção do telefone alvo), reduzimos a potência de seu transmissor, melhorando assim a precisão da localização da direção.

2. Podemos usar 2..3 de nossas estações base com um nível de sinal conhecido, espalhando-as no espaço e conectando-as em uma única rede no nível BSC / A-bis (por exemplo, via wi-fi). Enviamos os ARFCNs dessas BSs para o SIB5 e o alvo nos envia seus níveis de sinal em um relatório de medição. Assim, sentados em um lugar, podemos observar os movimentos do alvo, analisando as mudanças no nível do sinal BSok que ele recebe.

3.Por uma questão de anonimato - ao usar nosso telefone de código aberto, podemos gerar qualquer Meas.Report arbitrário para o operador e fazer o operador pensar que estamos em um lugar diferente (mas não muito longe, porque os BSs também têm a capacidade de analisar o nível do sinal do telefone).

4. HIPÓTESE de //null É possível se você adicionar uma torre "estrangeira" à lista de vizinhos - por exemplo, se o cartão SIM do alvo for Megafon e o ARFCN da torre na lista de vizinhos pertencer a Beeline - POSSÍVEL, o telefone medirá seu nível de sinal, mas não poderá fazer uma nova seleção para ele. ocorre para ser plmn "estrangeiro". Se for esse o caso, é possível aumentar a precisão da localização do assinante no solo - existem muitas torres e suas coordenadas são conhecidas. Devemos verificar.

Maneira mais fácil de extrair gama do MeasReport

0b01 Ligamos o telefone FPC, no nível de potência do transmissor 15

0b10 Escrevemos 3 pares de texto simples + texto cifrado, guiados pela hipótese "+102"

0b11 Usando este método, geramos 16 opções de pacotes possíveis

// ciphertext
// plaintext ( ciphering mode command) meas report

// error rate
//(8 005, 045 ..)
//
// xor plaintext
// ,
//
// ..

// ,
// char'.

static char guess_frame[16][23];
void gen_cipherframe(char *xp)
{
static unsigned char tmp_string[23]; // string_etalon[23];

//
char n=23;
while(n){
  n--;
  tmp_string[n]=xp[n];
}

//9 - !
// .111 111.
// .......0 !

static unsigned char error_byte[8] = {0b00000000,
0b00010010,
0b00100100,
0b00110110,
0b01001000,
0b01011010,
0b01101100,
0b01111110}; // BYTE ERROR RATE.

n=8;
    while(n)
    {
    n--;
    memcpy(guess_frame[n],tmp_string,sizeof(char)*23); //
    guess_frame[n][9]|=error_byte[n]; // 9
    guess_frame[n][0]=0b01001111;
    }

n=8;
    while(n)
    {
    n--;
    memcpy(guess_frame[n+8],tmp_string,sizeof(char)*23); //
    guess_frame[n+8][9]|=error_byte[n]; // 9
    guess_frame[n+8][0]=0b00001111;
    }
}

Ou seja, para cada relatório de medidas temos 16 opções. Nós os decompomos em BURSTs - obtemos a opção 4 * 16 = 64. E como temos três opções +102, um total de 64 * 3 = 192 linhas são enviadas ao decodificador. A partir dessas linhas, precisamos restaurar o estado inicial do gerador de cifras A5/1, que eventualmente permitirá determinar a chave de sessão usada para gerar o gama.
O dispositivo de inversão da função A5/1, montado em um FPGA, resolve esse problema quase em tempo real. Mas, sobre a criação de tal dispositivo - em outro momento)

Perguntas - como sempre, em público, propostas de cooperação - em um pessoal:)

Literatura
1. Especificação GSM 05.08 versão 8.5.0 Release 1999. Seção 8 - Medições de link de rádio, incluindo o capítulo 8.4.
2. Documentação Agilent (Keysight)
3. Estrutura GSM Frame

0

2


» COVIL HACKER » Ataques em redes sem fio » Artigo Ataque ao GSM: relatório de medição do pacote UPLINK


|