Este método se sirve del SSH que tiene el router para obtener las contraseñas. Como nos vamos a quedar sin Internet durante un tiempo es necesario que se tenga en el equipo un cliente de SSH para realizar la conexión. Putty es una alternativa libre válida para este caso.

El primer paso es desconectar el cable de Internet y realizar un reset a configuración por defecto en el router. Hecho esto, entraremos a la web con el usuario admin y password VF-EShg253.



El SSH ya está habilitado por defecto pero está filtrado por el firewall así que iremos a la configuración del firewall y añadiremos una regla para permitir SSH. Para ello simplemente pinchamos sobre ACL y añadimos una regla con service type SSH y Access direction LAN.

Ahora podemos acceder por SSH, recomiendo antes aumentar el scroll del cliente SSH para no perder ningún dato. En Putty se hace desde Window/Lines of Scrollback. Es interesante también activar en Session/Close window on exit como never para que no se cierre la sesión al desconectar y perdamos la info recogida, ya que el CLI cierra las sesiones por inactividad.

Conectamos con 192.168.0.1 e introducimos como usuario support y como password también support.

Hemos accedido al CLI del router, es una pequeña aplicación que corre sobre el linux del router. 
Ahora pinchamos el cable del router, y vamos introduciendo cada 3-4 segundos debug trace cwmp 9 hasta que el router empiece a soltar peticiones HTTP/SOAP por la consola. Esperamos hasta que el router tenga telefono e introducimos debug trace cwmp 0.

- ¡Ojo porque hay un bug en la config que llega por cwmp y el telefono no se activa!. Como tendremos la sesión web de admin abierta aún, si despues de un par de minutos el router aún no enciende el led del teléfono, vamos a a Basic/Voice, pinchamos en el radio button SIP Accounts y cuando nos muestre los datos vemos que el checkbox SIP Account está deshabilitado. Lo habilitamos, save, y ya debería encenderse el led del telefono en el router.

Conviene copiar la salida del putty pulsando sobre el icono y Copy all to Clipboard, pegarlo en un notepad y buscar por ejemplo TelnetPassword, nos llevará a la zona donde está la información:

<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">XXXXXXXXX</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[20]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.UserInterface.X_ATP_Web.UserInfo.3.Userpassword</Name>
                    <Value xsi:type="xsd:string">PASSWORD.SUPPORT</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.UserInterface.X_ATP_Web.UserInfo.1.Userpassword</Name>
                    <Value xsi:type="xsd:string">PASSWORD.ADMIN</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.X_ATP_ServiceManage.TelnetPassword</Name>
                    <Value xsi:type="xsd:string">PASSWORD.SUPPORT</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.X_ATP_ServiceManage.TelnetLanEnable</Name>
                    <Value xsi:type="xsd:boolean">0</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANEthernetInterfaceConfig.ShapingRate</Name>
                    <Value xsi:type="xsd:unsignedInt">XXXXXXXXX</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username</Name>
                    <Value xsi:type="xsd:string">USUARIO.PPP</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Password</Name>
                    <Value xsi:type="xsd:string">PASSWORD.PPP</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.ProxyServer</Name>
                    <Value xsi:type="xsd:string">PROXY.SIP</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.ProxyServerPort</Name>
                    <Value xsi:type="xsd:unsignedInt">PROXY.SIP.PORT</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.RegistrarServer</Name>
                    <Value xsi:type="xsd:string">SIP.REGISTRARSERVER</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.RegistrarServerPort</Name>
                    <Value xsi:type="xsd:unsignedInt">SIP.REGISTRARSERVERPORT</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.X_ATP_SIPDomain</Name>
                    <Value xsi:type="xsd:string">SIP.DOMAIN</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.X_ATP_SecondRegistrarServer</Name>
                    <Value xsi:type="xsd:string">SIP.SECONDRS</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.X_ATP_SecondRegistrarServerPort</Name>
                    <Value xsi:type="xsd:unsignedInt">SIP.SECONDRSPORT</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.X_ATP_SecondSIPDomain</Name>
                    <Value xsi:type="xsd:string">SIP.SECONDDOMAIN</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.DirectoryNumber</Name>
                    <Value xsi:type="xsd:string">TEL.NUMBER</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserName</Name>
                    <Value xsi:type="xsd:string">SIP.AUTHUSERNAME</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword</Name>
                    <Value xsi:type="xsd:string">SIP.AUTHPASSWORD</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.Enable</Name>
                    <Value xsi:type="xsd:string">Disabled</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
                    <Value xsi:type="xsd:string">TR02.4110.0000</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>XXXXXXXX</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>
Para ciertas cosas como poner en nuestra línea un router neutro sin hacer doble NAT, o configurarse la VoIP, son necesarios estos datos.

