domingo, 18 de abril de 2021

Router Sercomm FG824CD V

Tengo noticias sobre los avances que he hecho destripando el router Sercomm FG823CD. No es todo lo que me gustaría pero para ir tirando parece que de momento para darle un descanso a esto puede servir.

Como de costumbre: cuidado dónde y cómo tocas. Si se rompe algo... Es tu responsabilidad.

También decir que he en tantas pruebas que he haciendo me he encontrado con que en algún momento hice cierto cambio que me permitía ver los datos de la VoIP como proxy, dominio, etc... Pero evidentemente el usuario y la contraseña no. Lo que ya os enseñé hace unas semanas que duraba apenas unos segundos antes de bloquearme el usuario... Pero sin ese problema. Además de algún dato más en el TR069. Aunque eso sí, sin que la línea telefónica funcionase.

Lo primero de todo es mantener una configuración como la que mostré en el anterior post.:

  • Crear la interfaz que yo llamé LAN.
  • El enrutamiento de políticas. 
  • Montar una máquina aparte. En mi caso, como dije en esa entrada, una raspberry conectada a uno de los puertos del router.
  • Configurar el servicio TR069:
    • La URL irá a http://IP_RASP:10301
Uno de los enlaces que daban ideas intentaban destripar un F@st 5657. Y a su vez ponían el enlace al github de su autor con un script en python. Y ese script crea un proxy TR-069. En mi caso he usado de base app.py. No obstante no ha acabado de funcionar. Así sin más da error. Además, me ha permitido identificar qué puerto permite no utilizar https y tirar en texto claro.

Aquí hay otro script del que he tirado. El último ejemplo que ponen (después del edit). A partir de este último he ido añadiendo trozos del primero y poco a poco he conseguido que dejase de darme error. En general si se añade este método debería de dejar de dar error:

@app.route('/',defaults={'path':SITE_NAME}, methods=["GET","POST"])
def testVal3(path):
    LOG.info("[testVal3] path: "+str(path))
    result = hello(path)
    LOG.info("[testVal3] result: "+str(result))
    return result

Donde SITE_NAME tiene como valor "http://acs.masmovil.com:10301/". Yo he llamado a este script proxy01.py.

Como estoy configurando todo en la raspberry voy a tirar de la herramienta screen.
  • screen1: tcpdump
  • screen2: proxy
Screen1

Con el fin de identificar el tráfico que va a viajar entre el la rasp y el servidor ACS se va a dejar corriendo un tcpdump.

Sabiendo que el dominio acs.masmovil.com tiene una dirección IP que está en el rango 212 este es el rango que he analizado y además he descartado el puerto 22 porque no quiero mi conexión por ssh me haga mucho ruido.

tcpdump -s0 -vvvv -i eth0 -w salidaPortMirroring_20210418_1615.pcap "not port 22 and (net 212)"

Screen2

En este punto he ejecutado el proxy TR069. Tampoco tiene mucho misterio:

python3 proxy01.py

Captura de datos

Con ambos en ejecución sólo me ha quedado esperar a que el router volviese a conectarse a la rasp y he esperado un instante. Como he hecho varias pruebas al ver que en el screen2 el proxy mostraba un mensaje http con código 204 y se quedaba ahí es donde cancelé la ejecución. De todas formas si vemos que tarda en reaccionar o el tiempo de actualización del cliente TR069 es muy largo se puede cambiar por ejemplo restándole un segundo y así hará la petición a nuestro proxy que a su vez se comunicará con el operador.

El primer dato que he buscado y encontrado ha sido la contraseña del administrador. Se puede buscar haciendo un grep al fichero report.txt:

cat report.txt | grep -i user.1.pass

Cuando estaba mirando dentro de este fichero (el de la primera ejecución) además de encontrar la contraseña del admin me aparecía el usuario de la cuenta VoIP. Pero no su contraseña. Por lo que no me ha quedado más remedio que cargar alguno de los ficheros de configuración anterior. Y es uno de esos donde me aparecen los datos de la cuenta VoIP. Volviendo a repetir el proceso de carga he intentado usar la contraseña del administrador de la primera carga pero no es la misma. Por lo tanto, se puede afirmar que esta contraseña la cambian al menos cada vez que se resetea el router y lo configuran. 

