HZV Mag #3 - HZV / Hackerzvoice / The Hackademy
HZV Mag #3 - HZV / Hackerzvoice / The Hackademy
HZV Mag #3 - HZV / Hackerzvoice / The Hackademy
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
:<br />
Adapter le code source fourni en exemple pour<br />
remplacer la recherche exhaustive par une attaque<br />
par dictionnaire ne pose aucun problème<br />
majeur. La répartition de charge peut se faire en<br />
attribuant des parties plus ou moins grandes du<br />
dictionnaire en fonction de la capacité de calcul<br />
du client. Il faudra cependant prêter attention<br />
à la bande passante nécessaire pour transférer<br />
la liste de chaque client. Pour augmenter le<br />
nombre de clients potentiels on peut imaginer<br />
compresser cette liste avant de la transférer.<br />
Les tables « arc-en-ciel »<br />
<strong>HZV</strong> <strong>Mag</strong> <strong>#3</strong><br />
Système de crack distribué - par g0uZ<br />
boolean found=false; // permet de savoir si le hash a été trouvé<br />
void BruteForcePass::crackPass(string str){<br />
int current_size=str.length();<br />
if (found == true || current_size > parameters->max_size) return; // critères<br />
d'arrêt for (int idx=0; idx < parameters->chars_allowed_length; idx++ ){<br />
string tmp = str + parameters->chars_allowed[idx]; crackPass(tmp);<br />
}<br />
if ( current_size >= parameters->min_size ) { this->build_hash->Compute( str<br />
); // calcul du hash<br />
if ( this->build_hash ->hash == parameters->hash_to_hack ) { // comparaison<br />
found=true; // on l'a trouvé :-)<br />
result=str; // on le stock dans un coin<br />
}<br />
}<br />
}<br />
En cryptographie, une Rainbow Table<br />
(aussi appelée table «arc-en-ciel») est<br />
une structure de données créée en 2003<br />
par Philippe Oechslin pour retrouver un<br />
mot de passe à partir de son empreinte.<br />
La table arc-en-ciel est constituée de couples<br />
de mots de passe (chaque ligne possède un<br />
mot de passe de départ et un mot de passe<br />
d'arrivée). Pour calculer la table, on établit des<br />
chaînes grâce à un mot de passe initial. Celui-ci<br />
subit une série de réductions et de hachage afin<br />
d'obtenir des éléments intermédiaires (mots de<br />
passe et empreintes correspondantes). La fonction<br />
de réduction transforme une empreinte en<br />
un nouveau mot de passe. Afin d'éviter des<br />
problèmes de collision, plusieurs fonctions de<br />
réduction sont utilisées. Après plusieurs milliers<br />
Ç retour au sommaire<br />
d'itérations, on obtient un mot de passe en bout<br />
de chaîne. C'est celui-ci qui est stocké avec le<br />
mot de passe à l'origine de cette chaîne. Le reste<br />
de la chaîne n'est pas conservée afin de limiter<br />
la mémoire nécessaire. Il est toutefois possible<br />
de les retrouver en calculant l'ensemble de la<br />
chaîne à partir de l'élément en tête de liste.<br />
On considère une empreinte H engendrée à<br />
partir d'un mot de passe P. La première étape<br />
consiste à prendre H, lui appliquer la dernière<br />
fonction de réduction utilisée dans la table, et<br />
regarder si ce mot de passe apparaît dans la<br />
dernière colonne de la table. Si cette occurrence<br />
n'est pas trouvée alors on peut déduire que l'empreinte<br />
ne se trouvait pas à la fin de la chaîne<br />
considérée. Il faut revenir un cran en arrière.<br />
On reprend H, on lui applique l'avant-dernière<br />
fonction de réduction, on obtient un nouveau<br />
mot de passe. On hache ce mot de passe, on<br />
applique la dernière fonction de réduction et on<br />
regarde si le mot de passe apparaît dans la table.<br />
Cette procédure itérative se continue jusqu'à ce<br />
que le mot de passe calculé en fin de chaîne<br />
apparaisse dans la table (si rien n'est trouvé,<br />
l'attaque échoue). Une fois le mot de passe découvert<br />
dans la dernière colonne, on récupère<br />
le mot de passe qui se trouve dans la première<br />
colonne de la même ligne. On calcule à nouveau<br />
la chaîne tout en comparant à chaque itération<br />
l'empreinte obtenue à partir du mot de<br />
passe courant avec l'empreinte H du mot de<br />
44