27.11.2014 Views

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!