Sep 17 2009

Descifrar hashes MD5 con John the Ripper y Raw-MD5

Categoría: General, Linux, SeguridadAxelko @ 10:29

John the Ripper es una conocida herramienta de auditorías de seguridad, muy utilizada para (ejem ejem) comprobar si nuestras claves son robustas. Para ello se le proporciona un fichero de entrada con los hashes de las claves que queremos obtener comprobar, y opcionalmente un diccionario o juego de caracteres con los que realizar las pruebas.

John the Ripper no soporta de serie el tratamiento de passwords en formato MD5 simple. Es decir, no soporta un archivo de claves con formato “nombre:clave” como el utilizado en passwd. Un ejemplo:

pepe:7ef0b3c0aa6339c701ff370795873628
juan:5fc6c5c2aecd3a419109cb34ccb7da70
jorge:b662c2e331741ada2770cb885b3f696a

Para que John the Ripper funcione con este formato necesitamos parchear su código fuente con Raw-MD5, y después compilar.

Descargar lo necesario

Vamos a utilizar John the Ripper 1.7.2 y el parche Raw-MD5 para 1.7:

$ wget http://www.openwall.com/john/f/john-1.7.2.tar.gz
$ wget ftp://ftp.openwall.com/pub/projects/john/contrib/john-1.7-rawmd5-ipb2-4.diff.gz

Parchear

Descomprimimos ambos archivos y parcheamos el código fuente:

$ tar zxvf john-1.7.2.tar.gz
$ gunzip
john-1.7-rawmd5-ipb2-4.diff.gz
$ cd john-1.7.2
$ patch -p1 < ../
john-1.7-rawmd5-ipb2-4.diff

Compilar

A continuación compilamos el código fuente ya modificado. Con la primera llamada a “make” visualizaremos un listado de plataformas, donde deberemos elegir la que mejor se ajuste a nuestro sistema para la segunda llamada. En mi caso, la mejor es “linux-x86-sse2″:

$ cd src
$ make
$ make clean linux-x86-sse2

El código fuente no tiene una orden “make install” para copiar los binarios a nuestro sistema. En su lugar, se crea un directorio “run” al mismo nivel que “src” que contiene el resultado de la compilación. Podemos mover este directorio libremente a una ubicación mejor y borrar el código fuente si no lo vamos a necesitar más.

Ejecutar

Vamos a suponer que tenemos un archivo “/home/usuario/claves.txt” con el contenido que aparece en el párrafo introductorio del artículo. Para procesar sus claves haríamos la siguiente llamada:

$ ./john –format=raw-MD5 /home/usuario/claves.txt

Tags: , , , , ,


Mar 12 2009

Encendido y apagado remoto de una máquina Windows desde Linux

Categoría: CaspaServer, Internet, Linux, RedesAxelko @ 12:50

Vamos con una entrada rápida. ¿Quién no tiene en su casa una máquina montada con Linux y encendida 24h al día, 365 días al año?. ¿Que no la tienes?. ¡Venga ya!

(Espérate a mi super artículo sobre cómo preparar un servidor casero basado en Linux, si es que algún día lo acabo…)

Muchos de nosotros tenemos un servidor de descargas en casa montado en una máquina Linux, o incluso un router basado en Linux (como el Linksys WRT54GL), que podemos utilizar como pasarela para encender y apagar nuestro PC habitual. Supongamos que disponemos de acceso por SSH desde el exterior a nuestra máquina Linux, y que queremos encender de forma remota nuestro PC habitual para recuperar algunos documentos de su disco duro.

Necesitaremos: samba y alguna utilidad WOL:

# sudo aptitude install wakeonlan samba-client

Con esto tenemos todo el software que necesitamos. Para hacer el encendido y apagado remotos además necesitaremos conocer la IP y MAC de la máquina remota que queremos manejar.

Para despertar la máquina usaremos Wake On Lan (debe estar activado en la BIOS de la máquina a despertar):

# wakeonlan 00:11:22:33:44:55

Y para apagar de forma remota usaremos Samba:

# net rpc shutdown -t 10 -f -C “Apagando el sistema de forma remota…” -I 192.168.0.2 -U usuario%password

El parámetro “-t” expresa el tiempo de espera antes de realizar el apagado, “-f” indica forzar la terminación de todos los programas (garantiza que no se quede a la espera de algún programa y no se apague), “-I” permite establecer la IP de la máquina remota, y por último “-U” establece un usuario con permisos para realizar el apagado. Si no queremos indicar el password en el prompt podemos eliminar la última parte “%password”, y la utilidad net nos preguntará la clave al estilo sudo.

En otro capítulo veremos cómo se puede acceder a esa máquina por Terminal Server (en Windows XP: Escritorio Remoto) sin necesidad de abrir puertos en el router, y con una conexión 100% cifrada. La pista de nuevo es SSH, una herramienta con mucho poder. Pero primero veremos cómo tunelizar y activar un proxy dinámico para lo que pudieramos necesitar.