Para ello, vamos a hacer un procedimiento muy sencillo que va a requerir hacer un reset al router.
Antes de cortar la conexión, vamos a descargarnos Wireshark, un analizador de paquetes que necesitaremos para recoger la información.

Cuando tengamos Wireshark instalado recomiendo cerrar todos los programas, desconectar el cable de otros usuarios de la red y quitamos el cable ethernet que va a la ONT para acto seguido hacer un reset del router que hará que se reinicie con la configuración por defecto.

Entramos a la web del router con el usuario admin y la clave VF-EShg253, una clave bastante predecible ya que otro routers de Huawei que instala Vodafone, el HG556a tiene como clave VF-EShg556 desde hace ya tiempo.

Ahora activaremos el mirror, seleccionamos el puerto en el que tenemos pinchado nuestro equipo y le damos a submit.



El siguiente paso es abrir el Wireshark e ir al menu Capture/Interfaces. Marcamos la tarjeta de red donde está pinchado el cable del router y pulsamos Start.



En este momento podemos pinchar el cable de Internet y comenzaremos a ver las negociaciones. Al ser la primera sesión despues de un reset a config por defecto tendrá más gracia, ya que veremos las credenciales de los usuarios de instalación del PPP y del CWMP.  Esperaremos a tener Internet en el PC y solo en ese momento podemos hacer un Capture/Stop.

Ahora vamos a Edit/Find Packet para abrir el diálogo de buscar, elegimos Find String y Seach in Packet Bytes e introducimos en el campo de búsqueda lo siguiente:
InternetGatewayDevice.DeviceInfo.X_ATP_ServiceManage.TelnetPassword


Si hemos realizado correctamente los pasos anteriores la búsqueda nos llevará a un resultado que corresponderá a uno de los paquetes de la sesión de autoconfiguración. Si hacemos doble click sobre [Reassembled PDU in frame: XXXX] podremos ver el PDU completo donde están todos los datos de autoconfiguración en texto plano.


Una vez que hemos terminado es importante quitar el mirror, ya que de lo contrario baja el rendimiento de ese puerto y obtendremos velocidades inferiores. Concretamente, con el mirror activado solo estoy obteniendo cerca de 30 mbps de bajada.

Instrucciones para sacar las passwords de las nuevas versiones que han ido apareciendo en 2015 (V100R001C205B038SP05) del router Huawei HG253s V2 que instalan con la fibra Vodafone.

- Desconectamos el puerto Wan del router, que va a la ONT.

- Realizamos un reset 30/30/30. Lo que conocemos por un reinicio de fábrica, pulsando el boton trasero en tres ocasiones para que borre toda la memoria.

- Accedemos al router con las claves por defecto admin / VF-EShg253

- Activamos el mirror. Esto lo han cambiado y ahora a la opción se puede acceder directamente desde el menú Status & Support opción Port Mirroring.
Además ya no hace falta activar el wireshark desde el principio, ya que lo que hace es descargarnos un fichero a traves del navegador.

Importante: hay que dejarlo un buen rato, 4 o 5 minutos, no vale con que se pueda conectar a Internet, ya que aunque hay conexión es con un usuario genérico de instalación.

- Abrimos el fichero con el Wireshark y usamos las mismas opciones que en la imagen anterior pero buscamos "Password". Esto es porque han cambiado ligeramente la forma en que dan los parámetros en la petición SOAP.



Esta semana he cambiado la conexión de casa de ONO cable 100/10 a Vodafone fibra óptica 100/10. La transición fue rápida y he de decir que me causo buena impresión que los técnicos vinieran con analizadores para comprobar la correcta instalación de la fibra optica. Esperaba algo más español. Ya que lo que estoy haciendo es una portabilidad, me resulta curioso que ONO no se haya puesto en contacto conmigo para intentar retenerme aunque es algo que se podría esperar, ya que actualmente ONO es propiedad de Vodafone. Por cierto, el regalo de los cascos FM se lo podían haber ahorrado. Hoy me han migrado la línea de teléfono. Tras dos intentos de que no me portara a VF con ofertas digamos escasas, me pasan a la supervisora de turno, pero se le caen los argumentos. No da crédito a que VF me ponga fibra, ella está convencida de que me están poniendo ADSL, no se cree el precio definitivo que me dan ni que me regalen la linea fija y solo puede contrarestar con ofertas pobres. Por cierto ONO me ha vuelto a pasar una factura completa y eso que no tengo telefono con ellos desde el día 16 e Internet desde el 30.

Cableado

La instalación del cableado consiste en la unión de varios elementos. En la fachada instalan el retenedor, que es un pequeño aparato de color negro para pasar el cable también negro que entra desde la calle y que llega hasta la primera roseta de fibra. Desde este punto hacen una tirada de cable blanco hasta la roseta que estará situada junto al router.