Para recuperar las credenciales del la cuenta VoIP se puede buscar en el paquete .pcap de la captura del tcpdump (que es lo primero que hice) o ahora sí repetir la búsqueda en el report.txt:

cat report.txt | grep -i sip.auth

Y devolverá las tags xml donde están los datos del usuario y contraseña para la cuenta VoIP.

Gracias a esos datos he podido conectar alguno de los teléfonos IP que ya os he enseñado. La centralita toda da algún que otro problemilla. Pero en el estado actual en el que he dejado el router sigue sin funcionar su ATA algo que ya me encargaré de cacharrear para ver si me mantiene la contraseña del administrador.

Otra tarea que tengo pendiente es que no era consciente de que tenia que pedir la desactivación de GNAT por lo que en cuanto deje de toquetear mucho llamaré para deshabilitarlo y así volver a la carga.

8 comentarios:

  1. Una forma de profundizar en el sistema de archivos del enrutador a través de samba.
    https://4pda.ru/forum/index.php?s=&showtopic=560059&view=findpost&p=60657177
    La ruta está escrita en el código fuente de la página.Puede necesitar una barra invertida /.
    Desde mtd5(tclinux), puede restaurar el firmware actualizado a través de la interfaz web. El enlace al repositorio(github) se proporcionó anteriormente.

    ResponderEliminar
  2. Hola!!

    Podría ser, pero yo ya lo intenté con la técnica del pincho USB y el enlace simbólico y no tiraba.

    Mucho cuidado con lo que se instala "de por ahí". Esa ruta ya la estudiaré. No obstante, muyyyy imporante: mientras que no haya un contrato específico que diga lo contrario el router es propiedad de la compañía. Por lo tanto no es viable ponerle un firmware distinto al que te viene desde la compañía. Además: vete tu a saber qué tiene ese firmware. No obstante tampoco está mal tener fuentes para seguir estudiando este trasto.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por un administrador del blog.

      Eliminar
    2. Lo siento pero no me hace ninguna gracia que se ponga un enlace a un repositorio donde se puedan descargar cosas desconocidas y sospechosas. Y también me chirría mucho que se publique en modo "anónimo". No da ninguna confianza.

      Eliminar
    3. Este era un enlace a una captura de pantalla de la configuración de la interfaz del enrutador, después de aplicar la cual: puede ver el contenido del sistema de archivos a través de samba. ¿Los usuarios registrados pueden insertar imágenes en los comentarios?

      Eliminar
    4. Elimina la carpeta predeterminada. Seleccione cualquier carpeta en usb. En el código de la página, cambie su nombre a: "../../../..". Cualquier nombre para el acceso. Sip contraseña:\\192.168.0.1\1\tmp\var_link_dir\voice\voip.conf

      Eliminar
  3. Hola! gran trabajo, tengo ese mismo router con Pepephone y es una basura quiero cambiarlo por un ZTE680 de Jazztel. Consigo la clave hexa facilmente pero cuando meto los paramentros en el ZTE no me tira. Sabes algo de esto?

    ResponderEliminar
  4. Buenos días!

    Muchas gracias! La verdad, me pillas porque no he hecho cambios de routers todavía. Lo único que hay que tener en cuenta es que no solo la contraseña es importante. También hay otros parámetros como por ejemplo el protocolo o estándar con el que se conecta a la central. Tendrás que comprobar que en ambos routers coinciden.

    La otra opción es que sólo autoricen unos routers determinados a través, por ejemplo, de la dirección MAC. Pero teniendo en cuenta que hay mucha gente que los consigue cambiar lo dudo mucho.

    Siento no poder ayudarte más. A ver si lo consigues.

    Un saludo!

    ResponderEliminar