<summary><strong>Aprende hacking en AWS de cero a héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sigue** a **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
**Consejo para bug bounty**: **regístrate** en **Intigriti**, una plataforma premium de bug bounty creada por hackers para hackers. Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy mismo, y comienza a ganar recompensas de hasta **$100,000**!
**SNMP - Simple Network Management Protocol** es un protocolo utilizado para monitorear diferentes dispositivos en la red (como routers, switches, impresoras, IoTs...).
```
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
SNMP también utiliza el puerto **162/UDP** para **traps**. Estos son **paquetes de datos enviados desde el servidor SNMP al cliente sin ser explícitamente solicitados**.
Para asegurar que el acceso SNMP funcione entre fabricantes y con diferentes combinaciones de cliente-servidor, se creó la **Base de Información de Gestión (MIB)**. MIB es un **formato independiente para almacenar información del dispositivo**. Un MIB es un archivo de **texto** en el que todos los **objetos SNMP consultables** de un dispositivo están listados en una jerarquía de árbol **estandarizada**. Contiene al **menos un `Identificador de Objeto` (`OID`)**, que, además de la necesaria **dirección única** y un **nombre**, también proporciona información sobre el tipo, derechos de acceso y una descripción del respectivo objeto.
Los archivos MIB están escritos en el formato de texto ASCII basado en la `Notación de Sintaxis Abstracta Uno` (`ASN.1`). Los **MIB no contienen datos**, pero explican **dónde encontrar qué información** y cómo es, qué valores devuelve para el OID específico o qué tipo de datos se utiliza.
**OIDs** significa **Identificadores de Objetos**. **Los OIDs identifican de manera única a los objetos gestionados en una jerarquía MIB**. Esto se puede representar como un árbol, cuyos niveles son asignados por diferentes organizaciones. Los OIDs de objetos MIB de nivel superior pertenecen a diferentes organizaciones estándar.
**Los fabricantes definen ramas privadas que incluyen objetos gestionados para sus propios productos.**
Puedes **navegar** a través de un **árbol OID** desde la web aquí: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) o **ver qué significa un OID** (como `1.3.6.1.2.1.1`) accediendo a [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).
Hay algunos **OIDs conocidos** como los que se encuentran dentro de [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) que hacen referencia a las variables del Protocolo Simple de Gestión de Redes (SNMP) definidas por MIB-2. Y de los **OIDs pendientes de este** puedes obtener algunos datos interesantes del host (datos del sistema, datos de la red, datos de procesos...)
Estos primeros seis valores tienden a ser los mismos para todos los dispositivos y te dan la información básica sobre ellos. Esta secuencia de números será la misma para todos los OIDs, excepto cuando el dispositivo está hecho por el gobierno.
* **SNMPv1**: La principal, sigue siendo la más frecuente, la **autenticación se basa en una cadena** (cadena de comunidad) que viaja en **texto plano** (toda la información viaja en texto plano). **La versión 2 y 2c** también envían el **tráfico en texto plano** y utilizan una **cadena de comunidad como autenticación**.
* **SNMPv3**: Utiliza una mejor forma de **autenticación** y la información viaja **encriptada** usando (**se podría realizar un ataque de diccionario** pero sería mucho más difícil encontrar las credenciales correctas que en SNMPv1 y v2).
Como se mencionó antes, **para acceder a la información guardada en el MIB necesitas conocer la cadena de comunidad en las versiones 1 y 2/2c y las credenciales en la versión 3.**\
Nota que **la capacidad de escritura de un OID depende de la cadena de comunidad utilizada**, así que **incluso** si encuentras que se está utilizando "**public**", podrías ser capaz de **escribir algunos valores.** Además, **puede** haber objetos que son **siempre "Solo Lectura".**\
Si intentas **escribir** un objeto se recibe un error de **`noSuchName` o `readOnly`**.
En las versiones 1 y 2/2c si intentas usar una cadena de comunidad **mala** el servidor no **responderá**. Por lo tanto, si responde, se utilizó una **cadena de comunidad válida**.
* El gestor recibe notificaciones ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) y [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) en el puerto **162**.
* Cuando se utiliza con [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) o [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), las solicitudes se reciben en el puerto **10161** y las notificaciones se envían al puerto **10162**.
Para **adivinar la cadena de comunidad** podrías realizar un ataque de diccionario. Consulta [aquí diferentes formas de realizar un ataque de fuerza bruta contra SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Una cadena de comunidad frecuentemente utilizada es `public`.
**SNMP** contiene mucha información sobre el host y cosas que pueden resultar interesantes son: **Interfaces de red** (dirección IPv4 y **IPv6**), Nombres de usuario, Tiempo de actividad, Versión del Servidor/SO y **procesos**
| `rwcommunity <cadena de comunidad> <dirección IPv4>` | Proporciona acceso al árbol OID completo independientemente de dónde se envíen las solicitudes. |
[Braa ](https://github.com/mteg/braa)es un escáner SNMP masivo. El uso previsto de tal herramienta es, por supuesto, realizar consultas SNMP – pero a diferencia de snmpwalk de net-snmp, es capaz de consultar docenas o cientos de hosts simultáneamente, y en un solo proceso. Por lo tanto, consume muy pocos recursos del sistema y realiza el escaneo MUY rápido.
Entonces, busquemos la información más interesante (de [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
### Dispositivos
Una de las primeras cosas que hago es extraer los datos MIB sysDesc .1.3.6.1.2.1.1.1.0 de cada archivo para determinar de qué dispositivos he recopilado información. Esto se puede hacer fácilmente utilizando el siguiente comando grep:
Como ejemplo, si puedo identificar la cadena de comunidad privada utilizada por una organización en sus enrutadores Cisco IOS, entonces podría usar esa cadena de comunidad para extraer las configuraciones en ejecución de esos enrutadores. El mejor método para encontrar dichos datos a menudo ha estado relacionado con los datos de SNMP Trap. Por lo tanto, nuevamente, utilizando el siguiente grep podemos analizar rápidamente una gran cantidad de datos MIB en busca de la palabra clave "trap":
Otro área de interés son los registros. He descubierto que hay dispositivos que almacenan registros dentro de las tablas MIB. Estos registros también pueden contener intentos fallidos de inicio de sesión. Piensa en la última vez que iniciaste sesión en un dispositivo vía Telnet o SSH e inadvertidamente ingresaste tu contraseña como nombre de usuario. Normalmente busco palabras clave como _fail_, _failed_ o _login_ y examino esos datos para ver si hay algo valioso.
Si hay una ACL que solo permite a algunas IPs consultar el servicio SMNP, puedes suplantar una de estas direcciones dentro del paquete UDP y capturar el tráfico.
**Consejo para cazar recompensas**: **regístrate** en **Intigriti**, una plataforma premium de caza de recompensas creada por hackers, para hackers. ¡Únete a nosotros en [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoy mismo y comienza a ganar recompensas de hasta **$100,000**!
<summary><strong>Aprende a hackear AWS desde cero hasta ser un héroe con</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si quieres ver a tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Comparte tus trucos de hacking enviando PRs a los repositorios de github de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).