.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
161,162,10161,10162/udp - Pentesting SNMP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Astuce de prime de bug : inscrivez-vous à Intigriti, une plateforme de prime de bug premium créée par des pirates, pour les pirates ! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $ !
{% embed url="https://go.intigriti.com/hacktricks" %}
Informations de base
SNMP - Simple Network Management Protocol est un protocole utilisé pour surveiller différents appareils dans le réseau (comme les routeurs, les commutateurs, les imprimantes, les IoT...).
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
{% hint style="info" %} SNMP utilise également le port 162/UDP pour les traps. Ce sont des paquets de données envoyés du serveur SNMP au client sans être explicitement demandés. {% endhint %}
MIB
Pour garantir que l'accès SNMP fonctionne entre les fabricants et avec différentes combinaisons client-serveur, le Management Information Base (MIB) a été créé. MIB est un format indépendant pour stocker les informations de l'appareil. Un MIB est un fichier texte dans lequel tous les objets SNMP interrogeables d'un appareil sont répertoriés dans une hiérarchie d'arborescence standardisée. Il contient au moins un Object Identifier
(OID
), qui, en plus de l'adresse unique nécessaire et d'un nom, fournit également des informations sur le type, les droits d'accès et une description de l'objet respectif.
Les fichiers MIB sont écrits dans le format texte ASCII basé sur Abstract Syntax Notation One
(ASN.1
). Les MIB ne contiennent pas de données, mais ils expliquent où trouver quelles informations et à quoi cela ressemble, ce qui renvoie des valeurs pour l'OID spécifique, ou quel type de données est utilisé.
OIDs
OID signifie Object Identifiers. Les OIDs identifient de manière unique les objets gérés dans une hiérarchie MIB. Cela peut être représenté sous forme d'arbre, dont les niveaux sont attribués par différentes organisations. Les identifiants d'objet MIB de niveau supérieur (OID) appartiennent à différentes organisations standard.
Les fournisseurs définissent des branches privées comprenant des objets gérés pour leurs propres produits.
Vous pouvez naviguer dans un arbre OID depuis le web ici : http://www.oid-info.com/cgi-bin/display?tree=#focus ou voir ce que signifie un OID (comme 1.3.6.1.2.1.1
) en accédant à http://oid-info.com/get/1.3.6.1.2.1.1.
Il existe quelques OID bien connus comme ceux à l'intérieur de 1.3.6.1.2.1 qui font référence aux variables SNMP définies par MIB-2 Simple Network Management Protocol (SNMP). Et à partir des OID en attente de celui-ci, vous pouvez obtenir des données d'hôte intéressantes (données système, données réseau, données de processus...)
Exemple d'OID
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Voici une ventilation de cette adresse.
- 1 - cela s'appelle l'ISO et cela établit qu'il s'agit d'un OID. C'est pourquoi tous les OIDs commencent par "1"
- 3 - cela s'appelle ORG et il est utilisé pour spécifier l'organisation qui a construit l'appareil.
- 6 - c'est le dod ou le Département de la Défense qui est l'organisation qui a établi Internet en premier.
- 1 - c'est la valeur d'Internet pour indiquer que toutes les communications se feront via Internet.
- 4 - cette valeur détermine que cet appareil est fabriqué par une organisation privée et non gouvernementale.
- 1 - cette valeur indique que l'appareil est fabriqué par une entreprise ou une entité commerciale.
Ces six premières valeurs ont tendance à être les mêmes pour tous les appareils et elles vous donnent des informations de base sur eux. Cette séquence de nombres sera la même pour tous les OIDs, sauf lorsque l'appareil est fabriqué par le gouvernement.
Passons au prochain ensemble de nombres.
- 1452 - donne le nom de l'organisation qui a fabriqué cet appareil.
- 1 - explique le type d'appareil. Dans ce cas, c'est une alarme.
- 2 - détermine que cet appareil est une unité de terminal à distance.
Le reste des valeurs donne des informations spécifiques sur l'appareil.
- 5 - indique un point d'alarme discret.
- 1 - point spécifique dans l'appareil
- 3 - port
- 21 - adresse du port
- 1 - affichage pour le port
- 4 - numéro de point
- 7 - état du point
(Exemple tiré d' ici)
Versions SNMP
Il existe 2 versions importantes de SNMP :
- SNMPv1 : La principale, elle est toujours la plus fréquente, l'authentification est basée sur une chaîne (chaîne de communauté) qui voyage en texte clair (toutes les informations voyagent en texte clair). La version 2 et 2c envoient le trafic en texte clair également et utilisent une chaîne de communauté comme authentification.
- SNMPv3 : Utilise une meilleure forme d'authentification et les informations voyagent cryptées (une attaque par dictionnaire pourrait être effectuée mais il serait beaucoup plus difficile de trouver les bonnes informations d'identification que dans SNMPv1 et v2).
Chaînes de communauté
Comme mentionné précédemment, pour accéder aux informations enregistrées sur le MIB, vous devez connaître la chaîne de communauté sur les versions 1 et 2/2c et les informations d'identification sur la version 3.
Il y a 2 types de chaînes de communauté :
public
principalement des fonctions en lecture seuleprivate
Lecture/écriture en général
Notez que la possibilité d'écrire sur un OID dépend de la chaîne de communauté utilisée, donc même si vous découvrez que "public" est utilisé, vous pourriez être en mesure d'écrire certaines valeurs. De plus, il peut exister des objets qui sont toujours "Lecture seule".
Si vous essayez d'écrire un objet, une erreur noSuchName
ou readOnly
est reçue.
Dans les versions 1 et 2/2c, si vous utilisez une chaîne de communauté incorrecte, le serveur ne répondra pas. Donc, s'il répond, une chaîne de communauté valide a été utilisée.
Ports
- L'agent SNMP reçoit des demandes sur le port UDP 161.
- Le gestionnaire reçoit des notifications (Traps et InformRequests) sur le port 162.
- Lorsqu'il est utilisé avec Transport Layer Security ou Datagram Transport Layer Security, les demandes sont reçues sur le port 10161 et les notifications sont envoyées sur le port 10162.
Brute-Force de la chaîne de communauté (v1 et v2c)
Pour deviner la chaîne de communauté, vous pouvez effectuer une attaque par dictionnaire. Consultez ici différentes façons d'effectuer une attaque par force brute contre SNMP. Une chaîne de communauté fréquemment utilisée est public
.
Énumération SNMP
Il est recommandé d'installer les éléments suivants pour voir ce que signifie chaque OID collecté à partir de l'appareil :
apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
Si vous connaissez une chaîne de communauté valide, vous pouvez accéder aux données en utilisant SNMPWalk ou SNMP-Check:
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP]
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] 1.3.6.1.2.1.4.34.1.3 #Get IPv6, needed dec2hex
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] NET-SNMP-EXTEND-MIB::nsExtendObjects #get extended
snmpwalk -v [VERSION_SNMP] -c [COMM_STRING] [DIR_IP] .1 #Enum all
snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING]
nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
Grâce aux requêtes étendues (download-mibs), il est possible d'énumérer encore plus d'informations sur le système avec la commande suivante :
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP contient beaucoup d'informations sur l'hôte et des choses qui pourraient vous intéresser sont: les interfaces réseau (adresse IPv4 et IPv6), les noms d'utilisateur, le temps de fonctionnement, la version du serveur/OS et les processus en cours d'exécution (peuvent contenir des mots de passe)...
Paramètres dangereux
À partir de https://academy.hackthebox.com/module/112/section/1075
Paramètres | Description |
---|---|
rwuser noauth |
Fournit un accès à l'ensemble de l'arbre OID sans authentification. |
rwcommunity <community string> <adresse IPv4> |
Fournit un accès à l'ensemble de l'arbre OID indépendamment de l'endroit où les demandes ont été envoyées. |
rwcommunity6 <community string> <adresse IPv6> |
Même accès qu'avec rwcommunity avec la différence d'utiliser IPv6. |
Cisco
Jetez un coup d'œil à cette page si vous avez un équipement Cisco:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
De SNMP à RCE
Si vous avez la chaîne qui vous permet d'écrire des valeurs dans le service SNMP, vous pourriez être en mesure de l'utiliser pour exécuter des commandes:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
SNMP massif
Braa est un scanner SNMP massif. L'utilisation prévue d'un tel outil est bien sûr de faire des requêtes SNMP - mais contrairement à snmpwalk de net-snmp, il est capable de faire des requêtes sur des dizaines ou des centaines d'hôtes simultanément, et dans un seul processus. Ainsi, il consomme très peu de ressources système et effectue le balayage TRÈS rapidement.
Braa implémente sa propre pile SNMP, il n'a donc pas besoin de bibliothèques SNMP comme net-snmp.
Syntaxe: braa [chaîne de communauté]@[adresse IP du serveur SNMP]:[id iso]
braa ignite123@192.168.1.125:.1.3.6.*
Cela peut extraire beaucoup de Mo d'informations que vous ne pouvez pas traiter manuellement.
Alors, cherchons les informations les plus intéressantes (à partir de https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Appareils
L'une des premières choses que je fais est d'extraire les données MIB sysDesc .1.3.6.1.2.1.1.1.0 de chaque fichier pour déterminer les appareils à partir desquels j'ai collecté des informations. Cela peut facilement être fait en utilisant la commande grep suivante:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Identifier la chaîne privée
Par exemple, si je peux identifier la chaîne de communauté privée utilisée par une organisation sur ses routeurs Cisco IOS, je pourrais éventuellement utiliser cette chaîne de communauté pour extraire les configurations en cours d'exécution de ces routeurs. La meilleure méthode pour trouver de telles données est souvent liée aux données SNMP Trap. Ainsi, en utilisant à nouveau le grep suivant, nous pouvons parcourir rapidement de nombreuses données MIB en recherchant le mot clé "trap":
grep -i "trap" *.snmp
Noms d'utilisateur/mots de passe
Une autre zone d'intérêt est les journaux, j'ai découvert qu'il y a des appareils qui contiennent des journaux dans les tables MIB. Ces journaux peuvent également contenir des tentatives de connexion échouées. Pensez à la dernière fois que vous vous êtes connecté à un appareil via Telnet ou SSH et que vous avez involontairement entré votre mot de passe comme nom d'utilisateur. Je recherche généralement des mots clés tels que fail, failed ou login et j'examine ces données pour voir s'il y a quelque chose de valeur.
grep -i "login\|fail" *.snmp
Emails
Les emails
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Modification des valeurs SNMP
Vous pouvez utiliser NetScanTools pour modifier les valeurs. Vous devrez connaître la chaîne privée pour le faire.
Spoofing
S'il existe une ACL qui ne permet à certaines adresses IP que de consulter le service SMNP, vous pouvez usurper l'une de ces adresses à l'intérieur du paquet UDP et renifler le trafic.
Examen des fichiers de configuration SNMP
- snmp.conf
- snmpd.conf
- snmp-config.xml
Commandes automatiques HackTricks
Protocol_Name: SNMP #Protocol Abbreviation if there is one.
Port_Number: 161 #Comma separated if there is more than one.
Protocol_Description: Simple Network Managment Protocol #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SNMP
Note: |
SNMP - Simple Network Management Protocol is a protocol used to monitor different devices in the network (like routers, switches, printers, IoTs...).
https://book.hacktricks.xyz/pentesting/pentesting-snmp
Entry_2:
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}
Entry_3:
Name: OneSixtyOne
Description: Crack SNMP passwords
Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100
Entry_4:
Name: Nmap
Description: Nmap snmp (no brute)
Command: nmap --script "snmp* and not snmp-brute" {IP}
Entry_5:
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp
Astuce de prime de bug: inscrivez-vous à Intigriti, une plateforme de prime de bug premium créée par des pirates, pour les pirates! Rejoignez-nous sur https://go.intigriti.com/hacktricks aujourd'hui et commencez à gagner des primes allant jusqu'à 100 000 $!
{% embed url="https://go.intigriti.com/hacktricks" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les PLANS D'ABONNEMENT!
- Découvrez The PEASS Family, notre collection exclusive de NFT
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.