viernes, 8 de enero de 2021

Router Sercomm FG824CD I

Disclaimer: 

  1. Mucho ojo con lo que se hace, que te podrías quedar sin conexión, o incluso, sin router. Ten en cuenta que si tu operadora no te ha cobrado por él, te lo podrían pedir de vuelta, por ejemplo, al rescindir el contrato con ellos. 
  2. En lo que quería hacer, no he tenido éxito. Aunque alguna cosilla interesante sí que he podido avanzar.
  3. He hecho tantos intentos y pruebas que espero que este post no sea muy caótico. Evidentemente es muy difícil poder poner todo en el orden en el que he hecho esta investigación, que como indicaba, no ha dado todos los frutos que cabria esperar. No obstante, si alguien quiere darle una vuelta, bienvenido sea. 

---

[upgrade 23/04/2021]

Hace ya casi cuatro meses que empecé esta investigación, al menos a documentarla. Hace aproximadamente dos semanas y pico el avance que he hecho ha sido, a mi modo de ver, brutal. Las entradas sobre el Sercomm FG824CD IV y V muestran el avance necesario para al menos recuperar algunos datos interesantes, como por ejemplo la contraseña que se le da al usuario "admin". 


Eso no significa que las anteriores entregas no sirvan. Simplemente se muestran las distintas vías por donde se ha intentado resolver el problema y los resultados obtenidos. Eso sí: todas las entradas pueden tirar de algo de conocimiento mostrado en las anteriores independientemente del éxito que se hubiera obtenido.


Recuerda: dado que se entiende que el router es propiedad de la operadora (a no ser que el contrato diga lo contrario) no se le puede hacer cualquier cosa. Instalar un firmware de por ahí, borrar directorios o ficheros... Hagas lo que hagas siempre es bajo tu responsabilidad. 

[/upgrade 23/04/2021]

Hace un tiempo que cambié de proveedor de internet y me pasé a fibra óptica. Después de que me tiraran el cable de una manera impecable (entre que yo estaba pendiente, le eché un cable, y el que lo hizo me dio la sensación de que sabía) me puso el router y me lo dejó bien instalado. A partir de ahí, ya me tocaba a mí hacer las configuraciones a mi gusto.

Lo primero de todo me tocó mirar qué router era. En mi caso, un Sercomm FG824CD. 

En la pegatina que hay debajo indican que el usuario para hacer los cambios es 1234 con contraseña 1234. La única manera de gestionarlo, en principio, es con un navegador. Este es un usuario normal, sin muchos poderes. 

Mi consejo es que para evitar que investigando se cierre la sesión quitar la restricción:

Sercomm FG824CD: quitando tiempo de cierre de sesión
Sercomm FG824CD: quitando tiempo de cierre de sesión

La aplicación web desde donde se administra el aparato muestra los contenidos en base a una variable de javascript: usermode. Se sabe que puede tener dos valores: enduser y admin. Cambiar el valor de esta variable es una de las opciones que se encuentran en bastantes foros. Pero hay más datos y variables que son interesantes cambiar. Por lo tanto, iniciando sesión con este usuario (1234), inspeccionamos cualquier componente de la aplicación web (botón derecho del ratón sobre uno, seleccionar inspeccionar). Desde la pestaña sources abriremos el fichero mainFunctions.js y buscaremos la línea

usermode = getUserData('usermode', data);

Al encontrar esta línea, la marcaremos con un punto de ruptura. He de decir que yo tengo un montón más. Pero de momento, este nos sirve. Al volver a cargar la página nos deberíamos de encontrar con algo como esto:

Sercomm FG824CD - Cambiando valores en sus variables
Sercomm FG824CD - Cambiando valores en sus variables

Los valores de data se pueden cambiar tanto desde el propio código fuente (poniendo el puntero encima y esperando a que los muestre) o desde el panel de la derecha, permitiendo modificar todos los deseados (incluso bajando el scroll). Indicaré los que suelo cambiar, aunque la verdad, algunos puede que no tengan mucho sentido porque se vayan a sobreescribir:

  • data.username: admin
  • data.usermode: admin
  • data.dropDownBasExp: aunque le ponía "1", realmente en algún punto busca si tiene basic o expert. Tampoco he llegado a ver qué cambios se realizan al modificar este valor. Pero puede ser importante.
  • data.devRunMode: route o bridge. Este no lo modifico, pero puede ser interesante que permita ponerlo en modo bridge. Si alguien quiere probar...
  • data.debug_fw_flag: "1"
  • csrf_token: No lo modifico, pero es un dato importante para posibles ataques. Al menos la variable lo es. 
  • isSecureContext: true o false. La verdad, apenas he cacharreado con este valor, pero buscando ahora qué otras variables he toqueteado, me suena que sí lo hice en alguna ocasión sin muchos resultados. También puede ser importante.
  • sys_*: Las mismas variables que se ven en la captura que les asignará los valores de data están aquí. No voy a negar que en algún punto las suelo mirar por si acaso y fuerzo el valor. 
  • usermode: Sí, es cierto, en algún sitio si veo que no tiene lo que quiero le asigno el valor desde aquí.
