Dimanche le 26 juillet 2009 à 06:37
MD5Spider, Reversing d’un hash MD5
Parmi les grands avantages de l’algorithme de hachage MD5 est le fait qu’il est irréversible, autrement dit à sens unique, du coup même si on connais la sortie, il est difficile de trouver l’entrée qui a produit cette sortie.
C’est pour cette raison que la fonction MD5 est fréquemment utilisée pour sécuriser les mots de passes dans les bases de données! en effet plusieurs CMS réputés ,comme Joomla/Drupal/OsCommerce etc.. , l’utilise comme solution de cryptage de mot de passes des utilisateurs.
La recherche autour du reversing de l’algorithme de hashage MD5 est toujours active, or à ce jour, on a pas encore parvenu à le casser! par contre il existe des outils qui permettent de bruteforcer un password, d’où le brutfeorcing est un type d’attaque qui a pour principe de tenter toutes les combinaisons possibles jusqu’à ce qu’il tombe sur le bon passe! du coups ça risque de prendre des jours voir des années si le passes est long ou contient des caractères spéciaux.
Parmi les outils que je vous recommande :
- MDCrack (13.5 millions de hashes par seconde)
- Extreme GPU Bruteforcer (230 millions de hashes par seconde)
- BarsWF MD5 Bruteforcer (430 millions de hashes par seconde)
Les tests de performances on été effectués sur une machine avec un processeur Quad Core QX6700 (2.66Ghz) supporté par 4Go de RAM DDR2, une carte graphique Nvidia 8800GTX le tout sur carte mère basée sur un chipset Intel P45.
Et comme on a pas toujours le temps de bruteforcer des passwords et que ça demande un matériel puissant pour plus de rapidité, des « MD5 Reverse Databases (MD5RDB) » sont apparus sur la toile, leurs principe est de rassembler un nombre immense de correspondances (plaintext/hash) dans une table remplie à partir d’un dictionnaire, des passes déja crackés ou de mots contenu dans une page web, le remplissage est souvent automatisé comme il peut se faire manuellement par les utilisateurs, ainsi on peut questionner la base de données sur un md5 et cette dernière nous retourne son plaintext si il est connu.
il existe sur internet beaucoup de site MD5RDB qui offrent ce service gratuitement qui deviennent de plus en plus nombreux, la raison pour laquelle j’ai conçu MD5Spider: un petit script en PERL qui permet d’interroger une bonne dizaines de sites offrant ce service et récupérer le plaintext du hash si il existe dans leurs bases de données, ça vous permettra de gagner du temps avant de penser au bruteforcing de vos passes .
Voici à quoi ça ressemble son éxecution en ligne de commande :

Ci-dessous le code source :
#!/usr/bin/perl
print q(
/---------------------------------------------------\
| MD5 Spider 1.0 |
| Mohammed CHERIFI - mohammed@mcherifi.org |
\---------------------------------------------------/
);
use IO::Socket;
sub findme()
{
my $md5 = $_[0];
my $host = $_[1];
my $uri = $_[2];
my $pdata = $_[3].$md5;
my $regexp = $_[4];
$datalen = length $pdata ;
syswrite STDOUT, "\n\n\tRecherche sur $host"
my $sock = new IO::Socket::INET (
PeerAddr ="$host",
PeerPort =80,
Proto ="tcp"
);
if(!$sock){
print " [!] Connection time out : $!\n";
return false;
}
else
{
print $sock "POST /$uri"."$md5"." HTTP/1.1\n";
print $sock "Host: $host\n";
print $sock "Referer: $host\n";
print $sock "Accept-Language: en-us\n";
print $sock "Content-Type: application/x-www-form-urlencoded\n";
print $sock "User-Agent: MorX-Zilla\n";
print $sock "Connection: Keep-Alive\n";
print $sock "Cache-Control: no-cache\n";
print $sock "Content-Length: $datalen\n\n";
print $sock "$pdata\n";
while ($answer = <$sock>)
{
if ($answer =~ /$regexp/ )
{
print "Cracked ! \n\n\n\t"
sleep(1);
print "Le plaintext est : ".$1."\n\n\t";
print "[+] Merci $host :P Enjoy ;) \n\n";
exit(0);
}
}
close($sock);
}
}
print q(
Etrez le hash MD5
Example : b2f3d1e0efcb5d60e259a34ecbbdbe00
hash MD5: );
$hash=$_1;
chomp ($hash);
unless($hash =~ /[0-9a-fA-Z]{32}/) {die "n'est pas un md5 :-/ !\n"};
print "Recherche en cours ....\n";
@sites = (
["passcracking.ru","/index.php?xD=","datafromuser=","lor=#FF0000>(.*?)<\/td>.*?<\/td><\/"],
["md5.benramsey.com","/md5.php?hash=","","TA.(.*?)..><\/s"],
["md5.noisette.ch","/md5.php?hash=","","TA.(.*?)..><\/s"],
["gdataonline.com","qkhash.php?mode=xml&hash=","","t>(.*?)<\/re"],
["md52.altervista.org","index.php?md5=","","d: .*?ed\">[^\[](.*?)<\/font><\/b"]
);
$siteindex = 0;
foreach (@sites){
$site = $sites[$siteindex][0];
$uri = $sites[$siteindex][1];
$pdata = $sites[$siteindex][2];
$regex = $sites[$siteindex][3];
findme($hash,$site,$uri,$pdata,$regex);
$siteindex++;
}
print "\n\nash introuvable! John est ton ami ;)\n\n";
Tags :crack md5, md5, md5rdb, md5spider, reverseing md5
- Categorie: Hacking
- (4) Commentaires













Jester
août 4th, 2009 at 12 h 22 min
je sais pas si ce ci peut s’appeler « Reversing d’un hash » … c’est pas du RE je trouve …
pynsso
septembre 22nd, 2009 at 22 h 51 min
3tatek khatrek t publié had l code source :D
Canyo****N
octobre 25th, 2009 at 14 h 44 min
md5 avec grain de sel et beaucoup de poivres et on en pa
Canyo****N
octobre 25th, 2009 at 14 h 44 min
md5 avec grain de sel et beaucoup de poivres et on en parle plus ;) lol