SNMP Broadcast/Unicast/Multicast

ifInfo.pl

Voici un petit script en Perl qui permet de récupérer le nombre de paquets émis ou reçus en unicast, multicast ou broadcast par une interface grâce au protocole SNMP. Les informations à récupérer ne sont pas propre à un constructeur. La MIB concernée est la dénommée IF-MIB que vous pouvez récupérer absolument partout. Ces informations peuvent vous servir à tracer de jolies courbes sur votre plateforme de supervision favorite. Dans l’état ce n’est qu’un POC, mais la logique et les OIDs sont là, l’exploitation n’est donc pas très difficile.

J’assume la rudesse du code à la sauce Stupeflip. – Prendre des petits bouts de code et puis les assembler ensemble pour faire un truc qui marche à peu près !

Pour utiliser le script vous devez d’abord récupérer le ifIndex de l’interface ciblée. Pour ce faire, il faut mettre en relation ces deux OID :

  • ifIndex (OID) : .1.3.6.1.2.1.2.2.1.1
  • ifDescr (OID) : .1.3.6.1.2.1.2.2.1.2

Tout d’abord on récupère le dernier nombre de l’OID ifDescr. J’aurais tendance à croire qu’il est toujours égal au ifIndex recherché, mais ne pouvant le garantir, je sécurise un peu la procédure :

snmpwalk -v2c -c ptf 10.171.1.60 .1.3.6.1.2.1.2.2.1.2 | grep 0/0/7 
iso.3.6.1.2.1.2.2.1.2.1337 = STRING: "node2:ge-0/0/7"

Dans mon cas le dernier nombre de l’OID est 1337 :

snmpwalk -v2c -c ptf 10.171.1.60 .1.3.6.1.2.1.2.2.1.1.1337
iso.3.6.1.2.1.2.2.1.1.1337 = INTEGER: 1337

A vous de juger si la seconde étape est nécessaire, mais personnellement c’est le genre d’erreur hyper chiante à debug dont je me passe volontiers ! Quand vous aurez récupéré cette information (mode paranoïde ou pas), il vous suffira d’exécuter mon petit script avec les infos qui vont bien, c’est à dire :

./ifInfo.pl [@IP] [community] in/out/both [Time] [IfIndex]

Ce qui, en d’autres termes, donne à peu près ça :

0x0ff@kali:~# ./ifInfo.pl 192.168.51.42 communityRO in 60 1337
 ==========================================
 Interface 192.168.51.42 (0 sec)
 ==========================================
 ifHCInUcastPkts : 378166370
 ifHCInMulticastPkts : 50862
 ifHCInBroadcastPkts : 63295
 Broadcast rate (in) : 0.0167322913769759 %
 ==========================================
 Interface 192.168.51.42 (60sec)
 ==========================================
 ifHCInUcastPkts : 378169457
 ifHCInMulticastPkts : 50863
 ifHCInBroadcastPkts : 63300
 Broadcast rate : 0.0167334763265721 %
 ==========================================
 === Interface 192.168.51.42 (60 sec ratio)===
 ==========================================
 ifHCInUcastPkts : 3087
 ifHCInMulticastPkts : 1
 ifHCInBroadcastPkts : 5
 Broadcast rate : 0.161655350792111 %

Télécharger le code :  ifInfo.pl