<?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; bruteforce</title>
	<atom:link href="http://www.john-jean.com/blog/tag/bruteforce/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>John the ripper multi-core grâce à Open MPI&#8230;</title>
		<link>http://www.john-jean.com/blog/crypto/john-the-ripper-multi-core-grace-a-open-mpi-233</link>
		<comments>http://www.john-jean.com/blog/crypto/john-the-ripper-multi-core-grace-a-open-mpi-233#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:33:44 +0000</pubDate>
		<dc:creator>John JEAN</dc:creator>
				<category><![CDATA[Crypto]]></category>
		<category><![CDATA[bruteforce]]></category>
		<category><![CDATA[comparatif]]></category>
		<category><![CDATA[cuda]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[john the ripper]]></category>
		<category><![CDATA[multi-core]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[open-mpi]]></category>

		<guid isPermaLink="false">http://www.john-jean.com/blog/?p=233</guid>
		<description><![CDATA[&#8230; ou comment multiplier la rapidité de bruteforce de John the Ripper par 8 ou plus. J&#8217;ai écrit il y a quelques temps, un billet présentant un comparatif des méthodes de bruteforce CPU / GPU sur des hashs de type MD5. J&#8217;avais expliqué que la méthode GPU (avec l&#8217;aide de cuda) explosait allègrement les méthodes [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="multicore" align="left" src="http://www.john-jean.com/blog/wp-content/uploads/2009/09/multicore-1.jpg" width="160" height="169" />&#8230; ou comment multiplier la rapidité de bruteforce de <a title="John the ripper" href="http://www.openwall.com/john/" target="_blank">John the Ripper</a> par 8 ou plus. J&#8217;ai écrit il y a quelques temps, un billet présentant un <a title="comparatif methode bruteforce md5 gpu cpu" href="http://www.john-jean.com/blog/crypto/bruteforcer-une-chaine-md5-nouvelles-methodes-et-comparatif-des-softs-159" target="_blank">comparatif des méthodes de bruteforce CPU / GPU</a> sur des hashs de type MD5. J&#8217;avais expliqué que la méthode GPU (avec l&#8217;aide de cuda) explosait allègrement les méthodes CPU, même avec du dual core. C&#8217;est toujours le cas. Sauf que cette méthode a ses limites: elle manque cruellement de softs permettant de bruteforcer tout et n&#8217;importe quoi. Le soft de référence pour avaler à peu près tous les hashs est John the ripper, mais il prend malheuresement assez cher face à des softs comme BarsWF. C&#8217;était sans compter sur un patch de <a title="bindshell.net" href="http://www.bindshell.net/" target="_blank">bindshell.net</a> qui permet d&#8217;exécuter autant d&#8217;instances du soft qu&#8217;on a de core.</p>
<p><span id="more-233"></span>
<p>Pour les besoins du boulot, nous avons monté un serveur relativement puissant et efficace: 16 Go de RAM et surtout du double quadruple coeurs (Intel Bi Xeon Quad 8x 2.00+ GHz). J&#8217;en ai donc profité pour tester l&#8217;objet de mes plus grands fantasmes :) (Bah oui, tout le monde n&#8217;a pas un 8 core sur son laptop, et les méthodes GPU sur un serveur sans CG&#8230;), et le résultat est sans appel:</p>
<p>Avant:</p>
<p><code>john-laptop:~/johntheripper/run# ./john -test<br />
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE<br />
Many salts: 1912K c/s real, 1912K c/s virtual<br />
Only one salt: 1631K c/s real, 1631K c/s virtual</code></p>
<p>Après:</p>
<p><code>john-laptop:~/john-1.7.2-bp17-mpi8/run# mpirun -np 8 ./john -test<br />
Benchmarking: Traditional DES [128/128 BS SSE2-16]... DONE<br />
Many salts: 15269K c/s real, 15273K c/s virtual<br />
Only one salt: 12997K c/s real, 13000K c/s virtual</code></p>
<p>&nbsp;</p>
<p>Avant:</p>
<p><code>Benchmarking: BSDI DES (x725) [128/128 BS SSE2-16]... DONE<br />
Many salts: 62387 c/s real, 62512 c/s virtual<br />
Only one salt: 60723 c/s real, 60723 c/s virtual</code></p>
<p>Après:</p>
<p><code>Benchmarking: BSDI DES (x725) [128/128 BS SSE2-16]... DONE<br />
Many salts: 497326 c/s real, 496954 c/s virtual<br />
Only one salt: 484527 c/s real, 484527 c/s virtual</code></p>
<p>&nbsp;</p>
<p>Avant:</p>
<p><code>Benchmarking: FreeBSD MD5 [32/64 X2]... DONE<br />
Raw: 8592 c/s real, 8592 c/s virtual</code></p>
<p>Après:</p>
<p><code>Benchmarking: FreeBSD MD5 [32/64 X2]... DONE<br />
Raw: 68862 c/s real, 68844 c/s virtual</code></p>
<p>&nbsp;</p>
<p>Avant:</p>
<p><code>Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]... DONE<br />
Raw: 518 c/s real, 518 c/s virtual</code></p>
<p>Après:</p>
<p><code>Benchmarking: OpenBSD Blowfish (x32) [32/64]... DONE<br />
Raw: 2415 c/s real, 2416 c/s virtual</code></p>
<p>&nbsp;</p>
<p>Avant:</p>
<p><code>Benchmarking: Kerberos AFS DES [48/64 4K]... DONE<br />
Short: 285330 c/s real, 285330 c/s virtual<br />
Long: 911564 c/s real, 911564 c/s virtual</code></p>
<p>Après:</p>
<p><code>Benchmarking: Kerberos AFS DES [48/64 4K]... DONE<br />
Short: 2281K c/s real, 2279K c/s virtual<br />
Long: 7241K c/s real, 7241K c/s virtual</code></p>
<p>&nbsp;</p>
<p>Avant:</p>
<p><code>Benchmarking: LM DES [128/128 BS SSE2-16]... DONE<br />
Raw: 9688K c/s real, 9688K c/s virtual</code></p>
<p>Après:</p>
<p><code>Benchmarking: NT LM DES [128/128 BS SSE2-16]... DONE<br />
Raw: 79468K c/s real, 79587K c/s virtual</code></p>
<p>&nbsp;</p>
<p>Et en bonus, juste pour la version 8 core cette fois:</p>
<p><code>Benchmarking: Apache MD5 [32/64 X2]... DONE<br />
Raw: 68674 c/s real, 68674 c/s virtual</code></p>
<p><code>Benchmarking: mysql [mysql]... DONE<br />
Raw: 20638K c/s real, 20643K c/s virtual</code></p>
<p><code>Benchmarking: Netscape LDAP SHA [SHA1]... DONE<br />
Raw: 14961K c/s real, 14961K c/s virtual</code></p>
<p><code>Benchmarking: NT MD4 [TridgeMD4]... DONE<br />
Raw: 18830K c/s real, 18844K c/s virtual</code></p>
<p><code>Benchmarking: Lotus5 [Lotus v5 Proprietary]... DONE<br />
Raw: 1204K c/s real, 1205K c/s virtual</code></p>
<p><code>Benchmarking: M$ Cache Hash [mscash]... DONE<br />
Raw: 12567K c/s real, 12567K c/s virtual</code></p>
<p><code>Benchmarking: Raw MD5 [raw-md5]... DONE<br />
Raw: 19448K c/s real, 19448K c/s virtual</code></p>
<p><code>Benchmarking: IPB2 MD5 [Invision Power Board 2.x salted MD5]... DONE<br />
Raw: 10592K c/s real, 10587K c/s virtual</code></p>
<p><code>Benchmarking: Eggdrop [blowfish]... DONE<br />
Raw: 136593 c/s real, 136627 c/s virtual</code></p>
<p><code>Benchmarking: Raw SHA1 [raw-sha1]... DONE<br />
Raw: 14720K c/s real, 14720K c/s virtual</code></p>
<p><code>Benchmarking: MS-SQL [ms-sql]... DONE<br />
Raw: 15442K c/s real, 15446K c/s virtual</code></p>
<p><code>Benchmarking: HMAC MD5 [hmac-md5]... DONE<br />
Raw: 5473K c/s real, 5477K c/s virtual</code></p>
<p><code>Benchmarking: WPA PSK [wpa-psk]... DONE<br />
Raw: 472 c/s real, 472 c/s virtual</code></p>
<p><code>Benchmarking: Netscape LDAP SSHA [salted SHA1]... DONE<br />
Raw: 14922K c/s real, 14926K c/s virtual</code></p>
<p>Ca c&#8217;est pour la théorie. Maintenant pour la pratique, j&#8217;ai encodé via htpasswd le mot de passe suivant <em>blogjohn</em>; et j&#8217;ai testé la vitesse de bruteforce avec les deux logiciels, le classique et le multi-thread donc.</p>
<p><span style="TEXT-DECORATION: underline">John the ripper:</span></p>
<p><code>guesses: 1 time: 0:11:01:58 c/s: 1704K trying: blogji1X - blogjoek<br />
Loaded 1 password hash (Traditional DES [128/128 BS SSE2-16])<br />
blogjohn (john)</code></p>
<p><strong>Soit 11h01 de travail.</strong></p>
<p><span style="TEXT-DECORATION: underline">John the ripper n-core (ici 8, bindshell.net):</span></p>
<p><code>thread: 0 guesses: 1 time: 0:01:27:22 c/s: 1702K trying: blogjim9 - blogjone</code></p>
<p><strong>Soit 1h30 de travail !</strong></p>
<p>Je sors un petit graphique de munin pour l&#8217;occasion, le premier histo est donc le john classique et le second le multi-core. Pour la petite histoire, cela a bien duré 1h30, mais on continue de voir une utilisation CPU parce que je n&#8217;ai pas stoppé les 7 autres threads.</p>
<p><img alt="johntheripper" align="left" src="http://www.john-jean.com/blog/wp-content/uploads/2009/09/johntheripper.png" width="450" height="311" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Donc pour conclure, comment on utilise la bête ?</p>
<p>Tout d&#8217;abord on récupère le john tunné pour l&#8217;occasion (il est aussi disponible sous forme de diff à appliquer, au choix):</p>
<p><code>wget <a href="http://www.bindshell.net/tools/johntheripper/john-1.7.2-bp17-mpi8.tar.gz">http://www.bindshell.net/tools/johntheripper/john-1.7.2-bp17-mpi8.tar.gz</a></code></p>
<p>On untar:</p>
<p><code>tar zxvf john-1.7.2-bp17-mpi8.tar.gz</code></p>
<p>Ensuite on installe <a title="libopenmpi-dev" href="http://packages.debian.org/fr/sid/libopenmpi-dev" target="_blank">libopenmpi-dev</a> pour compiler cette version de john sinon on a pas mpicc et <a title="open mpi" href="http://www.open-mpi.org/" target="_blank">openmpi-bin</a> pour utiliser mpirun:</p>
<p><code>apt-get install libopenmpi-dev<br />
apt-get install openmpi-bin</code></p>
<p>Puis on compile john:</p>
<p><code>cd john-1.7.2-bp17-mpi8/src/<br />
make //ici il va vous lister les possibilités de compilation optimisée selon votre OS, ce qui donne chez moi:<br />
make clean linux-x86-64<br />
cd ../run</code></p>
<p>Et enfin, notre salvateur:</p>
<p><code>mpirun -np &lt;NUMPROCS&gt; ./john -i pass.txt //&lt;NUMPROCS&gt; correspond bien entendu au nombre de core que vous avez à disposition.</code></p>
<p>Voilà amusez vous bien, et ne le faites pas tourner n&#8217;importe où, comme vu sur le graph, ca fera hurler munin et tous les softs de monitoring du sysadmin ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-jean.com/blog/crypto/john-the-ripper-multi-core-grace-a-open-mpi-233/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Se logger en administrateur sur la plupart des OS en 10 secondes</title>
		<link>http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168</link>
		<comments>http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168#comments</comments>
		<pubDate>Mon, 20 Apr 2009 14:20:32 +0000</pubDate>
		<dc:creator>John JEAN</dc:creator>
				<category><![CDATA[Sécurité informatique]]></category>
		<category><![CDATA[bruteforce]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[kon-boot]]></category>
		<category><![CDATA[ophcrack]]></category>
		<category><![CDATA[retrouver mot de passe]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows vista]]></category>
		<category><![CDATA[windows xp]]></category>

		<guid isPermaLink="false">http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168</guid>
		<description><![CDATA[Alors là y&#8217;a pas à dire, j&#8217;ai rarement fait mieux comme titre racoleur ! J&#8217;aurai du préciser qu&#8217;il faut un accès physique à la machine (en tout cas à son lecteur CD) mais ça aurait fait un titre trop long. Vous avez parfois besoin d&#8217;accéder à une machine sans en connaitre le mot de passe: [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="hoho" align="left" src="http://www.john-jean.com/blog/wp-content/uploads/2009/07/hoho.jpg" width="165" height="158" /></p>
<p>Alors là y&#8217;a pas à dire, j&#8217;ai rarement fait mieux comme titre racoleur ! J&#8217;aurai du préciser qu&#8217;il faut un accès physique à la machine (en tout cas à son lecteur CD) mais ça aurait fait un titre trop long. Vous avez parfois besoin d&#8217;accéder à une machine sans en connaitre le mot de passe: vous avez oublié votre mot de passe, vieille machine ressortie du grenier, maintenance, audit de sécurité, et pour certain d&#8217;entre vous, bidouilles que je ne veux pas connaitre :) Quand j&#8217;avais besoin de tripoter un Windows XP sans connaitre le password administrateur j&#8217;utilisais un Live CD de <a title="Live CD Ophcrack" href="http://ophcrack.sourceforge.net/">OphCrack</a> qui permet de cracker les hashs LM et NTLM (donc ceux de windows) à l&#8217;aide de Rainbow Tables, ou simplement en méthode bruteforce. Grosso-modo, il load les hashs de la SAM au boot et donc en extrait les passwords selon la méthode que vous avez défini.</p>
<p>Tout ça c&#8217;est révolu grâce à un développeur fou qui vient de release un programme qui permet de se logger sur l&#8217;ensemble de ces OS sans en connaitre le mot de passe administrateur (ou root pour le coup):</p>
<ul>
<li style="list-style: none"></li>
<li>Windows Server 2008 Standart SP2</li>
<li>Windows 7</li>
<li>Windows Vista Business SP0</li>
<li>Windows Vista Ultimate SP1 / SP0</li>
<li>Windows Server 2003 Enterprise</li>
<li>Windows XP SP1 / SP2 / SP3</li>
<li>Gentoo 2.6.24</li>
<li>Ubuntu 2.6.24</li>
<li>Debian 2.6.18-6</li>
<li>Fedora 2.6.25.9-76</li>
</ul>
<p></p>
<p>Le mieux c&#8217;est que cette liste n&#8217;est pas exhaustive, cela correspond simplement aux OS qu&#8217;il a testé.</p>
<p><span id="more-168"></span>
<p><a title="Kon-Boot, démarrer son OS sans en connaitre le mot de passe" href="http://www.piotrbania.com/all/kon-boot/" target="_blank">Kon-Boot</a> change le contenu du kernel de votre distrib &laquo;&nbsp;on the fly&nbsp;&raquo; (pendant le boot). Le développeur explique qu&#8217;il l&#8217;a conçu à la base pour Ubuntu à cause de ses soucis de mémoires, et qu&#8217;au fil du temps il l&#8217;a étendu, jusqu&#8217;à ce que cela devienne un vrai projet de sécu. Le soft est codé en ASM x86. Les changements à la volée du noyau Linux ou Windows ne produit évidement aucun changement physique, tout est fait virtuellement.</p>
<p>Comment ça marche ?</p>
<p>Il vous suffit de récupérer l&#8217;archive suivante: <a title="Télécharger / Download Kon boot" href="http://www.john-jean.com/blog/wp-content/uploads/2009/04/CD-konboot-v1.1-2in1.zip" target="_blank">télécharger kon boot</a>, ou <a href="http://www.piotrbania.com/all/kon-boot/data/CD-konboot-v1.1-2in1.zip" target="_blank">ici</a>, et de graver l&#8217;ISO pour en réaliser un CD amorcable. Ensuite vous démarrez votre machine en bootant sur le CD. Sous Windows la seule chose que vous ayez à faire c&#8217;est de taper un mot de passe quelconque à la place de celui demandé, et vous arriverez sur le bureau comme un utilisateur correctement authentifié.</p>
<p>Concernant les autres distribs, vous bootez sur le CD également, puis vous laissez votre OS démarrer. Quand ce dernier vous demande votre login vous saisissez &laquo;&nbsp;kon-usr&nbsp;&raquo;, si cela marche vous devez arriver loggé sur l&#8217;OS. Pour restaurer le système lorsque vous vous déloggez, il suffit juste d&#8217;utiliser &laquo;&nbsp;kon-fix&nbsp;&raquo;. Petit exemple pratique:<br />
<code><br />
Ubuntu 8.04 torpeda tty1<br />
torpeda login: kon-usr<br />
# id<br />
uid=0(root) gid=0(root)<br />
# whoami<br />
root<br /></code></p>
<p>Sinon:<br />
<code><br />
torpeda login: kon-usr<br />
/bin/sh: Can't open kon-usr<br />
FIX: type 'kon-fix' as login<br /></code></p>
<p>Pour ceux qui ont du mal à graver l&#8217;iso à l&#8217;aide de softs traditionnels type Nero, vous pouvez (et devez) télécharger <a title="Iso Burner" href="http://www.ntfs.com/iso-burning.htm">Iso Burner</a>. Si votre antivirus râle, le site de l&#8217;auteur dit que c&#8217;est un fait connu, mais que ce soft n&#8217;est évidement en rien un virus.</p>
<p>Voila avec cette méthode vous pouvez <a title="Retrouver mot de passe windows xp" href="http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168" target="_blank">retrouver votre mot de passe Windows XP</a>, <a title="Retrouver mot de passe root linux" href="http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168" target="_blank">retrouver votre mot de passe root pour Ubuntu</a>. Ce petit soft va vraiment faire beaucoup de bruit, simplicité, aucune modification et pour ma part, du jamais vu. Généralement c&#8217;est du bruteforce ou autre, mais pas du bypass ainsi sans aucune modification système.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.john-jean.com/blog/securite-informatique/se-logger-en-administrateur-sur-la-plupart-des-os-sans-en-connaitre-le-mot-de-passe-168/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<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>
