Estação base GSM oculta em uma impressora de escritório


Estação base GSM

Serviços especiais e inteligência em diferentes países do mundo usam estações base falsas (armadilhas IMSI, os americanos chamam StingRay), que operam no modo passivo ou ativo . No modo passivo, a estação falsa simplesmente analisa o sinal das estações base circundantes. É muito mais interessante quando o dispositivo é colocado no modo ativo. Nesse caso, a armadilha IMSI força os dispositivos clientes celulares ao redor a se conectarem, desconectando-os da estação base do operador (MTS, VimpelCom, etc.). A tarefa é realizada transmitindo um sinal mais poderoso do que as estações vizinhas (para obter mais detalhes sobre a operação de estações base falsas, consulte o artigo "O Admirável Mundo Novo de Simuladores de Células") (Faculdade de Direito de Albany: 11-12. Doi: 10.2139 / ssrn.2440982).

Estações base falsas são usadas não apenas por serviços especiais, mas também por outras pessoas. Por exemplo, na última temporada do Sr. Os hackers de robôs instalaram uma femtocell (uma estação de comunicação celular de baixa potência e miniatura) bem no escritório do FBI, tendo a oportunidade de ouvir suas conversas. Nos negócios, os concorrentes podem usar esse dispositivo para ouvir silenciosamente as conversas do outro lado. Na Rússia, Natalya Kasperskaya sugere a instalação de femtocells espiões nos escritórios de empresas comerciais, para que a gerência possa gravar com calma conversas entre funcionários e visitantes.


O dispositivo está conectado a uma estação de celular PRISM falsa : The Beacon Frame. Como parte de um projeto de pesquisa, a estação envia uma notificação sobre a conexão ao telefone do assinante. A infra-estrutura real de serviços especiais funciona sem o envio de notificações.Gadgets

semelhantes são muito populares na era moderna, porque muitas pessoas usam constantemente as comunicações celulares, transmitindo informações confidenciais por esses canais, sem usar a criptografia de ponta a ponta. É muito conveniente identificar pessoas por seus números de telefone.

Heróis da série Mr. Robotcoloque a femtocell sob a mesa ao lado do roteador. Obviamente, desta forma, ele não pode funcionar por um longo tempo, porque mais cedo ou mais tarde o dispositivo "extra" será percebido por uma faxineira ou por um agente aleatório que se curvará. Além disso, a femtocélula possui um alcance muito pequeno, portanto, é improvável que seja capaz de interromper o sinal de uma estação base real para dispositivos de assinante nos andares vizinhos. É garantido que funcione, a menos que esteja no mesmo escritório e que sorte.

Para corrigir essa desvantagem, um escritório precisa instalar uma estação base mais poderosa. Mas como disfarçar isso? Uma excelente solução foi proposta pelo engenheiro neozelandês Julian Oliver. Ele projetou a estação base disfarçada de impressora de escritório HP .

Nas ruas, as estações base se disfarçam de objetos ambientais - árvores ou lanternas .


Estação celular mal disfarçada de palmeira. Marrakech, Marrocos Uma


estação de celular disfarçada de lanterna, por algum motivo, é colocada ao lado de uma lanterna real. Milton Keynes, Reino Unido

A impressora de escritório Hewlett-Packard Laserjet 1320 parece tão natural quanto um poste de luz. Ele não despertará suspeitas. Pelo menos enquanto continuar funcionando corretamente. Para fins de demonstração, no projeto Oliver, a impressora está configurada para imprimir automaticamente metadados sobre chamadas interceptadas e mensagens SMS, juntamente com o texto dessas mensagens.



O autor explicou em detalhes como funciona a estação base falsa. O transceptor SDR programável BladeRF foi colocado no estojo da impressora (este maravilhoso dispositivo foi descrito em Habré). Na foto, é fixado no canto superior direito. O transceptor se conecta à placa miniatura Raspberry Pi 3 (canto inferior esquerdo) e todos os componentes eletrônicos do hacker são conectados à placa-mãe da impressora (a maior placa da foto).



Para energia, é usado um adaptador USB para carro que converte a impressora 21-22 V em 5 V, necessária para o transceptor e a framboesa. Esses adaptadores geralmente são inseridos no isqueiro de um carro (12-24 V) para alimentar eletrônicos portáteis.



O compartimento do cartucho é ligeiramente modificado para encaixar duas antenas omnidirecionais (TX e AX) conectadas por um cabo SMA ao transceptor BladeRF.

O autor do trabalho diz que eles escolheram a impressora Hewlett-Packard Laserjet 1320 por vários motivos. Em primeiro lugar, tem uma aparência surpreendentemente discreta - um design completamente sem rosto que não atrai a atenção. Em segundo lugar, as cavidades internas da caixa são ideais para acomodar todos os componentes eletrônicos e cabos. Nenhuma peça sai e não é visível do lado de fora, exceto por um cabo de alimentação padrão. Quando um adaptador USB é conectado a um conector padrão, a Hewlett-Packard Laserjet 1320 funciona normalmente como uma impressora de escritório comum.