Un pequeño problema que tiene asignarlo es que cada vez que se confirma el nuevo valor se recarga todo ese panel de nuevo. 

Todos estos cambios permiten que la interfaz gráfica te muestre unas pocas cosas más. Pero la validación del usuario a todas luces se puede afirmar que la hace el servidor. No obstante, también se puede llegar a pensar que cambiando el usuario en la cookie de sesión también nos ayudará. No lo tengo muy claro, pero al menos, tener este cambio no hace daño:

Sercomm FG824CD: Cambiando cookie
Sercomm FG824CD: Cambiando cookie

También es importante: de vez en cuando, y de una forma que no he llegado a averiguar cómo y por qué, al rato el usuario vuelve a ser 1234.

Con estos cambios podremos ver algún que otro menú más. Por ejemplo, si queremos ver los datos relacionados con el teléfono:

Sercomm FG824CD: Menú del teléfono
Sercomm FG824CD: Menú del teléfono

Con los cambios realizados, veremos que menú de la izquierda aparecen 4 selecciones en vez de la primera de todas que aparecería sin manipular los valores para """elevar"""(sic) privilegios. A su vez, el administrador tendrá censurados los teléfonos de la lista (tal y como se puede ver en la llamada inferior.

Si seleccionamos "configuración de llamadas" podremos ver los distintos servicios de telefonía que se pueden habilitar y deshabilitar: retención de llamadas, llamada en espera, llamadas a tres...

El menú "configuración básica del teléfono" es el que nos podría interesar para ver los datos de acceso VoIP. Pero por desgracia los datos están en blanco. He intentado por activa y por pasiva buscar los datos en unas cuantas variables pero no he sido capaz de descubrir si es que el servidor no los devuelve directamente, si es cuestión del tipo de usuario que a nivel de servidor lo devuelve o no...

Sercomm FG824CD: Configuración básica del teléfono
Sercomm FG824CD: Configuración básica del teléfono

Los "ajustes VoIP", que configuran entre otras cosas los codecs, tiempos de sesión, etc también aparecen vacíos. 

Revisando un poco lo que hice en su momento (y que parece que descarté toquetear más, pero me lo voy a replantear) en la librería jquery-1.7.1.min.js tengo algunos puntos de ruptura. Entre otros, una función que se marca como empty (en la línea 3242)  A su vez, esta llama a cleanData. Estos métodos parece que navegan por una estructura html. Por lo que veré si soy capaz de pegarme más con resultados, pero creo que lo haré en otro momento.

En la sección configuración también se muestran más o menos elementos en el menú de la izquierda según tengamos el usuario como administrador o como enduser. Aquí tenemos unas cosas para investigar.

La constraseña

Sercomm FG824CD: Gestión de contraseñas
Sercomm FG824CD: Gestión de contraseñas

Aquí se permite actualizar la contraseña del usuario que está iniciando la sesión (tal y como se podía ver en la primera captura) pero si tenemos cambiada la variable para que el navegador se crea que es un administrador, se muestra un combo con los posibles usuarios. Y de eso me he dado cuenta ahora, porque creía que sólo me mostraba uno por ser un usuario normal. O a lo mejor es así: el navegador muestra el combo con un sólo usuario pero hay más. En este caso, solo aparece uno. 

Compartir contenido

Sercomm FG824CD: Compartir contenido (por USB)
Sercomm FG824CD: Compartir contenido (por USB)

Con un pincho USB conectado, se puede compartir contenido por varias vías: Samba, DLNA (para contenido multimedia) y FTP. Este era otro punto de entrada para recuperar información. Lo normal es que al navegar por los recursos compartidos la raíz empiece justo antes del recurso. Solo lo he hecho con un pincho tanto por samba (con linux, en Windows se queja de que la versión del protocolo no es segura) y por FTP. Aparecería algo así como /A/datosEnRaizDeDispositivo. He encontrado un manual en github para otro modelo de router de la misma marca que a partir de varias manipulaciones se consigue navegar por todo el árbol de directorios. Lo intenté una cuantas veces pero nada. Es otra línea de ataque. Lo que parece que no acaba de funcionar es el poner un enlace simbólico hacia /etc/samba/smb.conf. Aunque en el manual sí ponen algo que está relacionado con esto.

Configuración (bis)

Tenemos otro submenú que también se llama configuración. Este es muy interensate y permite ver que siempre se cargan componentes que a través de los estilos los ocultan. Aquí tenemos un buen ejemplo. Esta sección es la que permite guardar un backup de la configuración o cargarlos en caso de necesidad. Además de resetear el router con los valores de fábrica. 

Sercomm FG824CD: Backup y restauracion de configuración, nivel básico
Sercomm FG824CD: Backup y restauracion de configuración, nivel básico

Tal y como se puede ver en la captura, hay varios componentes que tienen este valor. Pero no se le puede quitar a todos, como el que he marcado en rojo, porque ese es un popup que sale con alguno de los eventos de los botones y molestaría en la pantalla. Quitando los estilos necesarios conseguiríamos lo siguiente:

Sercomm FG824CD: Backup y restauracion de configuración, nivel "administrador"
Sercomm FG824CD: Backup y restauracion de configuración, nivel "administrador"

Como se puede ver, nos ofrecen, tanto para el administrador como para un usuario normal, la posibilidad de exportar la configuración guardando el fichero de configuración en diversos medios: en una ruta del PC utilizando una contraseña, en un USB conectado en el router o en la propia memoria del router. El problema está en que guardarlo en el PC no he encontrado la manera de descifrar el contenido del fichero. Alguna de las fuentes indica que encontró que la clave podía ser algo así como md5(claveSecreta + nuestraPassword). Pero mientras se analizan las trazas que se generan al recargar las páginas encontramos con que trabaja con sha256 y scjl. El fichero tiene unas cabeceras en texto claro y después el contenido completamente cifrado:

Sercomm FG824CD: Fichero de configuración
Sercomm FG824CD: Fichero de configuración

Buscando alguna pista me encontré en sha.js un salt con para la contraseña de acceso que ponía $1$SERCOMM$. ¡Ah! Está relacionado con hmac. Que me pareció leer que también tiene que ver con temas de cifrado. De paso, vemos más scripts por los que pasa al hacer login:

Sercomm FG824CD: sha256 y el salt
Sercomm FG824CD: sha256 y el salt

Para resumir esta parte: si le he invertí mucho tiempo para ver si encontraba cómo descifrarlo sin éxito. Es más: al subir el fichero cifrado, parece que a la hora de descifrarlo lo hace a nivel de servidor. ¿Seguirá el mismo patrón y no lo he visto o hará una cosa totalmente distinta? No me quiero olvidar que hay variables que pueden ayudar: dk o sys_encryption_key. Si bien es cierto que parece que no son estáticas. 

Con lo que respecta a guardarlo en el USB o en el router, el fichero no se guarda realmente en el USB. 

TR-069

A la izquierda se puede ver que también está la opción de configurar el TR-69. Tal y como estamos ahora, todo aparece como que no está configurado. No obstante, ya se verá qué se puede hacer en este caso.

Control de acceso

Esta sección también es muy interesante. Es la que permite configurar de qué forma se puede acceder al router: http, https, ¿ssh?, ¿telnet?. 

Sercomm FG824CD; Control de acceso: http, https, ssh, telnet
Sercomm FG824CD; Control de acceso: http, https, ssh, telnet

Lo normal es que aparezcan sólo http y https. Aunque algunas veces que tenía puesto (en teoria) el usermode a admin no me salía ssh, no sé cómo ahora sí que me lo ha puesto. De todas formas, tal y como he marcado en la captura, su style solía estar a display: none. Lo mismo da: tanto el de ssh como el de telnet (que este sí que está oculto) no se actualizan a nivel de servidor cuando se modifican sus valores. 

GPON

Aquí tenemos la configuración del GPON para la conexión de fibra. Entre otras cosas, la contraseña.

Sercomm FG824CD: Configuración GPON
Sercomm FG824CD: Configuración GPON

Para ver el valor real de la contraseña, entre otras cosas, se puede cambiar el type del input de password a text. Y ya la tendríamos, permtiéndonos probar otro router con GPON para sustituir el que nos entregaron en la operadora.

LAN Switch

Los valores interesantes que nos ofrece son el de cambiar el modo del dipositivo, de router a bridge y viceversa. Creo que esto nos podría ayudar a poner este aparato como sólo GPON y otro adicional como router (antes Telefónica hacía esto: dos trastos para el acceso a internet y el teléfono).

* * *

En el menú principal tenemos la sección estado y soporte. Del menú que ofrece a la izquierda uno que da información muy interesante es el de "acerca de" porque nos muestra absolutamente todos los módulos que están obligados a publicitar. Entre otros CUPS, Samba, minihttpd, DNSMasq, OpenSSL y MiniUPnP. Sabiendo las versiones que tiene instaladas se pueden buscar posibles ataques remotos a los distintos servicios.

Una cosa curiosa que no he contado antes y que lo iba a hacer en una siguiente entrega, pero mejor aquí. Se sabe que si se desconecta el cable de fibra y se resetea el router al estado de "fábrica" se tiene acceso al usuario administrador: admin/admin. En mi caso, lo de hacerlo con el clip y el botón trasero de reset no funcionaba. Eso es otra historia porque también lo hice de un montón de formas (incluyendo el 30/30/30) y ni por esas. A ver que me voy por las ramas:

El menú de la izquierda de esta sección muestra más opciones estando reseteado. O eso me pareció en ese momento. Pero no tengo la captura. :( Pero no tengo muy claro que esas secciones me fuesen a ayudar.

* * *

Sé que me estoy dejando cosas en el tintero. El lío con el puerto serie que tiene dentro, algunas pruebas para subir los ficheros de configuración... Esas cosillas. 

Si tenéis ideas para abordar todo lo que estoy explicando aquí, por favor, no dudéis en ponerlas en los comentarios. 


* * *

Líneas de ataque para seguir probando:
  1. Manual Github para datos compartidos por samba; Entre otras herramientas que podrían ayudar: curl, burp.
  2. JQuery: Entre otras herramientas que podrían ayudar: burp, para forzar a usar un jQuery local, modificar el que carga en memoria (por el método response)...
  3. Descifrar los ficheros de exportación. 
  4. TR-069: Buscar otro trasto que permita que se configure por TR-069 para sacarle los datos: otro router (entonces, ¿para qué mantener el que nos dieron?), una máquina virtual, un teléfono VoIP...
  5. Soldar los pines en los terminales del puerto serie interno para facilitar el análisis de cómo funciona y cuándo se puede utilizar si es que realmente se puede. Sobre todo la idea es conseguir un acceso que incluso permita navegar por el árbol de directorios. Aunque sólo sea en modo lectura, ya ayudaría a poder destripar más la aplicación web y ver qué más se puede hacer.
  6. Botón gordo: tirar de alguna herramienta como ZAP para lanzarle ataques a la interfaz web y ver si encuentra algo. 
- - - - -

Aunque algunas cosas las descubrí por mi cuenta, sí que hay fuentes que las indican y dan más pistas de qué se puede hacer:

https://medium.com/@ioxoi/configurando-en-modo-monopuesto-bridge-la-otn-router-sercomm-fg824cd-de-pepephone-c04024f08ce3

https://bandaancha.eu/foros/router-ont-integrada-ftth-neba-1732436

https://hacks4geeks.com/hack/acceso-completo-al-router-sercomm-vox-2-5-de-vodafone/

https://naseros.com/2020/07/14/como-extraer-clave-gpon-y-sip-del-sagemcom-fast-5655v2-de-masmovil-pepephone-y-yoigo/

https://www.reiniciapc.com/cambiar-el-router-de-fibra-por-uno-neutro/

https://www.adslzone.net/foro/vodafone.108/consigo-clave-usuario-admin-router-sercomm-fg824cd.494244/






Ejemplo de cifrado/descifrado de TP-Link. Podría ayudar:


Un eploit de un backdoor en routers Sercomm:



14 comentarios:

  1. Hola, sigo muy de cerca los dos artículos del Sercomm fg824cd que publicas. Tengo el mismo router y he hecho prácticamente idénticas pruebas a tí. Para reset con botón trasero pulsar unos 30 segundos, soltar y volver a pulsar seguido, en menos de 10 segundos se apagan leds y se reestablece. Posteriomente admin/admin y puedes ver todos los datos antes de la telecarga, no es mucho pero al menos, puedes saber lo que hay y no hay que estar inyectando "usermode=admin" en consola todo el rato. Creo que debe haber algún usuario más avanzado pues hay apartados como activación de servicios ssh y telnet que siguen ocultos como admin e incluso aunque dice admitir y aplicar cambios, no es así. Si quieres contactar y seguir invenstigando....

    ResponderEliminar
  2. hola me podriais ayudar a abrir los puertos del emule con este router...ya estoy fuera del cgnat...gracias

    ResponderEliminar
  3. Muy buenas!

    Gracias por pasarte.

    Para abrir los puertos tendrías que ir a la sección Internet. Justo donde llegas, estarás directamente en el menú Mapeo de puertos.

    En el botón "+" que te aparece en la sección central "redireccion de puertos" tendrás que rellenar los siguienstes datos:
    * Nombre de servicio: es una descripción. pon algo que entiendas bien lo que es. cuanto más específico mejor.
    * Yo no seleccionaria nada del combo.
    * IP LAN: La dirección IP del equipo que tendrá el eMule.
    * Protocolo: TCP
    * Los puertos del eMule: tanto para el público como la lAN tendrás que poner 4662.

    Después te tocará hacer una entrada más para el puerto 4672.

    Y en teoría con esto ya lo tendrías.

    Espero haberte ayudado.

    Un saludo:

    Agustín

    ResponderEliminar
  4. Hola Agus, gran entrada sobre el Sercomm fg824cd, muchas gracias.
    Pregunta: ¿Con el usuario "admin" puedo desbloquear los puertos 80 y 443 que me están bloqueando? ¿O los bloquean desde la centralita?

    Gracias de nuevo.

    ResponderEliminar
    Respuestas
    1. Muchas gracias por pasarte!!

      Deberías de poder sin ningún problema. Incluso seguro que con 1234.. El problema que podrías tener es el CGNAT. Si no es eso, no se me ocurre qué más puede ser.

      Siento no poder ayudarte más.

      Un saludo!

      Eliminar
  5. Excelente post Agux, un placer.

    Soy novato en el tema, estoy intentando abrir 4 puertos de Steam para un servidor dedicado de un videojuego, la cuestión es que soy incapaz de acceder a NuCom y desde la página que utiliza Vodafone (proporcionada por 192.168.0.1) tan solo me abre los puertos en LAN, demandando en mi caso WAN, un saludo y gracias por la atención.

    ResponderEliminar
  6. Muchas gracias:

    Lo que he entendido es que necesitas acceder a un servidor externo a tu router. Por lo tanto el problema lo tendrás en el destino. En tu router no tendrás que abrir puertos hacia afuera. Otra opción: que tengas otro elemento en tu red que sea el que lo esté bloqueando.

    Siento no poder ayudarte más.

    Un saludo!

    ResponderEliminar
  7. Hola Agux, excelente trabajo. Te cuento... tengo un sercomm RHG3006 que me he agenciado de Italia y no tengo forma de sacar la clave admin para configurar la telecarga de España. Sabes como lo podria hacer? Un saludo

    ResponderEliminar
    Respuestas
    1. Muchas gracias:

      Siento mucho decirte que ese router no lo he toqueteado. Por lo que no puedo responder a esa pregunta. Lo normal es que tengas que resetearlo entero. Si fuese tú probaría las distintas combinaciones conocidas para Sercomm: 1234/1234, 12345/12345, passWordVacía/password, admin/admin, admin/1234, admin/12345, admin/passwordVacia.

      Me temo que no puedo ayudarte más.

      Un saludo:

      Eliminar
  8. Alguien ha conseguido hacerlo funcionar como bridge? Lo cambio pero a la hora de conectarme a él no reacciona.

    ResponderEliminar
    Respuestas
    1. Hola!

      Muchas gracias por pasarte.

      El modo bridge sí lo estuve probando cuando me puse a investigar y destripar este aparato. Aunque sólo fueron unos minutos. Por lo que poco te puedo contar. Me suena que con el modo bridge no podrás utilizar la conexión a internet directamente. Simplemente hará de ONT y tendrás que ponerte el router para utilizarla. Supongo que es lo que has intentado. Si es así, me temo que poco más te podré ayudar.

      Espero que lo consigas.

      Un saludo!

      Eliminar
    2. Hola Agux,

      Buscando información sobre este router he llegado hasta aquí. Te quería hacer una pequeña consulta, yo tengo este mismo modelo y cuando activo el "bandsteering" con el usuario 1234/1234 funciona muy bien,pero a los 10/15 min vielvo a entrar y se desactiva solo el bandsteering. Y no encuentro el motivo.

      Crees que entrando como 'admin' con mas privilegios podría solucionarlo?

      Gracias por tu tiempo y por el artículo

      Eliminar
    3. Hola!!

      Es un placer intentar ayudar, pero la verdad, me pillas. Porque hay parámetros que a pesar de modificarlos después los vuelve a cambiar, como por ejemplo la url del TR-69. Si no haces ninguna cosa en particular para forzar el cambio... En ese caso me temo que no sé por qué te lo quita.

      Siento no poder ayudarte más.

      Un saludo:

      Agustín

      Eliminar
  9. Muchas gracias gracias por responderme. Trataré de solucionarlo con la operadora.

    Otro saludo!!

    ResponderEliminar