<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Segmentation fault &#187; challenge</title>
	<atom:link href="https://www.segmentationfault.fr/tag/challenge/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.segmentationfault.fr</link>
	<description>Projets d’un consultant en sécurité informatique</description>
	<lastBuildDate>Fri, 15 Feb 2019 08:02:10 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Résumé partiel des DC18 CTF Quals</title>
		<link>https://www.segmentationfault.fr/securite-informatique/resume-dc18-ctf-quals/</link>
		<comments>https://www.segmentationfault.fr/securite-informatique/resume-dc18-ctf-quals/#comments</comments>
		<pubDate>Mon, 24 May 2010 19:29:25 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[CTF]]></category>
		<category><![CDATA[Sécurité informatique]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[Cryptographie]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=796</guid>
		<description><![CDATA[Contrairement à ce que certains pensent peut-être en voyant ce blog à l&#8217;abandon depuis plusieurs mois, non, je ne suis pas mort ! J&#8217;ai simplement été assez pris ces derniers temps, et j&#8217;essaye au passage de finaliser ma première release de XeeK pour la NDH le 19 juin&#8230; Ce week-end, j&#8217;ai rapidement participé aux qualifications [...]]]></description>
			<content:encoded><![CDATA[<p>Contrairement à ce que certains pensent peut-être en voyant ce blog à l&rsquo;abandon depuis plusieurs mois, non, je ne suis pas mort ! J&rsquo;ai simplement été assez pris ces derniers temps, et j&rsquo;essaye au passage de finaliser ma première release de <a href="http://www.segmentationfault.fr/projets/conference-sur-xeek-a-la-ndh-2010/">XeeK</a> pour la <a href="http://www.nuitduhack.com">NDH</a> le 19 juin&#8230;</p>
<p>Ce week-end, j&rsquo;ai rapidement participé aux qualifications du CTF de la <a href="http://www.defcon.org/">DefCon</a> 18. Je n&rsquo;avais pas refait de challenge depuis <a href="http://www.segmentationfault.fr/securite-informatique/insomnihack2010-hzv-won/">Insomni&rsquo;hack 2010</a> donc je me suis senti obligé de me décrasser un peu le cerveau. Ma participation à ces qualifications est toutefois restée limitée ; n&rsquo;ayant pas pu m&rsquo;inscrire à temps j&rsquo;ai du rejoindre une team à l&rsquo;arrache (Big-Daddy).<span id="more-796"></span></p>
<h3>Vue d&rsquo;ensemble</h3>
<p>Le challenge consistait en 6 séries de 5 épreuves, chacune intitulée de la sorte :</p>
<ul>
<li>Poursuit trivial (épreuves générales)</li>
<li>Crypto Badness (cryptographie)</li>
<li>Packet Madness (réseau)</li>
<li>Binary L33tness (cracking, applicatif)</li>
<li>Pwtent Pwnables (exploitations de services)</li>
<li>Forensics (analyse de fichiers)</li>
</ul>
<p>N&rsquo;ayant pas énormément de temps à consacrer à ce challenge, je n&rsquo;ai pas vraiment touché à tout mais me suis focalisé sur la crypto et le réseau.</p>
<p>Dans l&rsquo;ensemble j&rsquo;ai trouvé ça plutôt sympa, même si j&rsquo;ai quand même deux remarques négatives à faire :</p>
<ul>
<li>L&rsquo;interface du panneau d&rsquo;équipe codée en Java était vraiment plus que foireuse. Je ne sais pas si c&rsquo;était du au fait qu&rsquo;on soit plusieurs à partager le même compte, mais il fallait bouriner comme un dingue sur le bouton de validation afin d&rsquo;avoir un espoir de valider les réponses (valides), voire même parfois se reconnecter.</li>
<li>Certaines épreuves étaient relativement <a href="http://www.dico-des-mots.com/definitions/capilotracter.html">capilotractées</a>, dans le sens ou elles n&rsquo;étaient pas réalistes du tout et qu&rsquo;il fallait être à peu près aussi dingue que leur concepteur pour la valider. Enfin je pense que ça doit être à peu près pareil sur tous les challenges du genre&#8230;</li>
</ul>
<p>Étant loin d&rsquo;avoir réussi à valider toutes les épreuves, je vous propose de dévoiler la solution de deux d&rsquo;entre elles que j&rsquo;ai trouvées assez sympathiques.</p>
<h3>Packet Madness 200</h3>
<p>Dans cette épreuve, on fournissait une <a href="http://www.segmentationfault.fr/wp-content/uploads/2010/05/Copie-de-pkt200_55216efa7a182fb0.pcap_.txt">capture de paquets</a> (à renommer en .pcap), le but étant comme toutes les autres épreuves de trouver une passphrase de validation.</p>
<p>Sous Wireshark, on constate qu&rsquo;il s&rsquo;agit d&rsquo;un trafic TCP entre un client et un serveur. En utilisant l&rsquo;option &laquo;&nbsp;Follow TCP Stream&nbsp;&raquo;, on constate qu&rsquo;il semble s&rsquo;agir de trafic binaire&#8230;</p>
<div id="attachment_799" class="wp-caption aligncenter" style="width: 496px"><a href="http://www.segmentationfault.fr/wp-content/uploads/2010/05/pkt200_1.png"><img class="size-full wp-image-799" title="pkt200_1" src="http://www.segmentationfault.fr/wp-content/uploads/2010/05/pkt200_1.png" alt="" width="486" height="246" /></a><p class="wp-caption-text">Capture Wireshark</p></div>
<p style="text-align: left;">Cependant, l&rsquo;indice laissé par l&rsquo;épreuve suggère que les deux machines communiquent avec une &laquo;&nbsp;langue&nbsp;&raquo; inhabituelle. S&rsquo;agirait-il d&rsquo;un encodage connu mais peu courant ? En regardant un peu les encodages supportés par Wireshark, on s&rsquo;aperçoit rapidement qu&rsquo;ils &lsquo;agit en fait de l&rsquo;<a href="http://fr.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code">EBCDIC</a>, encodage créé par IBM qui semble remonter à l&rsquo;époque quasi-préhistorique des cartes perforées&#8230; En utilisant cet encodage, on y voit tout de suite plus clair :</p>
<div id="attachment_800" class="wp-caption aligncenter" style="width: 647px"><a href="http://www.segmentationfault.fr/wp-content/uploads/2010/05/pkt200_2.png"><img class="size-full wp-image-800" title="pkt200_2" src="http://www.segmentationfault.fr/wp-content/uploads/2010/05/pkt200_2.png" alt="Trafic décodé" width="637" height="293" /></a><p class="wp-caption-text">Trafic décodé</p></div>
<p style="text-align: left;">Il s&rsquo;agit donc d&rsquo;une sorte de telnet encodé en EBCDIC. Visiblement, le serveur propose plusieurs options, comme la création d&rsquo;un compte, l&rsquo;authentification, un mode maintenance et un affichage de news. L&rsquo;IP du serveur visible dans le dump, 192.42.96.121, existe bel et bien et héberge bien ce service sur le port 8686. Il semble donc que la réponse à l&rsquo;épreuve doive être obtenue en s&rsquo;y connectant. Malheureusement les outils classiques comme telnet et netcat ne supportent pas l&rsquo;EBCDIC. Mais c&rsquo;est sans compter Python, qui le supporte nativement, et qui va ainsi nous permettre de se coder un petit client maison :</p>
<pre style="text-align: left;">#!/usr/bin/python

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.41.96.121", 8686))

while True:
 data = s.recv(3000)
 print data.decode('EBCDIC-CP-BE').encode('ascii')

 input = raw_input()
 input_to_send = input.decode('ascii').encode('EBCDIC-CP-BE')+"%"
 s.send(input_to_send)</pre>
<p style="text-align: left;">Ce client permet d&rsquo;envoyer des commandes au service tout en affichant ses réponses. Toutefois, j&rsquo;ai constaté qu&rsquo;il était toujours en retard d&rsquo;un message par rapport au serveur. N&rsquo;ayant pas le temps d&rsquo;être perfectionniste, je m&rsquo;en suis contenté et ai pu me créer un compte sur le serveur avec la commande &laquo;&nbsp;a&nbsp;&raquo;, puis me loguer avec ce même compte (&laquo;&nbsp;l&nbsp;&raquo;). Le mode administrateur &laquo;&nbsp;m&nbsp;&raquo; ne fonctionnant pas, il ne restait que l&rsquo;affichage des news (&laquo;&nbsp;n&nbsp;&raquo;), qui donnait cette sortie :</p>
<pre>5/21/2010 - Defcon qualifiers are underway.

5/18/2010 - It's Bob Randolph's birthday today, wish him well
 if you see him

5/16/2010 - It's IBM old timer's night at the bowling alley.
 The key thing to remember at these things is that:
 once upon a time IBM ruled the world

4/29/2001 - First post! w00t!</pre>
<p>La news du 16 mai 2010 m&rsquo;interpelle du fait de la présence du mot &laquo;&nbsp;key&nbsp;&raquo;&#8230; Nous testons donc la réponse &laquo;&nbsp;<em>once upon a time IBM ruled the world</em>&nbsp;&raquo; à l&rsquo;épreuve, et après un léger acharnement collectif sur le team board, nous parvenons à valider ! Finalement, ce n&rsquo;était pas compliqué&#8230;</p>
<h3>Crypto Badness 400</h3>
<p>Dans cette épreuve épinglée de l&rsquo;indice &laquo;&nbsp;crack me&nbsp;&raquo;, on fournit une <a href="http://www.segmentationfault.fr/wp-content/uploads/2010/05/c400_95bcb7c5807a366d.tgz_.txt">archive tgz</a> (encore une fois à renommer). Celle-ci contient un fichier blob.dat visiblement chiffré et une clé publique pubkey.pem. Il s&rsquo;agit donc visiblement de casser la <a href="http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">clé publique</a> afin de retrouver la clé privée et déchiffrer le fichier .dat. Voici la clé publique :</p>
<pre>-----BEGIN RSA PUBLIC KEY-----
MGgCYQDK2YRVfJfgOUMaImrXJ/DG1D7z1BhGnxs3UEmyKYQ+6fg7H5dzisJ09fYf
QB8h8ZE+S2S7MbVaONOYwN/tALE5LwiJcRxEs1nnl2xhf8xzTwbj6VwmR2CRtS9G
LnlBPbUCAwEAAQ==
-----END RSA PUBLIC KEY-----</pre>
<p>Il s&rsquo;agit d&rsquo;une clé <a href="http://en.wikipedia.org/wiki/RSA">RSA</a>. Pour analyser ce genre de clé, l&rsquo;outil tout indiqué est <a href="http://www.openssl.org/">OpenSSL</a>. Cependant, une mauvaise surprise nous attend&#8230;</p>
<pre>$ openssl rsa -pubin -in pubkey.pem -text
unable to load Public Key
20934:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:647:Expecting: PUBLIC KEY</pre>
<p>Impossible de lire la clé avec cet outil, donc. Un peu de recherche Google, et je trouve <a href="http://barelyenough.org/blog/2008/04/fun-with-public-keys/">quelqu&rsquo;un</a> qui a eu le même problème :</p>
<blockquote><p>The problem is this an RSA public key PEM or <a href="http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules">DER</a> generated by Ruby’s <a href="http://ruby-doc.org/stdlib/libdoc/openssl/rdoc/index.html"><code>OpenSSL::PKey::RSA</code></a> are unreadable by <a href="http://www.openssl.org/">OpenSSL</a>, <a href="http://www.bouncycastle.org/">Bouncy Castle</a> and probably other  crypto tools.</p>
<p>The actual issue is that Ruby’s <code>OpenSSL::PKey::RSA#to_pem</code> and <code>#to_der</code> generate a <a href="http://tools.ietf.org/html/rfc3447#appendix-A.1.1">PKCS#1 public  key format</a> while the <code>openssl rsa</code> command only works <a href="http://en.wikipedia.org/wiki/PKCS">PKCS#8</a> formatted public keys.</p></blockquote>
<p>Ainsi, la clé semble avoir été générée avec le module OpenSSL de Ruby, et son format PKCS#1 empêche sa lecture avec OpenSSL. Qu&rsquo;à cela ne tienne, nous allons utiliser ce même module pour la lire ! On ouvre le shell Ruby (IRB) et on tape :</p>
<pre>$ irb
irb(main):001:0&gt; require 'openssl'
=&gt; true
irb(main):002:0&gt; a=OpenSSL::PKey::RSA.new(File.read("pubkey.pem"))
=&gt; -----BEGIN RSA PUBLIC KEY-----
MGgCYQDK2YRVfJfgOUMaImrXJ/DG1D7z1BhGnxs3UEmyKYQ+6fg7H5dzisJ09fYf
QB8h8ZE+S2S7MbVaONOYwN/tALE5LwiJcRxEs1nnl2xhf8xzTwbj6VwmR2CRtS9G
LnlBPbUCAwEAAQ==
-----END RSA PUBLIC KEY-----

irb(main):003:0&gt; a.params
=&gt; {"dmq1"=&gt;0, "dmp1"=&gt;0, "iqmp"=&gt;0, "n"=&gt;12301866845301177551304949
58384962720772853569595334792197322452151726400507263657518745202199
78646938995647494277406384592519255732630345373154826850791702612214
29134616704292143116022212404792747377940806653514195974598569021434
13, "d"=&gt;0, "p"=&gt;0, "e"=&gt;65537, "q"=&gt;0}</pre>
<p>On arrive ainsi à extraire le module (n) et l&rsquo;exposant public (e). Ce dernier étant quasiment toujours le même, seul le module importe ici. Pour savoir si nous avons une chance de le casser, regardons sa taille en bits :</p>
<pre>$ python
&gt;&gt;&gt; import math
&gt;&gt;&gt; n=12301866845301177551304949583849627207728535695953347921973224
52151726400507263657518745202199786469389956474942774063845925192557
32630345373154826850791702612214291346167042921431160222124047927473
7794080665351419597459856902143413
&gt;&gt;&gt; math.log(n, 2)
767.66426718447133</pre>
<p>Il semble codé sur 768 bits&#8230; Cela ne vous rappelle rien ? Le nombre <a href="http://en.wikipedia.org/wiki/RSA_numbers#RSA-768">RSA-768</a> a été cassé en décembre dernier. Et comme par hasard, c&rsquo;est bien le même qui est utilisé ici&#8230; Nous allons donc pouvoir utiliser sa factorisation pour générer la clé privée correspondante. Par chance, <a href="http://blog.stalkr.net/">StalkR</a> de la team <a href="http://nibbles.tuxfamily.org">Nibbles</a> a posté un <a href="http://nibbles.tuxfamily.org/?p=1040">article très similaire</a> issu du CTF <a href="http://www.codegate.org/Eng/">Codegate</a> il y a quelques mois. Il y indique la procédure à suivre pour générer le certificat, qui pour simplifier se résume à télécharger un <a href="http://stalkr.net/files/codegate/2010/7/e_os.h">en-tete d&rsquo;OpenSSL</a> ainsi qu&rsquo;un <a href="http://stalkr.net/files/codegate/2010/7/create_private.c">programme C</a> servant à générer la clé. On lance tout ça :</p>
<pre>$ gcc -lssl -o create_private create_private.c
$ ./create_private</pre>
<p>La clé privée est générée dans le fichier private.pem. Il ne reste alors plus qu&rsquo;à décrypter le fichier blob.dat en utilisant la commande :</p>
<pre>$ openssl rsautl -decrypt -inkey private.pem -in blob.dat -out output.txt</pre>
<p>Moment de vérité&#8230;</p>
<pre>$ cat output.txt
how long until 1024 falls by the wayside?</pre>
<p>Il s&rsquo;agit bien de la réponse à l&rsquo;épreuve (validée encore une fois grâce à un acharnement collectif).</p>
<p>Comme l&rsquo;épreuve précédente, ce n&rsquo;était techniquement pas compliqué, l&rsquo;obstacle majeur étant la non-reconnaissance de la clé par OpenSSL&#8230; En tout cas merci à StalkR pour son article qui a été d&rsquo;une grande aide.</p>
<h3>Conclusion</h3>
<p>Ces épreuves ont été l&rsquo;occasion pour moi de me remettre un peu dans le bain des CTFs. Le niveau était globalement assez élevé (plus dur que l&rsquo;année dernière à en croire certains), et nous n&rsquo;avons réussi à valider que quelques épreuves; les résultats sont disponibles <a href="http://www.ddtek.biz/qualsDC18scores.txt">ici</a>. Pour ceux que ça intéresse, vous trouverez le résultat de la dernière épreuve du Poursuit trivial <a href="http://scott.wolchok.org/t500.html">ici</a>.</p>
<p>Chapeau à Nibbles pour avoir terminé 10ème ; un grand bravo à eux. Et merci à tous ceux avec qui j&rsquo;ai challengé, en particulier à <a href="http://silkcut.wordpress.com/">Silkut</a>, MatToufoutu, et Dad. En espérant que nous parviendrons à créer une équipe HZV l&rsquo;année prochaine, du moins si nous avons plus de temps et de ressources&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.segmentationfault.fr/securite-informatique/resume-dc18-ctf-quals/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>George Hotz sera à la Nuit Du Hack 2010</title>
		<link>https://www.segmentationfault.fr/securite-informatique/nuit-du-hack-2010-georges-hotz/</link>
		<comments>https://www.segmentationfault.fr/securite-informatique/nuit-du-hack-2010-georges-hotz/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 14:41:16 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Evénement]]></category>
		<category><![CDATA[Nuit du hack]]></category>
		<category><![CDATA[Sécurité informatique]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[conférence]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=766</guid>
		<description><![CDATA[La Nuit Du Hack 2010 aura lieu le 19 et 20 juin en plein centre de Paris. Comme les autres années, cet événement convivial a pour but de regrouper tous les passionnés de hacking et sécurité informatique, d&#8217;échanger librement et de tester ses connaissances par la pratique. Mais par rapport à 2009, cette année réserve [...]]]></description>
			<content:encoded><![CDATA[<p>La Nuit Du Hack 2010 aura lieu le 19 et 20 juin en plein centre de Paris. Comme les autres années, cet événement convivial a pour but de regrouper tous les passionnés de hacking et sécurité informatique, d&rsquo;échanger librement et de tester ses connaissances par la pratique. Mais par rapport à 2009, cette année réserve son lot de nouveautés&#8230; puisque <strong>George Hotz</strong> présentera une conférence sur le cracking de la PS3 !<span id="more-766"></span></p>
<h3>La PS3 retournée par George Hotz</h3>
<p>Cette année, nous invitons des &laquo;&nbsp;VIP&nbsp;&raquo; pour présenter des conférences inédites. La liste définitive n&rsquo;est pas encore connue, néanmoins la présence de<strong> </strong><a href="http://fr.wikipedia.org/wiki/George_Hotz" target="_blank">George Hotz</a> a été confirmée. Aussi connu sous le pseudo <a href="http://twitter.com/geohot" target="_blank">GeoHot</a>, cet étudiant du <a href="http://www.segmentationfault.fr/semestre-etats-unis/arrivee-au-rit/" target="_blank">RIT</a> est le premier à avoir jailbreaké l&rsquo;<a href="http://iphonejtag.blogspot.com/2007/08/full-hardware-unlock-of-iphone-done.html" target="_blank">iPhone</a>, et <a href="http://www.techno-science.net/?onglet=news&amp;news=7447" target="_blank">plus récemment</a> la <a href="http://geohotps3.blogspot.com/" target="_blank">PS3</a>. C&rsquo;est sur le cracking cette dernière console que portera sa conférence.</p>
<h3>Call for papers</h3>
<p>Bien entendu, présenter une conférence n&rsquo;est pas réservé aux VIP. Nous recherchons d&rsquo;ailleurs activement des volontaires souhaitant présenter leurs travaux pour des conférences d&rsquo;une trentaine de minutes. Si vous êtes intéressés, n&rsquo;hésitez pas à <a href="http://www.nuitduhack.com/conferences-fr-conferences-salon-challenge-hack.htm" target="_blank">soumettre</a> votre proposition au staff !</p>
<h3>Une péniche de 3 étages</h3>
<p>Comme l&rsquo;année dernière, l&rsquo;événement aura lieu sur une péniche. Mais cette fois-ci, nous avons pris le gabarit supérieur ! Avec ses 3 étages, la péniche <a href="http://www.nuitduhack.com/programme-fr-conferences-salon-challenge-hack.htm" target="_blank">Concorde Atlantique</a> sera en mesure d&rsquo;accueillir pas moins de 400 participants.</p>
<h3>Do you speak English?</h3>
<p>Jusqu&rsquo;ici restée 100% francophone, la Nuit Du Hack devient pour la première fois bilingue, et se voit traduite par &laquo;&nbsp;Night Da Hack&nbsp;&raquo; en Anglais. Le but étant bien sur de rendre l&rsquo;événement accessible à nos amis anglophones venant de toute l&rsquo;Europe, des États-Unis, et partout ailleurs. Certaines conférences seront données en Anglais, d&rsquo;autres en Français.</p>
<h3>Ateliers</h3>
<p>A l&rsquo;image de la DEF CON, nous organiserons des ateliers en parallèle des conférences et challenges. Chacun centré sur un thème particulier, leur but sera de favoriser la mise en pratique pour les participants. Nous recherchons également des volontaires pour présenter des ateliers (ex: lockpicking, manipulation d&rsquo;outils tels que Metasploit, Maltego, etc), n&rsquo;hésitez pas à <a href="http://www.nuitduhack.com/conferences-fr-conferences-salon-challenge-hack.htm" target="_self">vous faire connaître</a> si vous avez des idées !</p>
<h3>Capture The Flag</h3>
<p>Comme l&rsquo;année dernière, le challenge sera un &laquo;&nbsp;Capture The Flag&nbsp;&raquo;. Pour les néophytes, il s&rsquo;agit d&rsquo;un concours par équipes de 5, dans lequel chaque équipe se voit remettre un serveur hébergeant un certain nombre de services vulnérables. Son but est de protéger son serveur en maintenant ses services disponibles, tout en attaquant les serveurs ennemis et en faisant tomber leurs services. Pour gagner des points, il faut trouver des failles ou bien patcher ses services. Chaque service qui tombe fait perdre un certain nombre de points par minute à l&rsquo;adversaire. Le staff disposera en parallèle d&rsquo;un serveur de monitoring pour être en mesure de comptabiliser les points en temps réel.</p>
<p>Le CTF est limité à 10 équipes de 5, alors <a href="http://www.nuitduhack.com/challenges-fr-conferences-salon-challenge-hack.htm" target="_blank">inscrivez-vous</a> vite !</p>
<h3>Challenge public</h3>
<p>Pour les gens n&rsquo;ayant que peu d&rsquo;expérience en pentesting, nous mettrons à disposition de tous un challenge ouvert. Il s&rsquo;agira d&rsquo;un serveur accessible en Wifi hébergeant des épreuves communes.</p>
<h3>Prix</h3>
<p>Les gagnants du CTF se verront remettre divers prix offerts par <a href="http://www.sysdream.com/" target="_blank">Sysdream</a> :</p>
<ul>
<li>Livres techniques sur la sécurité</li>
<li>Hardware (laptop, etc)</li>
<li>Certifications en sécurité (<a href="http://www.sysdream.com/section_124/Formation-Certified-Ethical-Hacker.html" target="_blank">CEH</a>, <a href="http://www.sysdream.com/section_125/Formation-EC-Council-Certified-Security-Analyst.html" target="_blank">ECSA/LPT</a>, <a href="http://www.sysdream.com/section_142/Certification-Management-Certified-Information-Systems-Security-Professional.html" target="_blank">CISSP</a>, etc.) reconnues mondialement</li>
</ul>
<h3>Pour plus d&rsquo;infos</h3>
<p>Pour vous inscrire ou pour toute information complémentaire, n&rsquo;hésitez pas à consulter le <a href="http://www.nuitduhack.com/accueil-fr-nuit-du-hack-2010.htm" target="_blank">site de la Nuit Du Hack</a> ! Vous y trouverez notamment des photos et vidéos des <a href="http://www.nuitduhack.com/archives-fr-archives-nuit-du-hack.htm" target="_blank">années passées</a>. J&rsquo;ai également posté <a href="http://www.segmentationfault.fr/categories/evenement/nuit-du-hack/">quelques articles</a> au sujet des dernières éditions sur ce blog.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.segmentationfault.fr/securite-informatique/nuit-du-hack-2010-georges-hotz/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Insomni&#8217;hack 2010 : HZV won</title>
		<link>https://www.segmentationfault.fr/securite-informatique/insomnihack2010-hzv-won/</link>
		<comments>https://www.segmentationfault.fr/securite-informatique/insomnihack2010-hzv-won/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 20:42:26 +0000</pubDate>
		<dc:creator>Emilien Girault</dc:creator>
				<category><![CDATA[Evénement]]></category>
		<category><![CDATA[Nuit du hack]]></category>
		<category><![CDATA[Sécurité informatique]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[hacking]]></category>

		<guid isPermaLink="false">http://www.segmentationfault.fr/?p=752</guid>
		<description><![CDATA[Ce week-end, c&#8217;est avec trois membres de HZV (Crashfr, Virtualabs, et Fluxius) que je me suis rendu à Insomni&#8217;hack, un challenge de hacking se déroulant à Genève. Le challenge était au départ individuel, mais nombreux étaient ceux qui, comme nous, s&#8217;entre-aidaient. Le but était simple : valider un maximum d&#8217;épreuves avant 1h du matin. Au [...]]]></description>
			<content:encoded><![CDATA[<p>Ce week-end, c&rsquo;est avec trois membres de <a href="http://www.thehackademy.net/index.php" target="_blank">HZV</a> (Crashfr, Virtualabs, et Fluxius) que je me suis rendu à <a href="http://www.scrt.ch/pages/concours10.html" target="_blank">Insomni&rsquo;hack</a>, un challenge de hacking se déroulant à Genève. Le challenge était au départ individuel, mais nombreux étaient ceux qui, comme nous, s&rsquo;entre-aidaient. Le but était simple : valider un maximum d&rsquo;épreuves avant 1h du matin. Au final, c&rsquo;est notre équipe qui a remporté le challenge. Voici un petit résumé de quelques épreuves intéressantes dont je me rappelle.</p>
<p><span id="more-752"></span></p>
<p>Le challenge était composé de 9 séries d&rsquo;épreuves, chacune étant d&rsquo;un type différent. Décidés à en valider un maximum, nous nous sommes répartis le travail entre tous les membres de l&rsquo;équipe, en centralisant les solutions. Et c&rsquo;est moi qui me suis retrouvé désigné comme étant la personne en charge de tout valider <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Enfin, deux difficultés notables étaient à souligner : les prises électriques étaient suisses (merci à la personne nous ayant prêté un adaptateur)  et aucune connexion internet n&rsquo;était fournie.</p>
<div class="wp-caption aligncenter" style="width: 458px"><img title="L'équipe HZV" src="http://lh3.ggpht.com/_Rzr3MErwyvk/S138HX8cIbI/AAAAAAAAEzQ/rn8klY2SN4M/s640/024.JPG" alt="L'équipe HZV" width="448" height="336" /><p class="wp-caption-text">L&#39;équipe HZV</p></div>
<p style="text-align: center;">
<h3>One Time Pad</h3>
<p>J&rsquo;ai commencé par la première épreuve de la série intitulée &laquo;&nbsp;One Time Pad&nbsp;&raquo;, portant sur la crypto. Il s&rsquo;agissait de décrypter un fichier chiffré avec l&rsquo;algorithme <a href="http://fr.wikipedia.org/wiki/One_Time_Pad" target="_blank">One Time Pad</a>, sachant que l&rsquo;on nous donnait un couple plaintext &#8211; ciphertext chiffré avec la même clé&#8230; Un simple XOR entre les deux permettait donc de révéler cette dernière, et donc de déchiffrer le message.</p>
<h3>RSA</h3>
<p>Après cet échauffement, on enchaîne avec du RSA. La deuxième épreuve OTP consiste à casser un message chiffré avec une implémentation de RSA vraisemblablement pas terrible niveau sécurité. Le message en question était composé d&rsquo;un header qui n&rsquo;était autre que la concaténation de l&rsquo;exposant public (e) et du module (N) utilisé pour chiffrer le message, le tout encodé en base 64. Étant donné que N avait une taille ridiculement faible (une trentaine de bits), il était très facile de le factoriser. Personnellement, je me suis servi de l&rsquo;outil RSA Tool 2, permettant non seulement de factoriser N mais aussi de retrouver l&rsquo;exposant privé (d). Une fois d obtenu, il suffisait d&rsquo;utiliser l&rsquo;outil fourni pour déchiffrer le message.</p>
<h3>Follow the white rabbit</h3>
<p>La 3ème épreuve de la série consistait à lire un message dans une image représentant un lapin, elle faisait donc appel à de la stéganographie. Notre intuition nous disait qu&rsquo;il y avait du <a href="http://fr.wikipedia.org/wiki/Bit_de_poids_faible" target="_blank">LSB</a> dans l&rsquo;air, mais nous n&rsquo;avons pas eu le temps de coder un outil sur place (nous avions la flemme de lire les specs du BMP). Plusieurs membres de notre équipe ont fait une fixation sur ce lapin, espérant y voir un &laquo;&nbsp;message subliminal&nbsp;&raquo; (private joke)&#8230; Suite à  la fin de ce billet.</p>
<div class="wp-caption aligncenter" style="width: 458px"><img title="F|UxIuS, dont le pseudo a donné mal à la tête au staff" src="http://lh6.ggpht.com/_Rzr3MErwyvk/S138F8iZ1kI/AAAAAAAAEzI/R2N0hGpDxqE/s640/011.JPG" alt="F|UxIuS, dont le pseudo a donné mal à la tête au staff" width="448" height="336" /><p class="wp-caption-text">F|UxIuS, dont le pseudo a donné mal à la tête au staff</p></div>
<h3>Shoot the caribou</h3>
<p>Dans cette épreuve flash faisant partie de la série &laquo;&nbsp;les soirées de Kévin&nbsp;&raquo;, il fallait tirer sur un caribou pour obtenir un score le plus élevé possible. Ce score était alors envoyé au serveur, qui affichait le code de validation si le score était suffisamment élevé. Sauf qu&rsquo;il était physiquement impossible d&rsquo;atteindre un tel score, à moins d&rsquo;être un maniaque de la souris&#8230;</p>
<p>Virtualabs et Fluxius se sont alors mis à décompiler le flash, et on trouvé que le score était d&rsquo;abord chiffré en RC4 puis envoyé au serveur. Bien entendu, la clé RC4 étaient hardcodée dans le flash. Apres extraction de la clé, il leur a donc été possible de forger un score de plusieurs millions de points, de le chiffrer correctement et de l&rsquo;envoyer au serveur pour que celui-ci accepte de révéler le code de validation.</p>
<div class="wp-caption aligncenter" style="width: 458px"><img title="La team soutenue par son sponsor..." src="http://lh3.ggpht.com/_Rzr3MErwyvk/S138GrEDm0I/AAAAAAAAEzM/doNjRmRORRA/s640/012.JPG" alt="La team soutenue par son sponsor..." width="448" height="336" /><p class="wp-caption-text">La team soutenue par son sponsor...</p></div>
<p style="text-align: center;">
<h3>300 captchas</h3>
<p>Épreuve &laquo;&nbsp;kikoo&nbsp;&raquo; n°2. Il fallait résoudre 300 <a href="http://fr.wikipedia.org/wiki/Captcha" target="_blank">captchas</a> sur une page Web dans un laps de temps très bref. Même si dans l&rsquo;absolu c&rsquo;est théoriquement envisageable, cela reste quand même assez incertain. Il fallait donc remarquer que l&rsquo;URL de validation du captcha contenait en réalité le texte de celui-ci encodé en base64&#8230; Il a donc été assez facile de coder un bot en Python récupérant les pages et effectuant la chaîne de validation pour valider l&rsquo;épreuve.</p>
<h3>Failles applicatives</h3>
<p>La série d&rsquo;épreuve nommée  &laquo;&nbsp;Exploitation&nbsp;&raquo; consistait à télécharger une VM Linux et à exploiter les différentes failles qui s&rsquo;y trouvaient. Il s&rsquo;agissait d&rsquo;une série de binaires SUID comportant différentes failles applicatives. La première n&rsquo;était autre qu&rsquo;un <a href="http://www.ghostsinthestack.org/article-13-les-buffers-overflows.html" target="_blank">buffer overflow</a>. Le temps de sortir Python, un shellcode Linux, ainsi que GDB, et l&rsquo;épreuve a été validée sans trop de soucis.  La deuxième faille de la série était une format string, un peu plus galère à exploiter. Enfin la dernière était une faille maison qui s&rsquo;exploitait en forgeant le paramètre d&rsquo;entrée de telle sorte à ce qu&rsquo;il soit accepté et que le programme finisse par lire le fichier contenant le code de validation.</p>
<h3>Grub FAIL!</h3>
<p>Pour exploiter ces 3 failles applicatives, il fallait donc être quand même motivé&#8230; Mais il y avait moyen de faire plus simple. Beaucoup plus simple. En effet, les membres du staff avaient oublié un détail crucial : sécuriser le Grub de la VM&#8230; Il était par conséquent possible de rooter la VM juste en ajoutant la chaîne ultra-connue &laquo;&nbsp;init=/bin/sh&nbsp;&raquo; comme paramètre du noyau pour se retrouver automatiquement logué en root. Et paf le shell !</p>
<div id="attachment_755" class="wp-caption aligncenter" style="width: 360px"><a href="http://www.segmentationfault.fr/wp-content/uploads/2010/01/exploit_grub.png"><img class="size-full wp-image-755" title="Owned by Grub" src="http://www.segmentationfault.fr/wp-content/uploads/2010/01/exploit_grub.png" alt="Owned by Grub" width="350" height="79" /></a><p class="wp-caption-text">Owned by Grub</p></div>
<p>Voila ce qui arrive lorsqu&rsquo;on oublie ce genre de détail <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Le staff a d&rsquo;ailleurs fait une drôle de tête quand nous les avons informé de ce léger oubli. Enfin, ils auraient pu jouer le jeu et accorder un bonus supplémentaire&#8230;</p>
<h3>Remise des prix</h3>
<p>A 1h du mat, le challenge se termine et le vainqueur est annoncé. Même s&rsquo;il s&rsquo;agit de moi, je tiens vraiment à rappeler que le véritable vainqueur du challenge n&rsquo;est pas moi, mais bien l&rsquo;ensemble de la team qui représentait HZV ! Le 2ème est Samsa (un Espagnol fort sympathique), suivi de Nagual (de Backtrack-fr) et de l&rsquo;équipe de Maubeuge (merci à Shatter pour le screenshot des scores !).</p>
<p style="text-align: center;">
<div id="attachment_756" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.segmentationfault.fr/wp-content/uploads/2010/01/insomnihack_results.png"><img class="size-large wp-image-756 " title="Résultats Insomni'hack 2010" src="http://www.segmentationfault.fr/wp-content/uploads/2010/01/insomnihack_results-1024x663.png" alt="Résultats Insomni'hack 2010" width="500" height="356" /></a><p class="wp-caption-text">Résultats Insomni&#39;hack 2010</p></div>
<p>Nous recevons alors une panoplie de t-shirts Kaspersky et Insomni&rsquo;hack, ainsi qu&rsquo;un sympathique routeur firewall Fortinet. Bref, de quoi s&rsquo;amuser un peu à Sysdream <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Nous terminons la soirée tranquillement à notre hôtel, accompagné comme il se doit d&rsquo;une bouteille de Vodka, de chips et de saucisson. Bah oui, il faut bien fêter tout ça !</p>
<h3>Annexe : Le poutrage du lapin masqué</h3>
<p>Le lendemain du challenge, après avoir été hanté toute la nuit par l&rsquo;image du lapin (One Time Pad n°3) resté incomprise, je me suis mis en tête de trouver la solution à cette épreuve. Avec GIMP, je me suis aperçu que l&rsquo;outil pot de peinture appliqué (réglé avec un seuil nul) sur des zones aléatoires de l&rsquo;image faisait apparaître clairement des bandes verticales, qui en plus étaient toutes espacées de 7 pixels. Autrement dit, ces bandes avaient beaucoup de chance de représenter les pixels dont le bit de poids fort était à zéro, comme c&rsquo;est toujours le cas en ASCII (non étendu). Le LSB se confirmait de plus en plus&#8230; Ayant Python sous la main, j&rsquo;ai codé un petit tool permettant de parser l&rsquo;image, extraire tous ses bits de poid faible, et ainsi reconstituer le message. A un décalage près, voici le résultat :</p>
<pre>W3LCOME_2_H4CK3R'S_WOND3RL4ND</pre>
<p>On notera la référence au lapin blanc d&rsquo;Alice au Pays des Merveilles&#8230; Maintenant, Crashfr et Fluxius peuvent dormir tranquille sans être hantés <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Seul regret : ne pas avoir eu le temps de valider cette épreuve sur place&#8230;</p>
<div class="wp-caption aligncenter" style="width: 458px"><img title="Les geeks aussi ont le droit de faire du tourisme" src="http://lh3.ggpht.com/_Rzr3MErwyvk/S1y52M-edBI/AAAAAAAAExk/Gq6MhBbSymo/s640/IMG_7072.JPG" alt="Les geeks aussi ont le droit de faire du tourisme" width="448" height="336" /><p class="wp-caption-text">Les geeks aussi ont le droit de faire du tourisme</p></div>
<h3>Conclusion et remarques</h3>
<p>Au final, toute l&rsquo;équipe ainsi que moi-même avons passé un très bon moment lors de cette soirée, riche en ambiance chaleureuse, rencontre, boissons (enfin, nous étions la seule équipe à boire), et prise de tête sur les différents challenges <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . C&rsquo;était la première fois que je me rendais à un événement de ce genre à l&rsquo;étranger.</p>
<p>J&rsquo;aurais toutefois quelques remarques / critiques concernant l&rsquo;événement :</p>
<ul>
<li>Nous avons trouvé assez peu réglo le fait que certaines équipes disposaient d&rsquo;Internet via une connexion 3G, car cela avantage considérablement.</li>
<li>Nous regrettons le manque de réalisme des épreuves, un peu trop axées sur la kikoolol attitude et pas assez sur ce qui se trouve réellement en pentest.</li>
<li>Dommage que l&rsquo;événement se termine si tôt (1h du mat), surtout avec un nom comme &laquo;&nbsp;Insomni&rsquo;hack&nbsp;&raquo;&#8230;</li>
</ul>
<p>J&rsquo;espère que le staff, s&rsquo;il lit ce billet, ne les prendra pas mal ; il s&rsquo;agit au contraire de conseils pour l&rsquo;année prochaine.</p>
<p>En tout cas, félicitations à eux pour avoir organisé cet événement ! Nous espérons les voir le 19 juin à la <a href="http://www.nuitduhack.com/accueil-fr-ndh.htm" target="_blank">Nuit du Hack</a> <img src='https://www.segmentationfault.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://www.slashon.com/index.php/2010-01-25/InsomniHack_2010_HzV_Winners" target="_blank">Plus de photos sur le blog de Fluxius</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.segmentationfault.fr/securite-informatique/insomnihack2010-hzv-won/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
	</channel>
</rss>
