07
juil.
'16

De retour de la Nuit du Hack 2016

Publié le 07 juillet 2016

La quatorzieme édition de la Nuit du Hack vient tout juste de s'achever, et je dois avouer que c'était juste magique. Magique non pas parce que l'évènement était de retour au pays de Mickey, mais par son organisation, ses contenus et les rencontres que l'on y fait. Petit retour à chaud de cette Nuit du Hack 2016.

Les coulisses du vendredi

Je suis arrivé sur place vendredi soir et j'ai rejoint le staff Hackerzvoice qui s'activait pour tout finir de préparer (badges, tours de cou, etc ...). En tant que conférencier, j'ai passé plus de temps sur le polissage de planches comme on dit à l'ANSSI plutôt que sur les derniers préparatifs, ainsi que sur mes démos bancales. En effet, certaines d'entre elles devaient être testées en conditions réelles, et cela m'a pris quelques heures afin de tout régler (un grand merci à Jonathan pour le coup de main). A 2h30, j'étais couché et fin prêt pour ma présentation.

Enfin, je pensais l'être.

Le Jour J

Samedi matin, après avoir avalé un petit-déjeuner, je me rends au New York Hotel afin de m'imprégner de l'atmosphère du lieu et saluer les premiers arrivés (staff et participants).

C'est l'occasion de se ballader un peu, de découvrir les surprises de l'édition 2016, mais aussi de se poser à nouveau au calme pour repenser un peu les slides. Car après une nuit de réflexion, quelques modifications m'ont semblé utiles. J'apporte ainsi les dernières corrections et boucle la version finale de la présentation.

Je commence à suivre les conférences, bien qu'ayant loupé la keynote de Louis Pouzin. Le talk de Thomas Aubin et Paul Hernault sur la sécurité de Windows 10 et les aspects protection de la vie privée était sympa, avec en prime la démonstration d'une preuve de concept nommée CortaSpoof permettant de limiter la capacité de Microsoft à profiler les utilisateurs de la dernière version de son système d'exploitation. J'ai suivi celui d'Antonio Blanchi sur la participation de l'équipe Shellphish aux différents CTFs d'assez loin, mais les quelques bribes que j'ai pu comprendre m'ont semblé plutôt intéressantes: stratégies de CTF et outils dédiés étaient au programme. Puis ce fut au tour de mon collègue Renaud Lifchitz de démontrer la faiblesse des télécommandes radio employées sur une Set-Top-Box: très instructif et les possibilités offertes sont originales !

Je n'ai pas pu assister à la présentation sur Ethereum, par contre celle sur le piratage des interphones était intéressante: Sébastien Dudek a ainsi démontré que l'on pouvait prendre le contrôle de ceux-ci en abusant du GSM à l'aide de SDR et de fausse station GSM. Les démonstrations sous forme de vidéo étaient funs et démontraient bien les risques encourus. Toutefois, les bons vieux passes PTT ou le vieillissant système Vigik peuvent être des vecteurs d'intrusion tout aussi efficace, et nécessitant moins de moyens.

La conférence suivante consacrée au crochetage improvisé était tout bonnement impressionnante: c'est exactement ce que j'attendais de celle-ci. Ouverture de cadenas avec des shims fait maison (à la MacGyver), forçage de porte au ceintre, les moyens rudimentaires y étaient et ça fait plaisir de voir une approche pragmatique de l'ouverture de portes et serrures ! C'est la dernière conférence que j'ai pu voir, car je suis allé manger assez tôt afin de terminer les préparatifs matériels de ma présentation (prévue à 21h15). Celle-ci s'est déroulée sans encombre, et j'ai eu plusieurs retours positifs ce qui fait toujours plaisir.

Les workshops