O Raspberry Pi 3 foi escolhido após tentativas malsucedidas de garantir a operação estável das estações base do controlador de programa YateBTSsob Intel Edison, Beaglebone Black e até o I-MX6 Marsboard. Diferentemente do antigo OpenBTS, o YateBTS é mais exigente no desempenho do processador.

O software da estação base falsa na impressora é executado sobre o código YateBTS de código aberto. Para fins de demonstração, vários scripts foram desenvolvidos. Por exemplo, um deles filtra o log, forma um documento PDF e o envia para impressão.

#!/bin/bash

readonly FH=/home/pi/yate.log
rm -f $FH
# Start the BTS, log to $FH and background
yate 2>&1 -l $FH &
sleep 1
echo "Starting up..."
last=" "

while true;
    do
        # Poll every 10 seconds
        sleep 10
        # Check log for new sniffed 'call route' entries and do some subbing
        cur=$(cat $FH | grep -A 16 "Sniffed\ 'call.route'" | sed -e "s/param\['//" \
        -e "s/'\]//" -e 's/thread.*//' -e 's/time\=[0-9].*//' \
        -e 's/\ data=(.*//' -e 's/\ retval=.*//' \
        -e 's/\ tmsi.*//' -e 's/ybts/Stealth\ Cell\ Tower/' \
        -e 's/Sniffed/Monitored\ =/' -e '/^\s*$/d' \
        -e 's/^\s*//' | tail -n 13)
        if [ "$cur" != "$last" ]; then
            if [ ${#cur} -gt 1 ]; then 
                echo "New SMS events detected"
                # Test to see if an IMSI is in the string. If not, look it up and put it in
                if [[ $cur != *imsi* ]]; then
                    caller=$(echo "$cur" | grep "caller" | awk '{ print $3 }' | sed "s/'//g" \
                    | tr -cd '[:print:]')
                    imsi=$(cat /usr/local/etc/yate/tmsidata.conf | grep "$caller" \
                    | cut -d '=' -f 1)
                    cur=$(echo "$cur" | sed -e "s/\ called\ .*/imsi\ =\ '$imsi'/" )
                fi
                # Make it all uppercase
                event=$(echo -e \\n"$cur" | tr 'a-z' 'A-Z')
                echo "printing file..."
                echo "$event" > printme
                # Format a postscript file with enscript
                enscript -r --header='SMS EVENT RECORD|%W|%* UTC' -i2cm --margins=10:10:30:10 \
                -o printme.ps -f Courier@15/12 printme
                # Convert to PDF
                ps2pdfwr printme.ps printme.pdf
                # Send it to the print queue for immediate processing
                lp -U pi -o a4 -q 100 -d hp_LaserJet_1320_2 printme.pdf 
            fi
            last=$cur
        fi
done

Outro script seleciona aleatoriamente um dos números de telefone que se conectam à estação base, chama e toca o clássico hit de Stevie Wonder, "Acabei de ligar para dizer que te amo" .

#!/bin/bash

readonly HOST=127.0.0.1
readonly PORT=5038
readonly DATA=/usr/local/share/yate/sounds/stevie.au
readonly TMSI=/usr/local/etc/yate/tmsidata.conf
readonly CC=49 #MSISDN prefix, matching that of definition in yate conf.

callone () {
  # Play "I Just Called To Say I Love You" by Stevie Wonder, on pickup 
  echo "call wave/play/$DATA $mt" | netcat -i 1 -q 1 $HOST $PORT
  # Or, setup channel and route to IAX/SIP
  # echo "call 'iax/iax:$PORT@11.22.33.44/$PORT' $mt" | netcat -q 1 $HOST $PORT
}

callall() {
  for mt in ${UES[@]} #override $mt
    do
      echo "calling $mt"
      callone
  done
}

while true;
  do

    tmsilen=$(wc -l $TMSI | awk '{ print $1 }')
    ues=($(cat $TMSI | grep -A $tmsilen ues | sed 's/\[ues\]//' | cut -d ',' -f 3))
    if [ ! -z $ues ]; then
      ueslen=${#ues}
      RANGE=$ueslen
      select=$RANDOM
      let "select%=$RANGE"
      mt=${ues[$select]} 
      callone
    fi
    sleep 30
done

Binários compilados para Raspberry Pi 3: yate_r-pi3_4.4.11-v7_debian-8.0.tar.gz .

Boa sorte com seus experimentos!

Source: https://habr.com/ru/post/pt398893/


All Articles