Hacking de Infraestructura: Protocolo SNMP

Hoy vamos a hablar de todo lo relacionado con la seguridad del protocolo SNMP (Simple Network Management Protocol). Este es un servicio para administrar la red que corre en el puerto 161 (UDP). La versión por defecto de SNMP es v2c. Tiene cierta complejidad, por lo que antes de pasar a las vulnerabilidades, hagámos un breve resumen de cómo funciona este protocolo.

Está compuesto de tres partes:

– Network Management Stations (NMS): Ejecutan aplicaciones que supervisan y controlan los dispositivos administrados.

– Dispositivos Administrados: Dispositivo que contiene un agente SNMP. Recoge información de administración que pone a disposición de los administradores. Son routers, impresoras, switch, hosts…

– Agente: Modulo de software de administración de red que reside en un dispositivo administrado. Tiene información local del dispositivo que se traduce a un formato compatible con SNMP y organizado en jerarquias. Esta información puede ser la memoria libre, paquetes ip recibidos o rutas.

Mediante este protocolo se pueden gestionar y modificar remotamente variables de dispositivos administrados.

Las jerarquias, el tipo y la descripción de las variables se describen en MIB (Management Information Base). Las MIB son bases de datos que contienen información jerarquica estructurada en forma de arbol de todos los dispositivos gestionados en una red.

Los identificadores de los objetos ubicados en la parte superior del arbol pertenecen a organizaciones estándares, y los identificadores de la parte inferior son colocados por las organizaciones asociadas.

Nmap

Como he mencionado anteriormente, este protocolo corre en el puerto 161 UDP, por lo que al no estar en TCP, en un escaneo de puertos normal no lo detectaremos. Debemos hacer pues un escaner UDP para descubrirlo:

Hacking de Infraestructura: Protocolo SNMP

Community string

SNMP utiliza lo que se conoce como «Community string». Esto es una palabra que sirve como clave para poder acceder al dispositivo. El community string por defecto es «public».

Si el community string no es public, entonces podemos intentar hacer fuerza bruta con una herramienta llamada onesixtyone:

Snmpwalk

Los identificadores de objeto de SNMP son todo números, por lo que necesitamos un MIBS para poder leerlo.

Ahora hay que editar el archivo /etc/snmp/snmp.conf y comentar la primera linea, en la que pone «mibs :»

Si volvemos a ejecutar smpwalk, los números ahora salen traducidos:

Una de las cosas que nos muestra SNMP son los procesos corriendo, por lo que si hemos guardado el output en un archivo, podemos hacer búsquedas.

Por ejemplo, en este caso el proceso SimpleHTTP está ejecutandose:

Asi que podemos buscar en el output de snmpwalk más información sobre este proceso:

Efectivamente, no solo existe sino que se está ejecutando con un parámetro que indica el usuario y la contraseña (loki:godofmischiefisloki)

Lo que nos permite acceder por HTTP:

En este otro ejemplo snmpwalk solo nos muestra un serial number, que se utiliza como contraseña en la web:

Otra hash aqui:

Incluso empleando una herramienta online es sencillo romper el hash y obtener la contraseña en claro:

Snmp-check

Otra herramienta para obtener información más detallada:

Podemos obtener información como:

– Subredes que nos puedan indicar que hay otra máquina a la que podamos pivotar (no es el caso)

– Puertos abiertos en TCP y UDP:

– Todos los servicios de red que hay corriendo en la máquina

Procesos ejecutandose:

IPv6 en SNMP

Habiendo instalado el MIBS de SNMP, podemos ver la IPv6 address del servidor:

Pero hay que dividir de 4 en 4 para que sea una dirección IPv6:

Si nos fijamos en el output, realmente podemos ahorrarnos los 0 y expresar esta dirección IPv6 como dead:beef::250:56ff:fe8f:f4a3

Ahora podemos hacer un nmap usando la IPv6, y quizá obtengamos info que antes no, debido a que el firewall solo esté actuando en IPv4:

Por ejemplo, el puerto 80 está abierto ejecutando Apache, cosa que en IPv4 no estaba.

(Para conectarnos con el navegador a una dirección IPv6, tenemos que poner http://[direccionIPv6] )

Hay otra forma de obteneer la IPv6 usando SNMP: con una herramienta llamada Enyx (https://github.com/trickster0/Enyx)

Para utilizarla, tienes que volver a deshabilitar el MIBS editando el archivo /etc/snmp/snmp.conf y descomentando el «snmp :» que comentaste en la primera linea.

Esto es todo sobre SNMP. Como puedes comprobar, al ser un protocolo de administración de red, podemos obtener mucha información sensible aprovechándonos de las vulnerabilidades del protocolo.

Si te ha gustado el artículo, te recomiendo que visites el resto de artículos de hacking de infraestructura.

Lethani.

4/5 - (49 votos)

Deja un comentario