J'ai enchainé rapidement mon talk avec un workshop intitulé "Pimp My Badge", présentant le badge électronique de l'année dernière (à défaut d'en avoir un cette année) et les moyens de le bidouiller. Ca a été l'occasion de mettre un peu à jour la bibliothèque standard et d'ajouter quelques exemples.

Comme chaque année, l'atelier de crochetage de serrures a rencontré un franc succès et nombreux étaient ceux voulant s'y essayer. Didier Stevens, l'auteur de OleDump notamment, animait un workshop sur l'analyse de documents malveillants à l'aide (certainement) de ses outils. Je n'ai pas pu le suivre malheureusement, mais il semblait très intéressant.

La NDH Kids

Contrairement aux années précédentes, je n'ai pas animé d'atelier durant la NDH Kids. Mais j'en ai eu de très bons échos: des collègues et amis ayant participé ou ayant des enfants qui y ont participé en sont revenus ravis. Les ateliers étaient diversifiés: initiation à la cryptographie, programmation de Lego Mindstorms, Initiation à l'électronique et à la soudure électronique, architecture d'un ordinateur, ... Avec en plus des bean bags et une borne d'arcade !

Un grand merci

J'ai passé un excellent moment, à la fois en tant que participant mais aussi en tant que conférencier. Il est bon de retrouver une organisation comme celle de cette édition, fluide et sans accrocs, malgré la paranoia sécuritaire que l'on a pu observer lors de l'arrivée (scans aux rayons X, détecteurs de métaux, fouille de sacs). Et il y avait du Club Mate ! Bref, on remet ça l'année prochaine, et il y aura du lourd, du très très lourd (© Michel & Michel)

17
juin
'16

La Nuit du Hack 2016, c'est dans deux semaines !

Publié le 17 juin 2016

La quatorzième édition de la Nuit du Hack arrive à grands pas et se déroulera les 2 et 3 Juillet prochain à Disneyland Paris. Après un passage éclair à l'Académie Fratellini l'année dernière, l'évènement est de retour au pays de Mickey avec des conférences, des ateliers et des challenges, la routine habituelle quoi. L'occasion de découvrir ce qu'est le hacking, voire d'approfondir ses connaissances en sécurité informatique, en bidouillage matériel, en impression 3D, en lockpicking, et même de rencontrer des vraies personnes !

Les nouveautés du cru 2016

Cette année, plusieurs nouveautés ont été pensées par les organisateurs. La première d'entre elles (et à mon sens non la moindre) concerne l'aménagement des talks qui débutent à 10h00 le matin pour terminer vers 23h00, avec tout plein de pauses de prévues pour échanger, manger, boire, et tailler une bavette avec les conférenciers. C'est plutôt appréciable pour ceux qui ont connu le rush des années précédentes.

Autre nouveauté, la Nuit du Hack s'étend! Tout l'espace de conférence du New York Hotel est réservé pour l'évènement, ce qui doit représenter environ 5000 mètres carré dédié à la Nuit du Hack, avec des zones spécifiques à chaque partie: une zone pour le wargame, une zone pour les conférences, une autre pour le CTF privé, etc... Ce qui veut aussi dire plus de place pour circuler, se poser, et pas de changement de disposition de la salle principale.

Les trucs à ne pas rater

Comme chaque année, il y a quelques pépites à ne pas louper dans les conférences et les ateliers. J'en ai repéré quelques unes que je vous recommande chaudement.

Côté conférences, celle de Renaud Lifchitz intitulée Revue de sécurité du protocole ZigBee d'une box TV française semble prometteuse: j'avais déjà analysé et présenté en catimini il y a quelques années une étude d'une box TV française (et c'était pas glorieux), je pense qu'on devrait avoir la même chose avec en plus un aperçu du protocole ZigBee.

Du côté du hardware, la conférence de Sebastien Dudek intitulée House intercoms attacks, when frontdoors become backdoors (ou "Attaques des interphones, quand les portes d'entrée deviennent des portes dérobées") semble elle aussi très intéressante et mérite de s'y attarder. On peut s'attendre à y voir des attaques matérielles, un décortiquage d'interphone et des conséquences désastreuses sur la sécurité.

Enfin, la conférence de Olga Kochetova intitulée Trust No One. ATMs and their dirty little secrets présentera les petits secrets des distributeurs de billets, du réseau de communication sur lequel ils sont interconnectés jusqu'aux attaques matérielles et logicielles développées par des braqueurs d'une nouvelle génération. Ca promet d'être instructif !

En ce qui concerne les workshops (ateliers), je recommande les suivants:

Ne loupez pas le dernier de ma liste, Didier Stevens est l'auteur d'outils comme oledump très utiles lors d'investigations numériques et une très bonne source d'information quant à l'analyse de fichiers Office malveillants. Bon par contre ça sera en anglais et faudra suivre, mais à ne pas louper !

De mon côté, je vais aussi animer un petit workshop sur la conception du badge électronique de la dernière édition, si vous en avez eu un l'année dernière et que vous souhaitez explorer ses fonctionnalités, c'est l'occasion de l'amener et de découvrir comment développer sur celui-ci ! Je donnerai des exemples (code source inclus) afin de transformer le badge en gadget utile :).

Socialisons

