En octobre dernier se déroulait à Londres le challenge européen de cybersécurité, réunissant 17 pays de l'Union Européenne pour un CTF assez particulier. Chaque pays est représenté par une équipe de 10 participants et un ou plusieurs entraîneurs (sans compter les membres organisateurs de chaque pays), ce qui représentait ainsi plus de 200 personnes réunies pour cette compétition. J'ai ainsi eu le privilège d'être un des entraîneurs de l'équipe représentant la France lors de ce CTF, avec Heurs et Ack. Petit retour sur cette compétition hors-norme, et débriefing à froid.
Ce billet se veut être un compte-rendu de l'évènement tel que je l'ai vécu, et n'est en aucun cas un résumé de ce qu'est l'ECSC. Je vous invite à écouter l'épisode de NoLimitSecu dédié à cet évènement, auquel j'ai participé avec Maki, Anne-Charlotte et Ack, si vous souhaitez avoir plus de détails.
C'est un peu en ces termes que majinbooœ, président de l'association HZV, m'a apostrophé. En effet, suite au round de qualification qu'avait organisé l'ANSSI durant la Nuit du Hack 2018 (RIP), HZV devait participer à l'organisation de l'entraînement de l'équipe sélectionnée, à raison de la mise à disposition de 2 entraîneurs. Après quelques discussions, il fut décidé que Heurs et moi-même soyons désignés comme entraîneurs, aux côtés de personnes de l'ANSSI. L'aventure était lancée.
Il s'agissait de la première participation de la France à cette compétition, et cela signifiait plusieurs choses. La première, c'est que nous n'avions absolument aucune idée du type et du niveau de compétition de l'ECSC: aucun write-up n'a été publié, assez peu de retours techniques sur le contenu des épreuves ou le type de CTF. Le seul moyen de le savoir était de participer. La seconde, c'est que l'on allait être attendus par les autres équipes, et potentiellement ciblés en tant que bleus (dans tous les sens du terme). La dernière et non des moindres, c'est qu'une pression était présente de par l'envergure de l'évènement, que j'ai d'abord pris relativement à la légère.
De mon côté, j'ai participé mais aussi organisé plusieurs CTFs (dont certains de type attaque/défense, don't blame me) depuis plusieurs années, bien que cela fait désormais un certain temps que ma participation se limite à une modeste contribution dans une équipe qui n'a vocation qu'à s'amuser et non terminer dans le peloton de tête. Et encore, quand je trouve le temps de résoudre des épreuves et que celles-ci ne nécessitent pas trop de temps. Le fait d'avoir des minis-moi n'aide pas, j'en ai bien peur. Toujours est-il que je ne m'estime pas être un pourfendeur de CTF, et j'ai eu un peu de mal intérieurement à penser que je pourrais vraiment aider l'équipe à progresser.
Rendez-vous fut ainsi pris pour septembre afin d'organiser la session d'entraînement de l'équipe de France.
Début septembre, l'ANSSI avait organisé une session de deux jours pour que l'équipe et les entraîneurs puissent faire connaissance, et débutent comme il se doit une période d'entraînement. Je ne m'étais pas trop renseigné sur les heureux sélectionnés, et je decouvris le jour J les personnes composant cette équipe. Il y avait là 13 jeunes gens, membres de différentes équipes de CTFs françaises (Inshallhack, Aperi'kube, Hexpresso entre autres), des habitués des CTFs et de p0wnage en série, dont un millenial. Je crois que c'est à ce moment que j'ai pris conscience du temps qui a passé, et que je me suis senti vieux.
Ces deux jours ont été très instructifs et m'ont permis de faire connaissance avec l'équipe, de voir les points forts et faibles de chacun, avec toujours ce sentiment de ne pas parler le "djeun's" actuel. Une sensation de parent, pour être totalement honnête. Ce moment où tu te sens en décalage, un peu comme un père relou qui essaie de se la péter auprès de tes potes. Pour ne rien arranger, ma vie professionnelle m'a obligé à m'absenter à plusieurs moments tandis que l'équipe, composée majoritairement de pentesteurs juniors ou apprenti pentesteurs, profitait pleinement des réjouissances CTFesques prévues durant cette période. Néanmoins, un passage au bar a permis de faire plus ample connaissance autour de quelques bières, d'un diabolo menthe et de mojitos. On ne le dira jamais assez, mais rien ne vaut quelques boissons et des anecdotes de CTF ou de pentest pour souder une équipe de CTF !
Le reste de l'entraînement s'est déroulé en ligne et à distance, Ack, Heurs et moi-même distillant nos conseils et challenges maison afin de préparer au mieux l'équipe. Cette période nous a permis aussi de mieux comprendre leur fonctionnement, et de voir dans quelle mesure ces membres d'équipes habituellement concurrentes pouvaient s'entendre pour établir une organisation nouvelle et résoudre efficacement des challenges.
Le voyage pour Londres s'est déroulé sans trop de problèmes (si ce n'est un bagage abandonné en gare du Nord), et nous arrivâmes à Londres à l'heure prévue. Le temps de prendre le Tube pour nous rendre aux Tobacco Docks, l'endroit où se déroule la compétition, et nous pûmes tester notre installation en conditions réelles. Vous vous souvenez, je mentionnais un peu plus tôt notre méconnaissance de ce challenge ? Eh bien ça n'a pas loupé: nous n'avions pas prévu de switch ni de point d'accès (faute de temps) et nous nous sommes retrouvés avec des services hébergés sur des Raspberry Pi connectés au réseau WiFi. Sans pouvoir nous connecter à ces derniers, le WiFi en place faisant de la ségrégation de clients. Merci CISCO. A côté de nous, les Allemands ont monté un joli point d'accès en mode bridge et ont câblé tous leurs laptops à ce dernier, avec bien sûr quelques Raspberry Pi pour les services de collaboration. Pourquoi n'y avions nous pas pensé...
Une fois les préparatifs effectués, direction l'hôtel pour poser les valises et rejoindre l'ensemble des participants et des organisateurs pour un repas de bienvenue. L'hôtel est superbe, juste en face du Tower Bridge et à deux pas de la Tour de Londres. Dommage que le temps soit si pluvieux. Nous nous retrouvons donc au repas, autour d'une tablée "France", tout au fond de la salle (en bons élèves que nous sommes). Et c'est à ce moment là que survint le premier moment awkward: les vidéos de présentation des équipes. L'organisation côté France a été informée du fait qu'il faille réaliser une vidéo de présentation de l'équipe, introduisant les participants et les entraîneurs, mais elle pensait à l'origine que ce n'était pas important. Devinez quoi ? Cela le fut. Car oui, la vidéo de présentation de chaque équipe fut projetée, et nous nous sommes rendus compte à quel point certaines d'entre elles avaient été imaginatives. Sans parler du budget ou de la réalisation elle-même. Je pense qu'il fut assez clair que notre participation était la première, mais elle a tout de même reçu un bon accueil. C'est juste que l'on a passé les jours suivants à essayer d'expliquer le pourquoi des avatars présents sur notre vidéo.
Une fois le repas terminé, j'organisais une petite session de rappel sur les attaques et exploitations hardware, car ce fut un des thèmes annoncés par les organisateurs de la compétition. L'organisation n'a eu de cesse de dire que tout ce dont on aurait besoin serait mis à disposition, j'en profitais pour faire un dernier point avec l'équipe sur les outils et logiciels requis. Puis ce fut l'heure d'aller dormir en vue de la compétition du lendemain.
En tant qu'entraîneurs, Ack et moi-même avions seulement le droit de discuter avec le capitaine de l'équipe, Maki, pour faire le point et les guider en fonction des tâches à réaliser. Pour le reste, nous étions relégués dans une salle annexe, sans vue directe sur le score ni sur l'équipe. Nous n'avions évidemment pas accès à la plateforme du CTF, et donc aucun moyen de surveiller l'évolution du classement et du score des différentes équipes en direct. Cela fut résolu assez rapidement à l'aide d'un peu de scripting Python, le score fourni par le site web de l'évènement étant synchronisé sur les scores actuels des équipes. Nous ne disposions pas des informations concernant la validation des challenges ni l'historique, mais c'était déjà mieux que rien. Nous disposions par ailleurs de Red Bull à volonté (ce qui n'était définitivement pas une bonne chose), d'un accès Internet, de prises de courant et d'une salle (trop) chauffée agrémentée de (quelques) confortables fauteuils et canapés. Le minimum vital pour survivre.
La première journée s'est clôturée avec un score honorable pour notre équipe, et une troisième position plutôt encourageante. Il y a eu beaucoup de mouvement durant la dernière heure, plusieurs équipes ayant validé de nombreuses épreuves avant la clôture de la journée. Car oui, chaque journée avait son lot d'épreuves uniques, le CTF ne se déroulant pas la nuit. Après un repas bien mérité, ce fut l'heure d'aller se reposer afin de se préparer pour la seconde journée de compétition.
Cette seconde journée fut rude pour l'équipe et nous-même entraîneurs, pour plusieurs raisons. La première raison est que le matériel mis à disposition pour un challenge hardware basique était limité à un seul adaptateur FTDI. L'équipe a galéré sur ce qui se présentait comme une épreuve facile, et nous avons perdu du temps précieux à casser un identifiant et un mot de passe par défaut relativement bidons. L'équipe italienne quant à elle disposait d'un programmateur adéquat (dixit leur entraîneur), et a pu extraire le firmware et chercher les chaînes de caractères. 5 minutes montre en main. C'est à ce moment là que je m'en suis voulu d'avoir fait confiance aux organisateurs, sur le fait que "tout le nécessaire serait fourni". En ce qui concerne les épreuves hardware, il valait mieux venir équipé. On saura pour la prochaine fois. La seconde raison est propre à la plateforme de CTF, avec le souci bien connu du format de flag. Il se trouve que certaines (beaucoup ?) d'épreuves ne suivaient aucune règle quant à la structure des flags. Cela pouvait être un simple texte, ou bien une list d'adresses IP séparées par des virgules par exemple. Un autre flag devait être soumis sous forme de date/heure, mais le format donné en exemple (01/01/1970) ne permettait pas de déduire s'il s'agissait d'un format MM/DD/YYYY ou DD/MM/YYYY. Bref, il fallut se débrouiller et s'en remettre au guessing et à un poil de bruteforce pour se tirer de ces situations.
Il restait toutefois une épreuve particulière à passer: le bandstand. Aucune information n'a fuité sur cette épreuve (ou plutôt cette série d'épreuves), et nous stressions un peu à l'idée de devoir l'affronter. Une fois une partie des membres de l'équipe entrés, nous (entraîneurs) n'avions aucune information et l'impossibilité de communiquer avec eux. Cette épreuve était cruciale car elle permettait de remporter un nombre non-négligeable de points, dont nous avions besoin pour remonter dans le classement. Le stress était palpable, en particulier le mien qui a été augmenté par un certain nombre de Red Bulls que j'avais consommé durant les heures précédentes. En guise d'épreuve, il s'agissait d'un escape game cyberpunk plutôt cool d'après l'équipe, qui l'a terminé haut la main en battant le record de temps et du nombre d'épreuves terminées ! Nous nous sommes alors senti soulagés, et l'équipe a pris les devants de la compétition en remontant à la première place. Je dois dire que ce fut un soulagement, avec l'angoisse juste après de savoir si l'équipe allait réussir à maintenir cette position.
Plusieurs fois les allemands et les anglais ont chamboulé le classement de tête, mais notre équipe arrivait fièrement à contrecarrer cela et revenir en tête, le tout se jouant à quelques milliers de points (ce qui était peu vu les scores atteints à ce moment de la compétition). Pour au final se faire coiffer au poteau par l'équipe allemande, qui a validé à quelques minutes de la fin une épreuve lui donnant la victoire. Le match fut au final très serré, et la tension lors de la dernière demi-heure atroce, les deux équipes étant relativement proche au classement mais aussi physiquement: les allemands occupaient la tablée d'à côté. Cloture du score, pas d'annonce des résultats. Angoisse. Heureusement, le site de l'évènement affichait les derniers scores (vous vous souvenez, la synchronisation ;) et nous avons pu avoir le classement final: la France en seconde position. L'équipe était déçue de s'être fait déchoir de la première place à si peu de temps de la fin de la compétition, mais nous en avons profité pour débriefer avec les allemands et faire plus ample connaissance.
l'annonce du classement final a été faite durant la soirée, dans un bar roof-top où l'ensemble des participants et des entraîneurs ont pu se remettre de leurs émotions (et les équipes enchaîner sur un concours de cul-sec avec des représentants de chaque pays, on s'amuse comme on peut). L'Allemagne a ainsi fini en première position, suivie de la France et du Royaume-Uni.
Le lendemain se déroulait la cérémonie de remise des prix, organisée sur un bateau vogant sur la Tamise, où notre équipe s'est vue remettre un trophée et un prix par participant. Nous avons aussi pris la photo de l'équipe, et avons pu profiter de cette ballade pour admirer London by night. Pour enchaîner avec le CTF de Hack.lu une fois rentré à l'hôtel. Je me suis acharné sur une épreuve de stéganographie qui s'est révélée être infaisable (comme nous l'avait indiqué un des membres de l'équipe allemande proche de FluxFingers), mais que voulez-vous, j'avais trouvé un chunk bizarre dans un fichier ZIP et était persuadé d'être sur une piste (merci à Ange Albertini pour ses infos préciseuses sur les formats de fichiers divers et variés, c'est toujours d'un grand secours).
Puis taxi, Eurostar, Paris, et le retour au boulot. Cette parenthèse londonienne s'est terminée aussi vite qu'elle a commencée, mais j'en garde un bon souvenir. J'ai rencontré des types futés, qui ont été capables de s'entendre et de collaborer au sein d'une équipe soudée, capables de poncer des challenges et de persévérer, de représenter la France durant cette compétition et de terminer à la seconde place du podium alors que c'était notre première participation. A ceux-là, je leur tire mon chapeau. En tant qu'entraîneur, je n'ai pas senti que ma présence sur place ait été d'une quelconque utilité quant à la résolution technique des épreuves (pour ma part j'ai souvent servi de canard lors de duck debugging), mais j'ai le sentiment d'avoir été utile quand à la préparation de l'équipe. Le rôle d'entraîneur dans le contexte de cette compétition consiste à travailler en amont, et les dés sont quasimment jetés au moment où se déroule la compétition. L'équipe fait le reste, et elle l'a très bien fait.
On remet ça en 2019 ?
Il y a peu de temps, j'ai découvert Frida, un outil permettant de faire de l'instrumentation minimaliste de binaire sous Windows, Linux, iOS et Android. Rien que cela. Moi qui suis habitué du reverse à l'ancienne et de l'attaque à coup d'injection de code via des DLLs, ça m'a de suite intéressé.
Tante Frida aime le JavaScript
Frida repose sur l'injection d'un module dynamique dans un processus actif, et crée un canal de communication avec celui-ci. L'outil propose ensuite d'interagir en Python, à l'aide de bindings relativement bien conçus.
Le point intéressant (mais toutefois limitant) est que l'on peut pratiquer le détournement de fonctions et l'appel de fonctions en scriptant cela en JavaScript. Car oui, le module injecté embarque un moteur JavaScript reconnu (v8, merci Google) qui sera utilisé dans le cadre du détournement ou de l'appel de fonctions. Tout ça à partir de Python.
A ce moment là, j'ai posé un bémol sur cet outil. Employer JavaScript me posait un problème: le langage est très éloigné de l'assembleur, et je n'imaginais pas vraiment ce que l'on pouvait en tirer. J'ai poursuivi ma découverte de l'outil, et ai revu mon jugement.
Hooking simple avec Frida
Le hooking de fonctions c'est galère. Il faut développer en C des fonctions d'interception, injecter un module s'occupant de mettre en place le détournement (en prenant en compte toutes les contraintes liées à cela), mais surtout trouver un moyen d'afficher des information. Par exemple à grand renfort d'appels à MessageBoxA sous Windows.
C'est là que Frida sauve la vie. L'outil propose très simplement de placer un hook sur une fonction, et de définir une fonction de rappel en JavaScript qui se verra passer les arguments et pourra les traiter. Cela se traduit par un simple code Python intégrant un peu de JavaScript:
import frida
import sys
process = frida.attach("hello")
script = process.session.create_script("""
Interceptor.attach(ptr("%s"), *
onEnter: function(args) {
send(args[0].toInt32());
*
});
""" % int(sys.argv[1], 16))
def on_message(message, data):
print(message)
script.on('message', on_message)
script.load()
sys.stdin.read()
Du coup, ce qui était laborieux et pénible à développer est désormais beaucoup plus simple. Certes, on ne peut pas tout faire avec, mais on gagne un temps fou pour des choses relativement simples.
ImpRec en mode Frida
Lorsque je suis tombé sur cet outil, j'avais besoin de faire des bidouilles spécifiques avec des binaires, dont notamment de la reconstruction d'imports dans un PE. Là encore, Frida aide amplement. Tout d'abord, Frida permet de lister les modules actifs, et les fonctions exportées: pratique dans le cadre de la reconstruction d'imports. Ensuite, Frida permet d'accéder à la mémoire de manière relativement simple, et directement en Python.
De là, on imagine facilement un code en Python permettant de dresser un dictionnaire des exports et des fonctions associées:
exports_address = {}
for module in target.enumerate_modules():
for export in module.enumerate_exports():
addr = module.relative_address + module.base_address
export_address[addr] = (module.name, export.name)
Pour la recherche d'une IAT par exemple, on peut aisément se baser sur la méthode read_bytes de l'objet matérialisant le processus courant:
from struct import unpack
...
dword = unpack('<I', target.read_bytes(0x403000, 4))[0]
En bref
Frida s'installe en deux temps trois mouvements, même sous Windows. Frida peut permettre le développement rapide d'outils liés au reverse-engineering voire à l'analyse dynamique de binaires ou à leur compromission. Frida se base sur du Python ("cool !") et du JavaScript ("moins cool."). Mais Frida est bougrement efficace.
A ajouter dans la trousse à outil de tout hacker/reverser/bidouilleur de PE.
(crédits image: www.frida.re + gimp)
La Nuit du Hack est l'évènement majeur de la communauté Hackers française, généralement organisée fin juin, qui réunit passionnés, professionnels et novices autour d'un thème commun: le hacking. Ce n'était rien de moins que la onzième édition qui se déroulait ce week-end à Disneyland Paris, autour de talks, de workshops, de challenges et de bière (ainsi que des soft drinks, bien sûr). Zou, visite guidée des coulisses de l'organisation de la NDH version 2013 !
Un an de préparation
La méthode est désormais rodée: à peine la Nuit du Hack terminée, l'organisation de la suivante démarre. Cela représente un an de travail acharné pour seulement 24 heures, ce qui n'est pas rien. La recherche de sponsors, la préparation des CFPs, les débuts de conception de design graphique ainsi que les grands axes d'orientation de l’événement se décident à ce moment. C'est aussi l'occasion de faire l'état des lieux des éléments à améliorer, de prendre en compte les remarques constructives des visiteurs envoyées par email, twittées ou parfois même bloguées. On attache une importance toute particulière aux soucis rencontrés et aux solutions possibles. Par exemple, décision fut prise l'année dernière de cabler le wargame plutôt que de se baser sur du WiFi (qui se fait sniffer/polluer chaque année) et de mettre le CTF dans une salle à part. Il n'y a jamais eu de Nuit du Hack sans cafouillages ou problèmes, même cette édition a eu son lot d'ennuis qu'il a fallu gérer.
Ensuite, il y a toute la logistique à superviser. Ce qui va de l'agencement des salles avec plans et tout le toutim aux moyens techniques et à la planification. Il faut aussi gérer en parallèle les qualifications, la conception de l'infrastructure du CTF et du wargame, la réalisation des épreuves de ces deux concours et celle du réseau global à déployer lors de l'évènement. Les partenaires tels que Zen Connect ou Orange sont d'une grande aide en ce qui concerne cette partie, tout comme Outscale (via majinboo) ou OVH (un big up à toute l'équipe !). Sans oublier la communication (Hicham & Lucie).
Un CTF remanié
Cette année, nous sommes partis sur un CTF différent des années précédentes. Il s'agissait toujours d'un CTF attaque/défense, mais cette fois-ci basé sur un scénario et un concept nouveau: la suppression pure et simple des flags formatés. Chaque équipe avait à sa disposition un pare-feu frontal (couche 2) et un serveur hébergeant des services, et se voyait mise dans la peau d'une société réalisant des solutions de DRM (nommée GZT) et devant assurer la pérénité des données de ses clients. Bien sûr, l'objectif est simple: protéger ses données tout en récupérant celles des autres équipes. La nouveauté résidait dans le fait que les données constituaient ce que l'on nomme couramment des "flags": des éléments d'information ayant de la valeur. Les équipes devaient donc voler ces données, et les diffuser sur un portail que nous leur avions mis à disposition, une sorte de Pastebin. A chaque fois qu'une équipe divulguait des informations ayant de la valeur, des points étaient attribués à celle-ci et autant étaient retiranché aux équipes attaquées.
L'infrastructure a été elle aussi repensée et adaptée: la solution de virtualisation a été revue, l'infrastructure simplifiée et l'administration facilitée. Tout cela pour éviter de reproduire les erreurs de l'année précédente. Le matériel prêté par OVH a d'ailleurs été d'un grand secours: ils nous ont prêté de sacrées machines avec des capacités de fou furieux ! Encore une fois, merci à vous ;).
L'installation chez Mickey
On a déménagé tout le matériel le jeudi précédant la Nuit du Hack, durant Hack in Paris, et tout installé dans une salle technique. Depuis quelques années, cela se déroule sans trop de problème car nous nous sommes équipés. Tout est sur roulettes, empilable, et étiqueté. Et avec un camion à hayon, le transport se déroule sans encombre.
Une fois à Disneyland, le premier problème. Un problème d'alimentation. Une personne est venue nous installer suffisamment de puissance pour alimenter nos baies, afin que l'on termine les tests de déploiement ainsi que les configurations de certaines machines. Un peu trop de puissance en fait. Résultat: un bon vieil arc électrique et une imitation de Claude François évitée de justesse. Moins trois alimentations qui n'ont pas supporté la décharge. Qu'à cela ne tienne, le spare est là pour cela: le tout est changé rapidement.
<emb150|center>
<emb151|center>
L'installation de la baie dans la salle dédiée au CTF a été faite le lendemain, et nous avons passé une bonne partie de la journée à câbler, gaffer, tester, déployer et déboguer les systèmes. Et il fallait bien cela. Cette phase s'est terminée le samedi à midi environ.
Le grand bain
La Nuit du Hack a ouvert ses portes relativement tôt (je n'ai pas su réellement à quelle heure, j'ai profité comme quelques autres de la nuit pour essayer de bien dormir), et à 9 heures la salle commençait déjà à être parsemée de geeks et hackers de tout poil. Et on attendait toujours Jérémie Zimmermann, le conférencier en charge de la keynote. Clad a pris la parole, salué tout le monde, tandis que nous tentions désespérément de le contacter. Quelques temps après, des nouvelles de Jérémie et la keynote a ainsi pu se faire sans souci (mais avec du retard). La journée commençait bien. Ceci dit, mieux que l'année dernière car l'an dernier à 9 heures nous n'avions plus d'alimentation dans toute la salle. Quelques soucis de WiFi ont aussi été géré, mais dans l'ensemble tout allait comme sur des roulettes à partir de 10 heures.
<emb152|center>
Les participants ont ainsi pu profiter des talks, des speakers, mais aussi des bars, des tables et du réseau déployé. Car oui, cette année il y avait du WiFi qui fonctionnait ! Toutes nos excuses à Dave Kennedy pour l'interruption inopinée de talk (pour cause de mauvais timing), mais cela a été rattrapé par la suite. Le stress du moment certainement. A 20 heures, changement de configuration de salle pour héberger les workshops et le wargame: les participants (1300 personnes environ) ont du sortir de la salle et se sont agglutinés dans les couloirs, où il est devenu difficile de circuler. Un point à résoudre pour la prochaine édition.
Au même moment, les équipes CTF entraient dans la salle dédiée afin de s'installer et de découvrir ce que nous leur avions préparé. Nous avons fait un rapide briefing avant de démarrer le jeu, expliquant aux équipes les règles et leur remettant par la suite un livret contenant le règlement, le détail de l'architecture et leurs accès. Nous leur avons donné 30 minutes pour accéder à leurs machines et les configurer (modifier les mots de passe, changer les règles de filtrage, etc ...), puis les avons connectés entre eux afin de déclarer officiellement la guerre ouverte. Petite frayeur pour l'équipe, les systèmes de monitoring ont remonté pas mal de rouge quelque temps après, les équipes découvrant les services et testant les premières attaques (des scans surtout). Le tout s'est stabilisé, et ceux ayant vu l'utilité du pare-feu frontal s'en sont plutôt bien tirés. Une équipe a choisi de laisser ses services inaccessibles ([technopandas]), par pur choix stratégique, mais a fait marche arrière quelques heures plus tard. Le dimensionnement était plutôt bon, vu la stabilité de l'infrastructure durant le CTF. Au final, une seule épreuve n'a pas été exploitée et le CTF remporté (à nouveau) par les russes de HackerDom. SoSix les talonnait de très peu de points, et la lutte finale s'est vraiment faite entre ces deux équipes. Une belle bataille en somme.
Remise des prix
A 6 heures du matin le dimanche, le CTF a été arrêté et les scores figés. Les russes de HackerDom ont validé à quelques minutes de la fin une série de données volées qui leur ont donné l'avantage, laissant à l'équipe SoSix très peu de temps pour compenser. A 7h00, les prix ont été remis aux équipes: * 4000€ TTC pour la première place (HackerDom) * 1 serveur dédié 16G OVH pour 1 an (SoSix) * 1 serveur VPS OVH pour 1 an (Sutegoma2)
Encore un grand bravo aux équipes, qui ont lutté durement pendant les 9 heures qu'ont duré ce CTF. On espère vous revoir l'année prochaine les gars !
Mot de la fin
Cette Nuit du Hack fut éprouvante. A l'heure où je rédige ce billet, j'ai encore les yeux bien rouges et du sommeil à rattraper. Mais elle fut riche en rencontres (oui, il n'y a que là que j'ai croisé un Ukrainien comprenant le français et trollant sur la sécurité), en rebondissements (côté CTF), et en pur plaisir. Et pour une fois, le wargame et le CTF ont fonctionné sans problème majeur. Et ça, ça fait très plaisir. Et oui, ce petit compte-rendu est très axé sur le CTF, mais eh, je n'ai pas pu suivre les talks ni les workshops.
J'attends avec impatience celle de l'année prochaine, en espérant que l'on arrive à faire aussi bien que l'édition 2013, avec plus de moyens, encore plus de fun et de hacks. J'espère sincèrement que vous avez apprécié cette NDH comme nous avons apprécié l'organiser, et sachez que l'on se démène pour arriver à tenir le niveau.
Pour terminer, je tiens à remercier tout particulièrement les personnes qui nous ont aidé à préparer ce CTF: Corbier, kaiyou, y0no, Benjamin, Bastien, Saiyan, UnclePecos, et Julien. Et désolé si j'en ai fait c*ier certains d'entre vous, le stress toussa ... Et puis encore un grand merci à toute la team OVH, et en particulier Henri: vous roxxez les mamans ours :). Un autre grand merci aux collègues d'HZV, aux anciens des débuts de la NDH (rappelez-vous, le cybercafé, la grange, cela a bien changé), et à tous les ghosts (80 personnes environ) sans qui cela n'aurait pas été possible.