Unlock your brain…
Samedi 17 novembre dernier, à Brest, avait lieu la 3e édition de « Unlock Your Brain, Harden Your System » (#UYBHYS), journée de conférences sur le thème de la sécurité numérique, organisée cette année non seulement par l’équipe de la Cantine Numérique de Brest, à l’origine des 2 premières éditions (notamment les infatigables Jess et Nico, cœur sur vous* <3), mais aussi par DIATEAM, société brestoise d’ingénierie numérique possédant un pôle cybersécurité très performant, et Bretagne Développement Innovation, agence économique régionale œuvrant pour le développement et l’attractivité de notre territoire.
* suite à la réception de ouat milliards de plaintes concernant l’apparente discrimination sous-entendue dans la manifestation de mon débordement d’affection, je rectifie: <3 gros cœurs sur toutes les organisatrices et tous les organisateurs (déso, j’suis pas à l’aise avec l’écriture inclusive dans ce genre de cas tordus), qui ont sué sang et eau pour mettre sur pied cette superbe journée et les précédentes ! Oui, toi aussi, Goulag Parkinson. 😀
J’ai eu l’insigne honneur d’être invité à intervenir lors de cette journée pour y présenter un sujet de mon choix (en l’occurrence ce qu’implique, en termes de mesures de sécurité, la mise en oeuvre d’un serveur de mail « à l’état de l’art » en 2018, pour IMT Atlantique Alumni – slides à venir), au milieu de plein d’autres orateurs bien plus talentueux et aguerris que moi (malgré mon grand âge), à savoir Rayna Stamboliyska, Manuel Dorne alias Korben, Sébastien Larinier, Alexandre Dulaunoy, Patrice Auffret et Jérôme Léonard… Bref, une tétrachiée de gens tous plus intéressants les uns que les autres, et dont les propos étaient autant d’invitations à déverrouiller notre cerveau afin de sortir des idées préconçues ou approximatives telles qu’elles nous sont retransmises à longueur de temps par les médias. Malgré l’excellent moment passé entre passionnés et l’intérêt indéniable des conférences (il paraîtrait que même la mienne, malgré ma très mauvaise gestion du temps, a trouvé grâce aux yeux de certains – sûrement les plus indulgents), je vais plutôt, dans la suite de ce billet, vous parler de ce qui s’est passé après, au cours de la soirée, à savoir le « CTF » !
Harden your system !
CTF ? WTF ?
L’un des intérêts de l’édition de cette année a été la mise en place d’un CTF (pour « Capture The Flag »), sorte de « serious game » dont le but est de tenter d’exploiter les vulnérabilités affectant les logiciels présents sur une plateforme informatique créée pour l’occasion, afin de s’introduire sur les ordinateurs pour y récupérer des « drapeaux », chaînes de caractères spécifiques et constituant les preuves de l’intrusion (en matérialisant, en quelque sorte, une fuite de données) et faisant gagner des points à l’équipe qui s’en empare.
Il existe plusieurs modes de jeu. Le plus courant est le mode dit « Jeopardy » qui consiste, pour chaque équipe, à tenter de résoudre un certain nombre de challenges de difficulté variable et rapportant un certain nombre de points, fonction de cette difficulté. L’autre grand mode est celui qui a été choisi pour #UYBHYS par DIATEAM, co-organisatrice de cette journée et « grand architecte » du CTF : il s’agit du mode appelé « attaque-défense », dans lequel chaque équipe est dotée d’une infrastructure informatique en tous points identique à celle des adversaires, et sur laquelle tournent un certain nombre de services réseau, dont certains sont rendus volontairement vulnérables. Le but de chaque équipe est double, ce qui à mon sens rend le jeu beaucoup plus intéressant que dans le mode « Jeopardy ». Il faut en effet à la fois :
- défendre son infrastructure, en détectant le plus rapidement possible les vulnérabilités présentes sur les services exposés et en les corrigeant pour éviter de se faire voler le drapeau correspondant ;
- attaquer l’infrastructure des autres équipes en présence, pour tenter d’exploiter les vulnérabilités et voler leurs drapeaux avant qu’elles aient elles-mêmes patché leurs propres services.
Il s’agit d’un jeu à somme nulle, concernant les gains : chaque équipe débute la partie avec un score de 0. Le seul moyen de gagner des points est d’arriver à voler les drapeaux des autres équipes. A peu près tout autre événement fait perdre des points, notamment :
- se faire voler un drapeau par une autre équipe (bien évidemment) ;
- arrêter l’un de ses services pour éviter qu’il ne soit piraté ;
- modifier la valeur d’un drapeau pour « gruger » l’équipe qui vous l’a volé (car dans ce cas-là il n’est pas reconnu comme valide par le système d’arbitrage) ;
- attaquer les autres équipes en déni de service (action considérée comme de l’antijeu) ;
- toute forme de triche en règle générale.
L’organisation matérielle et logicielle
Le CTF de #UYBHYS pouvait accueillir jusqu’à 15 équipes (il y en a eu 12 au final). La plateforme mise en place était constituée de machines virtuelles, au nombre de 4 par équipe : un serveur web, un bastion où tournaient certains services, un « Programmable Logic Controller » (PLC), et un firewall de type pfSense, interconnectées entre elles ainsi qu’aux machines des autres équipes au travers d’un logiciel développé par DIATEAM : Hynesim (pour « Hybrid Network Simulation »), initialement pour DGA/MI. Une version open source de ce logiciel est d’ailleurs disponible (il existe même des paquets de binaires précompilés pour certaines distributions Linux). Le tout était hébergé sur un gros serveur (que l’on peut voir sur la photo ci-dessous au centre de la pièce) : la bête était équipée de 256 Go de RAM, et d’un ensemble de processeurs représentant un total de 56 cœurs.
Une logistique parfaitement adaptée
Il va de soi qu’un tel déploiement ne s’improvise pas. DIATEAM a, de fait, quasiment « industrialisé » cette phase, et intervient régulièrement dans de nombreux organismes avec une plateforme quasi-identique à celle dont nous disposions, comme on peut le voir sur la vidéo ci-dessous, featuring Guillaume « G0ul4g » Prigent, CTO de la boîte 😉 :
Le résultat est que l’on a affaire à une équipe parfaitement rodée, et un dispositif au top, avec entre autres :
- un thème (bien entendu totalement indispensable 😉 ) : celui de ce CTF était « les monstres marins » (on est à « Brest même », gast !), avec des graphismes marrants et sympas mettant en exergue le côté ludique – comme je souhaitais monter une équipe de dino^H^H^H^Hvieux crabes, j’ai assez logiquement choisi la team « Crabal ». Les autres noms d’équipes, pour ceux que cela intéresse, sont consultables sur le site ;
- un superbe « scoreboard » temps-réel : le logo de chaque équipe, affublé de son score (en vert si positif, en rouge si négatif) et d’une petite maquette de village qui ressemble à New-York pour les meilleures équipes, et plutôt au Beyrouth des années 80 pour d’autres, tourne sur un disque en pseudo-3D ;
- des boissons et des pizzas pour tout le monde (hmmm, les doigts gras sur les claviers…), ce qui n’a pas empêché les « pros » de venir avec leur stock de boissons énergisantes, preuve que certains prennent vraiment la chose au sérieux (et c’est tout à leur honneur) ;
- une animation hors-pair par les organisateurs, toujours prêts à aider les « p’tits nouveaux » par leurs conseils (sans pour autant les avantager), ou à encourager la compétition entre les équipes.
Les différents intérêts du jeu
Outre la sollicitation des compétences purement techniques des participants, dans de nombreuses disciplines touchant à la sécurité informatique (administration système, programmation dans des langages divers et variés, cryptographie, etc.), un CTF présente également des intérêts indéniables dans des domaines correspondant à ce qu’il est convenu d’appeler « les compétences transverses » : travail en équipe pluridisciplinaire, collaboration, résistance au stress, endurance, priorisation des tâches à effectuer, le tout dans un cadre contraint ! Le but premier étant d’aller « pirater » les machines des adversaires, ce qui dans la vraie vie (est-il besoin de le rappeler) n’est pas vraiment permis, d’aucuns pourraient se dire que basta, puisqu’on flirte avec des interdits, tous les coups sont permis ! Rien n’est plus faux : les règles du jeu sont strictes, et toute erreur ou tricherie se paie « cash »…
Le réalisme
Bien entendu, les vulnérabilités présentes ont été volontairement introduites sur les différents logiciels de la plateforme. C’est un jeu, il faut qu’il reste jouable en un temps raisonnable (quelques heures), mais là encore, que l’on ne s’y trompe pas: ces failles correspondent bel et bien à ce que l’on peut trouver dans la réalité… Erreurs de codage permettant un débordement de tampon, services mal configurés (à titre d’exemple, l’un des drapeaux les plus simples à obtenir, dans le CTF « Sea Monsters », était présent dans un l’un des enregistrements d’un DNS mal protégé et permettant – à tort – les transferts de zones), vulnérabilités de services web permettant des injections de fichiers ou de commandes…
Et pour couronner le tout et permettre aussi à ceux qui le souhaitent de se la jouer stratégique, un « dark market » était également disponible, chaque équipe pouvant acheter, pour quelques centaines ou milliers de points, des informations : codes sources, patches, etc., leur permettant de mieux se protéger, ou de rendre leurs offensives plus efficaces. Et comme dans la vraie vie, pour acheter sur le dark market, on peut aussi s’endetter… au risque de finir dans les profondeurs du classement !
Les outils nécessaires
Au niveau matériel, du classique : l’indispensable ordinateur portable (ou pas, d’ailleurs), et les périphériques éventuellement souhaités pour tenir plusieurs heures : écran, clavier externe, souris…
Côté logiciels, il vaut mieux disposer des bons outils avant le début de l’épreuve, car il se peut (et c’était le cas lors du CTF « Sea Monsters ») qu’aucun accès à Internet ne soit autorisé. Idem pour la documentation éventuellement nécessaire.
Comment constituer une bonne équipe ?
Même en tant que débutant dans le domaine, il apparaît que la formation et le fonctionnement d’une bonne équipe de CTF doivent répondre à certains critères (assez universels, il est vrai) :
- il n’est pas forcément nécessaire que les joueurs se connaissent bien (tout au moins s’ils ne visent pas la 1ère place), mais il est important qu’ils n’aient pas de difficulté de communication, une bonne partie de la réussite reposant sur l’entraide au sein de l’équipe ;
- les profils doivent (quand-même) être plutôt techniques, et de préférence variés (par exemple, un mix d’admins systèmes et de développeurs);
- il faut exploiter les compétences spécifiques de chacun, et à cet effet, une phase d’observation commune en début de partie, permettant de tenter de définir la nature de chacune des failles auxquelles on fait face, n’est pas inutile ;
- partant de là, chacun peut tenter de s’atteler à une tâche (soit défense, soit attaque) sur une faille donnée, l’important étant, encore une fois, de communiquer (mais à voix basse : les adversaires ne sont qu’à quelques mètres 😉 ) pour éviter d’être plusieurs à travailler sur le même drapeau et perdre un temps précieux.
« Toute première fois »
Comme le titre du billet le laisse entendre (doux euphémisme), je ne suis pas un lapin de 6 semaines (autre doux euphémisme), et j’ai derrière moi quelques années d’administration système, tant au niveau professionnel que comme bénévole dans différentes associations. A ce titre, j’ai également été confronté à pas mal de problématiques de sécurité informatique. Pour autant, même s’il ne se passe quasiment pas une journée sans que j’aie à lancer un wireshark ou un nmap , même si j’ai écarquillé les yeux à la sortie de l’article « Smashing the stack for fun and profit » dans Phrack en 1996, et failli tomber de ma chaise en expérimentant et en constatant par moi-même que les failles décrites étaient très facilement exploitables, et même s’il m’arrive d’utiliser des outils comme netcat, hping, socat ou metasploit, ou encore de m’amuser à « fuzzer » un serveur web ou tenter de réaliser des injections SQL (notamment pour effectuer des auto-tests), je n’avais jamais participé à un tel challenge. Et vous voulez que je vous dise ? Je le regrette… 😉
En effet : même si l’on a de l’expérience dans le domaine de l’administration système, que l’on observe des bonnes pratiques, que l’on a déjà géré des gros coups de stress parce que toute l’infra a décidé de partir en vrille d’un coup et que les téléphones commencent à sonner de partout, on n’est pas pour autant préparé à ça… Arriver sur une plateforme dont on ne connaît rien, aller fureter partout pour voir où sont les failles, c’est un métier en soi. Ca tient à la fois du pentest, de l’expertise système et de l’analyse forensique, en fait. Et dans ces domaines, il y a des gens (que l’on peut légitimement qualifier de spécialistes, voire d’experts), qui n’hésitent pas à faire plusieurs centaines de kilomètres pour le plaisir de se confronter à d’autres joueurs. Inutile de dire que nous avions peu de chances de « péter un score ». 😀
Un seul regret
Outre le fait de ne pas avoir (eu|pris) le temps de tenter une telle activité avant, j’ai un seul regret concernant cette soirée : nous étions trèèèès loin de la parité… Seule une jeune femme avait répondu présente pour cette 1ère édition brestoise. Certes, ce n’est pas spécifique aux CTF. Laissons du temps au temps, comme on dit.
Bref, j’ai participé à mon 1er CTF…
En conclusion, même si le résultat de notre équipe n’a pas été exceptionnel (mais pas ridicule non plus, considérant qu’elle était exclusivement constituée de débutants dans le domaine : nous avons fini en 6e position, au beau milieu du classement), j’ai en tout cas passé, et mes coéquipiers aussi je l’espère, une super soirée, et je compte bien participer aux éditions suivantes si elles ont lieu.
Comme l’a dit Pierre de Coubertin : « l’important dans la vie n’est pas le triomphe mais le combat ; l’essentiel n’est pas d’avoir vaincu mais de s’être bien battu ».
Une chose est sûre, en tout cas : si après la participation à une telle activité, vous n’avez pas compris qu’il faut durcir votre système, on ne peut plus rien pour vous… 😉