miércoles, 30 de mayo de 2012

SNMP. Security Not My Problem

Como todos sabéis, SNMP desde sus inicios, fué un protocolo orientado a la administración de dispositivos de red, en la capa de aplicación, muy muy inseguro.
Hoy os voy a comentar un ataque sencillo, y viejo, de allá por el 2009.
No pongo las referencias, que son muy fáciles de encontrar, para no alentar a los chavales a hackearle el router del vecino, pero me parece interesante comentar la jugada.
El dispositivo que presenta la vulnerabilidad por defecto de serie, y que no quiere decir que este "ataque" sea solo para ese tipo, sino que conocemos parámetros exactos, es el famoso Zyxell Prestige serie 660 hw. ¿Cuanta gente tiene este en casa? ¿Cuantos clientes lo usan para pequeños negocios?. El impacto de este "bug" es y fué increíble, y a no ser que tu vecina del sexto sepa actualizar firmware´s y tocar configuraciones del mismo, seguirá vigente durante bastante tiempo.
El problema radica en la configuración por defecto de las claves de las comunidades, publicas y privadas, y de la exposición a la boca wan del puerto 160 udp . Una vez identificado el router en cuestión, lanzamos un nmap básico hacia los puertos simpáticos 21,23 y 80. sabes  qué son? Como veis, aparte de "fardar" con mi nuevo nmap 6. los puertos se encuentran Filtered. La gracia del asunto es que conociendo los OID´s, que serían los parametros para listar e incluso escribir configuraciones, con una herramienta como braa para realizar consultas SNMP,instalada en backtrack, la cosa está sencilla.
Lanzamos las query´s de escritura contra el router. De esta  manera, estamos abriendo los puertos del router.



Como podeis apreciar, el nmap me los muestra como abiertos.
Esto qué quiere decir? que si tenemos un router de telefónica, que no han auditado, y que lleva este fallo de seguridad tan gordo, dudo mucho que hayan cambiado la clave por defecto para su administración, bien sea por Telnet, o por la comodísima web del dispositivo.
La prueba realizada sobre este "amigo" fué exitosa, telnet ip clave por defecto 1234 y ... cocinaaaaaaaaaaaa. Viendo las tablas de asignación del DHCP podemos saber que host están por la red, desde la opción de mantenimiento podemos hacer un ping hacia un host interno. Redirigir mediante NAT el tráfico de los puertos más "simpaticos" hacia los host internos sería una buena acción. Cambiar el DNS por un fake dns apuntando a un metasploit/set , sería lo mas precioso del mundo. Pero nosotros somos buenos, y no queremos hacer daño. Llamaremos a nuestra vecina del sexto, y le aconsejaremos:
22. SNMP Configuration

  *  Nos aparece esto


                          Menu 22 - SNMP Configuration

                  SNMP:
                    Get Community= public
                    Set Community= public
                    Trusted Host= 0.0.0.0
                    Trap:
                      Community= public
                      Destination= 0.0.0.0


                    Press ENTER to Confirm or ESC to Cancel:

* Deberiamos cambiar la password GET y SET por algo menos obvio.
* Ademas podemos asignar como Trusted Host a algun PC de la LAN interna
   para que solo este PC (con la IP que especifiquemos pueda obtener/modificar
   valores usando SNMP.
* Trap: Si configuramos una ip destino, el router enviara a este destino
   informacion de gestion relativa a interfaces, velocidad, etc. Podemos
   usar MRTG para recolectar informacion. Por supuesto hay que cambiar la
   Community!!!