10 febrero 2011

¿Cómo es posible sacar el algoritmo de generación de contraseñas de un router ADSL? ¿Qué es lo que hay que hacer? En el caso del popular Comtrend y su configuración de telefónica WLAN_XXX y Jazztel JAZZTEL_XXXX,  una posible solución a este "reto", es la que nos ha permitido publicar un contribuidor.ch anónimo:

Estos son los pasos que ha descrito:

1) Pillar ultimo/s firmware telefonica o jazztel
e.g: http://www.mediafire.com/?3gi148uce3iavhb

2)
Sacar el squashfs de ese blob:
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>f = open("CT-5365-CFE-A111-306TLF-C02_R16.bin","rb")
>>>content = f.read()
>>>content.index("sqsh")
62684
>>>f = open("out.bin","wb")
>>>f.write(content[62684:])
>>>f.close()
>>>>
>
3)
Sacar lo que hay dentro del squashfs...

$ wget
'http://svn.gna.org/viewcvs/*checkout*/openbox4/trunk/tools/unsquash/unsquash.py?revision=54&pathrev=75'
$ sudo easy_install -U pylzma (y si no os rula, buscar el pylzma y lo
compilais a manija -python setup.py install)
$ mkdir temp
$ python unsquash.py out.bin temp
$ cd temp
$ ls
bin  dev  etc  lib  linuxrc  mnt  proc  sbin  share  usr  var  webs
$ cd lib
$ strings libpsi.so | grep -A 10 -B 10 md5
tr69cUpgradeAvailable
tr69cInformEnable
tr69cInformTime
tr69cInformInterval
tr69cAcsURL
WLAN_%02X%02X
C%02X%02X%02X%02X%02X%02X
ifconfig wl0 /var/hwaddr
/var/hwaddr
bcgbghgg%02X%02X%02X%02X%02X%02X%s
echo -n %s /var/md5encode
md5sum /var/md5encode /var/md5result
nas_%d_%d
ppp_%d_%d_%d
ipa_%d_%d
wan_%d_%d
pppsrv_%d_%d
ipsrv_%d_%d
AtmCfgVcc
AtmCfgTd
PPPoE
PPPoA

4)
Profit

18 comments :

Anónimo dijo...

un cuntribuidor .ch anonimo xDDD

Madrikeka dijo...

Esto tiene pinta de respuesta a cierto comunicado de otro blog...

Por que lo veo un poco seco....
incluso borde el post XD

Ya sabéis..si hay que matar a alguien (es que yo, en lo de hackear todavía estoy muy verde) avisadme!!

Un saludo y buen post...como siempre!!

Alejandro Ramos dijo...

@Madrikeka: que va, no merece mucha más atención este tema. Nosotros nos quedamos en lo técnico y poco más. Además, después del comentario de "el-brujo" de seguridadwireless en el blog de chema, queda todo aclarado :D

http://www.blogger.com/comment.g?blogID=21555208&postID=5966351424505603814

Anónimo dijo...

¿Podéis explicar for favor dónde está el algoritmo de generación? No me queda claro tras ver la salida del strings
Gracias !

Canela dijo...

Vamos, que esa es toda la investigación del "equipo de cifrados de SeguridadWireless.com" que iban a publicar en un mega-post explicativo a modo de película "en los próximos meses" o años.

Anónimo dijo...

"Lo publicaremos más adelante en formato Cinemascope y con libre reinterpertación dramática."

Se fastidió el invento. }:)

SiD dijo...

Hay tienen ustedes todo el Super Reverse.

En fin.

SiD dijo...

Pido humildemente la modificación del "Hay" por un "Ahí" :(

muxo dijo...

Lo que hace ser un buen orador (y profo), poder convertir lo complicadísimo en algo sencillo.

Genial, como siempre.

Anónimo dijo...

estos comunicados oficiales suenan demasiado a excusas baratas
si a partir de ahora recibis apoyo y datos de los internautas sera un milagro y como bien se ha demostrado una perdida de tiempo
contribuir con sw es hacer el "panoli", y de que manera
me siento defraudado por SW, y encima ellos nos censuran

el-brujo dijo...

http://elvecinoo.wordpress.com/2011/02/11/aclaraciones-y-cosas-nuevas/

Anónimo dijo...

@sid,canela,anonimo

Es muy fácil afirmar que el descubrimiento es poco complejo cuando se cuentan con todos los detalles en la mesa.

Sabiendo donde se encuentra lo necesario normal que sea sencillo hacer infinitas combinaciones para descubrir lo mismo, pero cuando se parte de cero, la historia es otra.

Y por si hace falta aclarar, el hecho que el primer paso sea "descargar el firmware de aquí" hace que esta entrada tenga poco sentido.

Un saludo al contribuidor anónimo pero llego tarde a la fiestita, en todo caso haber explicado como obtener la shell en el router y (por lo menos) posteaba algo interesante.

Es como tirar una pera en lugar de una manzana y aludir que "es otra forma de descubrir la gravedad". Poco serio realmente.

Alejandro Ramos dijo...

@Ultimo Anónimo: Nadie quiere desmerecer el trabajo de nadie. Pero hacer un strings a una librería (o incluso a todo el sistema de ficheros o descargarse un firmware (cuando llevan públicos bastante tiempo) o incluso pinchar un JTAG, NO es complejo. Compáralo con peras, limones e incluso con nueces. Que aquí todos somos técnicos y sabemos que hay.

Obtener shell en el router teniendo el firmware, es tan necesario para hacer el strings como cambiarle el html a la página.

Si eso, lo de "sabemos mucho", tal vez en otro sitio donde los que te lean no sepan que dices. Aquí no.

mgesteiro dijo...

sencillamente genial!
genialmente sencillo!

Anónimo dijo...

creo que lo importante no es el descubrimiento o la informacion , si no lo que se hace con ella , sinceramente seguridad-wireless ha tenido dudoso tratamiento respecto a esta información , publicandola y quitandola pocos dias despues alegando amenazas de el isp , etc ,etc . Nadie quta merito a SW pero si que lo hicieron mal a la hora de compartirla, en mi opinion se hicieron caquita xDD

Anónimo dijo...

here is my problem:
http://pastebin.com/v5Ku7HyN
Ubuntu 10.10
what distribution you used?
TNX

Anonymous dijo...

¿Podéis explicar for favor dónde está el algoritmo de generación? No me queda claro tras ver la salida del strings
Gracias !

Madrikeka dijo...

Esto tiene pinta de respuesta a cierto comunicado de otro blog...

Por que lo veo un poco seco....
incluso borde el post XD

Ya sabéis..si hay que matar a alguien (es que yo, en lo de hackear todavía estoy muy verde) avisadme!!

Un saludo y buen post...como siempre!!