24 KiB
161,162,10161,10162/udp - Pentesting SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
If you are interested in hacking career and hack the unhackable - we are hiring! (вимагається вільне володіння польською мовою в письмовій та усній формі).
{% embed url="https://www.stmcyber.com/careers" %}
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)
{% hint style="info" %} SNMP також використовує порт 162/UDP для трапів. Це дані пакети, надіслані з SNMP-сервера до клієнта без явного запиту. {% endhint %}
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.
Є деякі відомі OIDs, такі як ті, що всередині 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, що є важливим компонентом в управлінні мережею:
rwuser noauth
встановлено для надання повного доступу до дерева OID без необхідності аутентифікації. Це налаштування є простим і дозволяє необмежений доступ.- Для більш специфічного контролю доступ може бути наданий за допомогою:
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:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
Від SNMP до RCE
Якщо у вас є рядок, який дозволяє вам записувати значення всередині служби SNMP, ви можете зловживати цим для виконання команд:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
Масовий 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
Якщо вас цікавить кар'єра в хакерстві і ви хочете зламати незламне - ми наймаємо! (вимагається вільне володіння польською мовою в письмовій та усній формі).
{% embed url="https://www.stmcyber.com/careers" %}
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
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.