Autre grande nouveauté cette année, j'ai limité mon implication dans l'évènement afin de pouvoir (enfin) en profiter et socialiser ! Soyons honnêtes, cela fait presque 8 ans que je n'ai pas profité à fond de l'évènement et pu discuter avec tout plein de gens (et accessoirement boire des bières). Je pense que plusieurs d'entre vous se reconnaîtront, pour avoir essayé de me payer des coups alors que j'étais en plein rush :D. Bref, cette année, je prends mon temps.

On se retrouve là-bas !

15
janv.
'16

Premiers vrais pas et challenges dans le "making"

Publié le 15 janvier 2016

Cela va faire quelques mois que je me suis plongé dans l'impression 3D, à la fois pour découvrir le monde des RepRap (ces imprimantes opensource permettant le prototypage rapide) mais aussi pour avoir un nouveau terrain de jeu. Du coup, c'est tout plein de possibilités et de challenges qui s'offrent au hacker curieux que je suis !

Un autre compilateur

A l'instar d'un compilateur, l'imprimante 3D permet de donner vie à des idées. Plus que cela, elle se révèle être un outil permettant de créer ses outils. Mon intérêt quant à cet objet est donc important, similaire à celui que j'ai eu lorsque j'ai découvert la programmation. A cette époque j'avais plein d'idées d'outils à mettre au point, et la programmation m'a permis de concrétiser cela. Dès lors, plus aucune limite: je pouvais combler le manque d'un outil par la programmation, moyennant quelques efforts de conception et d'implémentation. Je redécouvre cela avec mon imprimante 3D. L'analogie avec le compilateur n'est pas anodine car ces derniers temps je m'essaie à OpenScad, un outil fabuleux permettant de littéralement programmer ses pièces. Du code pour produire des pièces réelles, c'est simplement efficace !

A force d'utiliser mon imprimante 3D, j'ai eu des idées de pièces (des outils en quelque sorte) qui pourraient me simplifier la vie, de corrections de petits défauts de mon imprimante ou encore des idées de projets assez fun. J'ai commencé à modéliser des pièces selon mes premières idées, avec un résultat fonctionnel (cf. mon billet précédent), et j'en étais déjà très content ! Mais j'ai aussi rapidement compris que non seulement une imprimante 3D était capricieuse, mais qu'en plus la conception des pièces avait à la fois une influence sur le temps d'impression, la quantité de filament consommé et la résistance des pièces finales. Rien que cela. C'est à ce moment que j'ai compris que créer une pièce résistante qui consomme le moins de filament possible tout en assurant un temps d'impression relativement court relève du défi.

Surtout lorsque je me suis mis en tête de créer mon propre support de bobine de filament de plastique, parce que bon, aucune ne me convenait (il fallait à chaque fois plusieurs pièces supplémentaires commes des vis spécifiques, des écrous, des roulements, des tiges filetées, etc ...). Les ennuis ont commencé à ce moment précis (pour mon plus grand bonheur).

Les dures lois de la mécanique

Avant d'entrer plus dans les détails des contraintes de la conception de pièce 3D à destination d'une imprimante 3D par dépôt de fil, je dois préciser tout de même certains pré-requis en terme de mécanique.

La première chose que l'on m'a enseigné en mécanique durant mes années de Première et Terminale S option Sciences de l'Ingénieur a été les différents types de liaisons existantes. Tant que l'on ne conçoit pas réellement de système mécanique, on ne voit pas l'intérêt de connaître ces liaisons, tout comme la réalisation de ces différentes liaisons en pratique.

Prenons l'exemple de mon support de bobine: il nous faut donc un assemblage de pièces permettant une rotation sur un axe (on parle alors d'un degré de liberté) et seulement cette rotation. La liaison équivalente est un pivot, qui n'autorise qu'un degré de liberté. Bon, ça c'est la théorie. En pratique, il semble nécessaire d'utiliser au moins un roulement à bille pour assurer une rotation optimale, comme c'est le cas pour plusieurs pièces de l'imprimante.

Le hic, c'est qu'on ne peut pas en utiliser qu'un seul, car le jeu (même minime) du roulement fait que la liaison associée n'est pas un pivot mais une rotule. Autrement dit, si on envisage de monter un axe de rotation vertical supportant la bobine, il a de grandes chances de basculer d'un côté ou de l'autre et donc de ne pas remplir son office. C'est pourquoi on emploie généralement au moins deux roulements montés sur un même axe quand on cherche à réaliser ce genre de liaison. Or qui dit utiliser un axe dit employer de la tige filetée ou pire, un axe en plastique imprimé ou une tige lisse (qui coûte les yeux de la tête). Cet exemple sur Thingiverse ou encore [celui-là->http://www.thingiverse.com/thing:545954] montrent bien la solution communément adoptée.

