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



Les commentaires récents