4 décembre
a backdoor in the firmware
Il
est toujours important de se tenir au courant des recherches en cours dans le
domaine de la sécurité et l’un des endroits parfait pour y parvenir est la
conférence du SANS Institute. Tous les sujets dont on entend parler dans les différentes mailling lists nous sont
présentés par différents chercheurs avec à la clef de nombreuses
démonstrations. Mais de temps en temps, certains sujets impressionnent plus que
d’autres et c’est précisément l’objet de ce post. Je viens d’assister à la
présentation (en exclusivité mondiale s’il vous plait) des travaux d’Arrigo
Triulzi intitulés « A backdoor in the firmware ».
Je
pense que l’intitulé de la conférence vous donne une bonne idée du sujet
couvert mais le plus impressionnant reste à venir. Arrigo a mis au point un firmware
« hacké » pour carte réseau Broadcom (mais on peut imaginer le même
scénario sur la plupart des cartes réseau du marché) qui lui permet d’exécuter
un certain nombre d’actions lorsque la carte réseau reçoit un « magic
packet » avec le type IP 0xbeef (quel humour).Cette carte réseau étant
connectée sur le bus PCI de la machine, elle a la possibilité d’accéder à la
mémoire de la machine, de communiquer avec d’autres périphériques, … sans que
le système d’exploitation et donc un quelconque anti-virus puisse s’en
apercevoir. La belle affaire me direz-vous, une carte réseau a des capacités de
calcul et de mémoire très limitées et ne peut donc pas faire grand-chose. Mais
Arrigo a poussé le concept beaucoup plus loin puisque grâce à Vista et son
bureau « Aéro » qui nécessite que la moindre machine portable ait
maintenant un processeur graphique (GPU) digne d’une formule 1, il a trouvé une
autre source de puissance de calcul et de mémoire qui échappe au contrôle du
système d’exploitation: la carte graphique. Il a donc « hacké » cette
fois le firmware d’une carte graphique pour lui fournir la puissance et la
mémoire dont il avait besoin.
Je
pense que vous commencez à comprendre le scénario :
- l’attaquant envoie un « magic packet » à la carte réseau de la machine infectée
- à la réception de ce paquet, celle-ci communique avec la carté graphique via le bus PCI
- la carte graphique lance une sorte de mini serveur SSH et communique via la carte réseau
infectée
- l’attaquant prend ainsi le contrôle de la machine distante
Le
mini serveur SSH en question est déjà fonctionnel et s’appelle
« nicssh ». Il permet de faire des choses diverses et variées comme
rebooter la machine à distance, lire la mémoire de la machine (qui contient le
mot de passe de votre volume TrueCrypt chiffré par exemple), … et tout ça sans
passer par le CPU de la machine et donc de manière complètement indétectable.
Autant dire que les choses commencent à faire peur…
Se
pose maintenant le problème de l’infection de la machine cible. Pour être
capable de prendre le contrôle de cette machine, il faut être capable de mettre
à jour le firmware de la machine en question. Connaissant la propension de
nombreux utilisateurs à cliquer sur tous les mails qu’ils reçoivent, je pense
que ce n’est pas un réel problème. Cependant, sur tout système d’exploitation
moderne qui se respecte, les comptes utilisateurs ont de moins en moins de
droits alors qu’installer un nouveau firmware nécessite des droits administrateurs.
Le problème est donc réglé me direz-vous ?
Et
bien non, c’était sans compter sur la ténacité d’Arrigo qui a découvert une
autre porte d’entrée. Afin d’optimiser les temps de production des machines et
des composants sur les chaines de production, les constructeurs de carte réseau
ont ajouté à leurs chipset une fonctionnalité très intéressante. Lorsqu’une
mise à jour du firmware d’une carte réseau est annoncée par son constructeur,
les fabricants de PC se doivent de livrer des machines globalement à jour.
Ainsi, pour éviter aux fabricants de démarrer les 500 machines déjà produites
avec un lecteur de disquette connecté pour mettre à jour le firmware de la
carte réseau, les constructeurs de chipsets offrent la possibilité de le faire
par le port Ethernet. Pour que la carte se mette à jour, il suffit donc lui envoyer
un paquet particulier qui est un paquet UDP et donc routable (cette
attaque ne se cantonne ainsi pas au LAN de l’entreprise)!
La
boucle est donc bouclée puisque nous avons maintenant un « ultimate
rootkit » capable de s’installer à distance sur une machine et de
s’exécuter sur celle-ci sans utiliser à un seul instant le CPU de la machine et
donc en fermant toute possibilité pour le système d’exploitation de le
détecter. La chose fait froid dans le dos.
Arrigo
ne s’est pas arrêté là et a imaginé une autre attaque elle aussi fort
sympathique: actuellement, la majorité du marché de la sécurité est constituée
d’appliances qui sont pour la plupart des PC utilisés en temps qu’IDS/IPS ou en
tant que firewall. Dans ce contexte, une attaque possible serait d’envoyer le
paquet de mise à jour à la carte réseau et d’upgrader son firmware à distance.
Ceci étant fait et partant du principe que la machine a au moins deux cartes
réseau, cette première carte infectée envoie sur le bus PCI le paquet de mise à
jour de la seconde carte qui se met elle aussi à jour avec un firmware
infecté. L’attaquant contrôlant alors les deux cartes réseau, il lui est
possible de faire passer des paquets d’une carte à l’autre via le bus PCI en
évitant le logiciel de filtrage installé sur la machine, que ce soit un
firewall ou un IPS. La encore, on frise le cauchemar.
La
seule bonne nouvelle dans tout ça est que bien évidemment, le proof of concept
qui a été développé est très dépendant du hardware présent sur la machine
attaquée. Il faut donc développer un firmware par modèle de carte réseau attaqué.
Cependant, à bien y réfléchir, les constructeurs de chipsets réseau se comptent
sur les doigts d’une main.
Je
ne sais pas pour vous, mais moi j’ai maintenant l’œil rivé sur la LED

