hacktricks/network-services-pentesting/pentesting-snmp/README.md

302 lines
24 KiB
Markdown
Raw Normal View History

# 161,162,10161,10162/udp - Pentesting SNMP
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-02 18:28:27 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2022-04-30 20:31:18 +00:00
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
2022-04-28 16:01:33 +00:00
## 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)
```
2022-10-02 21:10:53 +00:00
{% hint style="info" %}
SNMP також використовує порт **162/UDP** для **трапів**. Це дані **пакети, надіслані з SNMP-сервера до клієнта без явного запиту**.
2022-10-02 21:10:53 +00:00
{% endhint %}
2022-05-07 13:38:40 +00:00
### MIB
Щоб забезпечити роботу доступу SNMP між виробниками та з різними комбінаціями клієнт-сервер, була створена **База управлінської інформації (MIB)**. MIB є **незалежним форматом для зберігання інформації про пристрої**. MIB - це **текстовий** файл, в якому всі запитувані **об'єкти SNMP** пристрою перераховані в **стандартизованій** ієрархії дерева. Він містить принаймні один `Object Identifier` (`OID`), який, крім необхідної **унікальної адреси** та **імені**, також надає інформацію про тип, права доступу та опис відповідного об'єкта.\
Файли MIB написані в ASCII текстовому форматі `Abstract Syntax Notation One` (`ASN.1`). **MIB не містять даних**, але пояснюють **де знайти яку інформацію** і як вона виглядає, які значення повертаються для конкретного OID або який тип даних використовується.
2022-05-07 13:38:40 +00:00
### OIDs
**Ідентифікатори об'єктів (OIDs)** відіграють вирішальну роль. Ці унікальні ідентифікатори призначені для управління об'єктами в **Базі управлінської інформації (MIB)**.
2024-02-08 21:36:15 +00:00
Найвищі рівні ідентифікаторів об'єктів MIB, або OIDs, виділені різним організаціям, що встановлюють стандарти. Саме в цих верхніх рівнях встановлюється структура для глобальних практик управління та стандартів.
2024-02-08 21:36:15 +00:00
Крім того, постачальникам надається свобода створювати приватні гілки. У межах цих гілок вони мають **автономію включати керовані об'єкти, що стосуються їхніх власних продуктів**. Ця система забезпечує структурований і організований метод для ідентифікації та управління широким спектром об'єктів серед різних постачальників і стандартів.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
Ви можете **переглядати** через **дерево OID** з вебу тут: [http://www.oid-info.com/cgi-bin/display?tree=#focus](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](http://oid-info.com/get/1.3.6.1.2.1.1).\
Є деякі **відомі OIDs**, такі як ті, що всередині [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), які посилаються на змінні Simple Network Management Protocol (SNMP), визначені в MIB-2. І з **OID, що походять з цього**, ви можете отримати цікаві дані про хост (дані системи, дані мережі, дані процесів...)
2024-03-29 18:49:46 +00:00
### **Приклад OID**
2024-03-29 18:49:46 +00:00
[**Приклад звідси**](https://www.netadmintools.com/snmp-mib-and-oids/):
2024-02-08 21:36:15 +00:00
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
2024-03-29 18:49:46 +00:00
Ось розбивка цієї адреси.
* 1 це називається ISO, і це встановлює, що це OID. Саме тому всі OID починаються з "1".
* 3 це називається ORG, і воно використовується для вказівки організації, яка виготовила пристрій.
* 6 це dod або Міністерство оборони, яке є організацією, що першою встановила Інтернет.
* 1 це значення Інтернету, що позначає, що всі комунікації відбуватимуться через Інтернет.
* 4 це значення визначає, що цей пристрій виготовлений приватною організацією, а не урядовою.
* 1 це значення позначає, що пристрій виготовлений підприємством або бізнес-структурою.
Ці перші шість значень, як правило, однакові для всіх пристроїв і надають основну інформацію про них. Ця послідовність чисел буде однаковою для всіх OID, за винятком випадків, коли пристрій виготовлений урядом.
Продовжуючи до наступного набору чисел.
* 1452 вказує на назву організації, яка виготовила цей пристрій.
* 1 пояснює тип пристрою. У цьому випадку це будильник.
* 2 визначає, що цей пристрій є віддаленим терміналом.
Інші значення надають специфічну інформацію про пристрій.
* 5 позначає дискретну точку тривоги.
* 1 конкретна точка в пристрої.
* 3 порт.
* 21 адреса порту.
* 1 дисплей для порту.
* 4 номер точки.
* 7 стан точки.
2024-03-29 18:49:46 +00:00
### Версії SNMP
2024-03-29 18:49:46 +00:00
Існує 2 важливі версії SNMP:
* **SNMPv1**: Основна, вона все ще найпоширеніша, **автентифікація базується на рядку** (рядок спільноти), який передається в **відкритому тексті** (вся інформація передається в відкритому тексті). **Версії 2 і 2c** також передають **трафік у відкритому тексті** і використовують **рядок спільноти як автентифікацію**.
* **SNMPv3**: Використовує кращу **форму автентифікації**, і інформація передається **зашифрованою** (може бути виконано **атака методом підбору**, але знайти правильні дані буде набагато важче, ніж у SNMPv1 і v2).
2024-03-29 18:49:46 +00:00
### Рядки спільноти
Як вже згадувалося, **для доступу до інформації, збереженої в MIB, вам потрібно знати рядок спільноти у версіях 1 і 2/2c та облікові дані у версії 3.**\
Існує **2 типи рядків спільноти**:
* **`public`** в основному **тільки для читання** функції.
* **`private`** **Читання/Запис** в загальному.
Зверніть увагу, що **можливість запису OID залежить від використаного рядка спільноти**, тому **навіть** якщо ви виявите, що використовується "**public**", ви можете мати можливість **записувати деякі значення.** Також можуть існувати об'єкти, які **завжди "тільки для читання".**\
Якщо ви намагаєтеся **записати** об'єкт, ви отримаєте **помилку `noSuchName` або `readOnly`**.\*\*.\*\*
У версіях 1 і 2/2c, якщо ви використовуєте **поганий** рядок спільноти, сервер не **відповість**. Тож, якщо він відповідає, було використано **дійсний рядок спільноти**.
2024-03-29 18:49:46 +00:00
## Порти
2024-02-08 21:36:15 +00:00
2024-03-29 18:49:46 +00:00
[З Вікіпедії](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
* SNMP-агент отримує запити на UDP порту **161**.
* Менеджер отримує сповіщення ([Traps](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) та [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) на порту **162**.
* Коли використовується з [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) або [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), запити отримуються на порту **10161**, а сповіщення надсилаються на порт **10162**.
## Атака методом підбору рядка спільноти (v1 і v2c)
Щоб **вгадати рядок спільноти**, ви можете виконати атаку методом підбору. Перевірте [тут різні способи виконання атаки методом підбору проти SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Часто використовуваний рядок спільноти - `public`.
## Перерахування SNMP
Рекомендується встановити наступне, щоб побачити, що означає **кожен OID, зібраний** з пристрою:
```bash
apt-get install snmp-mibs-downloader
download-mibs
2022-06-08 11:20:23 +00:00
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
```
2024-03-29 18:49:46 +00:00
Якщо ви знаєте дійсний рядок спільноти, ви можете отримати доступ до даних за допомогою **SNMPWalk** або **SNMP-Check**:
```bash
2022-06-08 11:20:23 +00:00
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
2022-10-02 21:10:53 +00:00
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
2021-06-21 22:18:24 +00:00
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
2022-10-02 21:10:53 +00:00
snmp-check [DIR_IP] -p [PORT] -c [COMM_STRING]
2022-10-02 21:10:53 +00:00
nmap --script "snmp* and not snmp-brute" <target>
2022-10-02 21:10:53 +00:00
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```
Дякуючи розширеним запитам (download-mibs), можливо перерахувати ще більше інформації про систему за допомогою наступної команди:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** має багато інформації про хост, і речі, які можуть вас зацікавити, це: **мережеві інтерфейси** (IPv4 та **IPv6** адреси), імена користувачів, час роботи, версія сервера/ОС та **процеси**
**які працюють** (можуть містити паролі)....
2024-03-29 18:49:46 +00:00
### **Небезпечні налаштування**
2022-10-02 21:10:53 +00:00
У сфері управління мережею певні конфігурації та параметри є ключовими для забезпечення всебічного моніторингу та контролю.
2024-02-08 21:36:15 +00:00
2024-03-29 18:49:46 +00:00
### Налаштування доступу
2024-02-08 21:36:15 +00:00
Два основні налаштування дозволяють доступ до **повного дерева OID**, що є важливим компонентом в управлінні мережею:
2024-02-08 21:36:15 +00:00
1. **`rwuser noauth`** встановлено для надання повного доступу до дерева OID без необхідності аутентифікації. Це налаштування є простим і дозволяє необмежений доступ.
2. Для більш специфічного контролю доступ може бути наданий за допомогою:
2024-03-29 18:49:46 +00:00
* **`rwcommunity`** для **IPv4** адрес, та
* **`rwcommunity6`** для **IPv6** адрес.
Обидва команди вимагають **рядок спільноти** та відповідну IP-адресу, пропонуючи повний доступ незалежно від походження запиту.
2022-10-02 21:10:53 +00:00
2024-03-29 18:49:46 +00:00
### Параметри 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`.
2024-03-29 18:49:46 +00:00
* **Одиниці зберігання**: Моніторинг одиниць зберігання здійснюється за допомогою `1.3.6.1.2.1.25.2.3.1.4`.
* **Назва програмного забезпечення**: Щоб ідентифікувати програмне забезпечення, встановлене на системі, використовується `1.3.6.1.2.1.25.6.3.1.2`.
2024-03-29 18:49:46 +00:00
* **Облікові записи користувачів**: Значення `1.3.6.1.4.1.77.1.2.25` дозволяє відстежувати облікові записи користувачів.
* **Локальні порти TCP**: Нарешті, `1.3.6.1.2.1.6.13.1.3` призначене для моніторингу локальних портів TCP, надаючи інформацію про активні мережеві з'єднання.
2022-09-30 10:43:59 +00:00
### Cisco
Перегляньте цю сторінку, якщо у вас є обладнання Cisco:
2022-09-30 10:43:59 +00:00
{% content-ref url="cisco-snmp.md" %}
[cisco-snmp.md](cisco-snmp.md)
{% endcontent-ref %}
2024-03-29 18:49:46 +00:00
## Від SNMP до RCE
2021-04-19 17:04:40 +00:00
Якщо у вас є **рядок**, який дозволяє вам **записувати значення** всередині служби SNMP, ви можете зловживати цим для **виконання команд**:
2021-04-19 17:04:40 +00:00
{% content-ref url="snmp-rce.md" %}
[snmp-rce.md](snmp-rce.md)
{% endcontent-ref %}
2021-04-19 17:04:40 +00:00
2024-03-29 18:49:46 +00:00
## **Масовий SNMP**
[Braa ](https://github.com/mteg/braa) є масовим сканером SNMP. Передбачуване використання такого інструменту, звичайно, полягає в здійсненні запитів SNMP але на відміну від snmpwalk з net-snmp, він здатний запитувати десятки або сотні хостів одночасно, і в одному процесі. Таким чином, він споживає дуже мало системних ресурсів і виконує сканування ДУЖЕ швидко.
Braa реалізує свій ВЛАСНИЙ стек snmp, тому йому НЕ потрібні жодні бібліотеки SNMP, такі як net-snmp.
**Синтаксис:** braa \[рядок спільноти\]@\[\IP сервера SNMP\]:\[\iso id\]
2024-02-08 21:36:15 +00:00
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
Це може витягнути багато МБ інформації, яку ви не можете обробити вручну.
Отже, давайте шукаємо найцікавішу інформацію (з [https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
2024-03-29 18:49:46 +00:00
### **Пристрої**
2024-02-08 21:36:15 +00:00
Процес починається з витягування **sysDesc MIB даних** (1.3.6.1.2.1.1.1.0) з кожного файлу для ідентифікації пристроїв. Це досягається за допомогою **grep команди**:
2024-02-08 21:36:15 +00:00
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Визначити приватний рядок**
Ключовим кроком є визначення **приватного рядка спільноти**, що використовується організаціями, особливо на маршрутизаторах Cisco IOS. Цей рядок дозволяє витягувати **поточні конфігурації** з маршрутизаторів. Визначення часто базується на аналізі даних SNMP Trap на наявність слова "trap" за допомогою **grep команди**:
```bash
grep -i "trap" *.snmp
```
2024-03-29 18:49:46 +00:00
### **Імена користувачів/Паролі**
Логи, збережені в таблицях MIB, перевіряються на **невдалі спроби входу**, які можуть випадково включати паролі, введені як імена користувачів. Шукаються ключові слова, такі як _fail_, _failed_ або _login_, щоб знайти цінні дані:
```bash
grep -i "login\|fail" *.snmp
```
### **Emails**
Нарешті, для витягування **адрес електронної пошти** з даних використовується **команда grep** з регулярним виразом, зосереджуючись на шаблонах, які відповідають форматам електронної пошти:
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
2024-03-29 18:49:46 +00:00
## Зміна значень SNMP
Ви можете використовувати _**NetScanTools**_ для **зміни значень**. Вам потрібно знати **приватний рядок**, щоб це зробити.
## Спуфінг
Якщо є ACL, який дозволяє лише деяким IP запитувати службу SMNP, ви можете спуфити одну з цих адрес у пакеті UDP і прослухати трафік.
## Перевірка конфігураційних файлів SNMP
* snmp.conf
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Якщо вас цікавить **кар'єра в хакерстві** і ви хочете зламати незламне - **ми наймаємо!** (_вимагається вільне володіння польською мовою в письмовій та усній формі_).
{% embed url="https://www.stmcyber.com/careers" %}
## HackTricks Автоматичні команди
```
2021-08-12 13:34:46 +00:00
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
2021-08-15 17:47:07 +00:00
Entry_1:
2024-03-29 18:49:46 +00:00
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...).
2021-08-15 17:47:07 +00:00
2024-03-29 18:49:46 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-snmp
2021-08-15 17:47:07 +00:00
Entry_2:
2024-03-29 18:49:46 +00:00
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}
2021-08-15 17:47:07 +00:00
Entry_3:
2024-03-29 18:49:46 +00:00
Name: OneSixtyOne
Description: Crack SNMP passwords
Command: onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt {IP} -w 100
2021-08-15 17:47:07 +00:00
Entry_4:
2024-03-29 18:49:46 +00:00
Name: Nmap
Description: Nmap snmp (no brute)
Command: nmap --script "snmp* and not snmp-brute" {IP}
2021-09-13 15:47:39 +00:00
Entry_5:
2024-03-29 18:49:46 +00:00
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp
2022-04-28 16:01:33 +00:00
2024-03-29 18:49:46 +00:00
```
{% hint style="success" %}
Вивчайте та практикуйте AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Вивчайте та практикуйте GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Підтримайте HackTricks</summary>
2024-01-02 18:28:27 +00:00
* Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)!
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}