SNMP - Enumeracion y Explotacion

SNMP - Enumeracion y Explotacion

1. Introduccion

SNMP (Simple Network Management Protocol) es un protocolo de capa de aplicacion utilizado para el monitoreo y administracion de dispositivos de red como routers, switches, servidores, impresoras y firewalls. Funciona sobre UDP y permite gestionar la configuracion y monitorizacion remota de dispositivos.

Esta guia cubre la teoria de SNMP, tecnicas de enumeracion y metodos de explotacion para penetration testing.


2. Fundamentos

2.1. Arquitectura SNMP

SNMP sigue una arquitectura manager-agent:

NMS/Manager (tu maquina) ---UDP/161---> Agente SNMP (router, switch)
                                     |
                                     v
                              MIB (base de datos)
Componente Descripcion
NMS Network Management Station (herramienta de gestion)
Agente Proceso en el dispositivo gestionado
MIB Management Information Base (base de datos de objetos)

2.2. Puertos

Puerto Protocolo Descripcion
161/UDP SNMP Consultas del manager al agente
162/UDP SNMP Traps Notificaciones del agente al manager

3. Versiones de SNMP

3.1. Comparativa de Versiones

Version Seguridad Descripcion
v1 Ninguna Community string en texto plano, obsoleto
v2c Ninguna Mas eficiente, igual de inseguro
v3 Fuerte Autenticacion y cifrado

3.2. Vulnerabilidades de v1/v2c

Problemas de SNMPv1/v2c:
- Texto plano visible con Wireshark
- Community strings predecibles ("public", "private")
- Sin mecanismo de bloqueo
- UDP sin handshake (respuesta = valido)

4. Conceptos Clave

4.1. MIB (Management Information Base)

La MIB es una base de datos jerarquica que describe todos los parametros que un dispositivo expone via SNMP.

Arbol MIB:
iso (1)
  org (3)
    dod (6)
      internet (1)
        mgmt (2)
          mib-2 (1)        <- MIBs RFC estandar
            system (1)
            interfaces (2)
            tcp (6)
        private (4)
          enterprises (1) <- MIBs de fabricantes

4.2. OID (Object Identifiers)

Los OID son direcciones unicas para cada dato dentro del arbol MIB.

1.3.6.1.2.1.1.1.0
|  |  |  | | | | | +-- instancia
iso org dod inet mgmt mib2 sys sysDescr

Ejemplo:
1.3.6.1.2.1.1.1.0 = sysDescr (descripcion del SO)
1.3.6.1.2.1.1.5.0 = sysName (hostname)

4.3. Community Strings

Las community strings son las “contraseñas” de SNMPv1/v2c.

String Tipo Permiso Default
public Read-Only Solo lectura Comun
private Read-Write Lectura + escritura Desconfigurado
trap Trap Recibe alertas Raro

5. Herramientas de Enumeracion

5.1. snmpwalk

Descripcion: Recorre el arbol MIB desde un OID raiz y recupera valores recursivamente.

snmpwalk -v2c -c <community> <target> [OID]
Parametro Descripcion
-v2c Version SNMPv2c
-v1 Version SNMPv1
-c Community string
-On Output numerico (sin traducir OIDs)
-t Timeout en segundos
-r Reintentos

5.2. snmpget

# Obtener un OID especifico
snmpget -v2c -c public target 1.3.6.1.2.1.1.1.0

5.3. snmpset

# Modificar un valor (requiere RW)
snmpset -v2c -c private target 1.3.6.1.2.1.1.5.0 s "nuevo_nombre"
Parametro Descripcion
s String
i Integer
x Hex string

6. OIDs de Alto Valor

6.1. Sistema

OID Nombre Descripcion
1.3.6.1.2.1.1.1.0 sysDescr SO y version del kernel
1.3.6.1.2.1.1.3.0 sysUpTime Tiempo desde inicio
1.3.6.1.2.1.1.5.0 sysName Hostname

6.2. Procesos

OID Nombre Descripcion
1.3.6.1.2.1.25.4.2.1.2 hrSWRunName Nombres de procesos
1.3.6.1.2.1.25.4.2.1.4 hrSWRunPath Rutas de binarios
1.3.6.1.2.1.25.4.2.1.5 hrSWRunParameters Argumentos de procesos

Advertencia: Los argumentos de procesos pueden contener credenciales en texto plano.

6.3. Red

OID Nombre Descripcion
1.3.6.1.2.1.2.2.1.2 ifDescr Nombres de interfaces
1.3.6.1.2.1.2.2.1.6 ifPhysAddress Direcciones MAC
1.3.6.1.2.1.4.20 ipAddrTable IPs asignadas
1.3.6.1.2.1.4.21 ipRouteTable Tabla de rutas
1.3.6.1.2.1.6.13.1.3 tcpConnLocalPort Puertos TCP locales

