SIMO Network 2009, ¡fracaso absoluto!

Ayer estuve de visita en la renovada Simo Network aprovechando una invitación enviada por motivos de trabajo. En algunos medios lo llaman el «Simo Descafeinado«, y lo cierto es que no es para menos. La edición de 2007 se extendió a toda la semana, contó con algo más de 200.000 visitantes, y ocupaba varios pabellones. La edición de este año han sido 3 días, 2 pabellones, y se estiman unos 20.000 visitantes escasos. Tan solo una décima parte de las visitas de la última edición, que ya de por sí tuvo poca repercusión. El recinto ferial le quedaba grande al SIMO, tan vacío, tan falto de visitantes.

Este año la tecnología ha tendido a cero. Tan solo he visto dos productos: Microsoft Surface, y el HP TouchSmart, que es una pantalla todo-en-uno al estilo iMac pero tactil. Y no es que el resto no me llamase la atención, es que no había productos. En un stand tenían tras la vitrina unas placas base Gigabyte que se pueden encontrar en cualquier tienda de informática, y eso era uno de los stands más «agresivos». En la mayoría solo había panfletos y ningún visitante a quien explicar las bondades de la compañía o del producto. Por poner un ejemplo, en el stand de Vodafone solo había papeles de propaganda, los mismos que podemos encontrar en cualquier tienda de la marca.

El SIMO está siendo tan flojo que ni siquiera se le está dando cobertura en los medios. En la prensa tradicional (El Mundo, El País, etc) se ha anunciado su apertura, pero nada más. Y en la prensa especializada (Xataka, The Inquirer, Noticias3D) no se ha publicado ni una sola noticia. ¡Ni una!. Ya veremos si la feria sobrevive al 2009.

Quizá lo más interesante sean las conferencias. En los huecos que me quedaban libres aproveché para asistir a un par de conferencias. En una, Enrique Dans (sale en varias fotos), conocido profesor de universidad, blogger y tecnólogo, exponía las bondades de la «Web 2.0» de cara a las empresas. Me resultó un tanto charlatán y bastante pretencioso, pero si dejabas a un lado los delirios 2.0 había conclusiones interesantes. Y por otro lado una mesa redonda sobre el uso de dispositivos para el acceso a las redes sociales, con participantes de la talla de Motorola, Telefónica, Apple, Tuenti o Xing.

La feria se ha convertido en un circo de «bussinessmen», hombres de negocios de mediana edad, lobos de mar con traje, corbata y zapatos brillantes, entregándose tarjetas de visitas los unos a los otros y hablando de dinero, negocio, mercado, aderezado con temas intrascendentales y adornado con aires de grandeza. Y ahí iba yo con mis pintas, vestido de negro, vaqueros, deportivas urbanas, camiseta friki, sudadera, equipado con la cámara de fotos en una mano, maleta de empresa en la otra, y tratando de que los encorbatados de los stands me tomaran en serio. Aunque para lo que ofrecían más perdían ellos que yo.

Y como curiosidad, me encontré a mis viejos amigos los comedores de bambú.

Podéis ver más fotos aquí: Galería SIMO Network 2009

Reventando hashes SHA1/MD5/MD4 con tu GPU (ATi/nVidia)

En la anterior entrega hemos visto cómo compilar John the Ripper para procesar hashes MD5 simples como los utilizados en muchas páginas web para realizar la autenticación del usuario. ¿Qué rendimiento obtiene John the Ripper en modo Raw-MD5?:

$ ./john –test

Benchmarking: Raw MD5 [raw-md5]… DONE
Raw:    3603K c/s

Aproximadamente unos 3,6 millones de claves por segundo con un procesador Intel Core2Duo E6550 a 2,33GHz. No está mal, ¿no?. Pero, ¿se puede mejorar?. Por supuesto, y ahora entenderéis por qué el título dice «reventando» y no «descifrando» como el anterior.

Podemos utilizar la tarjeta gráfica para acelerar el proceso.

Por todos es sabido que los chips gráficos han avanzado muchísimo en los últimos años. Tanto que para determinadas tareas son muchísimo más eficaces que las CPUs, como cálculos de física en videojuegos o cualquier otra tarea que implique cálculo numérico intensivo. Tanta es la diferencia que incluso se está empezando a utilizar en CPDs (Centros de Proceso de Datos) para procesar grandes volúmenes de información, dejando abandonada la práctica de montar granjas de PlayStation’s.

Para descifrar hashes utilizando la GPU podemos recurrir a programas comerciales como ElcomSoft Distributed Password Recovery (solo para tarjetas nVidia con soporte CUDA), o programas gratuitos como IGHASHGPU. Nos  centraremos en este último.

IGHASHGPU es una pequeña aplicación que descifra hashes SHA1/MD5/MD4 utilizando para ello una tarjeta gráfica nVidia con soporte CUDA, o una ATi basada en la serie RV7x0 (4550, 4670, 4830, 4730, 4770, 4850, 4870, 4890). En general las ATi son más rápidas con esta aplicación, y además más económicas.

¿Y cómo va de rápido?. Según la página oficial, con una ATi HD4850 (100€ en cualquier tienda española) obtendríamos un rendimiento de 980 millones de claves por segundo. ¡980 millones!. Eso es unas 250 veces más rápido que con la CPU. No está mal para ser una gráfica de 100€. Además, la aplicación soporta tanto SLI/CrossFire como tarjetas gráficas multiGPU, como puede ser la ATi HD4870x2. Con dos tarjetas gráficas ATi HD4870x2 montadas en CrossFire podríamos obtener un rendimiento teórico de 4600 millones de claves por segundo. Eso sí que es reventar claves.

Un ejemplo de uso en mi máquina:

C:\ighashgpu>ighashgpu.exe -t:md5 -c:d -max:20 passwords.txt
****************************************************************
***          MD4/MD5/SHA1 GPU Password Recovery v0.60        ***
***    For ATI RV 7X0 cards and nVidia ‘CUDA’ ones (G80+)    ***
***         (c) 2009 Ivan Golubev, http://golubev.com        ***
***             see «readme.htm» for more details            ***
****************************************************************

Found 1 CAL device(s)
Loading hashes from [passwords.txt].
Loaded 1 hashes (skipped 0 lines), removing duplicates…
Left with 1 hashes.
Starting brute-force attack, Charset Len = 10, Min passlen = 4, Max passlen = 20

Charset (unicode -> 0) [0123456789]
Charset in HEX: 30 31 32 33 34 35 36 37 38 39
Starting from [0000]
Hash type: MD5, Hash: 17117de9da6d0d71cb3ec97d3de5b3f0
Device #0: [RV7x0] 850.00 Mhz 800 SP
CURPWD: 65010337062103 DONE: 03.37% ETA: 21h 52m AVRSPD: 1226.9M

Aproximadamente 1227 millones de claves por segundo con una gráfica ATi HD4890, y con un uso de CPU del 0,00%. Salvaje, ¿no?.

Descifrar hashes MD5 con John the Ripper y Raw-MD5

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