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

Support HackTricks

If you are interested in hacking career and hack the unhackable - we are hiring! (вимагається вільне володіння польською мовою в письмовій та усній формі).

Basic Information

SNMP - Simple Network Management Protocol є протоколом, що використовується для моніторингу різних пристроїв у мережі (таких як маршрутизатори, комутатори, принтери, 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 пристрою перераховані в стандартизованій ієрархії дерева. Він містить принаймні один Object Identifier (OID), який, крім необхідної унікальної адреси та імені, також надає інформацію про тип, права доступу та опис відповідного об'єкта. Файли MIB написані в форматі ASCII тексту Abstract Syntax Notation One (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. Є кілька відомих OID, таких як ті, що знаходяться всередині 1.3.6.1.2.1, які посилаються на змінні Simple Network Management Protocol (SNMP), визначені в MIB-2. І з OID, що очікують від цього, ви можете отримати цікаві дані про хост (дані системи, дані мережі, дані процесів...)

Приклад OID

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

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

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

  • 1 – це називається ISO, і це встановлює, що це OID. Саме тому всі OID починаються з "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, якщо ви використовуєте поганий рядок спільноти, сервер не відповість. Отже, якщо він відповідає, то використовувався дійсний рядок спільноти.

Порти

З Вікіпедії:

  • SNMP-агент отримує запити на UDP-порт 161.

  • Менеджер отримує сповіщення (Traps та InformRequests) на порт 162.

  • Коли використовується з Transport Layer Security або Datagram Transport Layer Security, запити отримуються на порт 10161, а сповіщення надсилаються на порт 10162.

Атака методом грубої сили на рядок спільноти (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:

Від SNMP до RCE

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

Масове 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

Emails

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

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

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

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

Спуфінг

Якщо є ACL, який дозволяє лише деяким IP запитувати службу SMNP, ви можете спуфити одну з цих адрес у пакеті 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

Підтримайте HackTricks

Last updated