Recolección de información de dispositivos con el protocolo SNMP
Recolección de información de dispositivos con el protocolo SNMP
snmp-check es una herramienta de enumeración en Kali Linux diseñada para automatizar la recolección de información de dispositivos que ejecutan el protocolo SNMP (Simple Network Management Protocol).
Extrae datos valiosos de un objetivo (como routers, switches o servidores) utilizando cadenas de comunidad (community strings), por defecto la clásica public.
🛠️ Sintaxis y Uso Básico
La sintaxis general del comando es:
snmp-check [opciones] <dirección-IP>
Ejemplo Básico
Para escanear un objetivo en la IP 192.168.1.50 usando la comunidad por defecto (public):
snmp-check 192.168.1.50
Si el servicio SNMP utiliza una cadena de comunidad personalizada o un puerto diferente:
snmp-check -c mi_comunidad -p 161 192.168.1.50
⚙️ Opciones Principales
| Opción | Descripción | Ejemplo |
-c | Especifica la cadena de comunidad (community string). Por defecto: public. | -c private |
-p | Especifica el puerto SNMP. Por defecto: 161. | -p 161 |
-v | Versión del protocolo SNMP a utilizar (1 o 2c). Por defecto: 1. | -v 2c |
-w | Habilita la comprobación de permisos de escritura (write check). | -w |
-d | Desactiva el reenvío de consultas TCP/UDP (desactiva algunas comprobaciones). | -d |
-t | Tiempo de espera en segundos (timeout). Por defecto: 5. | -t 10 |
-r | Número de reintentos (retries). Por defecto: 1. | -r 3 |
🔍 ¿Qué Información Extrae?
Cuando snmp-check encuentra un servicio SNMP expuesto, recopila automáticamente:
Información del Sistema: Nombre del host, descripción del SO, tiempo de actividad (uptime), contacto de administración y ubicación.
Cuentas de Usuario: Usuarios del sistema local.
Procesos en Ejecución: Lista de programas y servicios activos.
Interfaces de Red: Direcciones IP, MAC, estado operativo y tráfico de red.
Puertos Abiertos: Conexiones TCP y puertos UDP a la escucha.
Rutas de Red: Tabla de enrutamiento del dispositivo.
Almacenamiento y Discos: Dispositivos montados, memoria RAM y capacidad de disco.
Software Instalado: Aplicaciones registradas en el sistema.
Nota de Seguridad: En auditorías de seguridad (pentesting), el uso de SNMP v1 y v2c es muy común para descubrir vectores de ataque iniciales debido al envío de credenciales en texto plano (
public/private).
Asegurar o desactivar correctamente SNMP es un paso fundamental en el bastionado (hardening) de infraestructura de red y servidores, ya que las versiones antiguas (v1 y v2c) transmiten credenciales y datos del sistema en texto claro sin cifrado.
🚫 Opción 1: Deshabilitar el Servicio (Recomendado si no se utiliza)
Si el sistema no forma parte de una consola centralizada de monitorización (como Zabbix, Nagios o PRTG), lo más seguro es desactivar y detener el servicio por completo.
En Linux (Debian / Ubuntu / RHEL)
# Detener el servicio SNMP inmediatamente
sudo systemctl stop snmpd
# Deshabilitar para que no inicie con el sistema
sudo systemctl disable snmpd
En Routers / Switches Cisco IOS
Router(config)# no snmp-server
En Windows Server (PowerShell)
# Detener y deshabilitar el servicio SNMP
Stop-Service -Name "SNMP"
Set-Service -Name "SNMP" -StartupType Disabled
🛡️ Opción 2: Asegurar SNMP (Buenas Prácticas de Hardening)
Si necesitas utilizar SNMP para monitorización, aplica el principio de mínimo privilegio y cifrado siguiendo estas pautas:
1. Migrar Obligatoriamente a SNMPv3
Las versiones v1 y v2c no soportan autenticación robusta ni cifrado. SNMPv3 introduce el modelo USM (User-based Security Model), ofreciendo tres niveles de seguridad:
authPriv(Obligatorio en producción): Proporciona autenticación con hash (SHA-256 / SHA-512) y cifrado de datos (AES-128 / AES-256).Evita:
noAuthNoPrivyauthNoPriv.
Ejemplo de Configuración en Linux (/etc/snmp/snmpd.conf):
# Crear usuario con autenticación SHA y cifrado AES
createUser adminUser SHA-256 "ClaveAutenticacionSegura123!" AES-256 "ClaveCifradoSegura456!"
# Asignar permisos de lectura únicamente (read-only)
rouser adminUser authpriv
Ejemplo de Configuración en Cisco IOS:
# Definir el grupo SNMPv3 con cifrado obligatorio (priv)
Router(config)# snmp-server group MONITOR-GROUP v3 priv read VIEW-LECTURA
# Crear el usuario dentro del grupo con contraseñas fuertes
Router(config)# snmp-server user adminUser MONITOR-GROUP v3 auth sha ClaveAuth123! priv aes 256 ClavePriv456!
2. Cambiar o Eliminar Cadenas de Comunidad por Defecto
Si por restricciones de compatibilidad debes mantener SNMPv2c temporalmente:
Elimina las cadenas
publicyprivate.Usa valores aleatorios y complejos: Trata la cadena de comunidad como si fuera una contraseña compleja (mínimo 16 caracteres alphanuméricos con símbolos).
Restringe a Solo Lectura (Read-Only): Nunca expongas la comunidad con permisos de escritura (Read-Write / rw), ya que permite modificar parámetros críticos de la red o del SO.
3. Restricción por ACLs / Firewall (Acceso Limitado)
Limita la escucha del puerto UDP 161 únicamente a las direcciones IP específicas del servidor de monitorización.
En Linux (Firewalld / UFW):
# UFW: Permitir solo la IP de monitorización
sudo ufw allow from 192.168.1.100 to any port 161 proto udp
En Cisco IOS (Vía ACL):
# Crear Lista de Control de Acceso con la IP autorizada
Router(config)# ip access-list standard ACL-SNMP
Router(config-std-nacl)# permit host 192.168.1.100
Router(config-std-nacl)# deny any log
# Aplicar la ACL al grupo o comunidad SNMP
Router(config)# snmp-server community MiComunidadCompleja123! RO ACL-SNMP
4. Aislar la Interfaz de Escucha y Red de Gestión
VLAN de Gestión: Canaliza el tráfico SNMP a través de una red fuera de banda (Out-of-Band Management VLAN) aislada del tráfico de usuarios.
Binding Local: Configura el demonio SNMP para que escuche exclusivamente en la IP de gestión interna o en la interfaz
loopback, no en la interfaz pública0.0.0.0.
En /etc/snmp/snmpd.conf (Linux):
# Escuchar únicamente en la interfaz interna de gestión
agentaddress udp:192.168.10.5:161
📋 Resumen de Comprobación (Checklist)
| Medida | Estado Ideal |
| Versión del Protocolo | Usar exclusivamente SNMPv3 (authPriv). |
| Algoritmos recomendados | Autenticación: SHA-256 o superior. Cifrado: AES-128/256. |
| Acceso a Datos | Solo Lectura (RO / rouser). Evitar permisos de escritura. |
| Control de Red | Bloquear el puerto UDP 161 mediante ACLs / Firewalls excepto para el servidor SIEM/NMS. |
| Cadenas por defecto | Eliminar public / private. Usar frases complejas si v2c es inevitable. |