martes, 8 de abril de 2014

SNMP: Impacto de una mala configuración sobre un protocolo simple

En estos días me surgió la necesidad de comenzar a profundizar sobre el protocolo SNMP (Simple Network Management Protocol). Este es un protocolo antiguo pero ampliamente utilizado para realizar tareas de monitoreo y administración sobre diferentes tipos de dispositivos. Cómo todo protocolo que ofrece este tipo de funcionalidades, siempre existe el riesgo de poder facilitarle la vida a un atacante si el mismo no se encuentra debidamente configurado.

No es mi intención profundizar sobre la naturaleza del protocolo ya que existe muchísima documentación que describe de forma muy detallada al mismo. Sin ir más lejos, recomiendo la lectura del RFC 1157, donde se declaran todas las bases del protocolo SNMP.

Básicamente, el riesgo reside en como se configura tanto la comunidad "public" como aquella denominada "private". La primera de ellas suele utilizarse para realizar la lectura de la configuración actual del dispositivo. La segunda para realizar escrituras, y por transición, una modificación de la misma. De esta forma, estas validaciones se realizan a través de strings o cadenas. 

Existen diversos scripts en la red que pueden utilizarse sobre estos dispositivos con este tipo de configuración. En este caso, utilizaremos algunas herramientas ya incluidas en Kali Linux; particularmente en esta ocasión, serán ciertos módulos auxiliares que provee Metasploit

Mediante el módulo de snmp_login se puede realizar fuerza bruta, tanto sobre los strings de lectura como sobre los de escritura. Para ello utiliza un pequeño diccionario con aquellas strings más comunes, incluidas también en Kali Linux.


En este caso, se obtuvieron los strings correspondientes de sólo lectura ("public") y lectura-escritura (¨pr1v4t3"). Ahora es posible enviar una petición del tipo GET y GET NEXT para obtener todo el árbol de configuración del dispositivo. Para esta tarea, se ejecutó otro módulo de auxiliar de Metasploit llamado snmp_enum obteniendo una gran cantidad de información del sistema.

El servicio SNMP escucha sobre el puerto 161 por defecto y responde a través de paquetes UDP. De esta forma, luego de la ejecución del módulo auxiliar de Metasploit, se puede obtener información detallada del dispositivo.