 Donc, nos invités pour le prochain conférencier, Igor Sorynsky et Nikola Konar, tous les deux font du reverse engineering, Nikola a écrit des scripts Python pour disabler le management engine et il est à l'université de Milan et aujourd'hui ils vont parler du layout de Intel, la recherche pour beaucoup de mythes qui existent autour d'un internet, qui existent sur internet, accueillez-les avec des applaudissements. Test, test, vous pouvez m'entendre ? Ok, merci à tous d'être venus, c'est beaucoup de monde, c'est la première fois que je fais une conférence avec autant de gens, mais bon, on va voir. Donc quelques mots sur moi, je suis un développeur dans une compagnie qui s'appelle X-rays et sur mon temps libre je fais du reverse engineering et il s'avère que la boîte où je suis développe le logiciel de reverse engineering, ça se copie plutôt bien. Je ne suis pas un cherché en sécurité, mon boulot dans la vraie vie c'est du développement, donc pour ça c'est juste un hobby. Mais voilà dans mon temps libre je fais quelques hacks, j'ai fait quelques recherches sur des iriders d'Amazon Kindle, à l'époque j'avais trouvé un port série et j'avais extrait quelques trucs du file système d'un Kindle, ça n'a rien à voir avec cette présentation, c'est juste pour tenir un peu de background. Et après ça j'ai commencé à m'intéresser à Intel EMI et c'est du ça que je vais parler dans cette présentation. Bonjour, je suis Nicolas Cornat, je fais aussi du reverse engineering et je suis intéressé par tout ce qui Hardware fait maison. Je suis actuellement étudiant à l'université Polytechnique de Milan et je suis aussi cherché en sécurité. J'aime fabriquer les choses par moi-même, j'aime beaucoup faire des choses rigolotes avec des PCB. Et un petit disclaimer avant de commencer, les choses qu'on va t'écrire ici suivant soit de source publique, soit de notre reverse engineering que nous avons fait nous-mêmes. Donc vous ne pouvez pas être sûr que tout ce que je dis est sans vous en correct, c'est juste une autre opinion et peut-être qu'on se verra qu'on s'est planté dans le futur. On n'a aucune relation particulière avec Intel. Cette présentation n'est pas n'est pas approuvée par Intel ou quoi que ce soit du genre. Donc allons-y. Quelques informations sur Intel EMI. EMI ça veut dire de jour management engine. À l'origine c'était manageability engine et ça date du Dbz 2000, c'était quelque chose d'important à l'époque. Maintenant Intel appelle le système de sécurité et de gestion convergent ou système de sécurité convergent. Les deux noms sont un petit peu la même chose. Sur les systèmes mobiles ou embarqués, il y a une version un peu différente mais similaire qu'on appelle trust execution engine pour TXE. Et pour les plateformes serveurs, il y a aussi une autre version de ME, SPS pour serveurs plateformes services. Et donc toutes les plateformes Intel de nos jours ont une variation de Intel ME. Alors qu'est-ce que c'est ? Intel sur leur FAQ dit dans chacune des puces ou chacune des plateformes basées sur des puces Intel, il y a un petit ordinateur, un petit sous système qui embarque un ordinateur qui fait diverses tâches et pendant que le ordinateur tourne ou aussi pendant quitter sommeil et qu'il doit fonctionner correctement pour obtenir la meilleure performance de votre PC. Donc ça c'est assez vague mais c'est ce qu'ils disent. Qu'est-ce que d'autres gens disent ? Il y a des gens qui disent par exemple que c'est une backdoor qui a été faite pour la NSA et qu'il n'a aucune fonctionnelle utile. Je suis un peu responsable puisque ma première présentation sur ce sujet s'appelait un rootkit dans ton laptop et c'est moi qui l'ai fait. Donc un peu de contexte sur ça. Au début comme moi j'ai proposé l'abstract de cette présentation, je regardais essentiellement la virtualisation avec Zen et je regardais les fonctionnalités que Intel proposait pour Zen. Et je suis remarqué les fonctionnalités de Intel ME qui fonctionnaient quand même beaucoup comme un rootkit et j'ai ce défaut au mois de être facilement distrait. Et quand j'ai commencé à regarder aux fonctionnalités d'anti-vol, j'ai vu qu'elles étaient liées aussi à Intel ME et ça s'a ouvert plein de portes. J'ai commencé à regarder qu'est-ce qu'il y avait d'autres qui étaient faits par Intel ME etc. Ce que je veux dire par là c'est pas juste un rootkit. Le titre que j'avais fait pour cette présentation c'était un petit peu du claybet pour que ma présentation soit acceptée avec succès. Mais bon, voici par exemple un article de Hackaday. C'est un petit peu difficile à lire ici donc je vais en lire des parties pour vous. Ça dit entre autres, c'est un microcontroller qui a un accès direct à tout dans votre ordinateur. Tous les ordinateurs avec un processus Intel fait dans ces dernières années en A1 et si vous cherchez un endroit parfait pour monter une attaque indétectable vous trouvez pas mieux que Intel ME. C'est un ordinateur complet qui est entouré d'une nuance. Personne ne sait ce que Intel ME peut faire. Personne ne sait ce qu'on trouvera dedans, qu'on arrivera à l'ouvrir. Donc ça c'est juste un article et il y en a plein qui sont similaires qu'ont été publiés dans ces dernières années etc. Par exemple sur Radit il y avait cette discussion et un poste disait théoricien du complot en moi me dit que Intel ne est pas forcément honnête sur ses intentions avec AM. Je pense que la NSA et d'autres agences ont aussi leur part de responsabilité là-dedans. Un autre exemple sur Foronix, les Foronix, le gouvernement américain peut-il exiger des entreprises sur ce que Intel ME peut contenir ou ne peut pas contenir. Le gouvernement américain a une stratégie à l'interne pour le contrôle internet et Intel ME fait partie de ce plan. Voici sur IRC sur un autre canal et cette personne demande comment ils peuvent limiter les risques auxquels ils se exposent avec ME pour quand il y aura, comment est-ce que je peux limiter les risques quand il y a un ordinateur entier au sud entre ordinateurs et qu'on ne peut pas le désactiver. Il n'y a pas besoin d'un hack hardware, c'est une backdoor dans l'hardware, ça passe au-delà d'importe quel firewall, antivirus ou protection qu'on puisse mettre en place. Donc tout ça ça fait quand même très peur qu'on le résume comme ça mais est-ce que c'est vrai ? Après avoir regardé tout ça, je me dis que ces interpellations sont quand même un petit peu tirées par les cheveux. Donc je vais poser la première question, est-ce que c'est vraiment inutile pour nous ? Est-ce que ça n'a vraiment aucun bénéfice pour nous ? C'est pas parce que vous ne voyez pas forcément le bénéfice de façon immédiate qu'il n'y a pas de but à intermer. Donc initialement AME a été créé pour implémenter quelque chose qui s'appelait AMT et qui cherchait à résoudre des vrais problèmes, des vrais problèmes d'IT, des vrais problèmes de gestion d'équipement informatique. Donc regardons les technologies qu'il y a eu pour gérer à distance des PC. Ça a commencé avec les KVM, les keep of the switch, qui étaient des moyens d'avoir plusieurs ordinateurs mais de pas avoir un écran et un clavier souri par ordinateur. Un peu plus tard, il y a un standard qui s'appelait Wired for Management qui permettait de définir l'Awake Online pour allumer dans des soirs distance ou PXC. Puis ensuite, en 1998, Intel a ajouté Alert Online qui permet d'ajouter des alertes envoyées à un serveur à partir de l'ordinateur mais ça c'était dans une seule direction. Et puis en 2001, Intel a introduit ASF1, Alert Format 1 qui était à l'air zone LAN et qui marchait dans deux directions mais qui était uniquement sur UDP et qui n'avait pas de chiffrement. Quelques années plus tard, ils ont sorti ASF2 qui ajoute du chiffrement mais qui n'est pas encore complet et qui n'est pas pour tous les buts. Donc derrière, Intel a quand même fait son travail, ils ont fait beaucoup de recherches, ils aient vite beaucoup d'entreprises et ils ont fini par sortir AMT au Intel Developer Forum et pour ça, ils ont fait cette image et ASF ne faisait que ça. Tout le monde dans l'entreprise qui voit cette image dit il y a beaucoup de verts, c'est forcément très bien, il faut qu'on achète ça. Et du coup, ça a eu beaucoup de succès. Donc un an plus tard, ils l'ont sorti. La première version avait la première version était cachée à l'intérieur des contrôleurs réseaux qui étaient sur la carte de mer. Ça avait des fonctionnalités qui n'étaient pas supportées avant par ASF. Par exemple, il y avait la redirection de idées, ça permettait ça de monter l'image d'un disque à partir d'un autre ordinateur. Il y avait du céréal sur Dulan, donc pour avoir des consoles séries, des ports séries, qui étaient envoyés par-dessus Dulan. Pour une raison, quelqu'un qui utilisait Saub, donc du XML par-dessus HTTP, à l'époque ça semblait c'était un truc qui s'est mal encore. Donc après ça ils se sont mis à l'améliorer parce que c'était très populaire et ils se sont dit pourquoi est-ce qu'on doit le mettre sur la carte réseau ? On peut le mettre sur le Northbridge, il y a de la place, c'est juste un corps qu'on peut s'intitiser. Du coup, pourquoi pas ? Et du coup, plus de plateformes pour l'avoir. Et puis après, ils l'ont amélioré encore un peu. Par exemple, en 2007, ils ont sorti la version 3 et c'était la première qui ont sorti sans AMT. D'autres technologies, QST, Quiet System Technology, qui permet de faire de la gestion à distance. Par exemple, ça fait que quand le processeur devient chaud, QST peut parler au contrôleur qui gère les ventilateurs pour refroidir la machine. Donc ils avaient enlevé AMT du CPU et du coup, je suppose qu'ils avaient de la place pour ajouter d'autres trucs à la place et ils ont ajouté ça en disant, tiens, ça marche pour qu'on ne l'ajouterait pas. C'est aussi à cette époque-là qu'ils ont ajouté des ITPM parce que les gens à l'époque, il y avait cette initiative de Microsoft pour tout ce qui était trusted computing, la formatique de confiance comme ils disaient, et plutôt que d'avoir une puce supplémentaire pour la TPM, pourquoi les gens devraient dépenser l'argent pour ça, pourquoi ne pas simplement intégrer cette puce dans le processeur. Ce serait moins cher pour les gens. Après ça, ils ont ajouté la première version de l'anti-vol. J'ai pas beaucoup regardé ça, mais c'est à cette époque-là que c'est arrivé. Ensuite, en 2009, ils sont passés à quelque chose qu'on appelait la seconde génération. Ils sont passés à un nouveau CPU avec un jeu d'instruction plus efficace et ils ont commencé à bouger des choses comme par exemple le support des KVM qui avait besoin d'être fait en matériel, en utilisant des switches matériels dédiés. Maintenant, ça pouvait être fait par-dessus le réseau avec le protocole VNC. Ça se permettait d'utiliser un clavier ou une souris et un écran qui était à distance par-dessus le réseau. Donc ça, c'est quelques versions qui sont intéressantes. On va en passer quelques-unes. En résumé, ME a été créé pour cette technologie de gestion AMT. Et il y a ce termes un petit peu pas à pluie qui n'est pas vraiment bien défini, qui était AMT. Et dedans, il y a aussi d'autres fonctionnalités. Pas simplement parce qu'il est dans AMT, mais aussi parce que c'est les fonctionnalités qui peuvent être utiles. Comme par exemple une plus je n'ai pas mentionné, c'est ICC, Integrated Cloud Control, donc le contrôle de l'enloge intégré. Avant, on avait une puce séparée sur la carte mère qui contrôlait la pub, l'enloge, pardon. Et avec ça, c'était directement intégré dans le processeur. Et du coup, il y avait des économies sur les coûts de construction. Et c'était aussi plus sécurisé. Une fois que les horloches étaient contrôlées par le processeur, d'autres systèmes ne pouvaient pas la contrôler. Donc ça evitait du parasitage. Et bien sûr, l'anti-vol, en faisant partie, un chargeur d'application dynamique pour les mises à jour quand ils ont insulter les one-time passeurs, le deuxième facteur au démarrage. Et quelque chose qui appelle SWC, Silicon Workaround Capability. Ça, ça permet de patcher quand il y a des failles ou des bugs dans le siliconium, dans les processeurs même. Ça, ça permet d'utiliser le microcode pour passer au-delà de ça. Donc il y a des vraies applications à ces choses-là quand même. Donc je pense, je veux dire, que c'est raisonnable qu'ils ont ajouté ça à ME parce qu'ils en avaient l'opportunité et puis parce que ça leur faisait économiser de l'argent à eux et à leur clear. Donc quand les gens disent que c'était fait par la NESA et que c'est la NESA qui décidait tout, il a été découvert récemment quand même que dans leur diverse à la requête d'agence gouvernementale, Intel ajoutait un bit qui permettait de désactiver certaines fonctionnalités et certaines sécurité dans votre processeur. Et moi ce que je me dis c'est que si Intel avait contrôle sur votre ordinateur avec ME, pourquoi est-ce que Intel aurait ajouté ce pizza, pas vraiment de sens. Donc il y a ce poste sur Acornews d'un gars qui dit qu'il est ingénieur chez Intel et il dit, j'ai travaillé sur Intel ME pendant plusieurs années et il y a deux choses qui sont claires. ME n'est pas venu parce qu'on voulait espionner les gens et pour autant que je sache, il n'a pas été créé à la requête d'un gouvernement ou autre. C'était un véritable essai de fournir des fonctionnalités plus avancées et des outils utiles. Au démarrage ça allait être pire puisqu'on voulait permettre à tous les clients de faire tourner des choses dessus comme par exemple une GVM pour diverses banques et cette GVM aurait accès à userland. Cette idée a été rejetée assez tôt parce que c'était évident que c'était une mauvaise idée. Mais voilà, ME n'a jamais été quand même conçu comme un facteur d'attaque ou une faille. Donc moi j'ai plus de temps à être d'accord avec ce mec. Je pense que quand ME a dévié, c'est juste quelque chose dont on a un peu perdu le contrôle, donc Intel a un peu perdu le contrôle. Donc on va parler un petit peu d'un autre mythe. Les gens disent c'est toujours on quand le PC est off. Donc c'est pas complètement faux. C'est par rapport à l'état de power de ME. Donc si le PC est allumé, si tout est allumé, c'est ME est aussi allumé. Mais quand le PC est endormi, il y a l'état de ME. Donc le PC est suspendu, mais ME est parcellement fonctionnel et le PC fonctionne parcellement. Et les systèmes ME fonctionnent. Une fois qu'il y a un time out qui arrive à sa fin, ça va dans l'état de off. Et donc le host est suspendu et éteint et est complètement éteint. Donc c'est un peu éteint, mais pas complètement éteint. Mais bon, il y a les différents états d'état allumé. Normalement quand il y a un ordinateur, il éteint. Dans certains cas, vous pouvez le configurer dans le BIOS si vous avez MT. Voici une image de la configuration possible. Donc vous pouvez mettre différentes options selon celui de l'ordinateur et allumer où est-il en mode veille. Donc ce setting dépend de votre système, des configurations de BIOS qui ne sont pas toujours là. Un autre mythe. Il peut bloquer le PC avec une commande envoyée au VA. C'est vrai que c'était possible, mais ce n'est plus le cas. Et à ce mode TDT, donc c'est un anti-vol et c'était présent seulement dans les versions 4.1.9. Et ensuite ça était enlevé. Et pour cela, pour que ce soit possible, l'anti-vol avait besoin d'être activé et votre ordinateur devait être inscrit dans un programme anti-vol avec un serveur. Donc pour que le PC ne soit pas volé. Et effectivement, pour un temps, il avait le support pour la 3G et donc la chip devait être le module 3G devait être connecté directement au set de chips avec un bus de communication. Donc c'était un serveur Intel. Donc il fallait que ça aille au serveur Intel et en 2015, Intel enlevait ce DTD. Et c'est fini. Ce n'est plus là maintenant dans les PC modernes. Et toutes les autres anti-vol solutions n'utilisent plus. Ils utilisent un module sur le BIOS qui travaille au niveau du système d'exploitation sur un agent logiciel. Un autre mythe. Il peut lire toutes les données sur mon PC, mespionner. Bien, c'est un peu compliqué. Il peut écrire et lire sur la mémoire. Il ne peut pas lire votre disque dur. Il peut lire par des pilotes. Il peut aller chercher les données sur le disque dur. Mais il ne peut pas accéder directement le disque dur, bien sûr. Le système est fiché. Mais d'après la documentation dans le manuel de ME, le SMM est bloqué et ne peut pas être lu par l'agent ME. Il y a un peu d'accès à EGPU. Mais il ne peut pas avoir les pixels. Il n'a pas de données directes sur la carte graphique. Il ne peut pas décrypter directement les données. Mais malgré tout, il y a un Bouté des images différents. On peut accéder aux fichiers, mais ce n'est pas directement ME. C'est quelque chose qui utilise ME. Donc c'est la génération 2 de ME. D'après les informations les plus récentes, cela a changé. Ça peut dire certains trucs, mais pas tout. C'est une black box qui ne peut pas être auditée parce que c'est propriétaire, c'est surfermé. Donc il y a un tweet de Daniel Bilar sur Twitter et il dit son amie qui dit c'était la suite d'un attaque de craque qui était un bug dans l'implémentation et il dit comment est-ce qu'on fait pour quand il y a une spécification. Il faut lire le RFC. À chaque fois que ça dit doit vérifier si il l'a fait. À chaque fois qu'il ne doit pas, il ne l'a pas fait. À chaque fois qu'il le dit devrait partir du principe qu'il ne l'a pas fait. À chaque fois qu'il dit que ça n'affecte pas la fonctionnalité, vous pouvez être sûr que ça va être mal fait par au moins une compagnie et que personne n'a remarqué parce que ça marche quand même. Et je pense que cela applique aussi, ça applique aussi. Vous avez la documentation de Intel, les spécifications, vous ne les avez pas, mais vous avez la documentation de Intel et ça s'applique. Donc on peut faire la même chose. Prendre les spécifications et voir s'ils ont suivi ces recommandations et peut-être vous pouvez trouver un sandbox. Donc en plus vous avez l'auditing Blackbox. Donc il y a plein de produits qui sont soumets à des audits sans le code source. Donc vous voyez par exemple, vous voyez par exemple ce que je viens de dire avant, les recherches de Vasilios, Ververis, l'audit en lisant les docs et l'expérimentation. Donc ce n'est pas du reverse engineering qu'il a fait, il a juste lu la documentation et il a essayé d'activer Intel ME ou AMT et de voir si c'était activé de la façon dont il décrivait. Ils ont trouvé des trous dans la spécification où il a cherché et puis ensuite ça a été réparé par Intel, mais à l'époque c'était vraiment comme ça. Par exemple, Intel dit que MT ne doit pas mais dans certains cas, ah oui, ça ne ping pas le serveur d'activation, mais dans certains cas il le ping le serveur d'activation. Donc ça n'a pas été implémenté correctement. Dans d'autres versions, Intel a changé la façon d'activer. Et maintenant c'est plus correct. Donc vous n'avez pas forcément besoin du code source pour faire des audits. Et en plus, si vous n'avez pas le code source, vous avez le code binaire. Donc c'est pas encrypté, c'est sur flash pour le moment. Donc vous pouvez juste imaginer comment l'extraire. Et puis dans mon opinion, c'est quand même une bonne approche. Je pense que c'est vraiment le mieux d'avoir le code binaire. Donc vous voyez ce qui est exécuté, donc vous ne voulez pas les commentaires, confusés par les commentaires, ou toutes ce genre de choses, ou la formatation. Donc il y a un gotoo par exemple qui va au mauvais endroit. Et c'est pas évident quand on lit juste le code. Mais quand on a les binaire, quand on a le code binaire, eh ben c'est plus facile de voir ce genre de choses. On n'a pas les commentaires, enfin. Les commentaires, des fois c'est un peu débile, ça ne sert à rien. Ils disent des choses qui ne sont pas complètement vraies. Alors qu'avec les binaries, c'est différent. Donc évidemment, ça prend beaucoup plus de temps. Mais c'est la vie. Donc le public a trouvé des erreurs sans le code source. Donc j'ai mentionné Vasilis Ververis. Il a juste regardé le network, il a monitoré le network, il a testé. Et il y a cette année, on a découvert qu'on a pu envoyé un digeste vide en regardant le trafic sur le réseau. Et en essayant des choses, donc sans le code source. Et le dernier, c'est un buffer overflow qui a été trouvé sans le code source, juste avec les codes binary. Donc ça, c'était pour résumer. Même si c'est black box, et vous n'avez pas le code source, vous pouvez auditer. Et peut-être même sans reverse engineering. Bien sûr, reverse engineering, c'est encore mieux. Mais vous pouvez essayer sans, et ça peut marcher. Vous pouvez écrire des rootkits indétectables. Il y a eu quelques tentatives d'écriture de rootkits qui ciblait ME, notamment d'une tentative pour la première génération de ME qui était sûrement la première. Ils ont trouvé un bug qui donnait accès à diverses zones de mémoire réservées pour Intel. Et à l'époque, c'était du code qui était disponible en clair. Donc ils pouvaient lire ce qu'ils voulaient. Ils pouvaient aussi injecter du code dans la mémoire de ME et exécuter leurs codes. Donc ça leur a permis, en quelque sorte, de faire quelque chose qui ressemble à un rootkit. Mais il y a des imitations. Déjà, ça doit être infecté à chaque redémarrage. Et depuis, Intel a resolu ça. Ils ont des vérifications d'intégrité. Donc maintenant, on ne peut pas simplement vérifier le code. Les vérifications seront détectées et rejetées et la machine redémarrera. Et puis il y a eu Patrick Stein, qui a écrit un livre sur la détection des attaques d'EMA. Et je pense qu'on ne peut pas dire que c'est indétectable. Les accès à la mémoire d'EMA, on peut les détecter par divers effets de bord. Et du coup, on peut se rendre compte qu'il y a un infection. Prochain mythe, les gens disent, voilà, ça, c'est là et on ne peut pas l'enlever. On ne peut rien y faire. Je pense que c'est un mythe. On va voir ce qu'on peut y faire. Donc il y a un an, j'ai commencé à jouer avec le boot, moi-même, et le core. Oui, le libre boot, j'ai joué avec le libre boot. Et j'ai regardé leurs pages de questions. Donc ils disent qu'avant d'avoir la version 6, on pouvait enlever la firmware. Mais ce n'est plus possible parce qu'après la version 6, si on enlève le firmware, le PC va s'éteindre après 30 minutes. Donc, il semble que ce n'est pas techniquement nécessaire. Ça a l'air d'être un lock artificiel. Donc j'ai cherché des moyens de l'enlever. Et j'ai trouvé ce message sur une mailing list. Il a enlevé des parties de la firmware, et il a trouvé que le PC pouvait être allumé à s'éteindre après 30 minutes. Et après quelques temps, il a vu qu'il pouvait enlever certaines parties de Intel ME sans compromettre le boot du système. Donc j'ai essayé, moi aussi, ce qu'il avait fait. Et pour éviter de faire les choses par ment, parle à la main avec un editor X, j'ai utilisé Myclinar, un script piton Voilà. Où est-ce qu'elle est déjà à la firmware de Intel ME ? Elle est située sur la même chip que le BIOS UFI. Le lire et écrire, c'est assez simple, parce qu'on peut utiliser un programme en externe. C'est pas cher, ça peut être un petit bord de Linux avec une chip. Donc on peut aussi utiliser des tools vendeurs pour flasher et réécrire le fichier. Donc c'est possible parce que cette chips dans le système Intel est partitionnée de cette façon. Vous avez le descripteur flash qui contient différentes partitions à l'intérieur, la chip SPI. Donc vous avez la description, c'est comme une table partition. Et ensuite, vous avez la firmware. Donc ces régions, on veut juste la firmware, donc on va l'extraire et on peut le faire avec l'aide d'IFD Tool du projet Core Boot. Donc déjà, enlevons toutes les partitions de la firmware, sauf le FTPR. C'est la fondamentale, c'est ce qui est nécessaire pour le Core. En fait, le firmware est partitionné. Donc ça c'est le schéma simplifié. On a NFPT, c'est la firmware partition table. Il y a une liste des partitions à l'intérieur de la firmware. Et dans cette image, vous pouvez voir qu'il y a le FTPR, ça c'est le Core. Et le NFTP partition, c'est la partition avec le stack de réseau. Donc si on enlève cette partition, c'est pas dur parce qu'à l'intérieur du FTP, il y a des entrées et ils ont leur taille. Donc on enlève juste le code du offset et puis on peut calculer la taille de cette FTP. Donc les partitions sont signées, mais ils sont signées individuellement. Donc on peut enlever toute une partition sans qu'il y ait un effet, parce que la signature est dans la partition que l'on enlève également. Et en plus, le FTP n'est pas signé, il a juste une checksum. Donc c'est assez facile de tout enlever ce qu'on veut. Donc j'ai essayé ça. J'ai mis les résultats sur mon PC et ça a marché. Donc ça c'est le premier étape. Deuxième étape, enlever les modules LZMA. Donc les choses commencent à être un peu plus complexes. Donc voyons le layout de ce firmware. Donc nous avons la chip SPI qui a différentes régions, un descripteur des différentes régions. Dans le DME firmware nous avons différentes partitions le FTPR, DNFTI et à l'intérieur de chaque partition de code le FTPR par exemple. Nous avons différents modules. Dans ces modules, ça peut être comprimé ou LZ a décomprimé. Ils utilisent différents schémas de compression, parce qu'ils utilisent il y en a qui sont mieux ou moins bien. Ils utilisent pour charger la firmware. Selon la compression qu'ils utilisent on peut le charger plus ou moins vite. Donc pour ceux qui en cherchent tout de suite ils utilisent une autre compression. Donc différentes partitions ont différentes structures mais on veut juste la FTPR donc c'est tout ce qui nous intéresse et c'est la partition code et la structure interne de cette partition change entre les différentes régions donc entre les différentes générations donc génération 1 ce n'est pas un problème pour nous voyons la génération 2 et ça commence. Donc ce schéma interne de génération 2 Codes partitions. Donc nous avons une section qui est un manifest qui a la signature RSA et la liste des modules. Nous pouvons voir que nous avons différents modules et chaque entrée a le nom, le type de compression et le plus important c'est le H donc ça veut dire que les modules ne sont pas directement signés chaque module est haché et la liste des hachés est signée donc tant mieux pour nous le H et invalidé le module n'empêche pas qu'il soit laudé donc ça c'est important parce que ça veut dire qu'on peut stopper le bout de ce système en invalidant un module ah oui d'accord. Ils peuvent invalider le chargement d'un module de cette façon donc j'ai rencontré et essayé j'ai enlevé toutes les partitions de FTPR et j'ai gardé seulement 5 modules et j'ai reflaché et ça marchait donc à ce point j'avais enlevé presque tout mais il y avait les modules of man et je veux enlever la plupart la documentation en ligne pour les modules of man et pas très très épaisse donc j'ai vu un décompresseur pour les of man modules et voilà la structure donc les modules que j'ai vu avant on était un seul bloc avec un offset mais les modules of man compressés sont fragmentés donc il y a une seule partie il y a un flux of man et nous avons un local lookup table qui compille une liste avec des flags et des offsets les offsets point au chunk of man qui sont de la data de la donnée de taille fixe et qui sont non compressés mais là nous voyons qu'ils sont de taille diverses donc ça c'était vraisemblablement une idée de intel pour réduire la compression of man parce que différentes chunks peuvent être réutilisées dans différents modules cela dit voilà la structure donc ce que je devais faire c'est créer une liste des modules que je ne pouvais pas enlever parce qu'ils font partie des modules que je ne veux pas enlever et enlever tous les autres donc j'ai cherché ceux qui ont les noms les moins importants et j'ai flashé le résultat et ça marchait encore donc j'ai continué et j'ai essayé de découvrir quel module c'était véritablement nécessaire pour le boot et en fait j'ai remarqué qu'il n'y avait que deux modules et ces deux modules étaient le BUP bring up c'est le premier module qui est chargé et il arrête le watchdog de 30 minutes le module ramp il n'est pas toujours là à l'air de contenir une configuration BUP a besoin mais c'est juste deux kilobytes donc c'est pas un problème intéressant qu'il n'y a pas de kernel car le module de kernel est enlevé donc on dirait que sur la génération 2 c'est possible d'avoir un PC qui fonctionne parfaitement sans un kernel c'est assez incroyable prochaine étape, récupérer l'espace libéré moi j'utilisais Coreboot et l'image Intel M1 faisait environ 5 MHz mais une fois que j'ai supprimé tout ce dont j'ai pas besoin c'était beaucoup moins et je voulais récupérer cet espace que moi ce que je voulais faire c'était faire tourner un kernel Linux directement sur ma puce espionne pourquoi pas j'ai commencé par simplement tronquer l'image juste après le dernier module valide et ça a marché mais bon ça c'était un petit peu attendu parce que la partie que j'avais enlevée elle était utilisée par absolument rien elle n'était pas lue par quoi que ce soit dans Intel M1 donc je pourrais l'enlever facilement mais c'était pas assez parce que ici il y a un FTP qui est au début de l'image ME et le FTPR qui est la partition qu'on doit garder il y a peut-être d'autres partitions que moi j'ai réparable supprimé et là j'en ai plus besoin maintenant donc j'avais la FTP 1 MHz presque de bitin utile et ensuite j'ai un FTPR donc il fallait que je trouve comment je pouvais déplacer la partition et là vous allez me dire bah c'est facile tu déplace le code, tu déplace le pointeur dans l'FTP avec l'offset de l'entrée et c'est fini malheureusement sur la deuxième génération c'est pas possible c'est pas si facile parce qu'on dirait que certains des offset à l'intérieur de la FTPR ne sont pas relatifs au début de la FTPR mais sont relatifs à la FTP donc on doit aussi ajuster ces pointeurs ça ça a pris du temps mais j'ai fini par trouver où ils étaient et heureusement ils ne sont pas signés donc après beaucoup d'essais après avoir cassé mon laptop un paquet de fois j'ai fini par trouver lesquels était responsable de ce comportement et par les corriger ces pointeurs j'ai pu flasher le résultat et à nouveau ça a marché donc voilà la situation qu'on a maintenant on est parti d'une image de 5 MHz on a maintenant une image de 84 KHz qui de plus est pleine de vide puisque vous pouvez voir qu'il y a l'FTP du padding, les headers, quelques pointeurs d'autres padding, 50 KHz donné ça c'est la vraie donnée et encore du padding donc on a commencé à 5 MHz maintenant on est à peu près à 50 KHz de donnée utile et juste pour vous donner une idée voilà la comparaison de la taille entre mon image donc vous pouvez voir que l'essentiel de l'image est détillé à la stack réseau et à Intel AMT, on a une petite partition de FTPR et une petite partition de EFFS qui est une partition spéciale que Intel AMT peut lire et écrire et à l'intérieur du FTPR, la seule chose dont on a besoin pour démarrer le PC c'est cette partie BUP et parfois le romp RUMP qui est très très petit donc j'ai décidé de poursuivre mon travail et de le porter sur la troisième génération alors avant que dans la salle on disait non heureusement pour la troisième génération c'était beaucoup plus simple parce que la structure interne des partitions avait changé mais sans aucun changement j'ai pu supprimer toutes les partitions sauf la FTPR mais les schémas internes avaient changé donc voici le nouveau schéma interne de la partition de code la partition est maintenant indexée par le code partition directory CPD qu'on peut voir sur cette image et on a trois types d'entrée premier est le nom de la partition point L E, le manifest les metadonnées du module et les données du module ce qu'on peut voir c'est que les systèmes de signature ont changé donc on a l'ancien système avec le manifest qui a des extensions signées les metadonnées qui hachent les données mais heureusement l'évaluation en paresseuse de ces haches et marche toujours donc on peut encore exploiter ça pour supprimer autant de modules qu'on veut donc voilà la liste des types j'ai essayé à nouveau après un peu d'essai j'ai fini par retrouver quel module était vraiment nécessaire et lesquels ne l'était pas et on dirait que seulement quatre modules sont réellement nécessaires Cislib RBE qui est parfois une toute petite partition donc un peu l'équivalent de romp le kernel cette fois-ci est la partition BUP après quelques semaines de travail les chercheurs de positive technologie ont partagé leur découverte sur leur méthode pour désactiver Intel ME ils ont cité mon travail avec un bonus intéressant qui était que Intel ME 3ème génération donc Intel 11 Skylake il y a un kill switch, le bith HP donc si vous voulez en savoir plus sur le bith HP je vous conseille de lire le poste sur leur blog donc là je vais juste vous dire que si vous mettez ce bit à 1 Intel ME se désactive juste après l'initiation du système juste après avoir fait tourner le module BUP Igor Skomchiki a aussi trouvé le Altme Disabled bit qui a à peu près le même résultat mais sur la deuxième génération donc en génération 2, en génération 3 on a les différents mais qui ont chacun la possibilité de désactiver de façon soft Intel ME sans avoir à modifier le code donc le résultat final de tout ça on a une combinaison du bith HP et du bith Altme Disabled plus la possibilité de supprimer le code on peut désactiver Intel ME juste après l'initialisation de plus ces 2 bits forcent Intel ME à se désactiver et tout de même de signal au système qu'il est dans un bon état donc on dirait que c'est une solution qui est mieux supportée par les bios qu'on trouve dans le commerce de plus pour vérifier le statut d'Intel ME j'ai utilisé un outil qui vient du Corboud project qui peut récupérer les entrées de Intel ME donc là vous pouvez voir les résultats sur mon laptop et là vous pouvez voir les codes d'erreurs de Intel ME qui cherchaient à charger un module mais ce module n'avait pas un Hvalid et vous pouvez voir ici que le firmware n'a pas considéré que l'installation était complète donc la phase de progrès dans laquelle on est c'est la phase BUP Intel ME est bloqué à essayer de charger le kernel mais il ne peut pas puisque le kernel n'est pas haché correctement avec l'addition du bit Alt-M-O Disabled sur la génération 2 vous pouvez voir que le statut d'Intel ME a changé et que le statut maintenant dit M-I Disabled M-O Disactivé donc on peut voir que le statut est différent de plus grâce aux tests qui ont été fait par la communauté j'ai pu voir que M-I Cleaner n'est pas limité seulement à mon PC mais marche aussi sur tous les PC d'un HALM jusqu'à du Coffee Lake la ligne de produit tous les produits actuels d'Intel sont couverts par M-I Cleaner alors comme vous pouvez le voir si on veut récupérer cet espace et significativement réduite on passe d'abord de 1.5 à 5 MHz en fonction de la version d'Intel ME à 84 KHz pour la deuxième génération et de 2 à 6.6 MHz dans la génération 3 à un résultat de 330 KHz il y a beaucoup de fonctionnalités qu'on ne voulait pas d'Intel ME donc sur la génération 2 maintenant il n'y a plus de kernel qui tourne on perd NFTP donc il n'y a plus de stack, réseau ou d'AMT sur Intel ME DL, le chargeur d'application dynamique est parti et PTT, Platform Trust Technologiques et la TPM dans le firmware est aussi partie ça peut poser des problèmes ça c'est quelque chose qu'on a vu sur beaucoup de PC vous pouvez en refaire une brique et le PC ne s'allume plus du tout vous pouvez avoir un léger délai avant le démarrage, quelques secondes avant que l'écran s'allume sur quelques BIOS il y a une fonctionnalité du BIOS qui va automatiquement annuler les changements faits par EME Cleaner vous lancez EME Cleaner, vous allumez le PC et le firmware dans votre SPI a été remis à la version précédente et des fois vous pouvez aussi voir ce genre de messages pendant le démarrage qui dit attention votre firmware Intel ME est endommagé, appuyez sur F pour continuer quelques autres features que certains peuvent aimer sont partis donc par exemple on ne peut plus faire d'overclocking après avoir supprimé Intel ME et que la partition ICC qui était un des modules supprimé par EME Cleaner est maintenant supprimé donc bien sûr on n'a plus Intel AMT on n'a plus Intel PAPV qui est le protected audio videopass le chemin audio-vidéo protégé donc ça ça peut peut-être potentiellement casser certains DRM et quelques partis de Intel SGX sont aussi partis et d'autres trucs donc vous vous dites peut-être bon ça va c'est cool mais j'aimerais bien voir un peu plus, après la première preuve vous voyez ces slides, mon PC tourne sans Intel ME mais bon regardons une démo quand même donc initialement l'image de Intel ME ici vous pouvez voir fait 5 Mhz lançons EME Cleaner dessus bonne chance et vous pouvez voir ici que l'image modifiée ne fait plus que 84 KHz vous pouvez avoir la différence entre les deux vous pouvez voir que l'image originale a énormément de partitions dans sa FPT alors que celle qui est modifiée n'en a plus qu'une la FTPR faisons un dump du firmware actuel sur mon PC vous pouvez voir ces messages qui sont tout à fait rassurant tout est tout à fait sûr ici extrayons maintenant le firmware à partir de ce dump avec IFD Tool vous pouvez voir ici ce fichier Flash 2 Intel ME.bin que je vais comparer avec mon image modifiée et vous pouvez voir que c'est exactement la même donc vous pouvez voir que je vais bien tourner ma version modifiée d'une image sur mon PC regardons le statut actuel de Intel ME avec Intel ME Tool alors vous pouvez le voir l'initialisation n'est pas été complète bien sûr Intel ME est encore bloqué pendant l'initialisation et vous pouvez voir que la phase de progrès dit Intel ME est activée de plus notez que la réponse de Intel ME ici n'est pas complète puisque par exemple Intel ME ne peut pas faire notre inspection sur ses propres capacités puisque le module qui sert à faire ça est supprimé donc qu'est-ce que vous pouvez faire ? déjà vous pouvez essayer Amy Cleaner sur votre système c'est un système un petit peu dangereux donc je vous conseille fortement d'avoir un moyen de restaurer votre machine c'est super si ça ne marche pas moins super mais dans les deux cas s'il vous plaît signalez-moi les deux je voudrais enfin remercier tous ces gens qui ont directement aidé à ma recherche et voilà c'est tout vous pouvez aussi voir sur mon GitHub les autres outils pour travailler avec ME pour extraire des images si vous voulez faire du reverse engineering vous pouvez avoir un dump des images et extraire des modules, les désassembler je prévois d'écrire d'informations dans un wiki pour partager un peu plus d'informations sur comment marche ME et avoir plus d'informations sur le désassemblage ça permettra sûrement à plus de gens d'investir et découvrir d'autres trucs à propos de ça et je suppose qu'on peut prendre quelques questions donc pour de questions sur les streams vous pouvez aussi les poser sur IRC en anglais ou en allemand au signal engine avant nous des questions alors pour le moment pas de questions une question est-ce que Intel ME peut accéder au device IO ma pernée moire je ne pense pas parce que ça utilise DMA et je ne crois pas DMA travail sur le IO mais je n'ai pas cette possibilité de voir à l'intérieur de DMA mais on peut peut-être essayer de l'ouvrir et voir si ça marche mais je ne pense pas non j'espère que ça répond à votre question alors dans votre présentation vous mentionnez le mot brick en parlant de votre laptop plusieurs fois alors si quelqu'un a accès au BIOS pour le programmer à quel point est-ce que c'est safe est-ce qu'on peut toujours restaurer un système dans son état original ou est-ce qu'on peut vraiment faire des dommages irréversibles à un laptop tout d'abord aucun laptop n'a été endommagé pendant cette recherche j'ai un laptop que j'ai réfléché 45 fois et ça marche toujours donc ça répond partiellement à la question si vous avez accès vous avez un dump vous pouvez toujours remettre en place les modifications donc si vous allez sur ma page github et comment utiliser un programme externe parce que quand vous avez un dump vous faites bien sûr le premier dump mais quand vous avez un bon dump vous êtes sur le bon côté parce que j'avais une chip qui était physiquement cassée et j'ai souder une autre et j'ai remis le firmware et ça marchait le programme externe ça devrait être bon il n'y a pas de soucis prochaine question bonjour à super présentation d'abord et une petite question est-ce que supprimer Intel ME réduit à la consommation électrique du PC peut-être un peu parce qu'il y a moins d'octets à charger oui je pense mais je n'ai pas Intel ME je ne l'ai plus donc Intel produit Intel ME de telle façon qu'il utilise le moins de courant possible donc je pense que le fait d'enlever le firmware ne change pas grand chose déjà comme le module de contrôle de clock est enlevé vous avez la vitesse du processeur oui le overclocking est plus possible mais je ne pense pas que qui que ce soit est mesuré cela la quantité de courant ça dépend de plusieurs facteurs en fait prochaine question est-ce que vous êtes en contact avec Intel et est-ce que vous pourriez leur dire de faire en sorte que dans le futur version 4 il ne commence pas à signer tous ces trucs ce qui rendrait ce genre de fixe ou nettoyage impossible mais donc j'ai pas compris vous voulez qu'il commence à signer ou arrête de signer parce que dans votre présentation vous avez dit que c'était une heureuse conscience que certaines parties ne soient pas signées oui ils ont commencé à chiffrer le PAVP donc il y a des gens sur Twitter qu'on dit que c'était limité avec des contrats avec Netflix parce qu'ils veulent cacher des clés DRM mais le reste de l'affirmeur est encore ouvert donc je pense pas qu'ils vont commencer à encrypter le reste ils ont des modules qui n'ont pas besoin d'obfuscation je pense qu'ils ont des obligations contractuelles à cause des DRM mais je pense que ça va rester en clair jusqu'à nouvel ordre dans cette présentation vous aviez une zone en RAM que vous m'appuyez à ME est-ce que ça fait partie de la RAM du système haute de l'ordinateur principal ou comment est-ce que ME s'assure que l'OS utilisateur n'interfère pas oui c'est le UMA mais ça marche comme certains acteurs graphiques ça prend une partie du RAM et pour l'utiliser pour des applications graphiques et ça c'est le chipset donc le host n'a pas accès donc oui c'est comme ça le BIOS doit être configuré correctement pour aller utiliser ces registres mais on peut avoir accès à cette mémoire en théorie et c'était le genre d'attaque 2009 qui a cassé à ME la première fois c'est fait mais une fois que le registre est configuré comme il faut on ne peut plus accéder à la mémoire mais on peut l'accéder avec des attaques hardware mais ce n'est pas assez parce qu'ils ont des checks d'intégrité donc une fois qu'ils récupèrent la mémoire ils regardent si ça a été modifié et si c'est modifié il éteint tout de suite donc il y a une protection contre les modifications merci beaucoup encore deux questions je n'ai plus de temps malheureusement pour les questions est-ce que les gens peuvent vous trouver pour d'autres questions en ligne ? si vous avez d'autres questions on peut parler dehors dehors dans le couloir