Wikio
Scoopeo
Viadeo

Ce qui est bien dans les attaques qui dépendent du hardware c'est que seuls les gouvernements et les grandes administrations en seront les cibles... (vive le scada)
En ce qui concerne l'exploitation des ports PCI (et mini-PCI) il existe déjà du matériel qui fait ça : http://www.keyghost.com/PCI-MPCI-Keylogger.htm
Bref la "révolution" c'est la mise à jour du firmware à distance. Processus sans doute bien connu chez les constructeurs.
http://www.patentstorm.us/patents/6930785.html
La vraie performance ici est de savoir développer des firmwares. Compétence probablement répandue en Chine (le pays des constructeurs) et chez certains geeks un peu partout (Die Hard 4 :).
Bref les chinois ont les compétences, la motivation et le mobile.
On dirait donc qu'il s'agit plus d'un cri d'alarme sur l'accumulation de failles laissées béantes depuis des années par le biais d'un scénario catastrophe (Die Hard 4 encore :).
Rédigé par: Florent | 05 décembre 2008 at 11:02
Les systèmes virtualités se développent en entreprise. Ne pourrait on pas penser à une modification du firmware à partir d'un système invité ? Passant ainsi les mécanismes d'isolation de l'hyperviseur mais permettant d'avoir accès à tous les systèmes du serveur concerné.
Rédigé par: Sylvain | 05 décembre 2008 at 11:07
Ce n'est pas le type IP 0xbeef, c'est le IPID...
http://www.alchemistowl.org/arrigo/Papers/Arrigo-Triulzi-PACSEC08-Project-Maux-II.pdf
Arrigo
Désolé pour l'erreur, j'espère que je n'ai pas trop déformé le reste. En tout cas, merci pour le lien !!
Brice RENAUD.
Rédigé par: Arrigo Triulzi | 15 décembre 2008 at 17:02
@Sylvain: c'était partie de ma présentation... comment sortir d'une VM en passant par le firmware.
Rédigé par: Arrigo | 15 décembre 2008 at 18:11
Sur le sujet de VMware escape et firmware viruses j'avait donné une présentation à Genève en octobre 2007:
http://www.alchemistowl.org/arrigo/Papers/VMware-escape-and-firmware-viruses.pdf
C'était la première sortie du Project Maux et personnes l'avait remarqué ;-)
Pour le mini-keylogger: ce n'est pas vraiment la même chose...
Arrigo
Rédigé par: Arrigo Triulzi | 16 décembre 2008 at 11:20