Outils pour utilisateurs

Outils du site


Ceci est une ancienne révision du document !


Table des matières

Analyse du protocole

Nous allons regarder avec Wireshark, notre sniffeur favori, ce qu'il se passe en utilisant trois commandes classiques : snmpget, snmpwalk et snmpbulkwalk (utilisable seulement avec la version v2c ou supérieure de SNMP).

snmpget

Demandons, une fois encore à notre switch de nous dire son nom :

~$ snmpget -v 1 -c public -Ot 172.16.252.2 SNMPv2-MIB::sysName.0
SNMPv2-MIB::sysName.0 = STRING: ProCurve Switch 2650-1

Voyons ce que notre sniffeur a épié :

No.     Time        Source                Destination           Protocol Info
      1 0.000000    192.168.0.16          172.16.252.2          SNMP     get-request 1.3.6.1.2.1.1.5.0

Frame 1 (85 bytes on wire, 85 bytes captured)
...
User Datagram Protocol, Src Port: 42380 (42380), Dst Port: snmp (161)
    Source port: 42380 (42380)
    Destination port: snmp (161)
    Length: 51
    Checksum: 0x6910 [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Simple Network Management Protocol
    version: version-1 (0)
    community: public
    data: get-request (0)
        get-request
            request-id: 925410341
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1.1.5.0: Value (Null)
                    Object Name: 1.3.6.1.2.1.1.5.0 (iso.3.6.1.2.1.1.5.0)

Nous sommes bien en UDP et le port cible est bien 161.

SNMP est bien utilisé en version 1, la commande est get-request et l'OID demandée est 1.3.6.1.2.1.1.5.0.

La réponse :

No.     Time        Source                Destination           Protocol Info
      2 0.072588    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.5.0

Frame 2 (107 bytes on wire, 107 bytes captured)
...
User Datagram Protocol, Src Port: snmp (161), Dst Port: 42380 (42380)
    Source port: snmp (161)
    Destination port: 42380 (42380)
    Length: 73
    Checksum: 0x180f [validation disabled]
        [Good Checksum: False]
        [Bad Checksum: False]
Simple Network Management Protocol
    version: version-1 (0)
    community: public
    data: get-response (2)
        get-response
            request-id: 925410341
            error-status: noError (0)
            error-index: 0
            variable-bindings: 1 item
                1.3.6.1.2.1.1.5.0: 50726F43757276652053776974636820323635302D31
                    Object Name: 1.3.6.1.2.1.1.5.0 (iso.3.6.1.2.1.1.5.0)
                    Value (OctetString): 50726F43757276652053776974636820323635302D31

Nous avons la réponse (get-response), elle n'est pas très lisible car donnée sous forme numérique (la version 1.2.7 de wireshark semblant avoir du mal avec le décodage de SNMP).

Nous ne referons pas la manipulation en v2c, le résultat étant le même.

snmpwalk

Voyons maintenant la branche system en entier, avec la commande snmpwalk :

$ snmpwalk -v 1 -c public -Ot 172.16.252.2 SNMPv2-MIB::system
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4899B Switch 2650, revision H.10.35, ROM H.08.02 (/sw/code/build/fish(mkfs))
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.11.2.3.7.11.44
DISMAN-EVENT-MIB::sysUpTimeInstance = 1123840470
SNMPv2-MIB::sysContact.0 = STRING: sysop
SNMPv2-MIB::sysName.0 = STRING: ProCurve Switch 2650-1
SNMPv2-MIB::sysLocation.0 = STRING: 
SNMPv2-MIB::sysServices.0 = INTEGER: 74

Wireshark a vu une suite de commandes :

No.     Time        Source                Destination           Protocol Info
      1 0.000000    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1
      2 0.101794    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.1.0
      3 0.101915    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.1.0
      4 0.172930    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.2.0
      5 0.173003    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.2.0
      6 0.244100    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.3.0
      7 0.244174    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.3.0
      8 0.315341    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.4.0
      9 0.315412    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.4.0
     10 0.389045    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.5.0
     11 0.389109    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.5.0
     12 0.460725    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.6.0
     13 0.460787    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.6.0
     14 0.532128    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.1.7.0
     15 0.532189    192.168.0.16          172.16.252.2          SNMP     get-next-request 1.3.6.1.2.1.1.7.0
     16 0.624758    172.16.252.2          192.168.0.16          SNMP     get-response 1.3.6.1.2.1.2.1.0

Pas la peine de détailler, nous voyons bien une suite de get-next-request émises par le client, suivies des get-response de l'agent SNMP du switch. Nous avons ici 8 trames d'interrogation et 8 trames de réponses. Si l'on désire parcourir une branche importante, le réseau va avoir du travail.

Analyse du protocole: Dernière modification le: 11/07/2010 à 16:53 par prof