jueves, noviembre 29, 2012

Creando un cluster casero para cracking [Linux]

Objetivos:

Intentaremos conectar todos nuestros PCs para poder tener un rendimiento mas elevado a la hora de realizar una tarea, que en este caso sera la de crackear hashes.

Conceptos básicos:
¿Qué es un clúster?
Conjuntos o conglomerados de computadoras construidos mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. (Wikipedia)
¿Qué es Cracking?
Es un proceso informático que consiste en descifrar la contraseña de determinadas aplicaciones elegidas por el usuario. Se busca codificar los códigos de cifrado en todos los ámbitos de la informática. Se trata del rompimiento o desciframiento de claves. (Wikipedia)
¿Qué es Mpi?
Es un estándar que define la sintaxis y la semántica de las funciones contenidas en una biblioteca de paso de mensajes diseñada para ser usada en programas que exploten la existencia de múltiples procesadores. (Wikipedia)



Comenzamos  

Para este tutorial usare la ultima versión de Ubuntu y VMware (Si desean uno libre VirtuaBox) , aunque pueden usar cualquier distribución Linux y obviamente si lo que pretendemos es usar varios ordenadores no usaremos maquinas virtualizadas sino reales.

Lo primero que necesitamos sera un mínimo de 2 ordenadores (en mi caso serán 2 maquinas virtuales pero como les dije para montar un cluster real necesitamos pcs reales), uno hará de servidor y el resto serán nodos.

Bueno no es explicare como instalar VirtualBox ni el Ubuntu pero si tienen dudas solo devén mandarme un mensaje o dejar un comentario y gustosamente les contestare lo antes posible.

Instalando servidor: 

  1. Necesitaremos un programa que nos permita realizar ataques de fuerza bruta  que sea capaz de romper algoritmos de cifrado o hash, como SHA-1, DES, MD5 y otros. En nuestro caso usaremos Jhon the ripper pero perfectamente podreis usar otro si os familiarizais mas con el.

  2. Openssh-server o si no quieren usar software libre Secure  Shell . Lo utilizaremos para realizar comunicaciones cifradas a traves de una red usando el protocolo SSH.

  3. Y por ultimo el paquete libmpich1.0-dev en el que encontraremos PICH que es un programa de biblioteca de desarrollo de libre disposición implementación portable de MPI, una norma estándar de paso de mensaje para aplicaciones de memoria distribuida que utilizan computación paralela. MPICH es software gratuito y disponible para la mayoría de sistemas Unix (incluyendo Linux y Mac OS X) y Microsoft Windows.
    • libmpich1.0-dev
    • libmpich-mpd1.0-dev
    • libmpich-shmem1.0-dev -
    • mpich2
      
Para instalar solo debemos escribir el siguiente script
sudo apt-get install libmpich1.0-dev libmpich-mpd1.0-dev
libmpich-shmem1.0-dev mpich2 john openssh-server
 Con este mini script descargaremos y instalaremos todos los paquetes necesarios para crear nuestro clúster para cracking. Ahora lo siguiente es configurar la red del clúster para que cada nodo se pueda comunicar entre si, en la misma terminal escribimos
1
gedit /etc/hosts
En ese archivo nos aparecerán dos primeras líneas las cuales debemos cambiar la segunda, la dirección ip que aparece (127.0.0.1) por la dirección interna que poseemos, en este caso sino tenemos dirección basta hacer un ifconfig para verla. Ahora para crear una dirección IP con su máscara hacemos dentro de la terminal:
1
sudo ifconfig eth1 192.168.0.3 netmask 255.255.255.0
Donde 192.168.0.3 es la IP de tu maquina. Con esto ya tenemos habilitada nuestra tarjeta de red dentro de la red interna con su respectiva dirección IP. Ahora si cambiamos y guardamos nuestros datos dentro del archivo hosts:
127.0.0.1 localhost 192.168.0.3 virus-laptop servidor
Ahora lo que haremos sera crear el ususario cluster con el cual nos comunicaremos con los demas nodos , en la misma consola escribimos:






sudo useradd -m -s /bin/bash cluster //creamos el usuario cluster
sudo passwd cluster // creamos la contraseña para el usuario cluster
Enter new UNIX password: //
Retype new UNIX password:
passwd: password updated successfully
sudo su - cluster -c "mkdir ~/bin;export PATH=~/bin:$PATH" // Creamos la carpeta en la cual podremos dejar público hacia los demás nodos la información que se necesite procesar.

Configurando MPICH
Creamos un archivo que va hacer nuestro menú de configuración del clúster este debe ir en el directorio ~

touch ~/.mpd.conf
Lo abrimos y ponemos dentro:


Gedit ~/.mpd.conf
secretword=ricteam
Guardamos y listo. Esta configuración la tenemos que hacer en todos los nodos. Ahora crearemos el archivo donde estará la información de los procesadores de cada nodo , esto servirá para que el programa MPICH sepa cuantos procesadores puede utilizar:


