Cracking de pass via GPU (Cuda) avec Durandal (MD5, SHA, …)

25 décembre 2011 par Gaëtan Laisser une réponse »

Plop à tous … quoi de mieux en ces jours de fête que de tester son nouveau matos avec du cracking en GPU …

Le projet que je vais utiliser ici s’appelle Durandal, et c’est un projet français !!.

Le logiciel en question supporte :

Linux/Windows en 32 et 64 bits et est capable de péter du MD5,SHA1/256/512,NTLMv1 et MYSQL via GPU par CUDA (pas d’OpenCL pour le moment), soit par brute force, soit par les chaines de markov (j’ai pas tout lu sur le sujet, mais ça a l’air passionant xD).

Il fonctionne en distribué (possibilité d’avoir donc plusieurs machines effectuant les calculs nécessaire au cracking).

CUDA (partie apparement pas obligatoire)
Pour ce tuto, j’utilise ubuntu 11.10, avec un Phenom 810 X4 et une GTX260, avec les drivers NVidia de base (depuis la version 260, les drivers fournit proposent un support direct de CUDA, il suffit donc de récupérer et d’installer le « CUDA Toolkit for Ubuntu Linux 10.10″, c’est juste pour choper le nvcc et générer le cubin plus tard).

Puis on indique les path de cuda dans le ~/.bashrc :

  1. export PATH=$PATH:/usr/local/cuda/bin
  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib
  3. ## a rajouter pour un ubuntu 64 bits
  4. # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

Ensuite sur ubuntu la version de GCC/G++ est la 4.6 et cuda ne supporte pas les version au-dessus de la 4.5
Donc on install la 4.4, et l’on créer les update-alternatives pour switcher à nouveau en 4.6, histoire d’être pas trop crade

  1. apt-get install g++-4.4 gcc-4.4
  2. sudo update-alternatives –remove-all gcc
  3. sudo update-alternatives –remove-all g++
  4. sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.4 10
  5. sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
  6. sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.4 10
  7. sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
  8. sudo update-alternatives –install /usr/bin/cc cc /usr/bin/gcc 30
  9. sudo update-alternatives –set cc /usr/bin/gcc
  10. sudo update-alternatives –install /usr/bin/c++ c++ /usr/bin/g++ 30
  11. sudo update-alternatives –set c++ /usr/bin/g++

Un petit coup de update-alternatives pour switcher entre les version 4.6 et 4.4

  1. sudo update-alternatives –config gcc
  2. sudo update-alternatives –config g++

Durandal

On passe à l’installation de durandal (la manip est indiqué sur le site web) :

  1. apt-get install cmake make g++ libboost-serialization-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev python2.6 openssl git-core && git clone http://durandal-project.org/durandal/

Dans le README, il est conseillé de faire un nvcc sur le fichier src/agent/kernels/md5.cu, puis faire un bin/cudump md5.cubin, mais le fichier hpp généré ne peut être utilisé (le build plante, au final, mon GPU sera tout de même détecté et utilisé donc c’est pas trop grave).

Donc on passe direct à la compil/install.

  1. cd durandal/build && sh install_linux.sh

Ensuite, il suffit de suivre les instructions des différents executables

durandal.sh, qui créer le serveur en demandant les ports d’administration (j’utilise le port 21000) et de cracking (j’utilise le port 20000) pour les clients

  1. cd ../bin && sh durandal.sh

admin, qui drope une console d’admin pour ajouter hashes

  1. ./admin 127.0.0.1 -p 21000 -k mdpadmin
  2. add bf md5 icivotrehashmd5

agent, qui permet au client de lancer le cracking (à distance, ou en local)

  1. ./agent

Les petits screenshots (avec le md5 mis en exemple sur le site du projet durandal) :

le serveur et la console d’administration :

le client avec le benchmark à son lancement (sur la même machine dans mon cas), ma GTX260 n’est pas aussi bien que ce que j’espérais, mais elle à quand même deux ans ^^ :

Un projet sympa à suivre …

Ressources :
Durandal : http://durandal-project.org/index.html
Alternative Gcc/G++ : http://askubuntu.com/questions/26498/choose-gcc-and-g-version
CUDA (toolkit et SDK) : http://developer.nvidia.com/cuda-toolkit-40

Publicité

Laisser un commentaire