Or je m'étais fixé des contraintes spécifiques quant à mon support de bobine: * montage/démontage facile * si possible sans vis/écrou/tige filetée * utilisation de roulements en surplus type 608zz * support d'un maximum de diamètres de bobines

Aucun des supports que j'ai trouvé sur Thingiverse ne remplit ces critères, par contre l'imprimante micro delta d'Emotion Tech que j'ai eu l'occasion d'apercevoir au dernier Toulouse Hacker Space Factory utilise un mécanisme reposant sur trois roulements servant à faire pivoter la bobine, associés à trois butées. Seule la rotation sur l'axe vertical est possible (la translation étant supprimée du fait de la gravité). C'est l'équivalent d'une liaison pivot, mise en oeuvre à l'aide de trois roulements. Ce principe m'a semblé très intelligent, et j'ai donc décidé de m'en inspirer pour mon design.

Début de conception

Après avoir gratté pas mal de schémas sur papier, j'ai fini par avoir une idée précise du fonctionnement de mon support.

Le support est constitué d'une base à trois pieds, suffisamment large pour éviter le basculement, et chaque pied supporte un roulement en son extrémité. Le roulement est incliné de 45° vers le centre du support, ce qui permet de supporter un plateau tout en empêchant la translation sur deux axes (X et Y). On peut très aisément choisir un plateau adapté au diamètre de la bobine: le fait que le plateau soit posé sur les trois roulements permet une manipulation simple et un changement rapide.

Afin d'éviter toute vis et écrou, j'ai pris la décision de faire en sorte que les roulements soient clipsables, c'est à dire que les axes supportant ces derniers ressemblent à ceux de cette pièce Lego:

Exemple d'axe avec clips

En théorie, cette conception semblait parfaite.

Première réalisation, premier fail

Avant de me lancer dans la réalisation du trépied de support, j'ai d'abord conçu le support de roulement clipsable. Je l'ai par la suite imprimé, et il m'a bien fallu trois essais afin d'arriver à trouver les bons ajustements permettant une insertion aisée tout en assurant un maintien en place efficace.

Pièce de test de support de roulement

Une fois ce support testé et approuvé, je l'ai intégré sur un montage de trépied, sans grande difficulté. Je l'ai ensuite imprimé, et testé malgré un plantage de l'ordinateur en cours d'impression (ce qui explique que les axes ne soient pas terminés, mais même avec cela ça fonctionne parfaitement). J'ai par ailleurs conçu une première version du plateau, que j'ai imprimé et testé. Et c'est là que tout a commencé à ... pas marcher.

Un des inconvénients de l'impression 3D par dépôt de filament est que la précision de l'imprimante varie selon la précision de la mécanique (liée aux courroies, réglages moteurs et accélérations/décélération subies) mais aussi selon la précision du filament. En effet le diamètre de ce dernier peut ne pas être constant, et la quantité de plastique apportée varier en conséquence. Il en résulte des surfaces relativement propres, mais qui d'un point de vue micrométrique possèdent des imperfections.

Rappelez-vous, j'utilise trois roulements pour réaliser une liaison pivot théoriquement parfaite, sauf qu'avec ces imperfections la surface de contact entre le plateau et un roulement se résume à un seul point: c'est une liaison appui-plan, et c'est le drame ! En effet, trois appuis-plan sur trois plans inclinés à 45° et concourant forment une liaison rotule et non une liaison pivot. Ce qui devait arriver arriva: lorsque j'ai testé en conditions réelles mon support, le plateau ne faisait que basculer comme un culbuto. Inutilisable en l'état.

Seconde conception

En considérant donc mes trois roulements en liaison rotule avec le plateau, il me fallait ajouter un appui-plan pour former un équivalent de liaison pivot. En gros, assurer un ou plusieurs appuis afin d'éviter tout basculement. Ce problème fut donc résolu en faisant en sorte que la partie horizontale du plateau entre en contact avec la bague extérieure du roulement, assurant ainsi un appui-plan d'un côté et rotule de l'autre. Autrement dit, une véritable liaison pivot.

Afin d'assurer l'appui-plan, il m'a fallu ajouter une tolérance entre la partie en contact avec les roulements et les roulements: un ajustement trop serré aurait eu pour conséquence de former à nouveau une liaison rotule. En autorisant une très légère translation (un jeu) sur les axes X et Y on assure le bon fonctionnement du mécanisme tout en permettant une qualité d'impression variable (dans les limites du tolérable).