Dispositivos

Vodafone instala dos aparatos, el ONT, que es el aparato encargado de transformar la señal optica en electrica, y el router. El ONT se conecta por un puerto a la roseta de fibra a través de un cable de fibra con conector SC de un hilo y por el otro puerto al puerto de subida del router a través de un cable ethernet de categoría 6.

En mi caso el ONT es un Alcatel-Lucent I-010G-U y el router un Huawei HG253s V2.

Primeros Tests


Las pruebas de velocidad son satisfactorias y el ping ha mejorado visiblemente. Servidores como hora.rediris.es a los que hacía un ping en 8ms con Ono ahora han bajado hasta los 3ms.
El test de tesvelocidad.eu arroja unos resultados excelentes.
Queda por ver si se comporta igual en todos los horarios o hay algún tipo de saturación.

El router Huawei HG253s V2

Vodafone nos da simplemente el usuario vodafone que no permite configurar casi nada en el router hg253s v2. Sin embargo en muy poco tiempo he conseguido cambiar la password de admin y posteriormente utilizar un exploit de ejecución de código remota ya conocido y parcheado, pero al parecer mal parcheado (si es que lo llegaron a intentar parchear), para conseguir el usuario que permite el acceso vía SSH, al que solo puede acceder el usuario support. En general la seguridad de este router es muy pobre y está incluso por debajo de otros routers que he analizado como el netgear CG3100-RG y el Cisco EPC3825.

No voy a hacer públicos las vulnerabilidades por ahora, quiero enviar un correo a Huawei como he hecho con otros fabricantes.
No descarto por otra parte que esta solución se haga pública por otras fuentes, ya que realmente a mi me llevo apenas una hora el encontrar una vulnerabilidad para hacerme admin y otra hora en buscar docs de exploits antíguos para la parte de admin y dar con uno que modificado ligeramente provoca la ejecución remota de comandos para por ejemplo mostrar la pass de SSH en texto plano.

Actualización:

Hoy he apagado el router para hacer un reset 30/30/30 y he visto que la password de admin por defecto es VF-EShg253 y además, si uno se loguea antes de pinchar el cable rojo y mantiene la sesión web abierta las credenciales no se van! Desconozco si pasa con otros routers de Huawei, pero es bastante indecente que al hacer la configuración el CWMP, y pasarle una password de admin nueva, esta perdure hasta el siguiente reboot si nos hemos autenticado previamente. Esto no invalida mi método para cambiar la password del usuario admin, pero si que lo deja por ahora en un segundo plano.

Dado que el router tiene escondida una función de mirror del puerto wan y que esta no se reconfigura en el TR-069, al activarla podemos ver todas las credenciales y configuraciones que viajan en una sesión no cifrada http. Igualmente, si ponemos un hub entre el router y la ONT lo vamos a ver, al menos mientras la sesión ppp no vaya cifrada. En teoría esto debería ir en SSL:

 <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[20]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.UserInterface.X_ATP_Web.UserInfo.3.Userpassword</Name>
                    <Value xsi:type="xsd:string">XXXXXXXX</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.UserInterface.X_ATP_Web.UserInfo.1.Userpassword</Name>
                    <Value xsi:type="xsd:string">XXXXXXXX</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.X_ATP_ServiceManage.TelnetPassword</Name>
                    <Value xsi:type="xsd:string">XXXXXXXX</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.DeviceInfo.X_ATP_ServiceManage.TelnetLanEnable</Name>
                    <Value xsi:type="xsd:boolean">0</Value>
                </ParameterValueStruct>


La ONT Alcatel-Lucent I-010G-U

Como indico más arriba, la principal función de la ONT es transformar el tráfico óptico en eléctrico en sentido descencente y al reves en ascendente. Para ello, la ONT recibe todo el tráfico que le llega de la OLT más cercana y discrimina entre los usuarios para solo dejar pasar nuestro tráfico. El tráfico que recibe la ONT está cifrado con AES.
El instalador enciende la ONT y se conecta a ella via telnet/ssh a través de la dirección IP 192.168.0.251. Creo que estuve rápido y pude ver tanto el password por defecto de estos cacharros (hg530) como el password que le asignan que estoy casi seguro de que es el login del ppp. Tras cambiar el password, ejecutan un comando que no pude ver desde /mnt que teóricamente es un fix.
De ahí que si hacemos un reset 30/30/30 a la ONT, con muchas probabilidades va a tener que pasarse un instalador a reconfigurarla. Yo he intentado llegar a la ONT pero no ha habido manera, quizás sea imposible sin hacer el reset.