SSTIC 2010 - Jeudi après-midi : 3ème conf
OpenBSC network-side GSM stack
par Harald Welte
Les protocoles GSM/3G sont publiés publiquement mais ne font pas l’objet d’autant d’analyses comparé à TCP/IP WIFI etc… parce que l’industrie du GSM est très fermée et qu’il n’y a pas beaucoup d’outils pour jouer avec ce protocole. Pourtant c’est un protocole très très populaire.
L’industrie du GSM baigne dans un monde closed-source et les fabriquants ne vendent leur puces GSM que par très gros volume.
Un grand nombre de systèmes utilisent le GSM comme base de communication pour contrôler divers systèmes (BMW, systèmes d’alarme, système de contrôle d’éoliennes). Les implications en terme de sécurité des usages d’un tel protocole fait froid dans le dos. Continuer de croire qu’on vit chez les bisounours (traduction libre de votre serviteur ;)) c’est prendre un grand risque. Quand on part du principe que les équipements n’enverront pas de paquets malformés, la sécurité est forcément plus faible.
Dans le protocole GSM, il existe des options qui permettent à un opérateur de demander au GSM ses coordonnées GPS, et aucun mécanisme permet de s’en prémunir.
Le protocole GSM use et abuse du TLV (Type, Lengths, Value) ce qui implique un grand nombre de buffers-overflow potentiels.
Bref un méchant cocktail de problèmes de vie privée, de sécurité et de fiabilité…
Coté analyse, c’est très difficile de prendre un contrôle total sur le téléphone et les composants GSM sous-jacents. L’ensemble des composant gérant la couche physique étant clos et non-documenté, il est très difficile d’écrire sa propre stack GSM.
OpenBSC c’est un réseau GSM qui tiens dans une Boite 🙂 C’est le minimum des primitives nécessaires pour avoir sa propre station GSM (le hardware cheap devrait arriver sous peu). On peut téléphoner avec et échanger des SMS. Le système ne nécessite pas de cartes SIM :), et les appels peuvent être routés au travers d’un PBX ISDN via Linux Call Router. Le tout fonctionne s’administre au travers d’une console telnet cisco-like.
Une station GSM peut « s’appairer » à n’importe quel réseau GSM (pas d’authentification mutuelle) et router les appels gratuitement. Avec un seul téléphone il est possible de générer un DoS !!! de même un AP rogue peut bloquer la capacité d’un téléphone à occuper une fréquence particulière, et l’utiliser pour trianguler la position du téléphone. Pour fuzzer le GSM depuis le téléphone c’est très dur, mais coté réseau c’est très facile.
Du code scapy pour GSM sera publié bientôt 🙂 pour le reste, c’est dans les actes !!!