hacktricks/network-services-pentesting/pentesting-snmp
2024-02-07 04:40:52 +00:00
..
cisco-snmp.md Translated ['ctf-write-ups/challenge-0521.intigriti.io.md', 'ctf-write-u 2024-02-07 04:40:52 +00:00
README.md Translated ['network-services-pentesting/pentesting-mssql-microsoft-sql- 2024-01-02 23:36:53 +00:00
snmp-rce.md Translated ['macos-hardening/macos-security-and-privilege-escalation/mac 2024-02-03 17:01:50 +00:00

161,162,10161,10162/udp - Pentesting SNMP

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :


Conseil pour les bug bounties : inscrivez-vous sur Intigriti, une plateforme de bug bounties premium créée par des hackers, pour des hackers ! Rejoignez-nous sur https://go.intigriti.com/hacktricks dès aujourd'hui et commencez à gagner des bounties 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 IoTs...).

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, la Base d'Informations de Gestion (MIB) a été créée. MIB est un format indépendant pour stocker les informations des appareils. Un MIB est un fichier texte dans lequel tous les objets SNMP interrogeables d'un appareil sont listés dans une hiérarchie arborescente standardisée. Il contient au moins un Identifiant d'Objet (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 de texte ASCII basé sur la Notation Syntaxique Abstraite Un (ASN.1). Les MIB ne contiennent pas de données, mais ils expliquent où trouver quelle information et à quoi elle ressemble, quelles valeurs de retour pour l'OID spécifique, ou quel type de données est utilisé.

OIDs

OIDs signifie Identifiants d'Objets. Les OIDs identifient de manière unique les objets gérés dans une hiérarchie MIB. Cela peut être représenté comme un arbre, dont les niveaux sont attribués par différentes organisations. Les identifiants d'objets MIB de niveau supérieur (OIDs) 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 à travers un arbre OID depuis le web ici : http://www.oid-info.com/cgi-bin/display?tree=#focus ou voir ce qu'un OID signifie (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 certains OIDs bien connus comme ceux à l'intérieur de 1.3.6.1.2.1 qui référencent les variables du protocole de gestion de réseau simple (SNMP) définies par MIB-2. Et à partir des OIDs dépendant de celui-ci, vous pouvez obtenir des données intéressantes sur l'hôte (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 décomposition 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 de l'internet pour dénoter 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 les informations de base à leur sujet. Cette séquence de chiffres sera la même pour tous les OIDs, sauf lorsque l'appareil est fabriqué par le gouvernement.

Passons à la série suivante de chiffres.

  • 1452 donne le nom de l'organisation qui a fabriqué cet appareil.
  • 1 explique le type d'appareil. Dans ce cas, il s'agit d'un réveil.
  • 2 détermine que cet appareil est une unité terminale à distance.

Le reste des valeurs donne des informations spécifiques sur l'appareil.

  • 5 désigne 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 pris de ici)

Versions SNMP

Il existe 2 versions importantes de SNMP :

  • SNMPv1 : La principale, elle est encore la plus fréquente, l'authentification est basée sur une chaîne (chaîne de communauté) qui circule en texte clair (toutes les informations circulent en texte clair). Les versions 2 et 2c envoient également le trafic en texte clair et utilisent une chaîne de communauté comme authentification.
  • SNMPv3 : Utilise une meilleure forme d'authentification et les informations circulent chiffrées en utilisant (une attaque par dictionnaire pourrait être effectuée mais il serait beaucoup plus difficile de trouver les identifiants corrects que dans SNMPv1 et v2).

Chaînes de Communauté

Comme mentionné précédemment, afin d'accéder aux informations enregistrées sur le MIB, vous devez connaître la chaîne de communauté dans les versions 1 et 2/2c et les identifiants dans la version 3.
Il existe 2 types de chaînes de communauté :

  • public principalement des fonctions en lecture seule
  • private 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 trouvez que "public" est utilisé, vous pourriez être capable d'écrire certaines valeurs. De plus, il peut exister des objets qui sont toujours "Lecture Seule".
Si vous essayez d'écrire sur un objet, une erreur noSuchName ou readOnly est reçue**.**

Dans les versions 1 et 2/2c, si vous utilisez une mauvaise chaîne de communauté, le serveur ne répondra pas. Donc, s'il répond, une chaîne de communauté valide a été utilisée.

Ports

Forcer Brutalement la Chaîne de Communauté (v1 et v2c)

Pour deviner la chaîne de communauté, vous pourriez effectuer une attaque par dictionnaire. Consultez ici différentes manières de réaliser 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 ce qui suit pour voir ce que signifie chaque OID recueilli 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 vous pourriez trouver intéressants : Interfaces réseau (adresse IPv4 et IPv6), Noms d'utilisateur, Temps de fonctionnement, Version du serveur/OS, et processus

en cours (peut contenir des mots de passe)....

Paramètres dangereux

Depuis https://academy.hackthebox.com/module/112/section/1075****

Paramètres Description
rwuser noauth Donne accès à l'arbre OID complet sans authentification.
rwcommunity <chaîne de communauté> <adresse IPv4> Donne accès à l'arbre OID complet indépendamment de l'origine des requêtes.
rwcommunity6 <chaîne de communauté> <adresse IPv6> Même accès qu'avec rwcommunity avec la différence de l'utilisation d'IPv6.

Paramètres SNMP de Microsoft Windows

Valeur MIB Description
1.3.6.1.2.1.25.1.6.0 Processus Système.
1.3.6.1.2.1.25.4.2.1.2 Programmes en cours d'exécution.
1.3.6.1.2.1.25.4.2.1.4 Chemin des processus.
1.3.6.1.2.1.25.2.3.1.4 Unités de stockage.
1.3.6.1.2.1.25.6.3.1.2 Nom du logiciel.
1.3.6.1.4.1.77.1.2.25 Comptes d'utilisateurs.
1.3.6.1.2.1.6.13.1.3 Ports locaux TCP.

Cisco

Consultez cette page si vous utilisez du matériel 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 l'exploiter pour exécuter des commandes :

{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}

SNMP massif

Braa est un scanner SNMP de masse. 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 requêter 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, donc il n'a pas besoin de bibliothèques SNMP comme net-snmp.

Syntaxe : braa [Chaîne de communauté]@[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 (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 de quels appareils j'ai récolté 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 parviens à identifier la chaîne de communauté privée utilisée par une organisation sur leurs routeurs Cisco IOS, je pourrais alors utiliser cette chaîne pour extraire les configurations en cours de ces routeurs. La meilleure méthode pour trouver de telles données a souvent été liée aux données de piège SNMP. Donc, encore une fois, en utilisant le grep suivant, nous pouvons parcourir rapidement beaucoup de données MIB à la recherche du mot-clé « trap » :

grep -i "trap" *.snmp

Noms d'utilisateur/mots de passe

Un autre domaine d'intérêt est les journaux, j'ai découvert qu'il y a des appareils qui conservent 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 échec, échoué ou connexion et j'examine ces données pour voir s'il y a quelque chose de valeur.

grep -i "login\|fail" *.snmp

Courriels

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 des valeurs. Vous devrez connaître la chaîne privée pour pouvoir le faire.

Spoofing

S'il existe une ACL qui n'autorise que certaines adresses IP à interroger le service SMNP, vous pouvez usurper l'une de ces adresses dans le paquet UDP et renifler le trafic.

Examiner les 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
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">
**Conseil pour les bug bounties** : **inscrivez-vous** sur **Intigriti**, une plateforme de bug bounties premium **créée par des hackers, pour des hackers** ! Rejoignez-nous sur [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) dès aujourd'hui et commencez à gagner des primes allant jusqu'à **100 000 $** !

{% embed url="https://go.intigriti.com/hacktricks" %}

<details>

<summary><strong>Apprenez le hacking AWS du débutant à l'expert avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> !</strong></summary>

Autres moyens de soutenir HackTricks :

* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).

</details>