Cómo ya os dije, si lo lograba lo compartiría con todos vosotros, pues aquí tenéis :) Muchas gracias a todos !!!
UPDATE: Routers Inteno EG200 con firmware EG200-WU7P1U_ADAMO3.16.9-190920_1412 o superiores
Tras la investigación, Adamo fue alertada de la vulnerabilidad con número CVE-2019-13140 y parcheó el bug para evitar que la clave 3DES (la que desencripta el fichero de aprovisionamiento XXXXXXXXXXXX.enc) se pudiera obtener vía web (aparece NA en su lugar).
Gracias a nuestro compi @Julz es posible seguir disponiendo de la clave 3DES, extrayéndose de manera física por la vía USB-TTL. Sabemos que este método, al necesitar de más instrumentación, delicadez y peligro que puede llegar a acarrear, es algo más engorroso que hacerlo todo por software, pero si realmente necesitas este parámetro (porque es tuyo, y te pertenece 😉) ¡Estás en buenas manos!
Checklist; ¿Qué necesito?
- Un adaptador serie USB a TTL (el que más os guste). Yo he usado uno llamado DSD Tech con chip FTDI FT232RL:
Será necesario que los extremos finales de los cablecitos que conecten a la interfaz serie del router, sean del tipo “macho” en lugar de “hembra” o bien, podéis hacer como hice yo (se observa en la siguiente foto), quitar los alambritos de esos que suelen venir en los cierres de pan de molde, para que lo veáis mejor, pongo una foto de donde saqué los míos. Los hay con un grosor más endeble, los de esta foto son perfectos (con ayuda de unas tijeras y alicates, se sacan sin problema):
- El cliente PuTTY para hacer la conexión serie contra el router. Lo configuraremos a 115200 de velocidad e introduciremos el número del puerto COM sacado del administrador de dispositivos de Windows, tal que:
- Paciencia y hacer las cosas con cariño 😊
¡Vamos al lío!
- Identificación de los orificios TX (transferencia), RX (recepción) y GND (ground o masa): Lo tenemos más fácil que en otros routers, porque… ¡Están fuera! Si, no hace falta abrirlo. Se ubican en un lateral:
Son 4; arriba-izquierda tenemos el TX, arriba-derecha el RX, abajo-izquierda 3.3V y abajo-derecha el GND:
No se os ocurra, bajo ningún concepto, conectar nada al orificio de 3.3V de voltaje (marcado en rojo en la foto). El adaptador USB-TTL ya da de por sí el voltaje necesario por su RX y TX. También es importante verificar antes el voltaje que proporciona el USB-TTL, algunos pueden configurarse para 5V o 3.3V, en mi caso tiene un “jumper” para establecer el voltaje deseado, éste tiene que estar a 3.3.
- Con el router apagado, pinchamos los cablecitos a los orificios:
Recordad que el RX de vuestro USB-TTL es el TX del router, así el TX de USB-TTL es el RX del router. Tiene su lógica, según la referencia de donde se mire, si USB transfiere (TX), router recibe (RX), si router transfiere (TX), USB recibe (RX). Con el que no se tendrá lio alguno es con el GND (masa o tierra).
- Arrancamos PuTTY con la configuración descrita anteriormente en checklist (Serial, COMX y 115200) y pulsamos en Open para abrir la terminal:
- Encendemos el router, y si todo va bien veréis lo siguiente:
HELO
CPUI
L1CI
HELO
CPUI
L1CI
4.1605-1.0.38-118.3-INT1.5
DRAM
----
PHYS
STRF
400H
PHYE
DDR3
SIZ4
SIZ3
DINT
USYN
LSYN
MFAS
LMBE
RACE
PASS
----
ZBSS
CODE
DATA
L12F
MAIN
----
LZND
OKBL
RDDN
LZOK
Base: 4.16_05
CFE version 1.0.38-118.3-INT1.5 for BCM963268 (32bit,SP,BE)
Build Date: Tue Dec 31 19:19:19 CEST 2019 (inteno@bs1)
Copyright (C) 2000-2015 Broadcom Corporation.
Boot Strap Register: 0x1ff97bf
Chip ID: BCM63168D0, MIPS: 400MHz, DDR: 400MHz, Bus: 200MHz
Main Thread: TP0
Memory Test Passed
Total Memory: 268435456 bytes (256MB)
Boot Address: 0xb8000000
NAND ECC BCH-4, page size 0x800 bytes, spare size used 64 bytes
NAND flash device: MXIC MX30LF1G08AA, id 0xc2f1 block 128KB size 131072KB
getInMemNvramData: valid=2 sector=2 seqNum=1 iVersion=4
isUbiFlashLayout: is_ubi=1
getRootFSPartStartEndBlock: ix=0, start_blk=4, end_blk=44
getTagFromPartition: imageNumber=1 seq=005
getRootFSPartStartEndBlock: ix=1, start_blk=44, end_blk=84
getTagFromPartition: imageNumber=2 seq=004
Board IP address : 192.168.1.1:ffffff00
Host IP address : 192.168.1.100
Gateway IP address :
Run from flash/host/tftp (f/h/c) : f
Default host run file name : vmlinux
Default host flash file name : bcm963xx_fs_kernel
Boot delay (0-9 seconds) : 3
Boot image (0=latest, 1=previous) : 0
Default host ramdisk file name :
Default ramdisk store address :
Board Id (0-45) : EG200R0
Number of MAC Addresses (1-32) : 8
Base MAC Address : XX:XX:XX:XX:XX:XX
PSI Size (1-128) KBytes : 48
Enable Backup PSI [0|1] : 0
System Log Size (0-256) KBytes : 0
Auxillary File System Size Percent: 0
DSL Annex [A|B|X] : X
Main Thread Number [0|1] : 0
WLan Feature : 0x00
Voice Board Configuration (0-1) : Si32260_LCQC
Partition 1 Size (MB) :
Partition 2 Size (MB) :
Partition 3 Size (MB) :
Partition 4 Size (MB) (Data) : 4MB
*** Press any key to stop auto run (3 seconds) ***
Tenéis unos 3 segundos para detener el arranque y entrar en CFE (Common Firmware Environment). Púlsese Enter y aparecerá el prompt del sistema CFE>
- Invocamos el siguiente mandato/comando:
dn 0x0 2
Esto nos hará un volcado de la memoria de las primeras 2 páginas, que es donde se encuentra nuestra querida 3DES.
- Vamos bajando ahora hasta dirigimos a la dirección
00000910:
la clave se encuentra entre esa dirección y la00000920:
00000910: XXXXXXXX XXXXXXXX XXXXXXXX YYYYYYYY XXXXXXXXXXXXYYYY
00000920: YYYYYYYY YYYYYYYY YYYYYYYY 00000000 YYYYYYYYYYYY....
Las Y
de la última columna, hacen referencia a tu clave 3DES en formato ASCII, fíjese que contempla 16 caracteres, no obstante, las Y
del resto de columnas, son la composición de la clave en hexadecimal. Recuerda que debes de usarla en su modo hexadecimal (32 caracteres, sin espacios), no haría falta pues, utilizar Notepad++ (por ejemplo) u otro método.
Y eso es (casi) todo, apagar el router, quitar su corriente, quitar los cablecitos… Puedes descifrar ya tu aprovisionamiento con OpenSSL, cómo se indica en el vídeo o más abajo en los posts de este mismo hilo.
Todo esto es mérito de @Julz sin él no hubiera llegado a descubrir este nuevo método.
BONUS TRACK: Para cualquier firmware de Inteno EG200
He encontrado el password de la SIP en claro, eso significa que no será necesario pasar por el “revelado”, no hará falta ni descargarse el aprovisionamiento ni usar OpenSSL para desencriptar nada, pues el router… ¡Nos lo pone en bandeja!
En mi caso, lo encontré en la partición que parece ser la de “backup” o respaldo, la partición llamada “mtd_lo”.
Podéis probar invocando: dn 0x3144000 1
Y se sitúa en:
03144320: 72656769 73746572 203d3e20 7564703a register => udp:
03144330: 2f2fUUUU UUUUUUUU 2e766f69 702e6164 //UUUUUU.voip.ad
03144340: 616d6f2e 65734039 312e3132 362e3232 amo.es@91.126.22
03144350: 342e393a PPPPPPPP PPPPPPPP 3aUUUUUU 4.9:PPPPPPPP:UUU
03144360: UUUUUU2e 766f6970 2e616461 6d6f2e65 UUU.voip.adamo.e
03144370: 73407369 70302fUU UUUUUUUU UU2e766f s@sip0/UUUUUU.vo
03144380: 69702e61 64616d6f 2e65732e 2e2e2e2e ip.adamo.es.....
Donde U
hace referencia al usuario y P
a la contraseña SIP, son 8 dígitos, mayúsculas, minúsculas y números quizá… la mía no tiene.
El formato es:
register => |TRANSPORT|://|USER|@|DOMAIN|:|SECRET||AUTHUSER|@|PROVIDER||PORT|/|CONTACT_USER|
Aquí si interesa cogerla en ASCII 😉
Be Good, Be HACKERS!