161,162,10161,10162/udp - Pentesting SNMP

Вивчіть хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Якщо вас цікавить кар'єра в хакінгу і взламати невзламне - ми шукаємо співробітників! (вимагається вільне володіння польською мовою, як письмово, так і усно).

Основна інформація

SNMP - Простий Протокол Управління Мережею - це протокол, який використовується для моніторингу різних пристроїв в мережі (таких як маршрутизатори, комутатори, принтери, IoT...).

PORT    STATE SERVICE REASON                 VERSION
161/udp open  snmp    udp-response ttl 244   ciscoSystems SNMPv3 server (public)

SNMP також використовує порт 162/UDP для пасток. Це дані пакети, відправлені з SNMP-сервера на клієнта без явного запиту.

MIB

Для того, щоб забезпечити роботу доступу SNMP між виробниками та різними комбінаціями клієнт-сервер, було створено Базу інформації управління (MIB). MIB - це незалежний формат для зберігання інформації про пристрій. MIB - це текстовий файл, в якому перераховані всі запитувані об'єкти SNMP пристрою в стандартизованій ієрархії дерева. Він містить принаймні один Ідентифікатор об'єкта (OID), який, крім необхідної унікальної адреси та назви, також надає інформацію про тип, права доступу та опис відповідного об'єкта. Файли MIB написані у форматі ASCII-тексту на основі Абстрактної синтаксичної нотації один (ASN.1). MIB не містять даних, але пояснюють де знайти яку інформацію та як вона виглядає, які значення повертає для конкретного OID або який тип даних використовується.

OIDs

Ідентифікатори об'єктів (OIDs) відіграють важливу роль. Ці унікальні ідентифікатори призначені для управління об'єктами в межах Бази інформації управління (MIB).

Найвищі рівні ідентифікаторів об'єктів MIB, або OIDs, виділяються різним організаціям, що встановлюють стандарти. Саме на цих верхніх рівнях встановлюється каркас для глобальних практик управління та стандартів.

Крім того, виробникам надається можливість створювати приватні гілки. У межах цих гілок вони мають автономію включати керовані об'єкти, які стосуються їх власних ліній продуктів. Ця система забезпечує структурований та організований метод ідентифікації та управління різноманітними об'єктами в різних виробників та стандартах.

Ви можете переміщатися по дереву OID з веб-сайту тут: http://www.oid-info.com/cgi-bin/display?tree=#focus або переглянути, що означає OID (наприклад, 1.3.6.1.2.1.1) за посиланням http://oid-info.com/get/1.3.6.1.2.1.1. Є деякі відомі OIDs, такі як ті, що знаходяться всередині 1.3.6.1.2.1, які посилаються на змінні протоколу простого протоколу управління мережею (SNMP), визначені MIB-2. І з OIDs, що відповідають цьому, ви можете отримати деякі цікаві дані хоста (системні дані, мережеві дані, дані процесів...)

Приклад OID

Приклад звідси:

1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7

Ось розбивка цієї адреси.

  • 1 - це називається ISO і встановлює, що це OID. Тому всі OIDs починаються з "1"

  • 3 - це називається ORG і використовується для вказівки організації, яка побудувала пристрій.

  • 6 - це dod або Міністерство оборони, яке є організацією, що спочатку встановила Інтернет.

  • 1 - це значення Інтернету для позначення того, що всі комунікації відбуватимуться через Інтернет.

  • 4 - це значення визначає, що цей пристрій виготовлений приватною організацією, а не урядовою.

  • 1 - це значення позначає, що пристрій виготовлений підприємством або бізнес-сутністю.

Ці перші шість значень зазвичай однакові для всіх пристроїв і дають вам основну інформацію про них. Ця послідовність чисел буде однаковою для всіх OID, за винятком випадків, коли пристрій виготовлений урядом.

