Uno de los protocolos de los cuales menos se habla es el SNMP. Sin embargo, es uno de los más valiosos a la hora de gestionar los dispositivos que se encuentran conectados a la red. Desafortunadamente, los cibercriminales también pueden sacar provecho de este protocolo a la hora de llevar a cabo los ataques. A continuación, te explicamos qué es el SNMP Reconnaisance y cómo mantener a tu red a salvo de personas con intenciones sospechosas.
¿Qué es y para qué sirve el protocolo SNMP?
Sus siglas en inglés corresponden a Simple Network Management Protocol. En español, significa Protocolo de Gestión de Redes Simple. Es uno de los protocolos que más tiempo lleva vigente, específicamente desde el año 1988. En un principio, los switches y routers podían ser gestionados por este protocolo, hoy en día, es posible contar con el protocolo SNMP para prácticamente cualquier dispositivo que consiga conectarse a una red. Así también, es posible realizar tanto monitorización y ajustes en la configuración de los dispositivos monitorizados de forma remota.
Este es un protocolo orientado a datagramas. Cualquiera de los dispositivos gestionados tendrá un agente que se comunica con el dispositivo central, el cual los gestiona. Dicho agente enviará información al mencionado dispositivo central, cuyo contenido será almacenado en una base de datos que se denomina MIB (Management Information Base). ¿Qué es esto? Es una manera jerárquica de organizar la información recolectada de cualquier dispositivo SNMP que se encuentra conectado a la red.
Lo que puedes saber gracias a una MIB (Management Information Base)
Es bueno reconocer que el MIB es una fuente fabulosa de información valiosa respecto a la red y sus dispositivos que se encuentran conectados a la misma. Sin embargo, ¿qué información podemos encontrar?
- Usuarios: Esto puede describir la cantidad de cuentas de usuarios y los nombres de cada uno. Así también, es posible saber sobre los grupos de usuarios y la información respecto a la creación de las cuentas de cada uno.
- Programas instalados: La lista de los programas de uno o más ordenadores se puede obtener con facilidad mediante SNMP. De esta manera, podremos saber las versiones de lo que está instalado. ¿Para qué? Así se puede determinar si es que el ordenador cuenta con versiones que son vulnerables a ataques.
- Puertos abiertos: Los cibercriminales también pueden sacar provecho de los puertos abiertos con la obtención de información mediante SNMP, en lugar de realizar un escaneo que podría dejar al propio cibercriminal en evidencia ante los administradores de red.
Versiones de SNMP disponibles
En total, podemos contar con tres versiones de SNMP. Todas de ellas se utilizan hasta hoy en día. Lo que distingue a cada una de ellas es la forma en que se implementan y las medidas de seguridad con las que cuenta. Sobre esto último, debemos mencionar al «community string«. El community string consiste en una contraseña, la cual se utiliza para autenticarse a un dispositivo central (el que gestiona) mediante un community string privado.
Citamos las versiones SNMP a continuación:
- SNMPv1: Esta es la versión más insegura del protocolo en cuanto a medidas de seguridad. Ya que se vale de la autenticación mediante texto plano. El «community string» por defecto está establecido como público.
- SNMPv2c: Tiene ligeras mejoras en relación a la versión 1, sobre todo, en cuanto a desempeño y seguridad. Sin embargo, no es compatible con la primera versión, por lo que es necesario disponer de esta versión específicamente para usarla. SNMPv2c es la versión más utilizada, aunque la v3 es la que deberíamos utilizar siempre.
- SNMPv3: Esta es una versión mucho mejor en relación a las medidas de seguridad que incluye. Así también, su desempeño. Incorporó revisiones de integridad y cifrado en el momento de la autenticación. Desafortunadamente, no ha sido implementada aún en gran medida en la mayoría de las organizaciones, aunque es lo más recomendable utilizar esta versión.
Niveles de seguridad de SNMPv3
SNMP v3, cuenta con tres niveles de seguridad diferentes.
- NoAuthNoPriv: Esto quiere decir que sin autenticación , no habrá privacidad. Este no requiere autenticación, y los mensajes no se encuentran cifrados. Su uso es más recomendable para redes cerradas y seguras.
- AuthNoPriv: Significa que tiene autenticación, pero no privacidad. Incluso sin estar encriptados los mensajes durante la transmisión, estos deben ser autenticados para poder actuar con ellos. Sobre la teoría, se podrían interceptar los datos enviados entre los agentes y los administradores durante las transmisiones, incluso estando autorizadas. Pero no se traducen en solicitudes Get o Set adicionales.
- AuthPriv: Este es el sistema con autenticación y privacidad. Se trata de la implementación SNMPv3 más segura. En este caso los mensajes deben autenticarse y todos los datos serán cifrados durante la transmisión. De esta forma un factor malicioso no podría ver los datos generados por solicitudes legítimas ni enviar sus propias solicitudes Get o Set.
Tipos de mensajes SNMP
- GetRequest: Es el mensaje que envía un administrador para solicitar datos, y es el más usado actualmente. El dispositivo final devuelve el valor solicitado con un mensaje de respuesta.
- GetNextRequest: Se trata de un mensaje que envía el administrador de SNMP, para descubrir qué información está disponible desde el dispositivo.
- GetBulkRequest: Se trata de una versión actualizada de GetNextRequest. Pero en este caso, la respuesta solicitada contendrá tantos datos como la solicitud permita.
- SetRequest: Es un comando que inicia el administrador para establecer o modificar un valor de algún parámetro a través de SNMP, en el dispositivo o sistema del agente.
- Response: Se trata de la respuesta que un dispositivo o agente envía tras una solicitud del administrador.
- TrapV2: Es un mensaje que el agente SNMP envía a modo de trampa, sin que el administrador lo solicite. Son útiles para realizar una supervisión proactiva.
- InformRequest: Es un mensaje de SNMP v2, que sirve al administrador para tener la posibilidad de confirmar que se ha recibido un mensaje de captura de algún agente.
- Report: Para estos mensajes es necesario SNMPv3, y permiten que un administrador determine que tipo de problema se detectó por el agente SNMP remoto. Dependiendo de cual sea el error, el motor del protocolo puede enviar un mensaje corregido. De no ser posible, enviará una indicación del error a la aplicación.
El intercambio de información del protocolo SNMP puede realizarse de dos maneras, vía sondeo o vía trampas, si estamos administrando una red que opera bajo SNMP hay que comprender muy bien la diferencia entre los dos métodos.
La forma precisa en la que un administrador SNMP y sus “agentes” se comunican entre sí, normalmente se realiza mediante mensajes SNMP trampa que son asíncronos, pero en algunas ocasiones o mejor dicho en algunos sistemas, pueden ser utilizados los mensajes sondeados.
Como hemos mencionado, SNMP es tradicionalmente asíncrono, lo que quiere decir que sus agentes enviarán mensajes trampa SNMP cada vez que algo notable suceda en el sistema, pero el administrador no solicitará dicha información en ningún tipo de horario que sea predecible, por lo que, si un agente se mantiene en silencio, no se sabrá si esta desconectado o no y no habrá forma de saberlo.
Esta limitación, normalmente es abordada en algunos protocolos y más recientemente, algunos dispositivos SNMP también utilizan el método de sondeo en lugar de enviar mensajes trampa, cuando configuramos el sistema de esta forma, los agentes no enviaran mensajes trampa cada vez que algo suceda, si no que en su lugar esperaran por una petición del administrador que llegue en intervalos regulares, llamado “bucle de sondeo” e implica que el administrador enviará solicitudes a su agente cada 30 segundos o cada minuto.
Este método, lo que intercambia o sacrifica un poco la inmediatez para obtener un poco más de monitorización, por lo que si un agente está desconectado, no podrá responder al siguiente sondeo y por ende se sabrá que algo está mal.
La diferencia entre el método de sondeo enviando solicitudes cada “x” tiempo y el de enviar mensajes trampa asíncronos, radica en dónde comienza el intercambio de información, si es en el administrador o en el agente, ambos tienen sus pros y sus contras y deberás decidir basado en tu red y en cómo opera la misma, cual quieres utilizar.
SNMP Reconnaissance
Este es un tipo de ataque y, a su vez, es una de las fases de un ataque informático. ¿Por qué? Porque «Reconnaissance» (en español, reconocimiento) es tanto un tipo de ataque como una de las fases de un ataque. Cualquier persona que desee realizar un ataque a una red, por ejemplo, realiza tareas de reconocimiento para obtener los mejores resultados después del ataque «central». Es como una fase de recolección de información valiosa que servirá para ejecutar los ataques en concreto.
Sin embargo, el reconocimiento o «Reconnaisance» también es considerado como un ataque en sí. Porque, así como sabemos que esto permite recolectar información, dicha recolección no es autorizada. No sólo podremos saber respecto a los datos principales de los dispositivos conectados a la red. También podemos saber acerca de los recursos de sistema con los que cuenta cada uno, los servicios que utiliza y las vulnerabilidades que tiene.
Los ataques DDoS, por ejemplo, acostumbran a tener mejores resultados después de una fase de reconocimiento. Por lo que podemos decir que el reconocimiento sirve de puente para una variedad de ataques que se valen de la información recolectada. Un ataque DDoS puede hacer que un servidor se bloquee después de recibir una gran cantidad de solicitudes. Es un tipo de ataque que puede afectar a una página web, por ejemplo.
Si utilizas Kali Linux, es posible utilizar la herramienta snmp-check. Esta herramienta te permitirá aplicar el protocolo con facilidad mediante líneas de comando. Ejecutando unos pocos comandos, podrás obtener los siguientes datos de un determinado dispositivo conectado:
- Información de sistema (Nombre de host, descripción, tiempo en que está conectado, dirección IP)
- Información de red (cantidad de datagramas recibidos y enviados, TTL por defecto y otros)
- Datos de IP (Dirección de IP, Máscara de Subred y Puerta de Enlace)
- Información sobre cada una de las interfaces de red del dispositivo (ejemplo, si se encuentra encendido o apagado)
- Información del dispositivo (nombre del fabricante, modelo y más)
- Datos de ruteo
Nota: este tipo de explotación de vulnerabilidades SNMP se aplica solamente a las versiones v1 y v2.
Es probable que puedas acceder a más información que lo mencionado. Esto varía mucho dependiendo del dispositivo donde te conectas. Sin embargo, es fácil notar que puedes saber mucho respecto al dispositivo en cuestión y la red a la cual se está conectando. Esta práctica herramienta de Kali te permitirá recrear lo que un cibercriminal puede obtener de parte de los dispositivos que forman parte del blanco de su ataque.
Si deseas evitar ataques derivados del SNMP Reconnaisance, lo primero de todo, hay que desactivar el protocolo de cualquier dispositivo que no lo necesite. De esta forma reduciremos el riesgo de ser víctimas de ciertos ataques.
Como mencionamos, originalmente SNMP se desarrolló para los routers y switches. En consecuencia, podríamos reservar este protocolo para esa clase de dispositivos, en el caso de que los requerimientos así lo dicten. Por otro lado, el contenido por defecto de los community strings públicos y privados debe ser cambiado, tal y como ocurre con las contraseñas difíciles de adivinar, con el objetivo de que un usuario malicioso no utiliza las cadenas predeterminadas que se usa siempre en el protocolo SNMP.
Alternativas a SNMP
Si vemos el panorama actual en el mundo de las redes, y nos fijamos en los rumbos que están tomando las grandes empresas que se dedican a este sector, puede que incluso queramos buscar algunas alternativas. Algunas como gNMI y NETCONF, continúan ganando mucha popularidad, y la previsión es que se siga haciendo. Pero estas no son las únicas alternativas que nos podemos encontrar. Existen protocolos y herramientas que pueden complementar o incluso llegar a sustituir a SNMP. Si bien no para todos los escenarios, pero para algunos casos sí.
- API REST y SOAP: Son un buen ejemplo de lo que se puede llegar a hacer con una API RESTful basada en HTTP. En muchos casos, las aplicaciones y dispositivos de red dejan expuestos sus API, de forma que se pueden utilizar para ciertas configuraciones o control y monitoreo de redes.
- WMI y CIM: En muchos casos estas herramientas de Windows, son una implementación muy popular del modelo de información común (CIM), la cual se utiliza para monitorizar y administrar dispositivos en Windows. En este caso, tanto para sustituir como para complementar a SNMP es válido.
- IPMI: Se trata de una interfaz de administración, con características implementadas por los proveedores como IDRAC de Dell, o ILO de HP. Esto facilita la monitorización y administración de servidores.
- ICMP: Es el protocolo de mensajes de control en Internet. Este habilita el ping, y puede realizar una monitorización sencilla para darnos información sobre el rendimiento que tiene la red.
- Registro del sistema: En este caso tenemos Syslog por ejemplo. Esto nos sirve para categorizar y centralizar la información de registro en la red. A mayores, puede ayudar a detectar los fallos, notificarnos de los eventos, y multitud de configuraciones para monitorización.
- SSH/Telnet: En algunas ocasiones una interfaz de comandos simple es de las mejores formas de manejar la red. Incluso con las API con interfaces reemplazando a estos sistemas, siguen siendo muy útiles y básicos en muchas redes.
En definitiva, SNMP o Simple Network Management Protocol es un protocolo para gestionar redes y que lleva más tiempo con nosotros. Esto ha hecho que con el paso del tiempo se haya ido actualizando y perfeccionando, aunque su uso ha continuado siendo el mismo. Hemos visto también que puede ser un protocolo peligroso.