Hacking:GSM hack France
Matériel requis
* RTL-SDR (R820T)
Le Rtl-Sdr est un recepteur TNT. Il s'achète pour 20$ en chine. Lorsque l'on exploite le tuneur de ce recepteur, il est possible de capter les fréquences de 24 à 1766 MHz.
Device proposé pour les tests
* Samsung Galaxy S
Les pré-requis
Menu caché du SGS
*#*#197328640#*#* *#0011#
Voici les étapes pour intercepter des trames GSM
Dans le cadre de nos tests nous allons intercepter la voix et les sms d'un Samsung Galaxy S 1.
Afin de nous caler sur une fréquence qui peut etre capté par le rtl-sdr nous allons forcer le GSM à utiliser la bande 900. Le GSM 900 utilise la bande 880-915 MHz pour l'envoi de la voix ou des données depuis le mobile et la bande 925-960 MHz pour la réception des informations venant du réseau.
Le téléphone dispose d'un menu secret permettant de forcer l'utilisation d'une bande:
*#*#197328640#*#*
Puis opn accède au menu
[1] DEBUG SCREEN -> [8] PHONE CONTROL -> [7] NETWORK CONTROL -> [2] BAND SELECTION -> [3] GSM BAND[*] -> Puis on active [3] GSM 900 [*]
Nous pouvons vérifier que nous utilisons bien cette bande avec le menu secret:
*#0011#
Ok, maintenant le téléphone est sur la bande GSM900. Nous devons maintenant sniffer sur un canal particulier, c'est l'arfcn. En effet, une bande est découpé en canaux. Chacune de ces bandes comprend 175 porteuses (canaux) de 200 kHz chacune ; elles sont, en France réparties entre 4 opérateurs (voir fréquences GSM en France). La modulation utilisée sur ces porteuses est la GMSK, qui permet d'éviter les chevauchements de porteuses.
Pour découvrir sur quel canal se trouve le téléphone, nous pouvons utiliser un autre menu secret:
[1] DEBUG SCREEN -> [4] NEIGHBOUR CELL
Lors de ce test, le canal ayant le niveau de puissance le plus fort est:
Arfcn_Num ; 37 , rxlev: 38
Nous pouvons donc calculer la fréquence corespondant à ce canal avec l'outil arfcncalc:
arfcncalc -a 37 -b 900 -d
La fréquence est donc de 942.4Mhz
Avec gqrx, nous pouvons visualiser le spectre, et se caler sur le signal le plus fort. La fréquence est donc de 942.36Mhz. Nous pouvons sniffer cette fréquence et générer un fichier cfile avec gnuradio-companion. Voici le schema gsm.grc utilisé.
Nous pouvons ensuite visualiser les trames gsm dans wireshark à l'aide de gsm_receiver_rtl.py de la suite airprobe. Dans un premier temps, lancer la version patché de wireshark qui permet de filtrer les trames gsmtap et écouter sur l'interface lo. Ensuite analyser le dump.cfile avec gsm_receive_rtl.py
/hack/phreaking/Radio/airprobe/gsm-receiver/src/python$ ./gsm_receive_rtl.py -I /tmp/dump.cfile -d 1 B0
Les trames s'affichent alors dans wireshark.
Todo: Dechiffrement avec Kraken
* S'inspirer de www.mail-archive.com/a51@lists.reflextor.com/msg01114.html * lists.srlabs.de/pipermail/a51/2010-July/000683.html
* Renommer tous les dlt en xxx.dlt (ex: 100.dlt) * Les placer à la racine d'un disque * Se servir de Behemoth.py
Behemoth va créer un indexe de ces rainbowtable(table d'échange, ou table arc-en-ciel). Il va alors générer un fichier tables.conf contenant les disques utilisées, et les offset sur le disque du début de chaque table.
Une table est l'ensemble de tout les hash possible pour un charset donné. Un charset est constitué d'un ensemble de caractère comme [ az-AZ ]. C'est une sorte de dictionnaire.
Voici un exemple de fichier généré lorsque l'on n'utilise qu'un seul disque:
Device: /media/84835dba-c5489-4af1-a5421 50 Table: 0 100 61391195 Table: 0 324 102313103 Table: 0 372 92083796 Table: 0 420 51159177 Table: 0 172 10229859 Table: 0 500 71620051 Table: 0 238 122782426 Table: 0 108 112548115 Table: 0 276 143241494 Table: 0 212 40925806 Table: 0 268 20463152 Table: 0 164 30695372 Table: 0 396 81853546 Table: 0 348 133012367 Table: 0 492 153470574 Table: 0 132 92105823 Table: 0 412 122856754 Table: 0 388 143324460 Table: 0 356 102376597 Table: 0 404 71633752 Table: 0 428 10230895 Table: 0 124 61395110 Table: 0 188 81866011 Table: 0 436 133090367 Table: 0 196 153558800 Table: 0 332 40922624 Table: 0 180 20465981 Table: 0 250 51154849 Table: 0 220 30694865 Table: 0 380 112608311 Table: 0 116 30717010 Table: 0 292 92104793 Table: 0 230 102337536 Table: 0 260 10234365 Table: 0 204 40948946 Table: 0 140 20479594 Table: 0 340 81872471 Table: 0 148 51178935 Table: 0 156 71640116 Table: 0 364 61408430