Ejemplo SNMPv3

La versión 3 de SNMP (Simple Network Management Protocol) apareció hace mucho tiempo en respuesta a las capacidades débiles de la versión 2 en términos de seguridad. Sin embargo, a pesar de la disponibilidad y la amplia distribución de las descripciones del protocolo versión 3 del protocolo [1], hay pocas descripciones de implementaciones basadas en SNMP v3. La publicación actual refleja un estudio de los volcados de volcado de la 'GUI de Element Manager' (en adelante EM) y la Plataforma de Transporte de Transporte Múltiple (en adelante MHTP).

Examinaremos una serie de solicitudes SNMP de obtención y configuración emitidas por EM en el momento en que se lanzó y autenticó la aplicación, y las respuestas de MHTP a estas solicitudes. Antes de profundizar en la secuencia y el contenido de las consultas, debe prestar atención a lo siguiente:

1) El cliente (EM), para una autenticación exitosa, debe tener información sobre los siguientes parámetros de USM (RFC 3414):

• Nombre de usuario: por ejemplo 'Administrador',
• Protocolo de autenticación: MD5,
• Clave de autenticación: p. Ej. '12345',
• Protocolo de privacidad: AES,
• Clave de privacidad: por ejemplo '12345',
• Nombre del contexto: 'tnms'.

2) Al crear una conexión UDP en el lado del cliente, el sistema operativo selecciona 'puerto de origen' (no debe confundirse con el 'puerto de destino', que es 161 por defecto para obtener / configurar SNMP). El valor del 'puerto de origen' puede cambiar con diferentes lanzamientos de la aplicación cliente. En esta implementación, el valor de 'puerto fuente' se usa en la formación dinámica de OID. Por ejemplo, si selecciona 'puerto fuente' = 60583, tenemos el byte 0xEC y 0xA7, y un sufijo dinámico como parte de un OID de la forma '.236.167'.

3) La dirección IP propia es conocida por el lado del cliente y se usa en la formación dinámica de OID. Por ejemplo, para la dirección IP del cliente '10 .60.1.5 ', parte de' .10.60.1.5. 'Estará presente en el OID de algunas solicitudes.

4) El valor de Nombre de usuario mencionado anteriormente también se usa en la formación del OID. Por ejemplo, para 'Administrador', parte de '.65.100.109.105.110.105.115.116.114.97.116.111.114. (ASCII)

Ahora pasamos a la secuencia y el contenido de las solicitudes get y set al iniciar EM, la autenticación y la creación de una sesión (la parte de volcado no se proporciona a continuación):

Solicitudes 1 y 2. De acuerdo con RFC 5343, "descubrimos" los parámetros EngineID, EngineBoots y EngineTime,

Solicitud:
datos: get-request,
msgData: texto sin formato,
enlaces variables: -


Respuesta:
datos: informe,
msgData: texto sin formato,
enlaces variables: (1 artículo)
1.3.6.1.6.3.15.1.1.4 ( usmStatsUnknownEngineIDs ) (Integer32) ==> 1.


Curiosamente, los valores obtenidos EngineBoots y EngineTime se utilizan a partir de la solicitud 4, y en la solicitud 3 es necesario establecer valores cero para ellos.

Solicitud 3. Solicitud usmStatsNotInTimeWindows

Solicitud:
datos: get-request,
msgData: encryptedPDU,
enlaces variables: -


Respuesta:
datos: informe,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.6.3.15.1.1.2.0 ( usmStatsNotInTimeWindows ) (Integer32) ==> 0.


El número total de paquetes recibidos por el motor SNMP fuera de la ventana autorizada.

Solicitud 4 . Solicitud SnmpAgentState.
Solicitud:
datos: get-request,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.4.1.42229.1.1.1.7.128.6.0

Respuesta:
datos: obtener respuesta,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.4.1.42229.1.1.1.7.128.6.0 (snmpAgentState) (Integer32) ==> 3 (HABILITADO).

Estado del agente

Solicitud 5 . Solicitud SysDescr
Solicitud:
datos: get-request,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.2.1.1.1.0 (sysDescr)

Respuesta:
datos: obtener respuesta,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.2.1.1.1.0 (sysDescr) ==> '--------- Copyright 2019 ******. Todos los derechos reservados. (OctetString)

Solicitud 6. La solicitud de InterfaceVersion es estructuralmente similar a 4 y 5.
Solicitud 7. Solicitud usmXUserLastSuccessfulLogin
Solicitud:
datos: get-request,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.4.1.42229.1.1.1.9.2.1.13.13.65.100.109.105.110.105.115.116.114.97.116.111.114

Respuesta:
datos: obtener respuesta,
msgData: encryptedPDU,
enlaces variables: (1 artículo)
1.3.6.1.4.1.42229.1.1.1.9.2.1.13.13.65.100.109.105.110.105.115.116.114.97.116.111.114 (usmXUserLastSuccessfulLogin)
==> 07: e3: 09: 0a: 06: 1f: 36: 00: 2b: 00: 00 (OctetString)
==> 2019-09-10, etc.
Nombre de usuario ('Administrador') - '. 65.100.109.105.110.105.115.116.114.97.116.111.114.' Se incluye directamente en el OID, para lo cual se solicita el momento de su última autenticación exitosa.

Solicitud 8. Solicitud para crear una sesión
Solicitud:
datos: solicitud de conjunto,
msgData: encryptedPDU,
enlaces variables: (4 artículos)
1.3.6.1.4.1.42229.1.1.1.9.6.1.2.6.10.60.1.5.236.167 ==> 4 (Integer32) ==> createAndGo 1.3.6.1.4.1.42229.1.1.1.9.6.1.5.6.10.60.1. 5.236.167 ==> 2 (Integer32) ==> sessionRemoteLogin
1.3.6.1.4.1.42229.1.1.1.9.6.1.3.6.10.60.1.5.236.167 ==> 41646d696e6973747261746f72 (OctetString) ==> sessionUserName ('Administrador')
1.3.6.1.4.1.42229.1.1.1.9.6.1.4.6.10.60.1.5.236.167 ==> 4043542020 (OctetString) ==> sessionManager ==> 'root'
Respuesta:
datos: obtener respuesta,
msgData: encryptedPDU,
enlaces variables: (4 artículos)
1.3.6.1.4.1.42229.1.1.1.9.6.1.2.6.10.60.1.5.236.167 ==> 4 (Integer32) ==> createAndGo 1.3.6.1.4.1.42229.1.1.1.9.6.1.5.6.10.60.1. 5.236.167 ==> 2 (Integer32) ==> sessionRemoteLogin
1.3.6.1.4.1.42229.1.1.1.9.6.1.3.6.10.60.1.5.236.167 ==> 41646d696e6973747261746f72 (OctetString) ==> sessionUserName ('Administrador')
1.3.6.1.4.1.42229.1.1.1.9.6.1.4.6.10.60.1.5.236.167 ==> 4043542020 (OctetString) ==> sessionManager ==> 'root'
La dirección IP y el puerto de origen se incluyen directamente en el OID: '.10.60.1.5.236.167'.

La publicación ilustra brevemente las características de la implementación de SNMP v3 inherente a MHTP.

[1] Douglas R. Mauro y Kevin J. Schmidt "Essential SNMP" (segunda edición).
[2] gtacknowledge.extremenetworks.com/articles/How_To/How-to-decrypt-SNMPv3-packets-in-Wireshark
[3] labs.spritelink.net/talking-snmpv3-with-nsn-hit7300

Source: https://habr.com/ru/post/484442/


All Articles