Exemple SNMPv3

La version 3 de SNMP (Simple Network Management Protocol) est apparue il y a longtemps en réponse aux faibles capacités de la version 2 en termes de sécurité. Cependant, malgré la disponibilité et la large distribution des descriptions de protocole version 3 du protocole [1], il existe peu de descriptions d'implémentations basées sur SNMP v3. Le poste actuel reflète une étude des décharges de la «Element Manager GUI» (ci-après EM) et de la plate-forme de transport Multi-Haul (ci-après MHTP).

Nous examinerons une série de requêtes get et set SNMP émises par EM au moment où l'application a été lancée et authentifiée, et les réponses MHTP à ces requêtes. Avant d'explorer la séquence et le contenu des requêtes, vous devez faire attention aux éléments suivants:

1) Le client (EM), pour une authentification réussie, doit avoir des informations sur les paramètres USM suivants (RFC 3414):

• Nom d'utilisateur - par exemple «Administrateur»,
• Protocole d'authentification - MD5,
• Clé d'authentification - par exemple «12345»,
• Protocole de confidentialité - AES,
• Clé de confidentialité - par exemple «12345»,
• Nom du contexte - «tnms».

2) Lors de la création d'une connexion UDP côté client, le système d'exploitation sélectionne le «port source» (à ne pas confondre avec le «port de destination», qui est 161 par défaut pour SNMP get / set). La valeur de «port source» peut changer avec différents lancements de l'application cliente. Dans cette implémentation, la valeur de «port source» est utilisée dans la formation dynamique de l'OID. Par exemple, si vous sélectionnez «port source» = 60583, nous avons l'octet 0xEC et 0xA7, et un suffixe dynamique dans le cadre d'un OID de la forme «.236.167».

3) La propre adresse IP est connue du côté client et est utilisée dans la formation dynamique de l'OID. Par exemple, pour l'adresse IP du client '10 .60.1.5 ', une partie du' .10.60.1.5. 'Sera présente dans l'OID de certaines requêtes.

4) La valeur de nom d'utilisateur mentionnée ci-dessus est également utilisée dans la formation de l'OID. Par exemple, pour 'Administrateur', une partie du '.65.100.109.105.110.105.115.116.114.97.116.111.114. (ASCII).

Nous passons maintenant à la séquence et au contenu des requêtes get et set lors du démarrage de l'EM, de l'authentification et de la création d'une session (la partie de vidage n'est pas donnée ci-dessous):

Requêtes 1 et 2. Conformément à la RFC 5343, nous «découvrons» les paramètres EngineID, EngineBoots et EngineTime,

Demande:
données: get-request,
msgData: texte en clair,
liaisons de variables: -


Réponse:
données: rapport,
msgData: texte en clair,
liaisons de variables: (1 élément)
1.3.6.1.6.3.15.1.1.4 ( usmStatsUnknownEngineIDs ) (Integer32) ==> 1.


Fait intéressant, les valeurs EngineBoots et EngineTime obtenues sont utilisées à partir de la demande 4, et dans la demande 3, il est nécessaire de définir des valeurs nulles pour elles.

Demande 3. Demande usmStatsNotInTimeWindows

Demande:
données: get-request,
msgData: encryptedPDU,
liaisons de variables: -


Réponse:
données: rapport,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
1.3.6.1.6.3.15.1.1.2.0 ( usmStatsNotInTimeWindows ) (Integer32) ==> 0.


Nombre total de paquets reçus par le moteur SNMP en dehors de la fenêtre faisant autorité.

Demande 4 . Demande SnmpAgentState.
Demande:
données: get-request,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
1.3.6.1.4.1.42229.1.1.1.7.128.6.0

Réponse:
données: get-responce,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
1.3.6.1.4.1.42229.1.1.1.7.128.6.0 (snmpAgentState) (Integer32) ==> 3 (ACTIVÉ).

Statut de l'agent.

Demande 5 . Demande SysDescr
Demande:
données: get-request,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
1.3.6.1.2.1.1.1.0 (sysDescr)

Réponse:
données: get-responce,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
1.3.6.1.2.1.1.1.0 (sysDescr) ==> '--------- Copyright 2019 ******. Tous droits réservés. ' (OctetString)

Requête 6. La requête interfaceVersion est structurellement similaire aux 4 et 5.
Demande 7. Demande usmXUserLastSuccessfulLogin
Demande:
données: get-request,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
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

Réponse:
données: get-responce,
msgData: encryptedPDU,
liaisons de variables: (1 élément)
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.
Nom d'utilisateur ('Administrateur') - '. 65.100.109.105.110.105.115.116.114.97.116.111.114.' Est inclus directement dans l'OID, pour lequel l'heure de sa dernière authentification réussie est demandée.

Demande 8. Demande de création d'une session
Demande:
données: set-request,
msgData: encryptedPDU,
liaisons-variables: (4 items)
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 ('Administrateur')
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'
Réponse:
données: get-responce,
msgData: encryptedPDU,
liaisons-variables: (4 items)
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 ('Administrateur')
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'
L'adresse IP et le port source sont inclus directement dans l'OID: «.10.60.1.5.236.167».

La publication illustre brièvement les fonctionnalités de l'implémentation SNMP v3 inhérentes à MHTP.

[1] Douglas R. Mauro et Kevin J. Schmidt «Essential SNMP» (deuxième édition).
[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/fr484442/


All Articles