# 161,162 UDP (SNMP)

## SNMP

> **NOTE** **Simple Network Management Protocol (SNMP)** se creó para supervisar dispositivos de red. Además, permite gestionar tareas de configuración y modificar ajustes de forma remota. El hardware compatible con SNMP incluye routers, switches, servidores, dispositivos IoT, entre otros. Es un protocolo esencial para la supervisión y la gestión de dispositivos en redes.

***

### MIB

> **NOTE** Para garantizar compatibilidad entre distintos fabricantes y combinaciones cliente-servidor, se creó el formato **MIB (Management Information Base)**. Es un archivo de texto que contiene identificadores de objetos (*OID*) que definen la información de los dispositivos.

> **TIP** Un **OID** representa un nodo en un espacio de nombres jerárquico. Una secuencia de números identifica únicamente cada nodo. Cuanto más larga sea la cadena, más específica será la información.

***

### Versiones de SNMP

> **WARNING**
>
> * **SNMPv1**: Protocolo básico sin autenticación ni cifrado. Toda la información circula en texto plano.
> * **SNMPv2c**: Mejora en funcionalidades pero misma debilidad en seguridad. Las "community strings" viajan en texto plano.
> * **SNMPv3**: Incorpora autenticación (usuario y contraseña) y cifrado. Más complejo de configurar, pero mucho más seguro.

***

### Community Strings

> **IMPORTANT** Las cadenas de comunidad actúan como contraseñas para determinar el acceso a la información SNMP. Aunque SNMPv3 es más seguro, muchas organizaciones siguen usando SNMPv2 por su simplicidad, dejando activos servicios vulnerables.

***

### Configuración predeterminada

> **IMPORTANT** La configuración por defecto del demonio SNMP define IPs, puertos, MIBs, OIDs, autenticación y cadenas de comunidad.

> Manual oficial: <https://www.net-snmp.org/docs/man/snmpd.conf.html>

```bash
# Configuración
cat /etc/snmp/snmpd.conf | grep -v "#" | sed -r '/^\s*$/d'

sysLocation    Sitting on the Dock of the Bay
sysContact     Me <me@example.org>
sysServices    72
master  agentx
agentaddress  127.0.0.1,[::1]
view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1
rocommunity  public default -V systemonly
rocommunity6 public default -V systemonly
rouser authPrivUser authpriv -V systemonly
```

***

### Configuraciones peligrosas

| Ajustes                                            | Descripción                                     |
| -------------------------------------------------- | ----------------------------------------------- |
| rwuser noauth                                      | Acceso completo al árbol OID sin autenticación. |
| rwcommunity `<community string>` `<IPv4 address>`  | Acceso total sin restricción de origen.         |
| rwcommunity6 `<community string>` `<IPv6 address>` | Igual que el anterior pero usando IPv6.         |

***

## SNMP Enumeration Checklist

Checklist y comandos útiles para recolectar información por el puerto **UDP/161**.

### 1. Descubrir / Bruteforce Community Strings

```bash
# Fuerza bruta con onesixtyone
onesixtyone -c /opt/useful/seclists/Discovery/SNMP/snmp.txt <IP>

# Detección con Nmap
nmap -sU -p161 --script snmp-brute <IP>
```

### 2. SNMPwalk (v1 / v2c)

```bash
# Volcado completo
snmpwalk -v2c -c <community> <IP>

# Info de sistema
snmpwalk -v2c -c <community> <IP> 1.3.6.1.2.1.1

# Contacto y ubicación
snmpget -v2c -c <community> <IP> 1.3.6.1.2.1.1.4.0  # sysContact
snmpget -v2c -c <community> <IP> 1.3.6.1.2.1.1.6.0  # sysLocation

# Versión del agente
snmpget -v2c -c <community> <IP> 1.3.6.1.4.1.2021.100.2.0
```

### 3. Tablas interesantes

| Tabla         | OID                 | Uso                   |
| ------------- | ------------------- | --------------------- |
| hrSWRunTable  | 1.3.6.1.2.1.25.4.2  | Procesos en ejecución |
| hrSWInstalled | 1.3.6.1.2.1.25.6.3  | Software instalado    |
| hrDevice      | 1.3.6.1.2.1.25.3    | Información hardware  |
| tcpConnTable  | 1.3.6.1.2.1.6.13    | Conexiones TCP        |
| ifDescr       | 1.3.6.1.2.1.2.2.1.2 | Interfaces de red     |

```bash
snmpwalk -v2c -c <community> <IP> 1.3.6.1.2.1.25.4.2
```

### 4. Braa (paralelo y silencioso)

```bash
# Uso básico
braa <community>@<IP>:.1.3.6.*

# Múltiples OIDs
grep -f oids.txt | braa public@<IP>
```

### 5. Scripts NSE de Nmap

```bash
nmap -sU -p 161 --script "snmp-*" <IP>
```

> **NOTE**
>
> Ejemplos de scripts útiles:
>
> * `snmp-ios-config`: descarga la running-config de routers Cisco.
> * `snmp-sysdescr`: muestra banner / versión del sistema.

### 6. Herramientas extra

* `snmp-check`: salida legible con info relevante.
* `snmpenum` (Metasploit): módulo auxiliar para tablas host/hr.
* `snmpscan.py`: escaneo masivo de rangos y cadenas.

### 7. Tips & Trucos

* Aumentar timeout:

```bash
snmpwalk -v2c -c <community> -t 10 <IP>
```

* Filtrar cadenas visibles:

```bash
snmpwalk -v2c -c <community> <IP> | grep -E "STRING|Timeticks"
```

* Si faltan archivos MIB:

```bash
export MIBS=+ALL
```

y/o instalar `snmp-mibs-downloader`.

***

### Checklist Rápido

1. Verifica puerto **161/udp** abierto.
2. Bruteforce de community strings.
3. Usa `snmpwalk` para volcado completo.
4. Extrae `sysDescr`, `sysName`, `sysContact`.
5. Revisa `hrSWRunTable` para procesos sensibles.
6. Consulta versión Net-SNMP (`2021.100.x`).
7. Lanza scripts SNMP con Nmap.

***

### Redes sociales

* LinkedIn: <https://www.linkedin.com/in/tuch0/>
* Instagram: <https://www.instagram.com/tuch0_/>
* YouTube: <https://www.youtube.com/@tuch0>\_
* GitHub: <https://github.com/Tuch0>
* Web personal: <https://tuch0.com/>

> 📄 Apuntes personales de HTB Academy. Para uso educativo.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tucho.gitbook.io/docs/reconocimiento-y-enumeracion/enumeracion-puertos/161-162-udp-snmp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
