Samedi se déroulait la neuvième édition de la Nuit du Hack, organisée par Sysdream et la communauté Hackerzvoice. Ce fut une nuit très enrichissante, pleine de rencontres et de pur fun, avec entre 700 et 800 visiteurs (je n'ai pas eu les chiffres officiels à ce jour).
Rude préparation
Cela fait plusieurs mois que l'on travaillait à l'organisation de cette Nuit du Hack 2011: organisation des talks, des workshops, du CTF (sic) et du wargame public. Toute la team hackerzvoice s'est mobilisée, chacun apportant sa brique à l'édifice qui s'agrandit chaque année. Nous avons opté pour un changement d'endroit, les péniches n'étant pas du tout adaptées à ce type d'évènement le choix du New York Hotel de Disneyland fut fait. Le New York Hotel de Disney possède une salle de 2000 mètres carrés, avec une régie, une scène, une sonorisation sur mesure ... Alors oui, quand on a annoncé que ça se passait à Disneyland, les critiques et commentaires ironiques ont fusés sur Twitter.
Du côté technique, le Capture The Flag de cette année a vu son architecture évoluer, peut-être un peu trop quand on voit comment on a missionné à le lancer. Franchement, pour y avoir passé des nuits dessus et avec pas mal de personnes impliquées, je suis sincèrement déçu que cela n'ait pas pu se dérouler dans les conditions voulues. On avait monté deux baies serveur et une palette de machines à la mode NdH2010, tout cablé et testé auparavant.
Rencontre avec les speakers, puis pseudo-dodo
Nous sommes arrivés au New York Hotel le vendredi soir, pour tout installer pour le lendemain. J'ai retrouvé Bruno Kerouanton au pub du NYH, accompagné de Nicolas Grégoire, Gary S. Miliefsky et Mario Heiderich. Ils sont venus nous donner du courage pour la préparation de la Nuit du Hack, et puis on en a profité pour boire un coup avec eux. J'ai retrouvé aussi Winn Schwartau, que j'ai rencontré l'année dernière à Las Vegas lors de la Defcon 18; ça faisait tout drôle de le revoir, avec sa moustache inchangée ;). J'ai passé un vendredi soir magique, j'ai même trouvé le temps de troller sur Hadopi avec Mario Heiderich o/ ! Petite retouche de mes slides pour la forme, avec Sorcier_FXK.
L'installation du matériel et le câblage se sont terminés tard dans la nuit (aux alentours de 3h du matin, le samedi). J'en ai profité pour rejoindre une chambre dans laquelle on a squatté avec Sorcier_FXK (kalkulators.org), Ezano et Franklin (le guru des conférences). Je n'ai dormi que 4h environ, mais ca m'a permis de récupérer un petit peu avant le grand jour.
Jour J, stress au max
Douche, petit-dej sur le pouce, et je débarque dans la salle où va se dérouler la Nuit du Hack 2011. Les régisseurs sont en place, on fait les derniers checks au niveau des écrans et du son, toujours les derniers détails qui posent problème. Je fais un test sur la scène, c'est vraiment impressionnant ... C'est vide mais j'essaie de m'imaginer ça rempli. Les gens commencent à arriver, et là problème: les applications de lecture des QRCodes des badges ne fonctionnent pas (à 30min de mon talk). Je règle le problème en urgence, et je saute sur scène. C'était plus dur que ce que je pensais en fait, de parler devant six ou sept cent personnes, avec un spot dans la tronche. J'ai chaud, je bafouille légèrement, mais j'arrive à gérer le temps et la démo en évitant de la louper. Plutôt cool donc :). Pour ceux que cela intéresse, les slides de mon talk sont disponibles ici.
Le reste de ma journée, je l'ai passée à discuter de temps en temps avec quelques intéressés d'Android, et puis avec le staff du CTF pour tout fignoler. On a essuyé pas mal de problèmes, enchaîné les pépins, et les esprits ont commencé à s'échauffer. Le retard s'accumulait, les problèmes aussi: à chaque problème que l'on pensait résolu s'en ajoutait un second... Aux alentours de 2h du matin, j'ai laissé les autres membres du staff gérer le truc, j'étais trop fatigué et énervé contre des personnes qui faisaient tout leur possible pour mettre ce CTF en route. Je me suis calmé de mon côté, en essayant de faire le vide, de trouver une solution "viable". De leur côté, le staff CTF a tenté de modifier le principe du challenge, mais cela a pris du temps et n'a pas été concluant. La dure décision d'arrêter les frais a été prise par le boss, et on a vu des équipes dégoutées, qui pour certaines étaient plus désolées pour nous et pour le temps que l'on avait passé dessus. Une grosse déception en somme, que j'ai essayé d'atténuer à grand renfort de bière.
En parallèle, le challenge public tournait plutôt bien, et les épreuves se faisaient valider au fur et à mesure que la soirée avançait. Au moins, tout n'aura pas été raté.
Impressions diverses et retours
Les retours que l'on m'a fait de l'évènement sont assez variés, mais dans l'ensemble plutôt bons. Tout le monde y va de son commentaire, de quelques idées qu'il a eu pour améliorer l'évènement, des regrets que cette édition soit plus "corporate" que celles des années précédentes ... Je peux tout à fait comprendre ces remarques et ces réactions. Disney a tout de même permis à l'équipe des organisateurs de se concentrer sur l'essentiel, sans avoir à gérer la logistique de la nourriture et de la boisson, en mettant à disposition de l'évènement une vraie régie son et vidéo, avec des systèmes qui fonctionnaient nickel et que l'on avait pas à gérer de notre côté. Du côté des visiteurs, l'endroit était tout de même hors-normes, avec une salle immense, un grand nombre de place (ah, ça fait toujours plus que sur la péniche) ainsi qu'un certain confort. Le fait de pouvoir louer une chambre pas loin, avec des tarifs préférentiels (mais chers, faut avouer), pouvait être un plus.
Ce que je retiens de cette édition, c'est que d'une part elle m'a franchement étonnée: un endroit de rêve pour des conférences, qui se prête tout à fait à la venue de speakers internationaux, et qui s'adapte aussi aux usages habituels de la Nuit du Hack (workshop, CTF, prises de courant, etc ...). Et d'autre part le nombre de personnes ayant répondu présent, les animateurs de workshop qui ont fait un boulot formidable, mais aussi les speakers qui ont été terribles (et qui, on le souhaite, reviendront nous voir l'année prochaine), etc... Si la Nuit du Hack devait se dérouler dans un seul endroit l'année prochaine, ce serait bien à nouveau dans l'hotel New York.
<center><embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&hl=fr&feat=flashalbum&RGB=0x000000&feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fvirtualabs%2Falbumid%2F5620811613695329713%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCIni3IHQoNvynwE%26hl%3Dfr" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></center>
J'avais posté il y a quelques semaines sur le site d'HZV le PDF du workshop que j'ai animé au dernier meeting, sans plus. Ce meeting a été streamé, et enregistré (via livestream). J'ai pris le temps de retoucher la vidéo cette semaine, et je la mets donc à disposition ainsi que l'application Android nommée "Crackoid", qui a servi d'exemple durant ce workshop
Vidéo du workshop (Ogg Vorbis, 2h40)
Bon je sais, la vidéo est loin d'être de bonne qualité, mais que voulez-vous, on a fait avec les moyens du bord. Pour le prochain meeting, on a investi dans une caméra HD 720p, qui permettra d'avoir une bien meilleure résolution.
<center><video controls> <source src="http://hackerzvoice.net/repo_hzv/meetings/hzvmeet-workshop-android.ogg"> </video></center>
Pour ceux qui ne peuvent visualiser la vidéo, elle est disponible en téléchargement ici
Crackme Android & slides
Le crackme Android que j'avais développé à l'occasion de ce meet est aussi disponible en téléchargement, ici.
Pour rappel, les slides sont téléchargeables au format PDF ici
En espérant que ces ressources pourront vous être utile pour de futures analyses d'application !
Mise à jour [16/02/2011] - TF1 a modifié son lecteur Flash et remplacé la méthode incriminée par une version propre, nommée "hasRedirect". La version du player analysée dans cet article était la 4.0.80, celle actuellement en place sur les sites de WAT et TF1 est désormais la 4.0.81 .
Article original du 13/02/2011:
Je me suis (encore) penché sur la sécurité des applications Flash, notamment à cause de la médiatisation du streaming et du tintouin que cela a causé vis-à-vis de l'Hadopi, en espérant trouver quelque-chose du côté de TF1 et M6 (ces deux sociétés ont misé il y a quelques années sur le streaming, avec leur service de "catch-up" TV).
Et j'ai trouvé un truc bien cocasse.
Le player flash de WAT + une méthode bizarre
La plateforme WAT est une plateforme de diffusion de vidéo, propriété de TF1 qui s'en sert aussi de socle pour la diffusion des vidéos de "catch-up", via le protocole RTMPE (pur streaming). Il n'y a donc plus de problème de fuites de vidéos au format FLV, comme j'ai pu l'aborder dans un pécédent post.
Cette plateforme s'articule autour d'un lecteur vidéo développé maison, et intégré notamment dans les sites de WAT (http://www.wat.fr) et de TF1 vidéos (http://videos.tf1.fr). C'est en plongeant les mains dans le code de ce lecteur maison que j'ai pu identifier une routine peu commune:
override public function get hasPiegeACouillon() : Boolean
*
if (isEmbedMode)
{
return PlayerDataManager.getInstance().flashVars.hasRedirect == "1";
*
return super.hasPiegeACouillon;
}
Et là je suis resté coincé entre le rire et l'étouffement. Je me suis ensuite demandé à quoi servait cette méthode particulière, car des fois on trouve ce genre de choses dans des objets Flash sans qu'elles soient réellement fonctionnelles.
Investigation
J'ai donc fouillé dans le code désassemblé, et j'ai pu identifier la référence à cette méthode:
case "BAR_CLICKED":
*
if (super.playerState.currentErrorType == PlayerState.ERROR_TYPE_RSYND)
{
PlayerUtil.openPage(PlayerContextManager.getInstance().currentContextRules.targetCouillon);
return;
*
if (PlayerContextManager.getInstance().currentContextName == PlayerContext.CONTEXT_PLAYER_PUB || PlayerContextManager.getInstance().currentContextRules.hasPiegeACouillon && !(super.playerDataManager.flashVars.playerType == "watPlayer" && super.playerState.currentMediaObject.media.visibleOnWAT != false))
*
if (PlayerContextManager.getInstance().currentContextName == PlayerContext.CONTEXT_PLAYER_PUB || super.playerDataManager.flashVars.playerType == "watPlayer" && super.playerState.currentMediaObject.media.visibleOnWAT != false || super.playerDataManager.flashVars.playerType == "tf1Player" && super.playerDataManager.flashVars.permalink != null)
{
PlayerUtil.openPage(PlayerContextManager.getInstance().currentContextRules.targetCouillon);
*
}
else if (super.playerState.currentPlayerState == PlayerState.CURRENT_PLAYER_STATE_WAITING)
*
super.playerState.currentPlayerState = PlayerState.CURRENT_PLAYER_STATE_PAUSING;
*
else
*
super.playerState.wishPlayerState = PlayerState.WISH_PLAYER_STATE_PLAY;
*
break;
}
Traduisez par: "Si un couillon clique sur la pub, alors on le redirige sur le site concernant la pub" (targetCouillon). On voit clairement que pour les développeurs, la pub est un simple piège à couillons.
Le mot de la fin
J'espère que cette bourde ne traduit pas une considération en place chez TF1, qui consiste à considérer les internautes comme des "couillons", parce que sinon ils sont bien mal partis. De plus, je pense sincèrement que les annonceurs de TF1 et de WAT apprécieront leur humour (ou pas).
<article43|flattr>