En contrepartie, le roulement subit un effort radial et axial, mais le type de roulement choisi encaisse sans encombre ces efforts, tout comme le trépied qui les supporte.

Il me restait toutefois un problème: comment concevoir un disque imprimable sur une imprimante 3D ayant des anneaux des deux côtés ? Il faut bien avoir une bague centrale afin d'éviter toute translation de la bobine et assurer la rotation du plateau, cependant il y a aussi de l'autre côté du plateau un anneau dont un des pans est incliné à 45° et qui repose sur les roulements. Impossible d'imprimer sur une surface plane en l'état: on ne peut déposer de matière en suspension.

Si l'on ne peut pas imprimer la pièce en un bloc, on peut tout de même la décomposer en deux pièces faciles d'impression qui peuvent être par la suite assemblées: une première pièce est constituée du plateau et du support incliné sur lequel vont reposer les roulements tandis que la seconde est une bague surmontée d'ergots venant s'enficher dans le plateau, dans lequel on aura prévu des trous adéquats. Grâce à cette astuce, aucune vis ni écrou: la bague est insérée de force dans les trous, et le tout tient en place grâce à la flexibilité du PLA. Et le tout est facilement imprimable.

Le design final du support de bobine est donc le suivant:

Version finale du support de bobine

Optimisation des pièces

Cette seconde version de mon support de bobine a demandé environ quatre heures d'impression cumulées, ce qui est beaucoup vu les pièces. Il y a plusieurs explications qui justifient cette durée:

Le support seul prend environ 1h40 à imprimer (avec un remplissage à 10%), mais vu les détails requis pour les axes supportant les roulements, ce n'est pas trop cher payé. Le plateau quant à lui prenait initialement le même temps, ce qui est excessif.

C'est donc ce dernier qui a subit un lifting pour réduire la durée d'impression et la consommation de filament, bien qu'il n'en utilise pas tant que cela. Pour ce faire, j'ai réduit l'épaisseur du support principal à 1 mm, ce qui a trois avantages: réduire la quantité de matière requise et le temps d'impression, mais aussi avoir un nombre de couches exact car j'imprime par couche de 0.2 mm.

En complément, l'épaisseur globale a été revue à la baisse ce qui fait que ce plateau prend moins d'une heure à être imprimé. Cela fait un total d'environ trois heures pour l'impression du support complet, je ne pense pas pouvoir descendre en dessous sans impacter la robustesse de celui-ci.

Pour terminer, j'ai tout simplement modifié les axes de support de roulement pour retirer la partie clipsable: l'impression était vraiment horrible, et les segments trop petits pour une impression de précision avec ma Prusa i3. Je les ai remplacés par des axes pleins mais en prenant soin de bien ajuster le diamètre pour que le passage des roulements se fasse sans encombre, tout en assurant un bon maintien.

Au final, j'ai conçu un support de bobine polyvalent, qui n'a besoin d'aucun élément externe autre que les roulements, qui se monte et se démonte facilement, et qui supporte tout type de bobine du moment que l'on place la bague adéquate sur le plateau.

Support de bobine, version finale Le support imprimé prêt à accueillir une bobine

OpenScad FTW

Pour la conception des pièces de mon support de bobine, j'ai utilisé la solution opensource OpenScad. Ce logiciel permet comme je le disais en introduction de programmer ses pièces à l'aide d'un langage adéquat, ce qui permet de créer des pièces paramétriques (on peut faire varier certaines composantes) et de les générer dynamiquement. Il permet par ailleurs de déboguer/tester/adapter les pièces sans avoir à tout refaire, contrairement à un logiciel de CAD standard.

Conception du support sous OpenScad

Le code source de l'ensemble des pièces est disponible sur Thingiverse.

Hacker ou Maker ?

Grâce à ce petit projet j'ai pu replonger dans mes résidus de cours de mécanique, ce qui ne s'est pas fait sans mal, et goûter aux joies du «making». C'est fun, on crée d'une manière différente mais plus concrète, et on apprend. Je crois qu'au final c'est ça l'essentiel: découvrir encore de nouvelles choses et apprendre. Et il me reste encore beaucoup de choses à apprendre !



Les contenus disponibles sur ce blog sont publiés sous licence Creative Commons BY-NC-SA.
Vous pouvez réutiliser tout ou partie de ces contenus à condition de citer l'auteur et l'origine, vous ne pouvez en faire une utilisation commerciale, et enfin vous devez partager tout travail ou œuvre dérivée sous les mêmes conditions — c'est-à-dire avec la même licence d'utilisation Creative Commons.