En esta semana estuve trabajando en la creación de un cluster usando 2 computadoras con ubuntu 10.04 con el fin de usar Jonh the ripper MPI para el decifrado de contraseñas .
jueves, 16 de febrero de 2012
Computacion paralela cluster y JTR mpi
La siguiente entrada se escribió en español por el motivo que sea comprendida mejor pero si se desea en ingles se puede hacer es una contribucion para la clase y laboratorio
La implementación de soluciones informáticas para el descifrado de contraseñas mediante técnicas de fuerza bruta o ataques por diccionario depende sensiblemente del poder de procesamiento con el que se cuente. En los últimos tiempos han surgido técnicas que aceleran el proceso, reduciendo notoriamente los tiempos de cómputo mediante utilización de tablas precomputadas llamadas tablas Rainbow [1]. Este método, a costa de sacrificar espacio de almacenamiento y tiempo para generar las tablas, permite abordar eficientemente el problema, principalmente para contraseñas de sistemas operativos MS-Windows. En cuanto a la eficiencia, debe tenerse en cuenta que una tabla rainbow es generada con varios parámetros predeterminados, como el alfabeto (letras, números y/o símbolos) y un límite en la longitud de las posibles contraseñas, por lo que la probabilidad de éxito del descifrado dependerá de esta selección. Por otra parte, la complejidad computacional se desplaza a la generación de estas tablas y han comenzado a surgir proyectos de computación distribuida para abordar esta temática.
El objetivo es de aplicar esa potencia conjunta para el descifrado de contraseñas
John the Ripper es un programa de criptografía que aplica fuerza bruta para descifrar contraseñas. Es capaz de romper varios algoritmos de cifrado o hash, como DES, SHA-1 y otros. Es una herramienta de seguridad muy popular, ya que permite a los administradores de sistemas comprobar que las de los usuarios son suficientemente buenas.contraseñas .John the Ripper es capaz de autodetectar el tipo de cifrado de entre
muchos disponibles, y se puede personalizar su algoritmo de prueba de
contraseñas. Eso ha hecho que sea uno de los más usados en este campo.
John El
MPI Ripper es una versión actualizada del parche Ryan Lim como John the
Ripper para apoyar MPI, además de un gran número de parches de terceros
para apoyar sistemas de cifrado adicionales y otras características. MPI
allows you to use multiple processors on a single system, or a cluster
of systems for cracking passwords using John the Ripper. MPI
permite el uso de múltiples procesadores en un único sistema, o un
conjunto de sistemas para el craqueo de contraseñas utilizando John the
Ripper .
Comenzando
Se utilizo UBUNTU 10.04 una version estable y nos ofrece soporte técnico extendido (LTS) se configuro una red con un router linksys WR54G con acceso a internet y se les asigno IP estática conectadas por cable .
Antes de comenzar hay que saber algunos conceptos:
Beowulf fue un proyecto realizado
por la NASA allá por 1994 con el objetivo de crear un cluster de coste
reducido.
Hoy en día se conoce a un sistema Beowulf a
una arquitecutra multi-computadora que suele ser utilizada para
computación paralela. Ésta sigue un modelo master/slave, es decir, un
nodo que hace de servidor y un conjunto de nodos que se conectan
mediante Ethernet (normalmente).
MPI es un estándar que proporciona una API para realizar el paso de mensajes. De hecho, MPI significa Message Passing Interface, Interfaz de Paso de Mensajes.
Dentro de MPI podemos distinguir dos tipos de entornos distintos: el entorno de desarrollo y el entorno de ejecución.
No es necesario que el entorno de desarrollo esté instalado en cada
nodo del cluster, pero en cambio si que es necesario que todos los nodos
tengan instalado el entorno de ejecución.
Los requisitos iniciales para poder montar el cluster son los siguientes:
- Todos los nodos (tanto el master como los slaves) deben estar interconectados entre sí. Se pueden utilizar independientemente cualquier topología de red, ya que el modelo en estrella lo estableceremos en la lógica de la aplicación.
- Todos los nodos deben de tener instalado el entorno de ejecución de MPI.
- Cada slave debe de tener su propio servidor SSH instalado.
No hes obligatorio, pero si lo recomiendo que todos los nodos tengan
la misma versión de MPI y de ser posible, también la misma versión del
sistema operativo.
Ahora bien, ¿cómo funciona OpenMPI? Cuando nosotros
ejecutamos una aplicación a través del entorno de ejecución de MPI, en
función de la configuración indicada (hosts, slots, número de procesos,
...), éste realiza una conexión a través de SSH a cada
uno de los nodos que vayan a ejecutar uno o varios procesos y los lanza
remotamente. A partir de aquí empieza el paso de mensaje entre los
distintos nodos.
Cuando realizamos una conexión a través de SSH el servidor nos pide usuario y contraseña, los cuales son desconocidos para MPI. Para evitar este problema debemos configurar cada servidor SSH para que permita al usuario actual loguearse sin contraseña.
SSH nos
permite ejecutar comandos remotos, es decir, ejecutar comandos que
estén alojados en el servidor. Como es lógico, la aplicación alojada en
el master no está en los slaves, así que para poder ejecutarla, primero es necesario llevarla hasta allí.
Esto lo podemos solucionar de tres formas distintas. La primera, la
más simple, consiste en copiar el código fuente en cada nodo y
conectarnos por SSH para compilarlo; la segunda consiste en copiar el ejecutable en cada nodo (con scp por ejemplo) y en la misma ubicación en todos los nodos; y la tercera es algo más compleja y consiste en montar un servidor NFS.
Montar un servidor NFS nos permite más versatilidad. La idea es la siguiente, lo instalamos en el master y en cada slave modificamos el fichero /etc/fstab para que que se conecte automáticamente al iniciar. Así, cada vez que compilemos en el master no será necesario volver a copiar el ejecutable en cada slave.
Paquetes Requeridos
- libmpich1.0-dev - las bibliotecas MPICH estáticas y los archivos de desarrollo
- libmpich-mpd1.0-dev - las bibliotecas MPICH estáticas y los archivos de desarrollo
- shmem1.0-dev - las bibliotecas MPICH estáticas y los archivos de desarrollo
- openssh-server - Secure Shell (SSH) del servidor, para el acceso seguro a equipos remotos
- MPICH2 - Aplicación del mensaje MPI Pasando interfaz estándar
- mpich2-doc — Documentation for MPICH2 MPICH2-doc - Documentación para MPICH2
- john active password cracking tool juan - herramienta activa obtención ilegal de contraseña
- build-essential - la lista de información para construir paquetes esenciales
Instalación de paquetes
sudo apt-get install libmpich1.0-dev
sudo apt-get install libmpich-mpd1.0-dev
sudo apt-get install libmpich-shmem1.0-dev
sudo apt-get install mpich2
sudo apt-get install mpich2-doc
sudo apt-get install john
sudo apt-get install openssh-server
sudo apt-get install build-essential
sudo apt-get install libmpich-mpd1.0-dev
sudo apt-get install libmpich-shmem1.0-dev
sudo apt-get install mpich2
sudo apt-get install mpich2-doc
sudo apt-get install john
sudo apt-get install openssh-server
sudo apt-get install build-essential
Tienes que saber tu Ip
Para ubuntu en ingles
ifconfig|grep "inet addr"
Para ubuntu en español
ifconfig|grep "Direc. inet"
Hay que agregar la ip y el nombre de usuario
sudo gedit /etc/hosts
127.0.0.1 localhost
192.168.1.201 server // se modifico la ip
192.168.1.201 server // se modifico la ip
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Configuración de Usuario
sudo useradd -m -s /bin/bash cluster
Hay que crear un nuevo grupo llamado cluster en caso de que no lo tengas
sudo passwd cluster
Te dira que escribas una contraseña debe de ser la misma para todos
touch ~/.mpd.conf
chmod 600 ~/.mpd.conf
echo secretword=pass >>~/.mpd.conf (pass) se cambia por la contraseña del grupo cluster
chmod 600 ~/.mpd.conf
/sbin/ifconfig|grep "inet addr"
Te muestra la ip
cat /proc/cpuinfo|grep processor|wc -l
Debe de mostarte el numero de procesadores virtuales.echo 192.168.1.201 >>~/mpd.hosts
192.168.1.201 la ip del servidor :1 es el numero de procesadores
Comandos de MPD
mpdboot : inicializa el cluster
mpdtrace : enlista todos los nodos del cluster asi como el servidor
mpdallexit: apaga el cluster
mkdir source
cd source
wget http://www.bindshell.net/tools/johntheripper/john-1.7.2bp17mpi8.tar.gz
wget http://www.bindshell.net/tools/johntheripper/john-1.7.2bp17mpi8.tar.gz
tar -zxf john-1.7.2-bp17-mpi8.tar.gz
cd john-1.7.2-bp17-mpi8/src/
make
Te muestra una lista selecciona a la que corresponda segun tu arquitectura o sistema operativo
make clean linux-x86-sse2
inux-x86-sse2 se selecciona esta por ser intel
../run/john -format=DES -test
mv ../run/* ~/bin
Verificar que tengamos la version correcta y que sea detectada
john|grep version
debe mostar :
John the Ripper password cracker, version 1.7.2_bp17_mpi
Suscribirse a:
Entradas (Atom)