↓ Ir al contenido
  1. Notas/
  2. Protocolos y Tecnologías/

SNMP

2 mins
Tabla de contenido

Simple Network Management Protocol
#

Resumen
#

SNMP es un protocolo que permite la gestión remota de dispositivos de red, generalmente IoT, routers, switches y demás.

Para garantizar una compatibilidad entre todos los fabricantes, se usa un formato llamado MIB para guardar los datos (Management information Base). Esta MIB representa la “estructura” de los datos que pueden solicitarse al servidor. En ella, todo son OIDs (Object Identifiers), que a su vez pueden ser nodos o referencias a otros nodos (de forma análoga a varios directorios y los archivos en ellos).

En la MIB no hay datos guardados, solo está la estructura de esos datos, las indicaciones de qué OID corresponde a cada dato. Los datos reales se guardan en cada servidor SNMP, pero conocer el OID de un dato no garantiza poder acceder a él, su acceso está protegido por:

  • Community Strings: Determinan permisos read-write (SNMPv1 y v2)
    • Las comm. strings no están cifradas en tránsito.
    • Conocer la public community string da acceso Read-Only. Conocer la private da acceso Read-Write.
  • Credenciales de usuario cifradas (SNMPv3)
  • Puertos UDP 161, 162.
    • UDP/161 -> Envío de comandos al servidor.
    • UDP/162 -> Envío de traps (“eventos”) desde el servidor de forma automática.

Las versiones v1 y v2c de SNMP usan community strings, a partir de la v3 se abandona el modelo de community strings y se usa un modelo de usuarios. La v3 ofrece autenticación y cifrado, ambos opcionales y en función de la configuración.

Enumeración y acceso
#

Consiguiendo acceso
#

En muchas situaciones los administradores de red suelen descuidar la configuración de SNMP y dejar como valores de claves public/private los valores (literalmente) de public/private.

Para acceder y leer datos con OID específicos: snmpwalk

1
2
# Versión v2c de SNMP, asumiendo uso de comm. string por defecto "public".
snmpwalk -v2c -c public 10.10.11.87

Para tratar de sacar una community string por fuerza bruta: onesixtyone

1
2
onesixtyone -c wordlist.txt 10.10.11.87 # Una sola IP
onesixtyone -c wordlist.txt -i ips.txt # Varias IPs

Consiguiendo información
#

Una vez tengamos una community string, para hacer fuerza bruta en los OID individuales: braa

1
2
# Para sacar el dato guardado en cada OID que empiece por ".x.y.z."
braa public@10.10.11.87:x.y.z.*

También podemos sacar datos individuales. Algunos OID’s útiles son los siguientes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
IP Addresses 1.3.6.1.2.1.4.34.1.3
Running Processes 1.3.6.1.2.1.25.4.2.1.2
System Information 1.3.6.1.2.1.1.1
Hostname 1.3.6.1.2.1.1.5
Uptime 1.3.6.1.2.1.1.3
Mountpoints 1.3.6.1.2.1.25.2.3.1.3
Running Software Paths 1.3.6.1.2.1.25.4.2.1.4
Running Software Parameters 1.3.6.1.2.1.25.4.2.1.5
Listening UDP Ports 1.3.6.1.2.1.7.5.1.2.0.0.0.0
Listening TCP Ports 1.3.6.1.2.1.6.13.1.3.0.0.0.0
Network Information 1.3.6.1.2.1.4.20.1