<?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>Le blog de John Jean &#187; CPU</title>
	<atom:link href="http://www.john-jean.com/blog/tag/cpu/feed" rel="self" type="application/rss+xml" />
	<link>http://www.john-jean.com/blog</link>
	<description>Actualité de sécurité informatique</description>
	<lastBuildDate>Wed, 19 May 2010 09:19:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Bruteforcer une chaine MD5: Nouvelles méthodes et comparatif des softs</title>
		<link>http://www.john-jean.com/blog/crypto/bruteforcer-une-chaine-md5-nouvelles-methodes-et-comparatif-des-softs-159</link>
		<comments>http://www.john-jean.com/blog/crypto/bruteforcer-une-chaine-md5-nouvelles-methodes-et-comparatif-des-softs-159#comments</comments>
		<pubDate>Tue, 31 Mar 2009 19:52:24 +0000</pubDate>
		<dc:creator>John JEAN</dc:creator>
				<category><![CDATA[Crypto]]></category>
		<category><![CDATA[bruteforce]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[cracker]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[md5]]></category>
		<category><![CDATA[Sécurité informatique]]></category>

		<guid isPermaLink="false">http://www.john-jean.com/blog/divers/bruteforcer-une-chaine-md5-nouvelles-methodes-et-comparatif-des-softs-159</guid>
		<description><![CDATA[La plupart des développeurs utilisent généralement le MD5 pour stocker les données sensibles de leurs utilisateurs (mot de passe, parfois numéro de carte bleu, et ainsi de suite&#8230;). Ces derniers ont tendance à considérer cette méthode de hachage comme fiable alors qu&#8217;elle ne l&#8217;est pas. En effet, dès 1996, des chercheurs en sécurité ont mis [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="nvidia logoblog" align="left" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/nvidia-logoblog-1.jpg" width="165" height="158" /></p>
<p>La plupart des développeurs utilisent généralement le MD5 pour stocker les données sensibles de leurs utilisateurs (mot de passe, parfois numéro de carte bleu, et ainsi de suite&#8230;). Ces derniers ont tendance à considérer cette méthode de hachage comme fiable alors qu&#8217;elle ne l&#8217;est pas. En effet, dès 1996, des chercheurs en sécurité ont mis en exergue la possibilité de créer des collisions. En 2004, les collisions complètes sont découvertes et le MD5 n&#8217;est dès lors plus considéré comme fiable d&#8217;un point de vue purement cryptographique. Cependant, sa facilité d&#8217;implémentation avec PHP à l&#8217;aide de md5(); et la méconnaissance des développeurs fait que cette méthode est encore très largement rependue au détriment de fonctions de hachage plus récentes et donc plus robustes comme SHA-256.</p>
<p>Suite à ces découvertes, plusieurs logiciels ont vu le jour afin de permettre de bruteforcer cette méthode de hachage (et pas uniquement celle-ci). Je suis souvent amené à devoir cracker ces chaines pour montrer au décideur pressé que le travail d&#8217;obfuscation des données par son développeur ou sysadmin n&#8217;est en réalité pas vraiment fiable. &laquo;&nbsp;Oui vous avez réussi à accéder à ma base de donnée, et alors ? Les données de nos clients sont cryptées&nbsp;&raquo;. Pour montrer au décideur qu&#8217;il fait fausse route, je me dois donc souvent de &laquo;&nbsp;bruteforcer&nbsp;&raquo; une ou plusieurs informations.</p>
<p><span id="more-159"></span>
<p>Les logiciels automatisant le bruteforce ont assez largement évolués récemment, passant d&#8217;une utilisation CPU, à CPU multi-core, et désormais CPU + GPU. En effet, le reversing des méthodes de hachage fascine, et remet chaque jour un peu plus en question la sécurité basée sur ces méthodes (surtout MD5 là pour le coup). Il suffit par exemple de voir l&#8217;excellent travail sur les certificats SSL: <a title="Creating a rogue CA certificate" href="http://www.win.tue.nl/hashclash/rogue-ca/" target="_blank">Creating a rogue CA certificate</a>. Un fail dans une méthode remet en question bien plus de choses que la méthode en elle-même.</p>
<p>GPU est l&#8217;acronyme de Graphics Processing Unit, grosso-modo, l&#8217;utilisation de la puissance de calcul de votre carte graphique. Ce vecteur de puissance était jusqu&#8217;alors inexploité pour la simple et bonne raison que leur utilisation était closed-source. Nvidia a largement ouvert et démocratisé l&#8217;accessibilité aux processeurs graphiques en mettant à disposition un environnement de développement nommé CUDA.</p>
<p>Voici donc un petit comparatif des logiciels, le but est avant tout de démontrer en quoi l&#8217;utilisation des GPUs constitue une avancée non négligeable (tiens ça me rappelle une histoire de PS3 montées en grappes), et surtout de montrer qu&#8217;à fonctionnement équivalent, ils ne sont pas tous aussi rapides. L&#8217;autre but est bien évidement de vous sensibiliser si vous utilisez toujours cette méthode de cryptage dans vos sites (je fais le malin, mais WordPress utilise le md5 pour stocker les passwords).</p>
<p><strong>Machine utilisée pour ce test:</strong><br />
Dell XPS M1530<br />
Intel Core 2 Duo CPU T9300 2,50 Ghz<br />
NVIDIA GeForce Go 8600M GT, 256 MB</p>
<p><strong>Comparatif des softs</strong><br />
J&#8217;étais parti pour inclure John the Ripper dans le test, mais il fallait employer un hack. Je me suis donc concentré sur les softs faisant bien nativement du bruteforce de MD5.</p>
<p><strong><em>CAIN</em></strong> (<a href="http://www.oxid.it/cain.html" target="_blank">http://www.oxid.it/cain.html</a>)<br />
Bon, à la décharge de CAIN, il ne sert pas uniquement à bruteforcer des hashs. C&#8217;est un couteau suisse qui permet de faire de l&#8217;ARP Poisoning, d&#8217;appliquer des filtres de snif etc. Donc bon, considérons que sa GUI ainsi que l&#8217;essence du soft font que ce n&#8217;est pas sa force, mais tout de même:<strong><em><br />
Résultat obtenu:</em></strong> <span style="COLOR: #ff0000">7 Millions h/s</span></p>
<p><img alt="CAIN" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/cain.jpg" width="450" height="333" /></p>
<p><img alt="CAIN2" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/cain2.gif" width="450" height="109" /> <img alt="CAIN3" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/cain3-1.gif" width="86" height="119" /></p>
<p><strong><em>MDcrack (Shot 1)</em></strong> (<a title="Download mdcrack" href="http://membres.lycos.fr/mdcrack/" target="_blank">http://membres.lycos.fr/mdcrack/</a>)<br />
Probablement l&#8217;un des plus anciens et des plus connus soft de bruteforce de MD5. Tout en command-line.<br />
Dans ce premier shot, pour simuler l&#8217;évolution, je l&#8217;ai limité à un seul CORE pour le CPU.<em><br />
<strong>Résultat obtenu:</strong></em> <span style="COLOR: #ff0000">12,5 Millions h/s</span></p>
<p><img alt="MDCRACK1" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack1.jpg" width="450" height="235" /></p>
<p><img alt="MDCRACK12" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack12.jpg" width="450" height="115" /> <img alt="MDCRACK13" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack13.jpg" width="90" height="123" /></p>
<p>Le CPU est sollicité à 50% ce qui est parfaitement logique compte tenu du fait que j&#8217;ai un Dual CORE.</p>
<p><strong><em>MDcrack (Shot 2)</em></strong> (<a title="Download mdcrack" href="http://membres.lycos.fr/mdcrack/" target="_blank">http://membres.lycos.fr/mdcrack/</a>)<br />
Pour le second shot, je décide d&#8217;utiliser pleinement mon CPU. C&#8217;est à dire, avant que l&#8217;on utilise les GPU, ce qui se faisait de mieux en matière de bruteforce. J&#8217;ai un core DUO, je double sans surprise.<em><br />
<strong>Résultat obtenu:</strong></em> <span style="COLOR: #ff0000">24 Millions h/s</span></p>
<p><img alt="MDCRACK23" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack23-2.jpg" width="450" height="235" /></p>
<p><img alt="MDCRACK2" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack2-2.gif" width="450" height="111" /> <img alt="MDCRACK22" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/mdcrack22-3.gif" width="90" height="120" /></p>
<p><strong><em>GPU MD5 CRACK</em></strong> (<a href="http://bvernoux.free.fr/md5/index.php" target="_blank">http://bvernoux.free.fr/md5/index.php</a>)<br />
Cette fois nous utilisons un bruteforcer sollicitant les GPUs. Malhreusement il dispose d&#8217;une GUI qui doit impacter ses perfs mais voyons tout de même la différence:<em><br />
<strong>Résultat obtenu:</strong></em> <span style="COLOR: #ff0000">44 Millions h/s !<br /></span></p>
<p><img alt="GPUMD5" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/gpumd5.jpg" width="450" height="378" /></p>
<p><img alt="GPUMD52" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/gpumd52.gif" width="450" height="115" /> <img alt="GPU MD53" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/gpu-md53.gif" width="88" height="120" /></p>
<p><strong><em>Extreme GPU Bruteforcer</em></strong> (<a href="http://www.insidepro.com/eng/egb.shtml" target="_blank">http://www.insidepro.com/eng/egb.shtml</a>)<br />
Un autre GPU Bruteforcer,Â  cette fois en command-line, mais on remarque que lui non plus ne sollicte pas le CPU au maximum.<em><br />
<strong>Résultat obtenu:</strong></em> <span style="COLOR: #ff0000">53 Millions h/s !<br /></span></p>
<p><img alt="EGB3" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/egb3.jpg" width="450" height="237" /></p>
<p><img alt="EGB1" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/egb1.gif" width="450" height="108" /> <img alt="EGB2" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/egb2.gif" width="89" height="116" /></p>
<p><strong><em>BarsWF</em></strong> (<a href="http://3.14.by/en/md5" target="_blank">http://3.14.by/en/md5</a>)<em><br /></em>Là, on passe en mode uber-gore. On constate avec ce logiciel une réelle maximisation de l&#8217;utilisation CPU + GPU. La courbe d&#8217;utilisation CPU n&#8217;est plus sinusoidale ici. Je n&#8217;ai pas une grosse config pour le coup, reportez vous à la conclusion pour voir ce qu&#8217;il a vraiment dans le sac :-)<br />
<strong><em>Résultat obtenu:</em></strong> <strong><span style="COLOR: #ff0000">124 Millions h/s !<br /></span></strong></p>
<p><img alt="BarsWF1" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/barswf1.jpg" width="450" height="222" /></p>
<p><img alt="BarsW2" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/barsw2-1.gif" width="450" height="111" /> <img alt="BARSW3" src="http://www.john-jean.com/blog/wp-content/uploads/2009/03/barsw3-1.gif" width="91" height="114" /></p>
<p><strong>Conclusion</strong></p>
<p>Vous devez mieux comprendre pourquoi l&#8217;image illustrant ce billet est un logo <a href="http://www.nvidia.com/object/cuda_home.html">Nvidia</a>. La rapidité de bruteforce via GPU n&#8217;est en rien comparable à ce que l&#8217;on pouvait exploiter il y a encore quelques années. J&#8217;ai demandé à un collègue qui a un double CORE, et une CG ATI (ATI Radeon HD 4870) de réaliser le test pour moi:</p>
<p>*Â¦ Key: kshnmhwi Avg.Total: 1066.40 MHash/sec Â¦</p>
<p>Â¦ Hash:87a2f7772d361d70d4b43cb5141a50e1 Â¦</p>
<p>Â¦ Progress: 28.92 % ETC 0 days 0 hours 2 min 19 sec Â¦</p>
<p>+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</p>
<p>&#8211; Key is: johnjean&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
<em><strong>Résultat obtenu avec BarWF</strong>:</em> <span style="COLOR: #ff0000"><strong>1 066 Millions h/s !<br /></strong><span style="COLOR: #000000">Deux minutes pour mettre à mal la chaine: johnjean</span><strong><br /></strong></span></p>
<p>Je n&#8217;ai évoqué ici que la maximisation de tentative de hash/s, pas le temps global que met une chaine à être forcée. Lors de mon prochain billet je tenterai d&#8217;établir un comparatif avec les méthodes d&#8217;attaque par rainbow table. A noter également que je n&#8217;ai pas parlé de la suite <a href="http://www.elcomsoft.com/edpr.html" target="_blank">Elcomsoft Distributed Password Recovery</a> qui permet de monter des grappes de travail. En gros l&#8217;application se divise en deux parties une cliente et une serveur. On peut donc créer un serveur et relier 20 machines dessus. Avec des machines comme celle de mon collègue (<strong>1 066 Millions h/s)</strong> bruteforcer une base de donnée client pour en extraire les pass et plus ne doit pas prendre bien longtemps. N&#8217;hésitez donc pas à modifier vos méthodes de stockage même si les énorme montage sont généralement reservé aux agences à trois lettres :-) Il va sans dire que les signatures de fichier en MD5 sont tout aussi faillible que ce que vous encryptez.</p>
<p>PS: Voici plus d&#8217;un mois que j&#8217;avais posté, mais je viens de trouver un logiciel me permettant de blogger depuis le train, cela devrait reprendre. (<a href="http://www.blogdesk.org/en/index.htm" target="_blank">BlogDesk</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-jean.com/blog/crypto/bruteforcer-une-chaine-md5-nouvelles-methodes-et-comparatif-des-softs-159/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
	</channel>
</rss>
