SSTIC 2012 - Retroconception et analyse d'un baseband qualcom

Reverse et debug d’un baseband qualcom…

Bon là ça va bien plus doucement 🙂

Dans un smartphone il n’y a pas qu’iOS ou Android comme OS, il y a aussi ce qu’on appelle un BaseBand qui gère toute la connectique réseau. Il n’y a que très très peu d’information sur le baseband qui est un blob binaire gigantesque, fermé et difficile à analyser.

Qualcom est le leader du baseband gsm/3g/4g. Le monde du baseband est très très très fermé.

Le reverse de baseband est assez rare, et exotique. On a encore moins d’information sur l’exploitation de failles baseband. Le pépin c’est que la mise au point d’un exploit de baseband requiert une connaissance assez grande de son fonctionnement pour ne pas tout défoncer lorsqu’on déclenche la faille.

L’auteur s’est penché sur une clef 3g qui n’est rien de plus qu’un téléphone format USB sur lequel on trouve là encore un BaseBand, avec deux DSP. Une clef USB 3G dispose de 3 ports série usb, un pour les commandes AT, l’autre pour passer les données, et un 3ème qui semble ne servir à rien en apparence. En fait c’est un tool pour les ingé qualcom qui à été laissé là.

Il est possible d’activer ce 3eme port pour accéder à une page de diagnostic permettant d’afficher des stats, des infos, et de lire/écrire arbitrairement en mémoire. Ce qui permet de dumper toute la mémoire du baseband. L’avantage c’est que grâce à ça, on peut avoir la stack et le heap en plus du code etc… chose qu’on aurait pas si on avait dépaquetté une mise à jour de firmware.

Dans l’ensemble du firmware étudié, il n’y a aucune protection, tout tourne en mode superviseur (=ring0), pas de stack cookie… bref c’est la fête.

Ainsi grâce à cette analyse, on obtient toutes les stacks protocolaires pourries dans lesquelles on va trouver un gros tas de vulnérabilités.

L’auteur nous détaille ensuite comment il a analysé ce baseband et mit au point un système de debug du baseband sous la forme d’un proxy GDB. Il s’agit en fait d’un shellcode contenant une vm qui permet de faire le debug depuis le baseband en live.

Demo du debug en live ensuite…