6.4. Software

OID Nombre Descripcion
1.3.6.1.2.1.25.6.3.1.2 hrSWInstalledName Software instalado
1.3.6.1.2.1.25.2.3.1.3 hrStorageDescr Mount points

6.5. Usuarios

OID Nombre Descripcion
1.3.6.1.4.1.77.1.2.25 hrUserName Usuarios del sistema

7. Enumeracion Practica

7.1. Reconocimiento Basico

# Walk completo
snmpwalk -v2c -c public target > snmp_full.txt

# Walk en formato numerico
snmpwalk -v2c -c public -On target

# Info basica del sistema
snmpwalk -v2c -c public target 1.3.6.1.2.1.1.1.0
snmpwalk -v2c -c public target 1.3.6.1.2.1.1.5.0

7.2. Procesos y Credenciales

# Nombres de procesos
snmpwalk -v2c -c public target 1.3.6.1.2.1.25.4.2.1.2

# Rutas de binarios
snmpwalk -v2c -c public target 1.3.6.1.2.1.25.4.2.1.4

# Argumentos de procesos (PRIORIDAD)
snmpwalk -v2c -c public target 1.3.6.1.2.1.25.4.2.1.5

7.3. Red e Interfaces

# Interfaces de red
snmpwalk -v2c -c public target 1.3.6.1.2.1.2.2.1.2

# Direcciones MAC
snmpwalk -v2c -c public target 1.3.6.1.2.1.2.2.1.6

# IPs del sistema
snmpwalk -v2c -c public target 1.3.6.1.2.1.4.20

# Tabla de rutas
snmpwalk -v2c -c public target 1.3.6.1.2.1.4.21

# Puertos TCP activos
snmpwalk -v2c -c public target 1.3.6.1.2.1.6.13.1.3

8. Fuerza Bruta de Community Strings

8.1. Wordlists

# Wordlists recomendadas
/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt
/usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt

8.2. Script de Fuerza Bruta

#!/bin/bash
TARGET=$1
WORDLIST="/usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt"

while read community; do
    result=$(snmpwalk -v2c -c "$community" -t 1 -r 0 \
        $TARGET 1.3.6.1.2.1.1.1.0 2>/dev/null)
    if [ -n "$result" ]; then
        echo "[+] VALIDA: $community"
        echo "$result"
    fi
done < $WORDLIST

8.3. Verificar RW

# Intentar modificar sysName
snmpset -v2c -c private target 1.3.6.1.2.1.1.5.0 s "test_rw"

# Verificar cambio
snmpwalk -v2c -c public target 1.3.6.1.2.1.1.5.0

9. Sniffing de Community Strings

9.1. Captura con tcpdump

# Capturar trafico SNMP
sudo tcpdump -i eth0 -nn udp port 161 -w snmp.pcap

# Extraer strings
strings snmp.pcap | grep -i snmp

9.2. Extraccion con tshark

# Extraer community strings
tshark -r snmp.pcap -Y snmp -T fields -e snmp.community

10. Checklist de SNMP

Fase 1: Descubrimiento

# 1. Verificar si SNMP esta abierto
nmap -sU -p 161 target

# 2. Probar community string por defecto
snmpwalk -v2c -c public target

Fase 2: Enumeracion

# 3. Walk completo
snmpwalk -v2c -c public target > full.txt

# 4. Procesos (buscar credenciales)
snmpwalk -v2c -c public target 1.3.6.1.2.1.25.4.2.1.5

# 5. Red (puertos internos)
snmpwalk -v2c -c public target 1.3.6.1.2.1.6.13.1.3

Fase 3: Explotacion

# 6. Fuerza bruta
# 7. Verificar RW
# 8. Modificar configuracion

11. Contramedidas

11.1. Configuracion Segura

# Usar SNMPv3
# Cambiar community strings por defecto
# Restringir acceso por IP
# Deshabilitar SNMP si no se usa

11.2. Monitoreo

# Monitorizar accesos SNMP
# Loggear intentos fallidos
# Alertas por community string desconocida

12. Feedback

12.1. Lo Que Esta Bien

  • Documentacion completa de OIDs
  • Ejemplos de enumeracion efectivos
  • Seccion de fuerza bruta
  • Tabla de referencia rapida

12.2. Lo Que Falta

  • Mas detalles de configuracion
  • Casos de studio
  • Prevencion mas detallada

12.3. Mejoras Recomendadas

  • Agregar ejemplos de SNMPv3
  • Documentar contramedidas avanzada
  • Agregar analisis de trafico malicioso