SNMP (Simple Network Management Protocol)
🔎 Introduction
Le protocole SNMP permet de superviser, configurer et gérer à distance des équipements réseau tels que les routeurs, switches, serveurs, imprimantes ou objets connectés. Il est présent dans trois versions principales : SNMPv1, SNMPv2c, et SNMPv3.
SNMP repose sur un modèle client-serveur :
Le serveur SNMP ("agent") est installé sur l'équipement supervisé.
Le client SNMP ("manager") interroge ou configure l'agent.
Les communications s'effectuent via :
UDP port 161 : requêtes classiques (get, set, etc.)
UDP port 162 : messages d'alerte appelés traps
🌐 MIB (Management Information Base)
Pour standardiser les accès SNMP entre équipements de différents constructeurs, la MIB définit tous les objets SNMP disponibles sous forme de hiérarchie arborescente. Une MIB :
Est un fichier texte (ASN.1) listant tous les objets interrogeables
Contient des OID (Object Identifiers)
Décrit les droits d'accès, types et descriptions de chaque objet
🔢 OID (Object Identifier)
Un OID identifie de manière unique chaque objet SNMP dans une arborescence hiérarchique. Il est représenté par une série de chiffres séparés par des points (ex: 1.3.6.1.2.1.1.1.0
).
Plus la chaîne est longue, plus l'objet visé est précis.
🏛️ Versions du protocole
🔹 SNMPv1
Première version
Aucune authentification ni chiffrement
Données transmises en clair
🔹 SNMPv2c
Version communautaire ("community-based")
Fonctionnalités améliorées
Pas de sécurité supplémentaire : les community strings sont en clair
🔹 SNMPv3
Authentification par nom d'utilisateur + mot de passe
Chiffrement des communications (authPriv)
Beaucoup plus sûr, mais plus complexe à configurer
🔐 Community Strings
Les community strings sont des "mots de passe" d'accès aux données SNMP.
public
: souvent utilisé pour lecture seuleprivate
: souvent utilisé pour lecture/écriture
Ces chaînes sont transmises en clair dans SNMPv1 et v2c, ce qui les rend vulnérables.
⚙️ Configuration par défaut (Linux SNMP Daemon)
$ cat /etc/snmp/snmpd.conf | grep -v "#" | sed -r '/^\s*$/d'
sysLocation Sitting on the Dock of the Bay
sysContact Me <me@example.org>
sysServices 72
master agentx
agentaddress 127.0.0.1,[::1]
view systemonly included .1.3.6.1.2.1.1
rocommunity public default -V systemonly
⚡ Paramètres à risque
rwuser noauth
Accès complet à l'arbre OID sans authentification
rwcommunity <community> <IP>
Accès en lecture/écriture sans restriction d'origine
🕵️♂️ Footprinting & Enumeration
🔹 snmpwalk
snmpwalk
Permet de parcourir l'arbre MIB et de récupérer toutes les données disponibles.
snmpwalk -v2c -c public 10.129.14.128
Extrait :
iso.3.6.1.2.1.1.5.0 = STRING: "htb"
iso.3.6.1.2.1.1.4.0 = STRING: "admin@inlanefreight.htb"
🔹 onesixtyone
onesixtyone
Brute-force de community strings (avec SecLists) :
onesixtyone -c /opt/useful/seclists/Discovery/SNMP/snmp.txt 10.129.14.128
🔹 braa
braa
Brute-force des OID individuellement :
braa public@10.129.14.128:.1.3.6.*
🔫 Utilisation offensive
Si la configuration est trop permissive (v1/v2c +
public
ouvert), il est possible de récupérer :Liste des paquets installés
Interfaces réseau
Processus actifs
Informations système (nom d'hôte, uptime, etc.)
📚 Ressources utiles
Enumerate the SNMP service and obtain the email address of the admin. Submit it as the answer.
Afin de répondre à cette question ainsi qu'aux prochaines, nous exécutons la commande suivante :
$ snmpwalk -c public -v 2c "10.129.98.246"
Concernant cette question, nous relevons la ligne suivante :
iso.3.6.1.2.1.1.4.0 = STRING: "devadmin <devadmin@inlanefreight.htb>"
Le mail de l'administrateur est donc devadmin@inlanefreight.htb
.
What is the customized version of the SNMP server?
Nous observons la ligne suivante :
iso.3.6.1.2.1.1.6.0 = STRING: "InFreight SNMP v0.91"
La version du serveur est donc InFreight SNMP v0.91
.
Enumerate the custom script that is running on the system and submit its output as the answer.
La même commande me permets de voir la ligne suivante :
iso.3.6.1.2.1.25.1.7.1.3.1.1.4.70.76.65.71 = STRING: "HTB{5nMp_fl4g_uidhfljnsldiuhbfsdij44738b2u763g}"
Nous obtenons ainsi le flag :
HTB{5nMp_fl4g_uidhfljnsldiuhbfsdij44738b2u763g}
Mis à jour