# 161,162,10161,10162/udp - Pentesting SNMP
Aprende a hackear AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: * Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Si estás interesado en **una carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_). {% embed url="https://www.stmcyber.com/careers" %} ## Información Básica **SNMP - Protocolo Simple de Administración de Redes** 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) ``` {% hint style="info" %} SNMP también utiliza el puerto **162/UDP** para **traps**. Estos son **paquetes de datos enviados desde el servidor SNMP al cliente sin ser solicitados explícitamente**. {% endhint %} ### MIB Para garantizar que el acceso SNMP funcione entre fabricantes y con diferentes combinaciones 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 se enumeran todos los **objetos SNMP** consultables de un dispositivo en una jerarquía de árbol **estandarizada**. Contiene al menos un `Identificador de Objeto` (`OID`), que, además de la **dirección única necesaria** y un **nombre**, también proporciona información sobre el tipo, derechos de acceso y una descripción del objeto respectivo.\ Los archivos MIB están escritos en el formato de texto ASCII basado en `Abstract Syntax Notation One` (`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 Los **Identificadores de Objeto (OIDs)** juegan un papel crucial. Estos identificadores únicos están diseñados para gestionar objetos dentro de una **Base de Información de Gestión (MIB)**. Los niveles más altos de los IDs de objetos MIB, o OIDs, se asignan a diversas organizaciones de establecimiento de estándares. Es dentro de estos niveles superiores donde se establece el marco para las prácticas y estándares de gestión globales. Además, a los proveedores se les concede la libertad de establecer ramas privadas. Dentro de estas ramas, tienen la **autonomía para incluir objetos gestionados pertinentes a sus propias líneas de productos**. Este sistema garantiza que haya un método estructurado y organizado para identificar y gestionar una amplia gama de objetos entre diferentes proveedores y estándares. ![](../../.gitbook/assets/snmp_oid_mib_tree.png) 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).\ Existen 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 variables SNMP definidas por MIB-2. Y a partir de los **OIDs pendientes de este** se pueden obtener algunos datos de host interesantes (datos del sistema, de red, de procesos...) ### **Ejemplo de OID** [**Ejemplo desde aquí**](https://www.netadmintools.com/snmp-mib-and-oids/): **`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`** Aquí hay un desglose de esta dirección. * 1: se llama ISO y establece que este es un OID. Por eso todos los OIDs comienzan con "1" * 3: se llama ORG y se utiliza para especificar la organización que construyó el dispositivo. * 6: es el dod o el Departamento de Defensa que es la organización que estableció primero Internet. * 1: es el valor de Internet para denotar que todas las comunicaciones ocurrirán a través de Internet. * 4: este valor determina que este dispositivo está hecho por una organización privada y no gubernamental. * 1: este valor denota que el dispositivo está hecho por una empresa o entidad comercial. Estos primeros seis valores tienden a ser los mismos para todos los dispositivos y te dan información básica sobre ellos. Esta secuencia de números será la misma para todos los OIDs, excepto cuando el dispositivo es hecho por el gobierno. Pasando a la siguiente serie de números. * 1452: da el nombre de la organización que fabricó este dispositivo. * 1: explica el tipo de dispositivo. En este caso, es un despertador. * 2: determina que este dispositivo es una unidad terminal remota. El resto de los valores dan información específica sobre el dispositivo. * 5: denota un punto de alarma discreto. * 1: punto específico en el dispositivo * 3: puerto * 21: dirección del puerto * 1: pantalla para el puerto * 4: número de punto * 7: estado del punto ### Versiones de SNMP Hay 2 versiones importantes de SNMP: * **SNMPv1**: 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** envían el **tráfico en texto plano** también y utilizan una **cadena de comunidad como autenticación**. * **SNMPv3**: Utiliza una mejor **forma de autenticación** y la información viaja **encriptada** (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). ### Cadenas de Comunidad Como se mencionó anteriormente, **para acceder a la información almacenada en el MIB necesitas conocer la cadena de comunidad en las versiones 1 y 2/2c y las credenciales en la versión 3.**\ Existen **2 tipos de cadenas de comunidad**: * **`public`** principalmente funciones de **solo lectura** * **`private`** **Lectura/Escritura** en general Ten en cuenta que **la capacidad de escritura de un OID depende de la cadena de comunidad utilizada**, por lo que **incluso** si descubres que se está utilizando "**public**", podrías ser capaz de **escribir algunos valores**. También **pueden** existir 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 usas una **cadena de comunidad incorrecta**, el servidor no **responderá**. Por lo tanto, si responde, se utilizó una **cadena de comunidad válida**. ## Puertos [Desde Wikipedia](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol): * El agente SNMP recibe solicitudes en el puerto UDP **161**. * El administrador recibe notificaciones ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) e [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) en el puerto **162**. * Cuando se utiliza con [Seguridad de la Capa de Transporte](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) o [Seguridad de la Capa de Transporte de Datagramas](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**. ## Ataque de Fuerza Bruta a la Cadena de Comunidad (v1 y v2c) 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`. ## Enumeración de SNMP Se recomienda instalar lo siguiente para ver qué significa **cada OID recopilado** del dispositivo: ```bash apt-get install snmp-mibs-downloader download-mibs # Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf sudo vi /etc/snmp/snmp.conf ``` Si conoces una cadena de comunidad válida, puedes acceder a los datos utilizando **SNMPWalk** o **SNMP-Check**: ```bash snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot snmpbulkwalk -c public -v2c 10.10.11.136 . snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] 1.3.6.1.2.1.4.34.1.3 #Get IPv6, needed dec2hex snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] NET-SNMP-EXTEND-MIB::nsExtendObjects #get extended snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] .1 #Enum all snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING] nmap --script "snmp* and not snmp-brute" braa @:.1.3.6.* #Bruteforce specific OID ``` Gracias a las consultas extendidas (download-mibs), es posible enumerar aún más sobre el sistema con el siguiente comando: ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` **SNMP** tiene mucha información sobre el host y cosas que pueden resultarte interesantes son: **Interfaces de red** (direcciones IPv4 e **IPv6**), nombres de usuario, tiempo de actividad, versión del servidor/SO y **procesos** en ejecución (pueden contener contraseñas).... ### **Configuraciones Peligrosas** En el ámbito de la gestión de redes, ciertas configuraciones y parámetros son clave para garantizar un monitoreo y control exhaustivos. ### Configuraciones de Acceso Dos configuraciones principales permiten el acceso al **árbol OID completo**, que es un componente crucial en la gestión de redes: 1. **`rwuser noauth`** se establece para permitir acceso completo al árbol OID sin necesidad de autenticación. Esta configuración es directa y permite acceso irrestricto. 2. Para un control más específico, se puede otorgar acceso utilizando: * **`rwcommunity`** para direcciones **IPv4**, y * **`rwcommunity6`** para direcciones **IPv6**. Ambos comandos requieren una **cadena de comunidad** y la dirección IP relevante, ofreciendo acceso completo independientemente del origen de la solicitud. ### Parámetros SNMP para Microsoft Windows Una serie de valores de **Base de Información de Gestión (MIB)** se utilizan para monitorear varios aspectos de un sistema Windows a través de SNMP: * **Procesos del Sistema**: Accedido a través de `1.3.6.1.2.1.25.1.6.0`, este parámetro permite monitorear procesos activos dentro del sistema. * **Programas en Ejecución**: El valor `1.3.6.1.2.1.25.4.2.1.2` está designado para rastrear programas en ejecución actualmente. * **Ruta de Procesos**: Para determinar desde dónde se está ejecutando un proceso, se utiliza el valor MIB `1.3.6.1.2.1.25.4.2.1.4`. * **Unidades de Almacenamiento**: El monitoreo de unidades de almacenamiento se facilita mediante `1.3.6.1.2.1.25.2.3.1.4`. * **Nombre de Software**: Para identificar el software instalado en un sistema, se emplea `1.3.6.1.2.1.25.6.3.1.2`. * **Cuentas de Usuario**: El valor `1.3.6.1.4.1.77.1.2.25` permite el seguimiento de cuentas de usuario. * **Puertos Locales TCP**: Finalmente, `1.3.6.1.2.1.6.13.1.3` está designado para monitorear puertos locales TCP, proporcionando información sobre conexiones de red activas. ### Cisco Echa un vistazo a esta página si tienes equipos Cisco: {% content-ref url="cisco-snmp.md" %} [cisco-snmp.md](cisco-snmp.md) {% endcontent-ref %} ## De SNMP a RCE Si tienes la **cadena** que te permite **escribir valores** dentro del servicio SNMP, es posible que puedas abusar de ella para **ejecutar comandos**: {% content-ref url="snmp-rce.md" %} [snmp-rce.md](snmp-rce.md) {% endcontent-ref %} ## **SNMP Masivo** [Braa ](https://github.com/mteg/braa)es un escáner SNMP masivo. El uso previsto de esta 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. Braa implementa su PROPIA pila SNMP, por lo que NO necesita bibliotecas SNMP como net-snmp. **Sintaxis:** braa \[Cadena de comunidad]@\[IP del servidor SNMP]:\[ID iso] ```bash braa ignite123@192.168.1.125:.1.3.6.* ``` Esto puede extraer mucha información en MB que no se puede procesar manualmente. 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** El proceso comienza con la extracción de datos **sysDesc MIB** (1.3.6.1.2.1.1.1.0) de cada archivo para identificar los dispositivos. Esto se logra a través del uso de un **comando grep**: ```bash grep ".1.3.6.1.2.1.1.1.0" *.snmp ``` ### **Identificar Cadena Privada** Un paso crucial implica identificar la **cadena de comunidad privada** utilizada por las organizaciones, especialmente en enrutadores Cisco IOS. Esta cadena permite la extracción de **configuraciones en ejecución** de los enrutadores. La identificación a menudo se basa en analizar los datos de **trampas SNMP** en busca de la palabra "trap" con un comando **grep**: ```bash grep -i "trap" *.snmp ``` ### **Nombres de usuario/Contraseñas** Los registros almacenados dentro de las tablas MIB se examinan en busca de **intentos fallidos de inicio de sesión**, que podrían incluir accidentalmente contraseñas ingresadas como nombres de usuario. Se buscan palabras clave como _fail_, _failed_ o _login_ para encontrar datos valiosos: ```bash grep -i "login\|fail" *.snmp ``` ### **Correos electrónicos** Finalmente, para extraer **direcciones de correo electrónico** de los datos, se utiliza un comando **grep** con una expresión regular, enfocándose en patrones que coincidan con formatos de correo electrónico: ```bash grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp ``` ## Modificación de valores SNMP Puedes usar _**NetScanTools**_ para **modificar valores**. Necesitarás conocer la **cadena privada** para hacerlo. ## Suplantación 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 espiar el tráfico. ## Examinar archivos de configuración SNMP * snmp.conf * snmpd.conf * snmp-config.xml
Si estás interesado en una **carrera de hacking** y hackear lo imposible - **¡estamos contratando!** (_se requiere dominio del polaco escrito y hablado_). {% embed url="https://www.stmcyber.com/careers" %} ## Comandos Automáticos de HackTricks ``` Protocol_Name: SNMP #Protocol Abbreviation if there is one. Port_Number: 161 #Comma separated if there is more than one. Protocol_Description: Simple Network Managment Protocol #Protocol Abbreviation Spelled out Entry_1: Name: Notes Description: Notes for SNMP Note: | SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...). https://book.hacktricks.xyz/pentesting/pentesting-snmp Entry_2: Name: SNMP Check Description: Enumerate SNMP Command: snmp-check {IP} Entry_3: Name: OneSixtyOne Description: Crack SNMP passwords Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100 Entry_4: Name: Nmap Description: Nmap snmp (no brute) Command: nmap --script "snmp* and not snmp-brute" {IP} Entry_5: Name: Hydra Brute Force Description: Need Nothing Command: hydra -P {Big_Passwordlist} -v {IP} snmp ```
Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)! Otras formas de apoyar a HackTricks: * Si quieres ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Obtén el [**swag oficial de PEASS & HackTricks**](https://peass.creator-spring.com) * Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.