BandaAncha.eu

  • 🔍 en 📰 artículos ⏎
  • 🔍 en 💬 foros ⏎
  • 🔍 en 👇 este 💬 foro ⏎
  • 🔍 en 👇 este 💬 tema ⏎
Regístrate Regístrate Identifícate Identifícate
Fijo

Destripando el Hitron BVW-3653

Heli0nrules
2

Buenas a todos los que andáis por el foro.

Soy uno de los cientos (? de usuarios a los que este cacharro no le convence, o le va mal, así que me puse a bucear.

Trabajo con sistemas Linux y soy Técnico de Sistemas, por lo que algo enterado del tema estoy.

Tengo una investigación sobre el Router, de Hardware no está mal, el problema es el firm, por lo que me estoy proponiendo intentar portar OpenWRT o similares a este bicho.

Por ahora tengo ciertas cosas:

PORT     STATE SERVICE
23/tcp   open  telnet
80/tcp   open  http
443/tcp  open  https
631/tcp  open  ipp
992/tcp  open  telnets
8009/tcp open  ajp13
8443/tcp open  https-alt

Estos son los puertos abiertos, bien, todos sabemos que podemos conectarnos al router por Telnet.Dentro de telnet, con nuestro usuario admin (o como le llamemos) si entramos en system -> shell ... voilá! tenemos un bonito intérprete de comandos con acceso "root" al sistema.

# cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 4 (v6b)
BogoMIPS        : 399.76
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 4
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 32768
I assoc         : 4
I line length   : 32
I sets          : 256
D size          : 16384
D assoc         : 4
D line length   : 32
D sets          : 128

Hardware        : puma5
Revision        : 0001
Serial          : 0000000000000000

Y tenemos un ARMv6 que puede ejecutar Applets Java, entre otras cosas (como soporte de Swap, algo que me parece extraño en un router)Un pequeño problema es que no tiene ni vi, ni vim, ni nano... no he encontrado un editor de texto. Por ahora estoy investigando, por lo que no me voy a poner a compilar ejecutables para ARMv6.Por lo que veo, el SO es una versión modificada de OpenRG (jungo.com/products/openrg-uniform-gatewa…-middleware/) Tienen un SDK, pero a no ser que alguien se lo "robe" a R, no tenemos acceso a élLos comandos disponibles, son los típicos de Busybox (si alguno tiene Android), y este es el contenido de /bin

# cd /bin
# ls
FwUpstreamDocsis2_D.bin  gzip                     rmdir
FwUpstreamDocsis2_I.bin  hal_cmd_mbox             rmmod
FwUpstreamDocsis3_D.bin  hal_event_mbox           route
FwUpstreamDocsis3_I.bin  hal_tuner_mgr            runall
[                        iccctl                   sched
bbusm                    ifconfig                 sfdisk
bpi_auth                 init                     sh
bpi_sa_map               insmod                   sleep
bpi_tek                  jdd                      smbclient
busybox                  kill                     smbcp
cat                      killall                  smbd
chgrp                    ledcfg                   snmp_agent_cm
chmod                    ledd                     snmpcmd
chown                    ln                       sort
cli                      logger                   stty
cm_status                losetup                  sw_dl
cp                       ls                       swapoff
cut                      lsmod                    swapon
dbridge_init             mkdir                    sync
dd                       mkdosfs                  sysctl
df                       mknod                    tar
disktype                 mkntfs                   test
dispatcher               mkswap                   test_netutils
dmg_provisioning         mlx                      testmode
dms_smm                  mount                    tftp
docsis_init_once         msh                      ti_route_fixup
docsis_mac_driver        mv                       ti_tftp
docsis_mac_manager       nc                       ti_todc
dosfsck                  nmbd                     ti_udhcpc
downstream_manager       ntfs-3g                  top
echo                     ntfsfix                  touch
env                      nvread                   tr
eventmgr_cm              openrg                   true
expr                     pcd_app                  umount
false                    ping                     upstream_manager
free                     ps                       uptime
get_docsis_info          qos_dsx_sm               usbApp
gptimer                  regs                     wget
grep                     renice                   zcat
gunzip                   rm

Los supuestos sistemas de archivos

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/mtdblock0            2.9M      2.9M         0 100% /mnt/cramfs
modfs                   132.0k    132.0k         0 100% /mnt/modfs
/dev/mtdblock2          320.0k    224.0k     96.0k  70% /mnt/jffs2
modfs                   132.0k    132.0k         0 100% /mnt/modfs

Fuera de la shell, he encontrado lo siguiente:

firmware_update> help firmware_update

Command Category firmware_update - Firmware update commands
start    Start remote upgrade
cancel   Kill running remote upgrade
exit     Exit sub menu
help     Show help for commands within this menu

Returned 0
firmware_update> start
Usage: start -u  [-c] [-i]
        -c: Check only - don't really flash
        -i: Ignore version number when deciding whether to burn the image

Returned -1
firmware_update>

Por lo que supuestamente si le das una url con la actualización, él se actualiza "solito"

flash> help flash

Command Category flash - Flash and loader related commands
commit              Save configuration to flash
erase               Erase a given section in the flash
load                Load and burn image
boot                Boot the system
bset                Configure bootloader
layout              Print the flash layout and content
dump                Dump the flash content
cramfs_location     Print the cramfs (mainfs, actually) location
active_image_name   Print the name of the active image
lock                Lock mtd region
unlock              Unlock mtd region
exit                Exit sub menu
help                Show help for commands within this menu

Returned 0
flash>
flash> dump
00000000: ea 00 00 12 e5 9f f0 14  e5 9f f0 14 e5 9f f0 14  |................|
00000010: e5 9f f0 14 e5 9f f0 14  e5 9f f0 14 e5 9f f0 14  |................|
00000020: 81 fc 01 00 81 fc 01 60  81 fc 01 c0 81 fc 02 20  |.......`....... |
00000030: 81 fc 02 80 81 fc 02 e0  81 fc 03 40 12 34 56 78  |...........@.4Vx|
00000040: 81 fc 00 00 81 fc 00 00  81 fd d5 44 81 ff 82 a4  |...........D....|
00000050: e1 0f 00 00 e3 c0 00 1f  e3 80 00 d3 e1 29 f0 00  |.............)..|
00000060: eb 00 00 18 e2 4f 00 6c  e5 1f 10 30 e1 50 00 01  |.....O.l...0.P..|
00000070: 0a 00 00 07 e5 1f 20 38  e5 1f 30 38 e0 43 20 02  |...... 8..08.C .|
00000080: e0 80 20 02 e8 b0 07 f8  e8 a1 07 f8 e1 50 00 02  |.. ..........P..|
00000090: da ff ff fb e5 1f 00 5c  e2 40 08 03 e2 40 00 80  |.......\.@...@..|
000000a0: e2 40 d0 0c e5 1f 00 64  e5 1f 10 64 e3 a0 20 00  |.@.....d...d.. .|
000000b0: e5 80 20 00 e2 80 00 04  e1 50 00 01 1a ff ff fb  |.. ......P......|
000000c0: e5 1f f0 04 81 fc 30 d8  e3 a0 00 00 ee 07 0f 17  |......0.........|
000000d0: ee 08 0f 17 ee 11 0f 10  e3 c0 0c 23 e3 c0 00 07  |...........#....|
000000e0: e3 80 00 02 e3 80 0a 01  ee 01 0f 10 e1 a0 70 0e  |..............p.|
000000f0: eb 00 05 5b e1 a0 e0 07  e1 a0 f0 0e 00 00 00 00  |...[............|

Se puede bloquear y desbloquear el MTD

flash> active_image_name
Image downloaded from: https://213.60.177.100:550/firmwares/openrg_rcable_5_3_2_1_12_1_17_1_2.rms?u=KHdpZmltZWRpYS1SIGRhdGEKICA

Y esa es la url de donde sale el Firm de R, pero da un error de SSL entrar en esa Web.Creo que habría que empezar por ser capaces de descargar ese archivo, y de ahí "empezar a liarla"

Y... sigo investigando. Si alguien tiene alguna idea, yo no tengo problema en probar, si se jode que lo reflasheen, que para eso se les paga

Añado el Layout del Flash, que tiene dos enlaces de Firm

flash> layout
Flash layout:

Section 00 Type BOOTCONF   Range 0x00020000-0x00030000 MaxSize 0x00010000
        No more information.

Section 01 Type BOOTCONF   Range 0x00030000-0x00040000 MaxSize 0x00010000
        No more information.

Section 02 Type IMAGE      Range 0x00040000-0x007D0000 MaxSize 0x0078FF6C
        Size 0x007115D2 Name 'Image downloaded from: https://213.60.177.100:550/firmwares/openrg_rcable_5_3_2_1_12_1_17.rms?u=KHdpZmltZWRpYS1SIGRhdGEKICAod2J'
        Checksum 0x38DB4C46 Counter 0x00000007 Start Offset 0x00000000

Section 03 Type IMAGE      Range 0x007D0000-0x00F60000 MaxSize 0x0078FF6C
        Size 0x0071141D Name 'Image downloaded from: https://213.60.177.100:550/firmwares/openrg_rcable_5_3_2_1_12_1_17_1_2.rms?u=KHdpZmltZWRpYS1SIGRhdGEKICA'
        Checksum 0x38D723F0 Counter 0x00000008 Start Offset 0x00000000

Section 04 Type LOG        Range 0x00F60000-0x00F80000 MaxSize 0x0001FF6C
        Size 0x00002603 Name 'crash_log'
        Checksum 0x0013357B Counter 0x00000001 Start Offset 0x00000000

Section 05 Type CONF       Range 0x00F80000-0x00F90000 MaxSize 0x0000FF6C
        Size 0x00007FC4 Name 'rg_conf'
        Checksum 0x003F19C2 Counter 0x0000D049 Start Offset 0x00000000

Section 06 Type CONF       Range 0x00F90000-0x00FA0000 MaxSize 0x0000FF6C
        Size 0x00008187 Name 'rg_conf'
        Checksum 0x003FE002 Counter 0x0000D069 Start Offset 0x00000000

Section 07 Type FACTORY    Range 0x00FA0000-0x00FB0000 MaxSize 0x0000FF6C
        Size 0x00000239 Name 'rg_factory'
        Checksum 0x00009FA7 Counter 0x00000002 Start Offset 0x00000000

Total 8 sections found.

Debido a que supongo que es ilegal que suba los archivos del MTD (que se supone que es la memoria interna del Hitron, explico como hacerlo:

Nos conectamos a la shell conectamos un pen en FAT al puerto USB del router, lo montamos y dumpeamos

mkdir /mnt/pen
mount /dev/sda1 /mnt/pen
dd if=/dev/mtdr0 of=/mnt/pen/mtdr0
dd if=/dev/mtdr1 of=/mnt/pen/mtdr1
dd if=/dev/mtdr2 of=/mnt/pen/mtdr2

Después, veo que son estos tipos de archivos, pero no los doy montado:

[christian@HelionArch Hitron]$ file MTDR0
MTDR0: Linux Compressed ROM File System data, little endian size 6094848 version #2 sorted_dirs CRC 0x3cf41c9d, edition 0, 755 blocks, 604 files
[christian@HelionArch Hitron]$ file MTDR1
MTDR1: TeX font metric data (\374\001)
[christian@HelionArch Hitron]$ file MTDR2
MTDR2: data

Sobre todo lo que interesa es el MTDR0, que es donde está la ROM

Heli0nrules

Buscando los certificados para descargar el Firm, me encontré con esto

cp: /nvram/1/security/mfg_key_pub.bin: No such file or directory
cp: /nvram/2/certificates/iptel_root.cer: No such file or directory
cp: /nvram/2/certificates/manuf.cer: No such file or directory
# cd /nvram/1/security/
# ls
cm_cert.cer                 mfg_cert.cer
cm_key_prv.bin              mfg_key_pub.bin
download                    root_pub_key.bin
euro_test_root_pub_key.bin
# cat mfg_key_pub.bin
cat: mfg_key_pub.bin: No such file or directory
#

Se sale completamente de mis conocimientos sobre Linux. ¿Como puede estar y no estar el archivo a la vez?

🗨️ 3
BocaDePez
BocaDePez

Enterate de si los drivers de los puertos son de libre distribución, si no con openwrt poca cosa se podra hacer, tengo un router adls de jazztel con openwrt, pero como no liberan los drivers del adsl ni del wifi, el adsl no chuta y el wifi con parches y solo como cliente, vaya, que me sirve como "pc" o como firewall, que bueno, no es poco.

🗨️ 1
Heli0nrules

Si, voy a intentar hacer un dd de todos los bloques de memoria, y montarlos en un PC Linux. ¿Hay fotos del interior del Hitron?

BocaDePez
BocaDePez

Supongo que lo que tienes ahí son enlaces simbólicos huérfanos (dangling symbolic links), que apuntan a un archivo que no existe en un sistema de ficheros.

Heli0nrules

Añadido como dumpear la memoria del Hitron

BocaDePez
BocaDePez
-4

[ Moderado: Bocachancla ]

🗨️ 4
Heli0nrules
1

No es por nada, pero seguramente tenga más estudios que tú.

Si me he metido con esto, es porque no me importa que un técnico venga y me cobre más si lo rompo. Soy Técnico de Sistemas Microinformáticos y Redes, y tengo un curso oficial de Cisco de dos años de redes domésticas y empresariales.

Y si te molesta mi trabajo, con tal de que no lo leas me llega, hay gente que le gusta trastear con las cosas, que para eso están en casa.

Volviendo al tema del hilo, si hacemos lo siguiente:

dd if=/dev/mtrd0 of=/mnt/pen/mtdr0

Ese archivo se puede explorar en cualquier ordenador usando 7zip, aunque da algunos pequeños errores, pero da juego a seguir fozando

🗨️ 3
Heli0nrules

Muuchas gracias, si, el Zon Hub parece ser que es el Hitron, yo cuando pueda, desmontaré el mío, y le haré fotos también, pero por lo que se ve en esa foto, hay un claro puerto serie (el que tiene un cuadrado rojo) que podría dar bastante juego

🗨️ 1
Heli0nrules

Estos días me han actualizado el Hitron a una versión de 16 de Octubre, han cambiado la administración del Firewall, y no he encontrado más diferencias. Me de la sensación de que el wifi es más estable. Aún lo estoy probando

daviddrf

Hola, acabo de entrar en este hilo y quería darle las gracias a Heli0nrules por su magnífico trabajo. Ojalá yo pudiese ayudar en algo (quizás consiguiendo alguna foto del interior del Hitron si me dáis unos días, estoy en ello). Por otro lado comentaros que, por casualidad, ¿no sabrás qué comando emplear para editar la tabla ARP del Hitron a través de la consola telnet para así introducir una entrada estática en la tabla ARP y poder hacer así Wake On Lan? (bandaancha.eu/foros/r-no-me-deja-editar- … tron-1698043). Un saludo, gracias de nuevo y nos vemos.

PD: pido disculpas por adelantado si mi respuesta está mal "colocada" o "colgando" de donde no debe, es lo que tiene ser un poco novato en esto de los foros, sorry ;) .

🗨️ 2
Heli0nrules

La shell que nos da el Hitron, no tiene ningún comando para ARP, voy a ver si intento compilarlo después del puente.

Después, si quieres ir viendo en todo el menú del telnet si encuentras algo de ARP, porque yo no veo y a lo mejor se me cuela algo.

Y bueno, muchas gracias, cuando te cabreas con un bicho de estos, pues acabas o por romperlo a golpes, o por romperlo fozando (como hago yo)

kernelguy

Hola,

aunque no tenga tantos estudios como tu...me he dedicado a explorar el router hace un par de semanas tambien pero con la intencion de aplicar ingenieria inversa al modulo OpenRG. Para conseguirlo me he instalado un server tftp, me lo he subido a traves de la shell del router y voy mirandolo de vez en cuando.

La verdad, mi intencion es encontrar alguna vulnerabilidad en el router; es posible que su OpenRG personalizado tenga algo de chicha, aunque tambien el so podria bundlear algun modulo con una version antigua y no parcheada de algo.

¿A alguien le interesa?

Buen trabajo :).

BocaDePez
BocaDePez

El swp que aparece en "features" no tiene que ver con la memoria swap sino con el soporte para la instrucción swp (intercambiar valores de forma atómica) en el procesador. Y la palabra java que se lee allí se refiere a la extensión jazelle de arm para ejecutar instrucciones java directamente en el procesador sin tener que "traducirlas", pero es necesario disponer de una máquina virtual java instalada en el sistema para poder lanzar aplicaciones java, como los applets, y me imagino que no será el caso.

BocaDePez
BocaDePez

Se repite constantemente.

firewall OCC failed connecting to [https://213.60.177.101:8482/osap_cs.fcgi].

BocaDePez
BocaDePez

Como se entra por telnet al bicho este? Cada vez que lo intento me tira fuera! Por cierto, os ha soplado alguien la clave del usuario admin para ponerlo en modo bridge?

Thxxxxx (sigo investigando también como hacerle wake on wan al trasto de marras).

daviddrf

Se agradece lo del Wake On Lan, menudo router madre mía...

BocaDePez
BocaDePez

No accedo por telnet, algo que se deba cambiar ¿?