 Donc Yann Fbaima c'est un ingénieur logiciel, un programmeur, il a commencé avec les C64 quand il avait huit ans. Et il était un hacker dans ses jeunes ans et maintenant il travaille dans la sécurité informatique et est très intéressé dans les machines de fax. Donc avec son ami Yael, et Ken, qui travaille aussi dans la sécurité informatique ensemble, ils vont nous dire plus sur les... Et what the fuck, vous utilisez toujours les machines. Donc c'est vraiment intéressant je crois et le titre est aussi Acton réseau comme c'était 1980. Donc faites du bruit pour les deux présenteurs. Merci beaucoup, merci beaucoup. Vous seulement connaissez ce bruit. Enfin voilà, donc nous, je suis Yann Fbaima, donc je travaille dans la sécurité informatique, je travaille à Checkpoint Research et Val Hittkin travaille aussi à Checkpoint Research dans la sécurité informatique. Donc on va parler sur l'histoire du fax. Donc beaucoup d'entre vous savent que ça a commencé en 1846, a été inventé le fax par Alexander Bain. Donc ça a commencé 20 ans avant l'invention d'un poule limineuse. Et après la première machine a apparu en 1860, 20 minutes, 20 ans avant le téléphone. Et donc après en 1923 il y a eu encore de plus d'invention comme le radio fax, ou alors en 1966, où une petite compagnie incognose point là a publié la première machine commerciale de fax Xerox Et en 1980, Latiu a défini un standard pour des faxes et des différents standards T30, T4, T6. Et c'est toujours les standards qu'on utilise aujourd'hui, il y a juste quelques petites modifications. Donc ça c'était dans le passé, mais ce qui se passe aujourd'hui. Donc aujourd'hui nous avons meilleure solution pour envoyer des documents électroniques. Donc on va comparer le fax à l'email par exemple, c'est une bonne idée. Donc juste pour vous mettre en mémoire, on compare la produit de gauche au produit de droite. Donc on va voir les points. Donc la qualité c'est plus ou moins clair, l'utilisabilité aussi claire. Je suis vraiment sûr que tout le monde a 24 heures sur cet accès à l'email, mais personne n'a un fax avec lui. Donc c'est un système qui fonctionne mieux. Donc évidemment, quand on envoie un fax, on reçoit une confirmation. Bon, ça ne montre vraiment pas si l'autre côté l'a vraiment eu, parce qu'on reçoit la confirmation même si l'autre machine n'a pas eu de papier. Donc ce n'est pas vraiment très refiable. Et puis l'authenticité, on peut se disputer si vraiment un mail est authentique. Mais bon, on a des moyens cryptographiques pour vraiment assurer l'authenticité d'email, mais on n'a rien pour le fax. Donc si on regarde ce tableau, on se pose la question qui utilise toujours le fax. Donc le fax, vous pouvez le mettre au musée, mais bon, on ne pourrait se dire personne n'utilise le fax. Mais bon, voilà, mais apparemment tout le monde utilise le fax. Donc on voit par exemple que les fax sont envoyés pour envoyer des choses comme ces cartes maritime extrêmement importantes à des bateaux qui sont en pleine mer. 99% de la population du Japon utilisent encore des faxes d'après Wikipedia. Et si on cherche n'importe quelle combinaison comme contact à nous et faxes sur Google, vous allez trouver que 300 millions de résultats, c'est-à-dire 300 millions de numéros de faxes publiés sur Google. Et ça c'est sans compter ceux qui ne sont même pas publiés. C'est un nombre hallucinant de numéros de faxes. Mais ce n'est pas qu'une question de nombre, ce n'est pas une question de nombre de machines qui peuvent recevoir des faxes qui sont importantes. La question c'est qui utilise encore des faxes ? Donc si vous êtes une petite entreprise, une moyenne entreprise ou une grande entreprise, vous avez un fax. Alors ça ne veut pas dire que les gens envoyent des faxes à ce numéro, mais il y a quand même une machine qui attend là-bas de recevoir des faxes. Si vous êtes une banque, vous êtes obligé d'aimer les faxes. Ça c'est Back of China, la plus grosse banque du monde. Et c'est son numéro de faxes. Plus important, si vous êtes une organisation gouvernementale, vous vous réveillez le matin et vous vous dites, ah, je vais avoir des faxes. Donc voilà le numéro de faxes de Donald Trump. Si vous lui envoyez un fax, allez-y. Ce n'est pas du faux, c'est le vrai résultat sur Google. Allez-y. On doit lui envoyer quelque chose là. Et vous savez, ces banques, ces gouvernements, ces institutions, ils ne font pas que accepter les faxes, vous autorisez à en envoyer. Ce qui est intéressant, c'est que très souvent, c'est le seul moyen. C'est obligatoire de l'envoyer ça. Vous pouvez soit l'envoyer par la poste ou par faxes. Ils ne connaissent rien d'autre. Donc nous on voit ça et on se dit mais c'est vraiment pas normal. C'est étrange, ça devrait pas être comme ça. Je veux dire, l'humanité a fait tellement de progrès. On utilise toute cette technologie et ça ne marche pas. Qu'est-ce que le fax ? Donc peut-être qu'il faudrait qu'on fasse quelque chose à propos de ça. On a commencé une recherche assez longue, très longue, pour chercher des vulnérabilités, des problèmes de sécurité avec le système du fax. Et avant qu'on détaille ça, il faut quand même que je vous parle de comment marchent les faxes aujourd'hui. Alors ce n'est pas tout à fait comme ça se passait il y a 20-30 ans. A l'époque c'était juste des machines faxes physiques. Aujourd'hui on a plutôt de la vieille technologie au sein de nouvelles technologies. Par exemple un système de faxes vers email. On a des systèmes de radio faxes ou de faxes sur des lignes cellulaires. Et de façon plus commune on a ces machines-là. Des machines combos qui sont des imprimantes, faxes, scanner. Mais voilà, ça fait faxe. Ça vient avec un câble téléphonique dans la boîte et vous pouvez le brancher sur une prise murale et recevoir des faxes. Et je pense que ça doit être le type de machine à faxes la plus commune, celle qu'on voit le plus souvent. Donc on s'est dit qu'on a regardé ces machines, ces machines qui font des faxes. Si on regarde à ces machines d'un point de vue sécurité, vous pouvez imaginer que c'est juste des boîtes noires. Ces boîtes noires ont des interfaces. Dans la boîte vous avez des interfaces comme du wifi, du bluetooth, de l'éternet, des choses comme ça. Et ces interfaces connectent l'imprimante à un réseau local, à un réseau public peut-être. Ça les connecte au monde. De l'autre côté de cette boîte vous avez cette petite interface qui connecte cette boîte noire à quelque part dans les années 70. Alors c'est assez amusant quand même. Si vous vous rappelez, si vous pensez à la fin ces imprimantes, ces boîtes c'est juste des ordinateurs. Il y a de la mémoire, il y a un CPU, il y a un système d'exploitation dessus. C'est très spécialisé mais c'est à des ordinateurs. Donc ce qu'on s'est dit, imaginez ça. On a un attaquant quelque part dans le monde qui a juste accès à une téléphonique et le numéro de fax de sa cible. Qu'est-ce qui se passe si ce type est capable d'envoyer un fax malicieux à cette imprimante et est capable d'en prendre le contrôle, contrôle total. Si cet attaquant fait ça, il va pouvoir ensuite pivoter via une de ces autres interfaces, par exemple Internet, et à partir de là, sauter de l'imprimante au reste du réseau interne de l'entreprise. Ce qui permet de faire une forme de pont entre le monde extérieur et le réseau interne via une ligne téléphonique. On est en plein dans les années 80, super. Donc ça c'est un scénario d'attaque vraiment cool et on s'est dit qu'on allait accepter ce défi, on allait relever ce défi et essayer de trouver des cas où on peut voir ça arriver en réalité. Donc on est vraiment excité avec ça. On a dormi un peu là-dessus et on en a parlé un peu. On a vu qu'il y a beaucoup de points difficiles sur les communes de travail. On ne savait pas trop comment s'approcher du problème. Jusqu'à quelques issues de problèmes qu'on avait. Comment on obtient le logiciel firmware qui marche dans le fax ? Ce n'est pas qu'on puisse l'apprendre partout. Une fois que l'on a obtenu, comment on analyse le firmware dans le fax ? Quel genre de logiciel, quel genre de système d'opération tourne dessus ? Comment on peut débuguer, trouver des astuces sur ce système de tournée de l'imprimante ? Et après, il faut qu'on nous comprenne comment est-ce qu'un fax fonctionne ? Parce que nous on sait que les bruits bizarres mais on ne sait pas comment c'est un fax. Et après tout ça, on peut parler de vulnérabilité, de faille de sécurité. Et puis aujourd'hui, on va essayer de vous amener un par un à travers le défi qu'on a fait et montrer ce qu'on a dû faire pour à la fin exploiter un fax comme vous l'avez montré. On peut commencer par comment est-ce qu'on reçoit le firmware d'une imprimante ? Voilà, ça c'est notre imprimante de HP. OfficeJet, on a pris ce modèle parce qu'on a pris HP parce qu'ils ont 40% du marché, donc c'est quelque chose qui est la plus grande cible existante. Et ce modèle il y a beaucoup de raisons pour quoi on a pris cette imprimante. Mais au final, c'est la moins chère. On l'a acheté et on l'a usée pour beaucoup de temps. Et notre but, c'était de casser le fax vraiment d'entrer dans le firmware. Mais avant ça, il fallait entrer dans la imprimante, mais vraiment il fallait tout démonter et entrer à l'intérieur. On a ouvert et on a trouvé cette platine principale. Et ça ressemble à ça. Donc les points venants vulnérables sont le flash d'un modèle spécifique. Ça n'aura pas trop beaucoup parce qu'à l'autre côté ça remonte à ça. C'est plus intéressant. Le USB, le wifi les batteries pour la mémoire le contrôleur d'électricité. Ce qui est vraiment intéressant c'est le CPU, le processeur de Marvel. C'est quelque chose qui est vraiment produit pour AHP, donc on n'a aucune idée comment ça fonctionne. On a trouvé des petits bouts d'informations sur ce processeur et on a le modèle fax. Donc c'était un CSP 1040. Ce qu'il faut comprendre c'est comment ces composants fonctionnent et comment est-ce qu'ils sont connectés en 30. Donc il faut aller un le prochain pas. Ce que je dis vraiment le problème c'est d'avoir le logiciel du processeur. Si on regarde un peu plus près sur la platine on trouve ces interfaces très intéressants. Donc le bug serial et le JTAG si vous connaissez ça vous savez que si vous savez débuguer des machines à travers ces interfaces vous pouvez lire le film vers et voir le storage. On a beaucoup rigolé on s'est dit c'est simple mais à la fin ce n'était pas le cas. Le port de série on est allé dedans et on a eu un terminal mais pour toute instruction qu'on a tapée on a vraiment eu cette response je ne comprends pas et nous on ne comprend pas non plus mais bon il semble que ce terminal ne va pas nous aider vraiment loin. Donc on a arrêté cette voie et on a essayé de trouver d'autres voies pour entrer dans le processeur. Et donc ce qui est vraiment le point le plus commun c'est de trouver un upgrade de firmware et d'exploiter cette mise à jour. Donc on a trouvé le site de HP qui ont toutes les mises à jour pour tous les produits HP donc il y a des milliers de fichiers et donc il nous a pris à peu près 2 semaines pour trouver le film vert de notre imprimante parce qu'il y en a tellement mais à un moment qu'on l'a eu on avait un fichier de mise à jour donc ce site est toujours là il y a beaucoup de trucs intéressants on avait la fichier de mise à jour pour le fax et ce n'est pas quelque chose qu'on peut que exécuter, c'est juste un binary. Et maintenant il faut comprendre comment on met un fax à jour. Est-ce que quelqu'un ici a déjà mis le firmware d'une machine de fax récemment ? Là-bas c'est cool pour vous. Et bon la réponse à la question comment on met à jour le firmware c'est simple, on l'imprime parce que vous voyez, l'imprimante reçoit une upgrade de firmware de la même façon que n'importe quelle tâche d'impression c'est plutôt cool en fait c'est défini dans un protocole propriétaire d'HP, le PCL XL classe de protocole 2.1 à addition de ce protocole et bon si vous lisez tous ces trucs là vous verrez qu'il y a quelque chose le PGL pardon le print job language quand vous lisez ce truc là il y a un port sur l'imprimante auquel vous envoyez les tâches d'impression et c'est le même port sur lequel vous envoyez les mises à jour. Donc quand on regarde le contenu du firmware on voit que c'est bien ça ça commence effectivement par un début qui contient ces lettres PGL malheureusement ce document le protocole de mises à jour du firmware fonctionne c'est propriétaire HP du coup il a fallu qu'on se débrouille tout seul et qu'on analyse comment ça marchait alors je vais pas vous faire passer à travers tout le processus de comprendre comment ça marche parce que bon c'est un petit peu ennuyeux mais ce que je peux vous dire c'est qu'il y a quelques couches ici la première c'est le decoder nulle deuxième c'est le decoder tif et ces choses-là font quelque chose comme si la ligne précédente c'était que des pixels blancs et que cette ligne là c'est aussi que des pixels blancs écrit 1 à la place de la ligne c'est une forme de compression ça a un peu de sens quand on parle de tâches d'impression mais quand on parle de fichiers binaire ça n'a absolument aucun sens de faire ça comme ça mais bon c'est comme ça que ça marche donc après qu'on ait compris ces systèmes d'encodage on a pu decoder tout ça et on s'est dit voilà quand vous avez un marteau tout ressemble à un clou quand vous avez une imprimante tout ressemble à une tâche d'impression alors c'était pas mal une fois qu'on a fait ça on s'est retrouvé avec un gros fichier avec un peu de chance à ces notre fermoir comment est-ce qu'on l'analyse donc en regardant là-dedans qui ressemble à une table ça ne fait pas que ressembler à une table c'est une table et à l'intérieur ça ressemble à ça et ce que cette table définit c'est une adresse de chargement le nom d'une section et un emplacement dans le binaire c'est-à-dire que notre gros fichier est découpé en plusieurs sections et cette table définit ces sections et avec ça on peut décomboiser ce fichier en plusieurs petits morceaux et inspecter chacun des morceaux un par un le morceau le plus important ou en tout cas celui qui a l'air d'avoir le plus de choses intéressantes celui-ci à l'heure de contenir donc on a regardé un peu plus près ce qu'il y avait dedans et voilà ce qu'on a trouvé et ça ressemble à notre fermoir et vous voyez ça c'est une des chaînes de caractère qu'on a vu dans notre port-série on l'a vu tout à l'heure à Idont understand, je ne comprends pas mais c'est pas tout à fait ça il manque quand même quelques octets et ces octets c'est un peu les mêmes à travers tout le bloc donc même si on a le code on ne peut pas vraiment le lire tant qu'il nous manque ces octets on ne pourra pas le comprendre donc il a fallu comprendre mais pourquoi ils sont pas là et qu'est-ce qu'il y a à leur place donc essayons d'analyser ça ensemble rapidement alors essayons d'abord de comprendre mais qu'est-ce que c'est on avait plusieurs hypothèses il y a plusieurs idées un peu folles mais l'idée la moins folle c'est probablement une autre forme de compression probablement une très mauvaise forme de compression puisque quand on essaye de récompresser ça avec zlib on a à peu près 80% de compression en plus et on sait en plus qu'il y a la zlib à l'intérieur de ce fermard puisqu'on voit des strings de la zlib dedans donc pourquoi ils n'ont pas utilisé à les savoir mais bon bah voilà, ça fait un certain challenge donc voilà un peu ce qu'on a pu voir essayons de décompresser ça alors il faut d'abord comprendre que ça s'est composé de deux types de caractères des caractères Ascii ce qu'on peut lire et dès qu'on ne peut pas lire des caractères non Ascii et ces caractères non Ascii c'est les octets manquants pour comprendre ce qu'il y a là-dedans il faut regarder un peu plus près et si on regarde ça assez longtemps on peut voir un motif qui se répète donc je vais vous épargner les problèmes mais je vais vous montrer ça il y a ces octets là ces octets simples et des octets doubles des mots de deux octets les octets simples sont suivis de 8 octets les mots de deux octets sont suivis de et parfois suivis de 9 octets si on regarde ça d'une façon un petit peu plus différente c'est un peu plus clair on peut voir que les lignes F7 F7 se ressemblent les deux avec FF se ressemblent aussi et donc pour comprendre ces motifs on a fut un petit peu d'au sens du binaire et si on imagine ça à base de 1bit 1bit et qu'on fait ça pour chacun des morceaux on peut commencer à voir le motif c'est à dire que quand il y a un 1 c'est un bloc de 1 octet quand il y a un 0 c'est un bloc de 2 octets donc ce que ça nous dit ici c'est que le premier octet décrit juste les 8 ou plus bits qui le suivent et ça c'est parfait parce que maintenant à quoi correspondent ces octets singuliers mais ça ne dit pas à quoi correspondent ces octets doubles pourquoi ce qu'ils vont être remplacés alors si vous vous y connaissez en compression vous allez vous rendre compte qu'il n'y a pas 36 options ici ça pourrait être un pointeur en avant ou en arrière ça pourrait être un dictionnaire d'une certaine forme ça pourrait être une fenêtre qui se décale on peut voir que c'est pas un pointeur en avant ou en arrière parce qu'on essaie de regarder les références dans le fichier et ça menait à rien c'est aussi que c'est pas un dictionnaire parce qu'on trouve rien qui ressemble à un dictionnaire à l'intérieur donc ça ne dit juste que c'est une fenêtre glissante donc ce qu'on peut faire avec ces informations c'est qu'on peut aller à notre endroit préféré Google et on cherche des implementations similaires dans un algorithme comme ça et heureusement pour nous dans un recoin très sombre dans l'internet on trouve cette page de wiki qui définit quelque chose qui appelle le format de bibliothèque soft disk le soft disk library format on peut pas demander s'il y a des gens qui connaissent parce qu'il y a probablement quelqu'un ici qui connaît c'est le ccc après tout mais dans ce format on peut voir un algorithme de compression qui ressemble très qui ressemble de très près à un autre ça ressemble vraiment vraiment beaucoup en fait c'est exactement le même que notre algorithme donc c'est plutôt pas mal et ce qui est rigolo ici c'est que cet algorithme était utilisé par le passé et uniquement à cet endroit-là est-ce que vous pouvez le deviner où quelqu'un qui n'a pas vu le format quelqu'un n'a pas vu cette présentation avant c'est utilisé dans commanderkin soft disk c'est l'entreprise qui a produit commanderkin et cette implementation qui était dans le jeu commanderkin d'une façon ou d'autre c'est retrouvé dans l'intégralité des produits HP alors comment je sais pas j'ai aucune idée peut-être quelqu'un qui a été licencié à commanderkin et est allé à HP après bon on sait pas on a compris maintenant ce que c'est et comment cette fonction cette compression on a les données qui manquent et donc maintenant on sait que ceux de byte sont composés par la position de la fenêtre et du reste donc voilà je vais vous montrer comment ça fonctionne donc le first byte c'est le bitmap donc on va placer les strings dans le sliding window et le output texte et continuer et on arrive à A donc A est déjà présent donc on va rien faire et on va continuer B c'est présent déjà et qu'on arrive à E on arrive 0002 donc ça veut dire aller à la fenêtre réglissante position 0 et prendre les deux premiers bytes et après on continue avec EFG et après après quand on est terminé on a la bitmap et on a le premier byte et donc c'est comme ça que la compression fonctionne donc ça a l'air très simple si on regarde maintenant mais si on regarde dans notre sens c'est un peu plus compliqué donc maintenant on le sait on peut avec un framework on peut lire le code mais maintenant il faut comprendre ce qu'est le système d'opération de l'imprimante quelle est l'architecture quel est le système etc etc donc il nous a pris beaucoup de temps de faire ça mais je vais vous montrer une rapide explanation donc le système école de Tredex le processeur de ARM9 il y a pas mal de composants donc il y a le système il y a les librairies communes et les travailleurs faire les tasks donc les procès tournent dedans donc dans le système il y a le bootloader du réseau des trucs comme ça dans les libraires communes on a pas mal de libraires communes et puis dans les tasks on a les différents tasks et ce qu'il nous faut faire maintenant c'est qu'il faut se concentrer sur ces points différents parce que le reste c'est pas important et ça va faire notre travail beaucoup plus simple donc on veut commencer par ça mais avant qu'on fait ça et on voit quelque chose qui fait pas qui est pas vraiment normal qu'est ce que c'est ? chaque imprimante HP contient une librairie Spider Monkey mais c'est une implementation JavaScript par Mozilla et on s'est demandé pourquoi est-ce qu'une imprimante a besoin de présenter du JavaScript c'est pas un web server c'est pas un client web donc on a pas pu savoir une situation où une imprimante doit représenter du JavaScript donc on voulait savoir où est-ce que cette imprimante utilise du JavaScript donc on a un peu regardé on a utilisé JavaScript utilisé dans un module called pack donc c'est très commun c'est un protocole pour configurer des proxies ce proxy auto-configuration donc ça défient une proxie pour le DHCP et le truc c'est que la fonctionnalité et a été créée par HP donc on a regardé à ça et on a vu ces fonctions on a vu ce truc bizarre l'imprimante et avant qu'il fasse le système de pack il essaie de connecter à ce d'URL et il fait quelque chose on sait pas trop ce qu'il fait mais ce qui fait vraiment intéressant c'est que est-ce que vous savez qui maintenant a acheté FAKEURL1234.com on sait pas HP non c'est pas notre entreprise non plus je l'ai acheté elle s'était pas enregistrée donc donc on l'a acheté pour 5 dollars et maintenant toutes les imprimantes HP sont connectées à mon nom de domaine donc voilà donc si quelqu'un veut racheter le domaine à bon prix un peu plus que 5 dollars et donc je vais laisser la parole maintenant à IAL pour continuer merci Eniev donc après qu'on soit amusé avec spiderbank il s'est dit qu'il fallait qu'on trouve quand même la partie fax T30 de son nom complet ITUT recommandation T30 c'est une partie de protocole de fax c'est un PDF très long plus de 300 pages qui définit tous les aspects dont on a besoin pour envoyer un document via fax ça a été défini en 1985 il y a très longtemps et ça a été mis à jour il y a un peu plus de 10 ans en 2005 donc notre point de vue c'est pas mal du tout parce qu'on veut voir des vulnérabilités dans un protocole qui est vieux et compliqué et si on dit ça on va probablement en trouver et après qu'on élu tout le standard on a commencé à regarder à ça de façon dynamique à regarder à tout le code de l'implementation de T30 chez HP donc dans AIDA on a pu regarder à quoi ressemblait la machine à état on peut voir ici que l'essentiel des blocs de code l'essentiel des blocs de code ici ont des machines à état additionnels donc quand on voit ça on se dit que c'est une machine à état très compliqué et qui va être très difficile et en plus si ce n'est pas suffisant HP aime beaucoup utiliser des pointures sur fonction et d'avariables globales dans son code qui rend le reverse engineering statique très compliqué mais personnellement je préfère le reverse engineering statique mais bon cette fois-ci il fallait qu'on utilise notre approche donc on a dû faire du reverse engineering dynamique et pour ça on a dit qu'on a utilisé un autre debugger donc comme on a dit avant personne ne savait vraiment comment debugger une imprimante alors on a essayé comme on l'a dit par le jetag et par le porc série ça n'a pas marché on a cherché s'il y avait des stubs qui pouvaient être utilisés pour gdb mais on n'a pas trouvé du coup à ce point là il faut se dire que même si on peut contrôler l'exécution dans l'imprimante personne ne peut vraiment utiliser un debugger sans contrôler l'exécution c'est une boîte noire on ne peut rien faire donc ça ne marche pas et même si on pouvait contrôler le flow d'exécution avec notre debugger il y a un watchdog en hardware qui va nous empêcher de faire ça c'est quelque chose qui monitor le cpu principal et si ce cpu se met en pause trop longtemps le watchdog redémarre l'intégralité du firmware donc ça veut dire que si, puisqu'un breakpoint on met en pause le programme dès qu'on va rentrer dans un breakpoint le watchdog va nous tuer donc il faut qu'on trouve une meilleure façon de faire ça et la façon la plus simple qu'on a pu trouver ça a été de découper cette tâche en plus petit morceau si on peut trouver n'importe quelle vulnérabilité d'exécution de code on pourra ensuite exécuter du code dans l'imprimante et charger notre debugger et fait que ça il va falloir un peu de chance mais on croit fermement que la chance fait partie de tous les projets de recherche et le 19 juillet cendriot a publié une vulnérabilité qu'ils ont appelé Devons Ivy, le lierre du diable ça c'est une une exécution de code à distance dans la librairie de GESOP et dans notre cas le serveur web de l'imprimante utilise GESOP et il utilise même une version vulnérable de GESOP donc avec ça on a notre vulnérabilité, on n'a plus qu'à l'exploiter donc pour ceux d'entre vous qui ne connaissent pas Devons Ivy, voilà le code et voilà la vulnérabilité Devons Ivy c'est un underflow d'entier signé c'est-à-dire qu'il faut qu'on envoie assez de données pour que la variable passe d'un nombre négatif à un nombre positif c'est-à-dire qu'il faut qu'on envoie environ 2 giga octets donné à notre imprimante alors HP est très fier de la vitesse d'impression mais pas tellement de la vitesse de leur réseau avec pas mal d'optimisation on a pu réduire le temps d'exploitation à environ 7 minutes donc vous lancez l'exploit et vous attendez et après 7 minutes vous avez un exploit donc là c'est là que c'est arrêté notre chance puisque malheureusement on avait cet effet dans notre exploit qui est qu'après 2 à 10 minutes l'imprimante allait cracher c'est-à-dire qu'il faudrait qu'on attendait 7 minutes de plus qu'on aurait ensuite 2 minutes pour débugger et qu'ensuite ça cracherait encore donc on a passé beaucoup beaucoup de temps à attendre 7 minutes dans notre recherche si vous vous rappelez on voulait un debugger afin de pouvoir reverse engineer dynamiquement le fin moyen donc ça nous permettait maintenant de... on voulait pouvoir lire et écrire de la mémoire on pouvait pouvoir contrôler le flux d'exécution on voulait pouvoir charger notre propre code on pouvait pouvoir passer outre des protections de mémoire et il fallait surtout qu'on puisse exécuter notre debugger sans cracher le firmware parce qu'on voulait que ce debugger puisse s'exécuter et que le firmware continue à tourner et on voulait que les deux partagent le même espace d'adresse dans l'âge virtuel que les deux coexistent il y a beaucoup de debuggers qui pouvaient faire ça donc on a fait ce que mon frère m'a dit généralement de ne pas utiliser on a écrit notre propre debugger donc on l'a appelé SCOOT SCOOT est un debugger basé sur les instructions il supporte 6.26x674 un RM on peut le charger en tant que module kernel ou on peut les utiliser dans un mode embarqué pour un firmware en mode embarqué on peut directement le balancer à l'intérieur d'un firmware et le laisser s'exécuter il supporte il nous permet d'accéder à tout l'espace d'adressage via des copies de mémoire et directement on peut le connecter à AIDA et donc ça nous permet de trouver une adresse et de sauter là-bas pour contrôler l'exécution donc là on a directement sauté dans ce blob et après on va démarrer un serveur TCP donc on va connecter sur le serveur on peut commencer à écrire à lire de la mémoire et donc vous pouvez trouver SCOOT ici dans un GitHub on avait quelques exemples pour vous là le kernel mode et l'instraver mode donc c'est plus utilisé pour quelques CTF donc je recommande beaucoup voilà à ce point dans notre présentation on a toujours pas parlé de comment un fax fonctionne on a fait un reverse ingère on a fait un reverse ingère de firmware on a fait scout mais on a pas vu comment un fax fonctionne donc pour un fax, il faut une machine qui envoie un fax, il faut un modem donc le modem va recevoir les données qui vont être traitées dans le processeur et après vont être imprimées par l'imprimante bon on va voir comment ça fonctionne la phase 1 le réseau des tests pour travailler sur la ligne de l'entraînement donc c'est quelque chose que vous connaissez parce que ça fait ce bruit voilà avec ces bruits on crée un tunnel HDLC donc à travers ce tunnel on va envoyer nos messages au processeur donc dans la première phase on va envoyer notre numéro après dans la deuxième phase on fait une digasation des possibilités ce que les produits supportent dans la phase 3 on envoie les données et donc ligne après ligne, page après page on envoie les données et après dans la dernière phase on termine la transaction avec des hacks donc on va voir comment est envoyé une page blanche donc le document va être envoyé après on va voir la HDLC tunnel va être processé par le processeur et après va être imprimé donc c'est un tif officiatif qui est compressé en G3 G4 donc c'est quelque chose qui est très intéressant parce que qui est très bonne information parce que généralement on peut faire beaucoup de vulnérabilés dans le header et c'est quelque chose qui est emprunté par l'imprimante donc une fois que c'est terminé l'effichier est imprimé et ce qui vient très intéressant avec ce protocole T30 supporte beaucoup d'extensions est-ce que vous pouvez deviner quel genre d'extensions sont supportées voilà il y a une extension de sécurité donc personne n'utilise une autre extension c'est le module couleur donc on peut envoyer des faxes en couleur donc on utilise dans des hôpitaux pour des documents médicins mais on peut voir comment ça fonctionne donc on voit le document travers tunnel et ça passe à travers facet et ça arrive en GPEC fichier donc là on contrôle le header et les données et on peut contrôler le header et modifier donc maintenant qu'on sait comment ça marche on peut commencer à chercher des vénérabilités alors en regardant toutes les couches de ça on peut trouver différents endroits possibles l'endroit le plus prometteur ça reste quand même le côté applicatif on a commencé par regarder du côté de GPEC parce que là-bas on contrôle le fichier entier donc si on regarde quand on fonctionne un fichier GPEC ça commence avec quelques marqueurs start off image marker le marqueur de l'application début du scan image etc etc mais si on regarde dans ces marqueurs il y en a un qui est très intéressant c'est celui de la table de compression lui il définit une matrix de compression 4x4 pour l'image ça ça définit par un header, la taille de fichier la matrix et les données elle-même si on regarde ce qu'il y a là-dedans on peut voir qu'ici on voit la matrix si on éditionne toutes les valeurs ça devrait s'accumuler pour valoir 6 6 octets qui vont être copiés de ces données jusqu'à ce que depuis ces données dans une petite zone dans la stack donc quand on a vu ça on s'est dit ça ça a pas trop de sens on contrôle l'intégralité du header donc si on met des valeurs gigantesques dans notre matrix on va avoir 4 kilo octets de données qui vont être stockés dans un buffer dans la stack de 256 octets ce qui nous permet d'avoir un buffer overflow dans la stack directement donc ça c'est un exploit trivial on n'a pas de contraintes d'octets, il n'y a pas d'octets interdits ou de choses comme ça on peut utiliser des octets nuls des octets non ascii on a à peu près 4000 octets donc c'est largement assez pour ça on a dû quand même passer quelques mitigations de sécurité non je plaisance, il n'y avait rien du tout il y avait un adresse des adresses mémoire fixe il n'y a pas de canaries, il n'y a rien donc on a récupéré des CVE depuis HP marqués critiques, vous devriez vraiment mettre à jour vos imprimantes ce qu'on a eu comme réponse d'HP c'est que ils ont résolu ça et ça nous amène maintenant à l'heure de la démo malheureusement on n'a pas pu ramener des mots en live donc voilà une vidéo qu'on a prise ici vous pouvez voir connecter un script sur une machine qui est connectée à un modem qu'on a acheté pour 10 dollars sur Amazon et ça nous permet d'envoyer notre fax malicieux à cette machine donc ça reçoit l'appel de qui attendez, une seconde voilà ça vient donc le fax arrive de Evil Attacker attacker démoniaque maintenant l'imprimante est en train de recevoir ce fax et de le traiter et donc bien sûr c'est un fax en couleur et maintenant on a contrôle total de l'imprimante elle est à nous mais c'est pas tout on va montrer qu'on peut aussi propager à un autre ordinateur donc notre fax contient Eternal Blue dessus donc n'importe quel ordinateur connecté au réseau de cet imprimante le fax va reconnaître ça et essayer de l'exploiter et voilà donc bon on a réussi après tout ça a mis un moment quand même quelques conclusions quand même qu'il faut qu'on dise déjà PSTN c'est toujours une surface d'attaque valide en 2018 le fax peut utiliser comme un point d'accès pour le réseau interne et les protocoles complètement passés de date vous devriez peut-être laisser les éviter qu'est-ce que vous pouvez faire pour vous protéger contre ça déjà vous pouvez mettre à jour vos imprimantes ce lien vous dira si votre imprimante est vulnérable toutes les imprimantes jet d'encre HP sont vulnérables à cet attaque c'est leur plus grosse ligne de produit chez HP il y a quelque chose comme 300 modèles vulnérables à cet attaque allez-y, faites une update autre chose que vous pouvez faire si vous n'utilisez pas de fax n'utilisez pas les fax, si vous n'avez pas besoin si vous n'avez pas besoin de fax ne branchez pas votre imprimante dans ce cas-là faites en sorte de ne pas brancher votre imprimante sur le réseau principal comme ça si quelqu'un arrive à compromettre votre imprimante, il ne pourra pas prendre le contrôle de tout votre réseau donc ça c'est de très bonnes suggestions toutes celles-ci mais la meilleure suggestion que je peux vous donner c'est arrêter d'utiliser des fax merci beaucoup et une seconde avant qu'on termine c'était vraiment un voyage très longtemps on a eu beaucoup d'amis qui nous ont aimé qui nous ont aidé beaucoup avec du support mental avec des supports physiques ça c'est les gars qui nous ont aidé donc eux aussi faites un peu de bruit pour eux et il y a quelqu'un de très très spécial c'est Yana Livnet et aussi a besoin beaucoup de de reconnaissance donc si vous pouvez nous suivre sur twitter merci beaucoup merci beaucoup on a 5 minutes pour faire des questions donc mettez-vous sur les microphones et voilà voilà donc on attend les personnes qui se mettent au microphone microphone 4 merci beaucoup pour cette présentation ça fait très peur que ces choses fonctionnent vous avez dit que le système fax email fax je me demande est-ce que c'est possible s'il y a des failles de sécurité dans ces systèmes aussi je sais que les routers de freezebox font du fax par mail est-ce que c'est possible de les attaquer alors ces services-là utilisent aussi t30 on n'a pas regardé ces implementations on avait déjà beaucoup de boulot avec l'imprimante donc on n'a pas regardé à quoi que ce soit d'autres ou d'autres services etc mais ce que je peux vous dire c'est pour sûr si vous cherchez des vulnérabilités je vous dirais aller regarder du côté de t30 qu'est-ce que vous pouvez dire sur les données que vous avez autour de l'URL que vous avez qui sont connectés par les imprimantes il y a beaucoup d'imprimantes HP dans le monde c'est vraiment tout ce que je peux dire désolé donc on a une question de l'internet est-ce que vous avez essayé d'activer le JTAG en imprimant une ferme vers modifier alors on a essayé d'utiliser le JTAG on pense qu'il est désactivé directement pendant la fabrication c'était trop de boulot donc on s'est dit plutôt qu'on allait utiliser cette vulnérabilité avec Devil's Ivy et ensuite d'injecter Scout et c'était largement assez pour débugger globalement après cette vulnérabilité de Devil's Ivy qu'on ait pu le charger Scout Scout a pu survivre pendant des semaines sans cracher donc c'était largement assez pour nous donc on a une question micro 2 merci beaucoup pour la présentation et je pense que vous avez raison il y a beaucoup de problèmes avec des vieux protocoles mais la chose que je ne comprends pas c'est la partie comment est-ce qu'on peut attaquer un ordinateur sur le réseau à partir de l'imprimante parce que mon ordinateur est très sécurisé pour aller sur internet déjà et donc je me demande comment vous attaquer l'ordinateur depuis le Scout alors c'est possible que votre laptop soit sécurisé je suis sûr qu'il aime et beaucoup ne le sont pas nous ce qu'on a montré ici c'était en utilisant l'exploit Eternal Blue si vous vous rappelez de WannaCry des choses comme ça il y a beaucoup de systèmes qui ne sont pas patchés dans le monde réel on n'est pas là pour réellement attaquer quelqu'un on est là pour dire, en théorie si quelqu'un a gagné l'accès à votre réseau via une imprimante et que vous aviez une machine pas patché le fax aura un bon moyen pour gagner cet accès c'est tout pardon on a plus de temps pour faire des questions donc merci beaucoup pour la présentation et à ce moment-là aussi nous allons dire merci pour nous avoir écouté l'imprimant français si vous voulez nous laisser