Переходячи до наступного набору чисел.

  • 1452 - вказує назву організації, яка виготовила цей пристрій.

  • 1 - пояснює тип пристрою. У цьому випадку це будильник.

  • 2 - визначає, що цей пристрій є віддаленою термінальною одиницею.

Решта значень надають конкретну інформацію про пристрій.

  • 5 - позначає дискретний сигнал тривоги.

  • 1 - конкретний пункт у пристрої

  • 3 - порт

  • 21 - адреса порту

  • 1 - дисплей для порту

  • 4 - номер точки

  • 7 - стан точки

Версії SNMP

Існує 2 важливі версії SNMP:

  • SNMPv1: Основна версія, вона все ще найбільш поширена, аутентифікація базується на рядку (рядок спільноти), який передається в звичайному тексті (вся інформація передається в звичайному тексті). Версія 2 та 2c також відправляють трафік в звичайному тексті та використовують рядок спільноти як аутентифікацію.

  • SNMPv3: Використовує кращу форму аутентифікації, а інформація передається шифровано (можливий атака словником, але буде набагато складніше знайти правильні облікові дані, ніж у SNMPv1 та v2).

Рядки спільноти

Як вже зазначалося, для доступу до інформації, збереженої в MIB, вам потрібно знати рядок спільноти в версіях 1 та 2/2c та облікові дані в версії 3. Існують 2 типи рядків спільноти:

  • public головним чином тільки для читання

  • private Читання/Запис взагалі

Зверніть увагу, що можливість запису OID залежить від використаного рядка спільноти, тому навіть якщо ви дізнаєтеся, що використовується "public", ви все одно можете записати деякі значення. Також можуть існувати об'єкти, які завжди є "Тільки для читання". Якщо ви спробуєте записати об'єкт, ви отримаєте помилку noSuchName або readOnly.

У версіях 1 та 2/2c, якщо ви використовуєте поганий рядок спільноти, сервер не відповість. Тому, якщо він відповідає, був використаний дійсний рядок спільноти.

Порти

З Вікіпедії:

Атака перебором рядка спільноти (v1 та v2c)

Для вгадування рядка спільноти можна виконати атаку словником. Перевірте тут різні способи виконання атаки перебору для SNMP. Часто використовуваний рядок спільноти - public.

Перелік SNMP

Рекомендується встановити наступне, щоб побачити, що означає кожен зібраний OID з пристрою:

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

Якщо ви знаєте дійсний рядок спільноти, ви можете отримати доступ до даних за допомогою SNMPWalk або SNMP-Check:

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

Завдяки розширеним запитам (download-mibs), можна отримати додаткову інформацію про систему за допомогою наступної команди:

snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull

SNMP містить багато інформації про хост, серед цікавих можливостей можна виділити: Мережеві інтерфейси (IPv4 та IPv6 адреси), Імена користувачів, Час безвідмовної роботи, Версія сервера/ОС та процеси, які працюють (можуть містити паролі)....

Небезпечні налаштування

У сфері управління мережею певні конфігурації та параметри є ключовими для забезпечення комплексного моніторингу та контролю.

Налаштування доступу

Два основні налаштування дозволяють доступ до повного дерева OID, що є важливою складовою управління мережею:

  1. rwuser noauth встановлено для дозволу повного доступу до дерева OID без необхідності аутентифікації. Це налаштування є простим та дозволяє необмежений доступ.

  2. Для більш конкретного контролю доступ може бути наданий за допомогою:

  • rwcommunity для IPv4 адрес, та

  • rwcommunity6 для IPv6 адрес.

Обидва команди вимагають рядок спільноти та відповідну IP-адресу, що надає повний доступ незалежно від походження запиту.

Параметри SNMP для Microsoft Windows