touch ~/mpd.hosts
gedit ~/ mpd.hosts
Lo abrimos y escribimos el numero de procesadores que queremos que utilice. Para saber el número de procesadores que tiene nuestra PC escribimos en la terminal

sudo cat /proc/cpuinfo
De esta forma podemos poner el numero de procesadores deseado para el procesamiento de MPICH. Luego que sepamos cuantos procesadores vamos a poner en la configuración de mpd.hosts escribimos dentro de este archivo 192.168.0.3:1 en este caso es 1 procesador el que deseamos poner con MPICH. Ahora probaremos si el servidor clúster funciona correctamente para eso haremos uso de tres comandos:
  • Mpdboot: Poner en marcha el “entorno” MPICH2Mpdtrace : devuelve las máquinas que se encuentran dentro del cluster.
  • mpd –help : información del comando
  • mpdallexit : Apaga el “entorno” MPICH2
Si todo sale bien podemos continuar con la siguiente etapa sino es porque posiblemente no le hemos dado permiso al archivo ~/mpd.hosts
Configurando a Jhonsito (Jhon The Ripper)
Vamos a descargar el paquete que permite utilizar a nuestros programas de craking para varios procesadores:




cluster@virus-laptop:~$ mkdir source
cluster@ virus-laptop:~$ cd source
cluster@ virus-laptop:~/source$
Desempaquetamos el jtr

tar zxvf john-1.7.2-bp17-mpi8.tar.gz
Nos cambiamos de directorio

cd john-1.7.2-bp17-mpi8/src
Lo instalamos

make generic
Para comprobar que el Jhon The Ripper quede bien configurado ejecutamos la siguiente instrucción ubicándonos en la carpeta john-1.7.2-bp17-mpi8/run:

john -format=DES –test
Movemos todo a la carpeta bin para manejar el jhon de forma más cómoda

mv * ~/bin
Como podemos ver la ejecución fue satisfactoria y procedemos a continuar configurando los nodos del clúster. Ahora debemos configurar los nodos los cuales deberán tener la misma contraseña y el mismo usuario que anteriormente llamamos clúster.
Primero: repetimos la segunda etapa y agregamos esto
1
sudo ifconfig eth1 192.168.0.2 netmask 255.255.255.0
Con esto ya tenemos habilitada nuestra tarjeta de red dentro de la red interna con su respectiva dirección ip.
Segundo: pasamos a configurar el MPICH. Todo esto lo haremos desde el usuario clúster del servidor

cluster@radical es el mismo cluster@virus-laptop
Lo que hicimos allí arriba fue crear una llave de identificación pública la cual nos servirá para que todos los nodos nos reconozcan , ahora el siguiente paso es mandar nuestra llave publica a los demás nodos para que nos reconozcan:
Con esto lo que hicimos fue crear una carpeta para alojar nuestras llaves
Mandamos nuestra llave al nodo
Le decimos cuantos procesadores tenemos para utilizar
Donde dice passphrase colocamos ricteam. Por último abrimos nuestro menú de configuración de clúster y ingresamos el nuevo nodo.

gedit ~/mpd.hosts
Escribimos dentro :192.168.0.2:0
Scp: es un programa que reemplaza al FTP, y a diferencia de éste, es seguro. Es decir la información de usuario y claves, así como el contenido de los archivos transferidos son encriptados antes de ser transferidos para evitar que puedan ser espiados en su paso por la red. Ahora ejecutamos este script:
for i in `cut –delimiter=: -f1 ~/mpd.hosts`; // desde i vamos a delimiter los campos para que cada maquina copie del servidor el archive mpd.hosts do scp ~/.mpd.conf cluster@$i:~;// para cada uno de las maquinas que posean este usuario haga una copia scp ~/mpd.hosts cluster@$i:~;done // copiamos el archivo mpd.hosts en cada máquina con el usuario cluster

Crackeando diferentes cifrados

Mpiexec: Asume una estructura de directorios homogénea en el clúster, buscando el ejecutable por defecto en el directorio actual de trabajo. Sobre la terminal del usuario clúster del servidor escribimos:



echo 497b0bd7178e735eef67720b00c9fc96> dato.txt
mpdboot
for i in `cut --delimiter=: -f1 ~/mpd.hosts`;do scp ~/dato.txt cluster@$i:~;done //repartimos el archivo para su ejecucion conjunta
Por ultimo ejecutamos:

mpiexec -np 3 john --format:raw-MD5 dato.txt // manda señal a cada nodo para que haga el trabajo uno por parte del archivo pero todos al mismo tiempo.
Hasta aquí ya deberías tener tu propio cluster para cracking distribuido :)

1 comentario:

  1. hola me parece muy interesante este post, con esto me imagino que la contraseñad que esta en el archivo shadow puede ser decifrada, podrias decirme que debo hacer para conseguir esa contraseña, lo digo porque me gustaria presentarlo como proyecto de fin de curso de mi instituto gracias espero tu respuesa mi correo es tito260784@hotmail.com un saludo

    ResponderEliminar