18 KiB
161,162,10161,10162/udp - Pentesting SNMP
Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!
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!
- Obtén el oficial PEASS & HackTricks swag
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.
Consejo de recompensa por errores: Regístrate en Intigriti, una plataforma premium de recompensas por errores creada por hackers, para hackers. ¡Únete a nosotros en https://go.intigriti.com/hacktricks hoy, y comienza a ganar recompensas de hasta $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
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 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
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 variedad de objetos entre diferentes proveedores y estándares.
Puedes navegar a través de un árbol OID desde la web aquí: 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.
Existen algunos OIDs conocidos como los que se encuentran dentro de 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
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 es fabricado por una organización privada y no gubernamental.
- 1: este valor denota que el dispositivo es fabricado por una empresa o entidad comercial.
Estos primeros seis valores tienden a ser los mismos para todos los dispositivos y le brindan información básica sobre ellos. Esta secuencia de números será la misma para todos los OIDs, excepto cuando el dispositivo es fabricado 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 proporcionan 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 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 lecturaprivate
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. Además, 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 utilizas una cadena de comunidad incorrecta, el servidor no responderá. Por lo tanto, si responde, se utilizó una cadena de comunidad válida.
Puertos
- El agente SNMP recibe solicitudes en el puerto UDP 161.
- El administrador recibe notificaciones (Traps e InformRequests) en el puerto 162.
- Cuando se utiliza Seguridad de la Capa de Transporte o Seguridad de la Capa de Transporte de Datagramas, 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. 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:
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:
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" <target>
braa <community string>@<IP>:.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:
snmpwalk -v X -c public <IP> 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:
-
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. -
Para un control más específico, se puede otorgar acceso utilizando:
rwcommunity
para direcciones IPv4, yrwcommunity6
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 {% 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 {% endcontent-ref %}
SNMP Masivo
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]
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/):
Dispositivos
El proceso comienza con la extracción de datos de 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:
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:
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:
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:
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 poder hacerlo.
Spoofing
Si hay una ACL que solo permite a algunas IPs consultar el servicio SMNP, puedes falsificar 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
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
Consejo de recompensa por errores: ¡Regístrate en Intigriti, una plataforma premium de recompensas por errores creada por hackers, para hackers! Únete a nosotros en https://go.intigriti.com/hacktricks hoy mismo y comienza a ganar recompensas de hasta $100,000!
{% embed url="https://go.intigriti.com/hacktricks" %}
Aprende a hackear AWS de cero a héroe con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el oficial PEASS & HackTricks swag
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los repositorios de HackTricks y HackTricks Cloud.