Серія значень бази управління інформацією (MIB) використовується для моніторингу різних аспектів системи Windows через SNMP:

  • Процеси системи: Доступ до 1.3.6.1.2.1.25.1.6.0, цей параметр дозволяє моніторити активні процеси в системі.

  • Запущені програми: Значення 1.3.6.1.2.1.25.4.2.1.2 призначене для відстеження поточно запущених програм.

  • Шляхи процесів: Для визначення місця запуску процесу використовується значення MIB 1.3.6.1.2.1.25.4.2.1.4.

  • Одиниці зберігання: Моніторинг одиниць зберігання здійснюється за допомогою 1.3.6.1.2.1.25.2.3.1.4.

  • Назва програмного забезпечення: Для ідентифікації встановленого програмного забезпечення на системі використовується 1.3.6.1.2.1.25.6.3.1.2.

  • Облікові записи користувачів: Значення 1.3.6.1.4.1.77.1.2.25 дозволяє відстежувати облікові записи користувачів.

  • TCP локальні порти: Нарешті, 1.3.6.1.2.1.6.13.1.3 призначено для моніторингу TCP локальних портів, що надає інформацію про активні мережеві підключення.

Cisco

Зверніть увагу на цю сторінку, якщо ви працюєте з обладнанням Cisco:

pageCisco SNMP

Від SNMP до RCE

Якщо у вас є рядок, який дозволяє вам записувати значення в службу SNMP, ви можете використати його для виконання команд:

pageSNMP RCE

Масовий SNMP

Braa є масовим сканером SNMP. Призначенням такого інструмента, звичайно, є виконання запитів SNMP - на відміну від snmpwalk з net-snmp, він може запитувати десятки або сотні хостів одночасно, і це в одному процесі. Таким чином, він споживає дуже мало системних ресурсів і дуже швидко сканує.

Braa реалізує свій ВЛАСНИЙ стек snmp, тому він НЕ потребує жодних бібліотек SNMP, таких як net-snmp.

Синтаксис: braa [Рядок спільноти]@[IP SNMP сервера]:[iso id]

braa ignite123@192.168.1.125:.1.3.6.*

Це може видобути багато МБ інформації, яку ви не зможете обробити вручну.

Тож давайте шукати найцікавішу інформацію (з https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):

Пристрої

Процес починається з видобутку даних sysDesc MIB (1.3.6.1.2.1.1.1.0) з кожного файлу для ідентифікації пристроїв. Це досягається за допомогою команди grep:

grep ".1.3.6.1.2.1.1.1.0" *.snmp

Визначення приватного рядка

Ключовим кроком є визначення використаного приватного рядка спільноти організаціями, зокрема на маршрутизаторах Cisco IOS. Цей рядок дозволяє витягти робочі конфігурації з маршрутизаторів. Визначення часто ґрунтується на аналізі даних SNMP Trap на наявність слова "trap" за допомогою команди grep:

grep -i "trap" *.snmp

Імена користувачів/Паролі

Журнали, збережені в таблицях MIB, перевіряються на невдачі спроби входу, які можуть випадково містити паролі, введені як імена користувачів. Ключові слова, такі як fail, failed, або login, шукаються для пошуку цінних даних:

grep -i "login\|fail" *.snmp

Електронні пошти

Наостанок, для вилучення адрес електронної пошти з даних використовується команда grep з регулярним виразом, який спрямований на шаблони, що відповідають форматам електронної пошти:

grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp

Зміна значень SNMP

Ви можете використовувати NetScanTools для зміни значень. Вам потрібно буде знати приватний рядок, щоб це зробити.

Підроблення

Якщо є ACL, яка дозволяє запитувати SMNP-сервіс тільки деяким IP-адресам, ви можете підробити одну з цих адрес в межах пакету UDP та перехопити трафік.

Огляд файлів конфігурації SNMP

  • snmp.conf

  • snmpd.conf

  • snmp-config.xml

Якщо вас цікавить кар'єра хакера та взлам невзламного - ми шукаємо співробітників! (вимагається вільне письмове та усне володіння польською мовою).

Автоматичні команди HackTricks

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

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated