Station de base GSM cachée dans une imprimante de bureau


Station de base GSM

Des services spéciaux et des services de renseignement dans différents pays du monde utilisent de fausses stations de base (pièges IMSI, les Américains appellent StingRay), qui fonctionnent en mode passif ou actif . En mode passif, la fausse station analyse simplement le signal des stations de base environnantes. C'est beaucoup plus intéressant lorsque l'appareil est mis en mode actif. Dans ce cas, le piège IMSI force les périphériques clients cellulaires environnants à se connecter à lui-même, en les déconnectant de la station de base de l'opérateur (MTS, VimpelCom, etc.). La tâche est réalisée en diffusant un signal plus puissant que les stations environnantes (pour plus de détails sur le fonctionnement des fausses stations de base, voir l'article "Le Brave Nouveau Monde des Simulateurs de Cell-Site") (Albany Law School: 11-12. Doi: 10.2139 / ssrn.2440982).

Les fausses stations de base sont utilisées non seulement par des services spéciaux, mais aussi par d'autres personnes. Par exemple, dans la dernière saison de M. Des pirates informatiques ont installé une femtocellule (une station de communication cellulaire miniature et de faible puissance) directement dans le bureau du FBI, ayant la possibilité d'écouter leurs conversations. En affaires, les concurrents peuvent utiliser un tel appareil pour écouter tranquillement les conversations de l'autre côté. En Russie, Natalya Kasperskaya suggère d'installer des femtocellules d'espionnage dans les bureaux des sociétés commerciales afin que la direction puisse enregistrer calmement les conversations entre les employés et les visiteurs.


L'appareil est connecté à une fausse station cellulaire PRISM: The Beacon Frame. Dans le cadre d'un projet de recherche, la station envoie une notification sur la connexion au téléphone de l'abonné. La véritable infrastructure des services spéciaux fonctionne sans envoyer de notifications.

Les gadgets similaires sont très populaires à l'ère moderne, car de nombreuses personnes utilisent constamment les communications cellulaires, transmettant des informations confidentielles via ces canaux, sans utiliser de cryptage de bout en bout. Il est très pratique d'identifier les personnes par leur numéro de téléphone.

Héros de la série Mr. Robotplacez la femtocellule sous la table à côté du routeur. De toute évidence, sous cette forme, cela ne peut pas fonctionner longtemps, car tôt ou tard le dispositif "supplémentaire" sera remarqué par une femme de ménage ou un agent aléatoire qui se baissera. De plus, la femtocellule a une très petite portée, il est donc peu probable qu'elle puisse interrompre le signal d'une véritable station de base pour les appareils d'abonné aux étages voisins. Il est garanti de fonctionner à moins que dans le même bureau, et puis quelle chance.

Pour corriger cet inconvénient, un bureau doit installer une station de base plus puissante. Mais comment le déguiser? Une excellente solution a été proposée par l'ingénieur néo-zélandais Julian Oliver. Il a conçu la station de base déguisée en imprimante de bureau HP .

Dans les rues, les stations de base se déguisent en objets environnementaux - arbres ou lanternes .


Station cellulaire mal déguisée en palmier. Marrakech, Maroc Une


station cellulaire déguisée en lanterne, pour une raison quelconque, est placée à côté d'une vraie lanterne. Milton Keynes, Royaume-Uni

L'imprimante de bureau Hewlett-Packard Laserjet 1320 est aussi naturelle qu'un lampadaire. Il ne suscitera aucun soupçon. Au moins tant qu'il continue de fonctionner correctement. À des fins de démonstration, dans le projet Oliver, l'imprimante est configurée pour imprimer automatiquement les métadonnées sur les appels interceptés et les messages SMS, ainsi que le texte de ces messages.



L'auteur a expliqué en détail le fonctionnement de la fausse station de base. L'émetteur-récepteur SDR programmable BladeRF a été placé dans le boîtier de l'imprimante (ce merveilleux appareil a été décrit sur Habré). Sur la photo, il est fixé en haut à droite. L'émetteur-récepteur se connecte à la carte miniature Raspberry Pi 3 (en bas à gauche), et tous les composants électroniques des pirates sont connectés à la carte mère de l'imprimante (la plus grande carte sur la photo).



Pour l'alimentation, un adaptateur USB de voiture est utilisé qui convertit l'imprimante 21-22 V en 5 V, nécessaire pour l'émetteur-récepteur et la framboise. Ces adaptateurs sont généralement insérés dans l'allume-cigare d'une voiture (12-24 V) pour alimenter l'électronique portable.



Le compartiment de la cartouche est légèrement modifié pour accueillir deux antennes omnidirectionnelles (TX et AX) connectées par un câble SMA à l'émetteur-récepteur BladeRF.

L'auteur de l'ouvrage dit avoir choisi l'imprimante Hewlett-Packard Laserjet 1320 pour plusieurs raisons. Tout d'abord, il a un aspect remarquablement discret - un design complètement sans visage qui n'attire pas l'attention. Deuxièmement, les cavités internes du boîtier sont idéales pour accueillir tous les composants électroniques et les câbles. Aucune pièce ne sort et n'est visible de l'extérieur, à l'exception d'un câble d'alimentation standard. Lorsqu'un adaptateur USB est connecté à un connecteur standard, la Hewlett-Packard Laserjet 1320 fonctionne normalement comme une imprimante de bureau standard.

Raspberry Pi 3 a été choisi après des tentatives infructueuses pour assurer un fonctionnement stable des stations de base du contrôleur de programme YateBTSsous Intel Edison, Beaglebone Black et même le Marsboard I-MX6. Contrairement à l'ancien OpenBTS, YateBTS est plus exigeant sur les performances du processeur.

Le faux logiciel de la station de base de l'imprimante fonctionne au-dessus du code open source YateBTS. À des fins de démonstration, plusieurs scripts ont été développés. Par exemple, l'un d'eux filtre le journal, forme un document PDF et l'envoie à l'impression.

#!/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

Un autre script sélectionne au hasard l'un des numéros de téléphone qui se connectent à la station de base, l'appelle et joue le tube classique de Stevie Wonder «Je viens d'appeler pour dire que je t'aime» .

#!/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

Binaires compilés pour Raspberry Pi 3: yate_r-pi3_4.4.11-v7_debian-8.0.tar.gz .

Bonne chance avec vos expériences!

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


All Articles