18 KiB
161,162,10161,10162/udp - Pentesting SNMP
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks im PDF-Format herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud github Repositories einreichen.
Wenn Sie an einer Hacking-Karriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
{% embed url="https://www.stmcyber.com/careers" %}
Grundlegende Informationen
SNMP - Simple Network Management Protocol ist ein Protokoll, das verwendet wird, um verschiedene Geräte im Netzwerk zu überwachen (wie Router, Switches, Drucker, IoT-Geräte...).
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
{% hint style="info" %} SNMP verwendet auch den Port 162/UDP für Traps. Dabei handelt es sich um Daten Pakete, die vom SNMP-Server an den Client gesendet werden, ohne explizit angefordert zu werden. {% endhint %}
MIB
Um sicherzustellen, dass der SNMP-Zugriff über verschiedene Hersteller und mit verschiedenen Client-Server-Kombinationen funktioniert, wurde die Management Information Base (MIB) erstellt. MIB ist ein unabhängiges Format zur Speicherung von Geräteinformationen. Eine MIB ist eine Textdatei, in der alle abfragbaren SNMP-Objekte eines Geräts in einer standardisierten Baumhierarchie aufgeführt sind. Sie enthält mindestens eine Object Identifier
(OID
), die neben der erforderlichen eindeutigen Adresse und einem Namen auch Informationen über den Typ, die Zugriffsrechte und eine Beschreibung des jeweiligen Objekts bereitstellt.
MIB-Dateien sind im auf ASCII-Text basierenden Format Abstract Syntax Notation One
(ASN.1
) verfasst. Die MIBs enthalten keine Daten, sondern erklären wo welche Informationen zu finden sind und wie sie aussehen, welche Rückgabewerte für die spezifische OID gelten oder welcher Datentyp verwendet wird.
OIDs
Object Identifiers (OIDs) spielen eine entscheidende Rolle. Diese eindeutigen Bezeichner sind dazu bestimmt, Objekte innerhalb einer Management Information Base (MIB) zu verwalten.
Die höchsten Ebenen der MIB-Objekt-IDs oder OIDs werden verschiedenen Standardisierungsorganisationen zugewiesen. Innerhalb dieser obersten Ebenen wird der Rahmen für globale Managementpraktiken und -standards festgelegt.
Darüber hinaus haben Anbieter die Freiheit, private Zweige zu erstellen. Innerhalb dieser Zweige haben sie die Autonomie, verwaltete Objekte einzuschließen, die für ihre eigenen Produktlinien relevant sind. Dieses System gewährleistet, dass es eine strukturierte und organisierte Methode zur Identifizierung und Verwaltung einer Vielzahl von Objekten über verschiedene Anbieter und Standards hinweg gibt.
Sie können sich durch einen OID-Baum im Web navigieren: http://www.oid-info.com/cgi-bin/display?tree=#focus oder sehen, was ein OID bedeutet (wie 1.3.6.1.2.1.1
) unter http://oid-info.com/get/1.3.6.1.2.1.1.
Es gibt einige bekannte OIDs wie diejenigen innerhalb von 1.3.6.1.2.1, die auf von MIB-2 definierte Simple Network Management Protocol (SNMP) Variablen verweisen. Und von den von diesem abhängigen OIDs können Sie einige interessante Host-Daten abrufen (Systemdaten, Netzwerkdaten, Prozessdaten...)
OID-Beispiel
1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7
Hier ist eine Aufschlüsselung dieser Adresse.
- 1 – dies wird als ISO bezeichnet und zeigt an, dass es sich um eine OID handelt. Deshalb beginnen alle OIDs mit "1"
- 3 – dies wird als ORG bezeichnet und wird verwendet, um die Organisation anzugeben, die das Gerät gebaut hat.
- 6 – dies ist das dod oder das Verteidigungsministerium, das die Internetverbindung als erstes etabliert hat.
- 1 – dies ist der Wert des Internets, um anzugeben, dass alle Kommunikationen über das Internet erfolgen.
- 4 – dieser Wert bestimmt, dass dieses Gerät von einer privaten Organisation und nicht von einer Regierungsorganisation hergestellt wurde.
- 1 – dieser Wert zeigt an, dass das Gerät von einem Unternehmen oder einer Geschäftseinheit hergestellt wurde.
Diese ersten sechs Werte sind für alle Geräte tendenziell gleich und geben grundlegende Informationen über sie. Diese Zahlenfolge wird für alle OIDs gleich sein, außer wenn das Gerät von der Regierung hergestellt wurde.
Übergehen zu den nächsten Zahlen.
- 1452 – gibt den Namen der Organisation an, die dieses Gerät hergestellt hat.
- 1 – erläutert den Gerätetyp. In diesem Fall handelt es sich um einen Wecker.
- 2 – bestimmt, dass dieses Gerät eine Fernmeldeeinheit ist.
Die restlichen Werte geben spezifische Informationen über das Gerät.
- 5 – kennzeichnet einen diskreten Alarm-Punkt.
- 1 – spezifischer Punkt im Gerät
- 3 – Port
- 21 – Portadresse
- 1 – Anzeige für den Port
- 4 – Punktnummer
- 7 – Zustand des Punktes
SNMP-Versionen
Es gibt 2 wichtige Versionen von SNMP:
- SNMPv1: Die Hauptversion, sie ist immer noch die häufigste, die Authentifizierung basiert auf einem String (Community-String), der im Klartext übertragen wird (alle Informationen werden im Klartext übertragen). Version 2 und 2c senden den Datenverkehr ebenfalls im Klartext und verwenden einen Community-String zur Authentifizierung.
- SNMPv3: Verwendet eine bessere Authentifizierungsform und die Informationen werden verschlüsselt übertragen (ein Wörterbuchangriff könnte durchgeführt werden, wäre jedoch viel schwieriger, die richtigen Anmeldeinformationen zu finden als bei SNMPv1 und v2).
Community-Strings
Wie bereits erwähnt, um auf die im MIB gespeicherten Informationen zuzugreifen, müssen Sie den Community-String in den Versionen 1 und 2/2c kennen und die Anmeldeinformationen in Version 3.
Es gibt 2 Arten von Community-Strings:
public
hauptsächlich nur-Lese-Funktionenprivate
Lese-/Schreibzugriff im Allgemeinen
Beachten Sie, dass die Schreibbarkeit einer OID vom verwendeten Community-String abhängt, sodass selbst wenn festgestellt wird, dass "public" verwendet wird, Sie möglicherweise in der Lage sind, einige Werte zu schreiben. Es können auch Objekte existieren, die immer "Nur Lesen" sind.
Wenn Sie versuchen, ein Objekt zu schreiben, wird ein noSuchName
- oder readOnly
-Fehler empfangen**.**
In den Versionen 1 und 2/2c, wenn Sie einen falschen Community-String verwenden, antwortet der Server nicht. Wenn er antwortet, wurde ein gültiger Community-String verwendet.
Ports
- Der SNMP-Agent empfängt Anfragen auf UDP-Port 161.
- Der Manager empfängt Benachrichtigungen (Traps und InformRequests) auf Port 162.
- Bei Verwendung von Transport Layer Security oder Datagram Transport Layer Security werden Anfragen auf Port 10161 empfangen und Benachrichtigungen werden an Port 10162 gesendet.
Brute-Force Community-String (v1 und v2c)
Um den Community-String zu erraten, könnten Sie einen Wörterbuchangriff durchführen. Überprüfen Sie hier verschiedene Möglichkeiten, einen Brute-Force-Angriff gegen SNMP durchzuführen. Ein häufig verwendeter Community-String ist public
.
SNMP aufzählen
Es wird empfohlen, die folgenden zu installieren, um zu sehen, was jede gesammelte OID vom Gerät bedeutet:
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
Wenn Sie über eine gültige Community-String verfügen, können Sie auf die Daten mit SNMPWalk oder SNMP-Check zugreifen:
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
Dank erweiterter Abfragen (download-mibs) ist es möglich, noch mehr über das System mit dem folgenden Befehl aufzulisten:
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP enthält viele Informationen über den Host, darunter Netzwerkschnittstellen (IPv4- und IPv6-Adresse), Benutzernamen, Betriebszeit, Server-/Betriebssystemversion und laufende Prozesse (können Passwörter enthalten)....
Gefährliche Einstellungen
Im Bereich des Netzwerkmanagements sind bestimmte Konfigurationen und Parameter entscheidend für eine umfassende Überwachung und Steuerung.
Zugriffseinstellungen
Zwei Hauptkonfigurationen ermöglichen den Zugriff auf den vollen OID-Baum, der ein wesentlicher Bestandteil des Netzwerkmanagements ist:
rwuser noauth
ist so eingestellt, dass voller Zugriff auf den OID-Baum ohne Authentifizierung möglich ist. Diese Einstellung ist unkompliziert und ermöglicht uneingeschränkten Zugriff.- Für eine spezifischere Steuerung kann der Zugriff gewährt werden durch:
rwcommunity
für IPv4-Adressen undrwcommunity6
für IPv6-Adressen.
Beide Befehle erfordern eine Community-String und die entsprechende IP-Adresse und bieten vollen Zugriff unabhängig vom Ursprung der Anfrage.
SNMP-Parameter für Microsoft Windows
Eine Reihe von Management Information Base (MIB)-Werten wird verwendet, um verschiedene Aspekte eines Windows-Systems über SNMP zu überwachen:
- Systemprozesse: Über
1.3.6.1.2.1.25.1.6.0
können aktive Prozesse im System überwacht werden. - Laufende Programme: Der Wert
1.3.6.1.2.1.25.4.2.1.2
ist für die Verfolgung der aktuell laufenden Programme vorgesehen. - Prozesspfad: Zur Bestimmung des Speicherorts eines Prozesses wird der MIB-Wert
1.3.6.1.2.1.25.4.2.1.4
verwendet. - Speichereinheiten: Die Überwachung von Speichereinheiten wird durch
1.3.6.1.2.1.25.2.3.1.4
erleichtert. - Softwarename: Zur Identifizierung der auf einem System installierten Software wird
1.3.6.1.2.1.25.6.3.1.2
verwendet. - Benutzerkonten: Der Wert
1.3.6.1.4.1.77.1.2.25
ermöglicht die Verfolgung von Benutzerkonten. - TCP-Local-Ports: Schließlich ist
1.3.6.1.2.1.6.13.1.3
für die Überwachung von TCP-Local-Ports vorgesehen und bietet Einblicke in aktive Netzwerkverbindungen.
Cisco
Werfen Sie einen Blick auf diese Seite, wenn Sie Cisco-Geräte verwenden:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
Vom SNMP zum RCE
Wenn Sie den String haben, der es Ihnen ermöglicht, Werte im SNMP-Dienst zu schreiben, könnten Sie ihn missbrauchen, um Befehle auszuführen:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
Massive SNMP
Braa ist ein massiver SNMP-Scanner. Die beabsichtigte Verwendung eines solchen Tools besteht natürlich darin, SNMP-Abfragen durchzuführen - im Gegensatz zu snmpwalk von net-snmp kann es jedoch Dutzende oder Hunderte von Hosts gleichzeitig und in einem einzigen Prozess abfragen. Dadurch verbraucht es sehr wenige Systemressourcen und führt das Scannen SEHR schnell durch.
Braa implementiert seinen EIGENEN SNMP-Stack, daher benötigt es KEINE SNMP-Bibliotheken wie net-snmp.
Syntax: braa [Community-String]@[IP des SNMP-Servers]:[ISO-ID]
braa ignite123@192.168.1.125:.1.3.6.*
Dies kann eine große Menge an Informationen extrahieren, die Sie manuell nicht verarbeiten können.
Also, lassen Sie uns nach den interessantesten Informationen suchen (von https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
Geräte
Der Prozess beginnt mit der Extraktion von sysDesc MIB-Daten (1.3.6.1.2.1.1.1.0) aus jeder Datei, um die Geräte zu identifizieren. Dies wird durch die Verwendung eines grep-Befehls erreicht:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
Identifizieren des privaten Strings
Ein entscheidender Schritt besteht darin, den privaten Community-String zu identifizieren, den Organisationen verwenden, insbesondere bei Cisco IOS-Routern. Dieser String ermöglicht das Extrahieren von laufenden Konfigurationen von Routern. Die Identifizierung beruht oft auf der Analyse von SNMP-Trap-Daten nach dem Wort "trap" mit einem grep-Befehl:
grep -i "trap" *.snmp
Benutzernamen/Passwörter
Protokolle, die in MIB-Tabellen gespeichert sind, werden auf fehlgeschlagene Anmeldeversuche überprüft, die versehentlich Passwörter enthalten könnten, die als Benutzernamen eingegeben wurden. Schlüsselwörter wie fail, failed oder login werden durchsucht, um wertvolle Daten zu finden:
grep -i "login\|fail" *.snmp
E-Mails
Abschließend wird zur Extraktion von E-Mail-Adressen aus den Daten ein grep-Befehl mit einem regulären Ausdruck verwendet, der sich auf Muster konzentriert, die E-Mail-Formate entsprechen:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
Ändern von SNMP-Werten
Sie können NetScanTools verwenden, um Werte zu ändern. Sie müssen den privaten String kennen, um dies zu tun.
Spoofing
Wenn es eine ACL gibt, die nur bestimmten IPs das Abfragen des SMNP-Dienstes erlaubt, können Sie eine dieser Adressen im UDP-Paket fälschen und den Datenverkehr abfangen.
Überprüfen von SNMP-Konfigurationsdateien
- snmp.conf
- snmpd.conf
- snmp-config.xml
Wenn Sie an einer Hackerkarriere interessiert sind und das Unhackbare hacken möchten - wir stellen ein! (fließendes Polnisch in Wort und Schrift erforderlich).
{% embed url="https://www.stmcyber.com/careers" %}
HackTricks Automatische Befehle
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
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud Github-Repositories einreichen.