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

302 lines
17 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) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
2022-04-30 20:31:18 +00:00
{% embed url="https://www.stmcyber.com/careers" %}
2022-04-28 16:01:33 +00:00
## Basic Information
**SNMP - Simple Network Management Protocol** to protokół używany do monitorowania różnych urządzeń w sieci (takich jak routery, przełączniki, drukarki, 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 używa również portu **162/UDP** do **pułapek**. Są to dane **pakiety wysyłane z serwera SNMP do klienta bez wyraźnego żądania**.
2022-10-02 21:10:53 +00:00
{% endhint %}
2022-05-07 13:38:40 +00:00
### MIB
Aby zapewnić, że dostęp do SNMP działa w różnych urządzeniach i z różnymi kombinacjami klient-serwer, stworzono **Management Information Base (MIB)**. MIB to **niezależny format przechowywania informacji o urządzeniach**. MIB to plik **tekstowy**, w którym wszystkie zapytania **obiekty SNMP** urządzenia są wymienione w **standaryzowanej** hierarchii drzewiastej. Zawiera co **najmniej jeden `Object Identifier` (`OID`)**, który, oprócz niezbędnego **unikalnego adresu** i **nazwa**, dostarcza również informacji o typie, prawach dostępu i opisie danego obiektu.\
Pliki MIB są napisane w formacie tekstowym ASCII w `Abstract Syntax Notation One` (`ASN.1`). **MIB-y nie zawierają danych**, ale wyjaśniają **gdzie znaleźć jakie informacje** i jak one wyglądają, jakie wartości zwracają dla konkretnego OID, lub jaki typ danych jest używany.
### OIDs
**Object Identifiers (OIDs)** odgrywają kluczową rolę. Te unikalne identyfikatory są zaprojektowane do zarządzania obiektami w **Management Information Base (MIB)**.
2024-02-08 21:36:15 +00:00
Najwyższe poziomy identyfikatorów obiektów MIB, czyli OIDs, są przydzielane różnym organizacjom ustalającym standardy. To w tych najwyższych poziomach ustalany jest framework dla globalnych praktyk i standardów zarządzania.
2024-02-08 21:36:15 +00:00
Ponadto, dostawcy mają swobodę tworzenia prywatnych gałęzi. W ramach tych gałęzi mają **autonomię do włączania zarządzanych obiektów związanych z ich własnymi liniami produktów**. Ten system zapewnia, że istnieje uporządkowana i zorganizowana metoda identyfikacji i zarządzania szeroką gamą obiektów w różnych dostawcach i standardach.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
Możesz **nawigować** przez **drzewo OID** w sieci tutaj: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) lub **zobaczyć, co oznacza OID** (jak `1.3.6.1.2.1.1`) uzyskując dostęp do [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Istnieją **znane OIDs** jak te w [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), które odnoszą się do zmiennych Simple Network Management Protocol (SNMP) zdefiniowanych w MIB-2. A z **OID-ów zależnych od tego** możesz uzyskać interesujące dane o hoście (dane systemowe, dane sieciowe, dane procesów...)
2024-02-11 01:46:25 +00:00
### **Przykład OID**
2024-02-11 01:46:25 +00:00
[**Przykład stąd**](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`**
Oto analiza tego adresu.
* 1 nazywa się to ISO i ustala, że jest to OID. Dlatego wszystkie OID-y zaczynają się od „1”
* 3 nazywa się to ORG i służy do określenia organizacji, która zbudowała urządzenie.
* 6 to dod lub Departament Obrony, który jest organizacją, która jako pierwsza ustanowiła Internet.
* 1 to wartość internetu, aby oznaczyć, że wszystkie komunikacje będą odbywać się przez Internet.
* 4 ta wartość określa, że to urządzenie jest produkowane przez prywatną organizację, a nie rządową.
* 1 ta wartość oznacza, że urządzenie jest produkowane przez przedsiębiorstwo lub podmiot gospodarczy.
Te pierwsze sześć wartości zazwyczaj są takie same dla wszystkich urządzeń i dają podstawowe informacje o nich. Ta sekwencja liczb będzie taka sama dla wszystkich OID-ów, z wyjątkiem sytuacji, gdy urządzenie jest produkowane przez rząd.
2024-02-11 01:46:25 +00:00
Przechodząc do następnego zestawu liczb.
* 1452 podaje nazwę organizacji, która wyprodukowała to urządzenie.
* 1 wyjaśnia typ urządzenia. W tym przypadku jest to budzik.
* 2 określa, że to urządzenie jest jednostką terminalową zdalnego dostępu.
Pozostałe wartości podają szczegółowe informacje o urządzeniu.
* 5 oznacza punkt alarmowy.
* 1 konkretny punkt w urządzeniu
* 3 port
* 21 adres portu
* 1 wyświetlacz dla portu
* 4 numer punktu
* 7 stan punktu
2024-02-11 01:46:25 +00:00
### Wersje SNMP
2024-02-11 01:46:25 +00:00
Istnieją 2 ważne wersje SNMP:
* **SNMPv1**: Główna wersja, nadal najczęściej używana, **uwierzytelnianie opiera się na ciągu** (ciąg społeczności), który podróżuje w **czystym tekście** (wszystkie informacje podróżują w czystym tekście). **Wersja 2 i 2c** również wysyłają **ruch w czystym tekście** i używają **ciągu społeczności jako uwierzytelnienia**.
* **SNMPv3**: Używa lepszej formy **uwierzytelniania** i informacje podróżują **szyfrowane** (można przeprowadzić **atak słownikowy**, ale byłoby znacznie trudniej znaleźć poprawne dane uwierzytelniające niż w SNMPv1 i v2).
### Ciągi społeczności
Jak wspomniano wcześniej, **aby uzyskać dostęp do informacji zapisanych w MIB, musisz znać ciąg społeczności w wersjach 1 i 2/2c oraz dane uwierzytelniające w wersji 3.**\
Istnieją **2 typy ciągów społeczności**:
* **`public`** głównie **tylko do odczytu**
* **`private`** **Odczyt/Zapis** w ogólności
Zauważ, że **możliwość zapisu OID zależy od używanego ciągu społeczności**, więc **nawet** jeśli znajdziesz, że „**public**” jest używane, możesz być w stanie **zapisać niektóre wartości.** Mogą również istnieć obiekty, które są **zawsze "tylko do odczytu".**\
Jeśli spróbujesz **zapisać** obiekt, otrzymasz błąd **`noSuchName` lub `readOnly`**.\*\*.\*\*
W wersjach 1 i 2/2c, jeśli użyjesz **złego** ciągu społeczności, serwer nie **odpowie**. Więc, jeśli odpowiada, użyto **ważnego ciągu społeczności**.
2024-02-11 01:46:25 +00:00
## Porty
2024-02-08 21:36:15 +00:00
[Z Wikipedii](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
2024-02-11 01:46:25 +00:00
* Agent SNMP odbiera żądania na porcie UDP **161**.
* Menedżer odbiera powiadomienia ([Pułapki](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap) i [InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest)) na porcie **162**.
* Gdy używane jest z [Transport Layer Security](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) lub [Datagram Transport Layer Security](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), żądania są odbierane na porcie **10161**, a powiadomienia są wysyłane na port **10162**.
## Atak Brute-Force na Ciąg Społeczności (v1 i v2c)
Aby **zgadnąć ciąg społeczności**, możesz przeprowadzić atak słownikowy. Sprawdź [tutaj różne sposoby przeprowadzenia ataku brute-force przeciwko SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Często używanym ciągiem społeczności jest `public`.
## Enumeracja SNMP
Zaleca się zainstalowanie następujących narzędzi, aby zobaczyć, co oznacza **każdy zebrany OID** z urządzenia:
```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
```
Jeśli znasz ważny ciąg społeczności, możesz uzyskać dostęp do danych za pomocą **SNMPWalk** lub **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
```
Dzięki rozszerzonym zapytaniom (download-mibs) możliwe jest uzyskanie jeszcze więcej informacji o systemie za pomocą następującego polecenia:
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** ma wiele informacji o hoście, a rzeczy, które mogą być interesujące, to: **Interfejsy sieciowe** (adresy **IPv4** i **IPv6**), Nazwy użytkowników, Czas działania, Wersja serwera/OS oraz **procesy**
**działające** (mogą zawierać hasła)....
2022-10-02 21:10:53 +00:00
2024-02-11 01:46:25 +00:00
### **Niebezpieczne ustawienia**
2022-10-02 21:10:53 +00:00
W dziedzinie zarządzania siecią, niektóre konfiguracje i parametry są kluczowe dla zapewnienia kompleksowego monitorowania i kontroli.
2022-10-02 21:10:53 +00:00
2024-02-11 01:46:25 +00:00
### Ustawienia dostępu
2024-02-08 21:36:15 +00:00
Dwa główne ustawienia umożliwiają dostęp do **pełnego drzewa OID**, które jest kluczowym elementem w zarządzaniu siecią:
2024-02-08 21:36:15 +00:00
1. **`rwuser noauth`** jest ustawione, aby zezwolić na pełny dostęp do drzewa OID bez potrzeby uwierzytelniania. To ustawienie jest proste i pozwala na nieograniczony dostęp.
2. Dla bardziej szczegółowej kontroli, dostęp można przyznać za pomocą:
* **`rwcommunity`** dla adresów **IPv4**, oraz
* **`rwcommunity6`** dla adresów **IPv6**.
2024-02-08 21:36:15 +00:00
Obie komendy wymagają **ciągu społeczności** oraz odpowiedniego adresu IP, oferując pełny dostęp niezależnie od pochodzenia żądania.
2022-10-02 21:10:53 +00:00
### Parametry SNMP dla Microsoft Windows
Seria **wartości Management Information Base (MIB)** jest wykorzystywana do monitorowania różnych aspektów systemu Windows za pomocą SNMP:
* **Procesy systemowe**: Dostępne przez `1.3.6.1.2.1.25.1.6.0`, ten parametr pozwala na monitorowanie aktywnych procesów w systemie.
* **Działające programy**: Wartość `1.3.6.1.2.1.25.4.2.1.2` jest przeznaczona do śledzenia aktualnie działających programów.
* **Ścieżka procesów**: Aby określić, skąd uruchamiany jest proces, używa się wartości MIB `1.3.6.1.2.1.25.4.2.1.4`.
* **Jednostki pamięci**: Monitorowanie jednostek pamięci ułatwia `1.3.6.1.2.1.25.2.3.1.4`.
* **Nazwa oprogramowania**: Aby zidentyfikować zainstalowane oprogramowanie w systemie, stosuje się `1.3.6.1.2.1.25.6.3.1.2`.
* **Konta użytkowników**: Wartość `1.3.6.1.4.1.77.1.2.25` pozwala na śledzenie kont użytkowników.
* **Lokalne porty TCP**: Na koniec, `1.3.6.1.2.1.6.13.1.3` jest przeznaczone do monitorowania lokalnych portów TCP, dostarczając informacji o aktywnych połączeniach sieciowych.
2022-09-30 10:43:59 +00:00
### Cisco
Zobacz tę stronę, jeśli masz sprzęt Cisco:
2022-09-30 10:43:59 +00:00
{% content-ref url="cisco-snmp.md" %}
[cisco-snmp.md](cisco-snmp.md)
{% endcontent-ref %}
2024-02-11 01:46:25 +00:00
## Od SNMP do RCE
2021-04-19 17:04:40 +00:00
Jeśli masz **ciąg**, który pozwala na **zapisywanie wartości** w usłudze SNMP, możesz być w stanie go nadużyć, aby **wykonywać polecenia**:
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
## **Masowe SNMP**
[Braa](https://github.com/mteg/braa) to masowy skaner SNMP. Zamierzonym zastosowaniem takiego narzędzia jest oczywiście wykonywanie zapytań SNMP ale w przeciwieństwie do snmpwalk z net-snmp, jest w stanie zapytać dziesiątki lub setki hostów jednocześnie, w jednym procesie. Dzięki temu zużywa bardzo mało zasobów systemowych i wykonuje skanowanie BARDZO szybko.
Braa implementuje SWÓJ własny stos snmp, więc nie potrzebuje żadnych bibliotek SNMP, takich jak net-snmp.
**Składnia:** braa \[Ciąg społeczności]@\[IP serwera SNMP]:\[iso id]
2024-02-08 21:36:15 +00:00
```bash
braa ignite123@192.168.1.125:.1.3.6.*
```
To może wyodrębnić wiele MB informacji, których nie możesz przetworzyć ręcznie.
Zatem, poszukajmy najbardziej interesujących informacji (z [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-02-11 01:46:25 +00:00
### **Urządzenia**
2024-02-08 21:36:15 +00:00
Proces zaczyna się od wyodrębnienia **sysDesc MIB data** (1.3.6.1.2.1.1.1.0) z każdego pliku, aby zidentyfikować urządzenia. Osiąga się to za pomocą **grep command**:
2024-02-08 21:36:15 +00:00
```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp
```
### **Zidentyfikuj Prywatny Ciąg**
Krytycznym krokiem jest zidentyfikowanie **prywatnego ciągu społeczności** używanego przez organizacje, szczególnie na routerach Cisco IOS. Ciąg ten umożliwia wydobycie **aktualnych konfiguracji** z routerów. Identyfikacja często opiera się na analizie danych SNMP Trap w poszukiwaniu słowa "trap" za pomocą **polecenia grep**:
```bash
grep -i "trap" *.snmp
```
2024-02-11 01:46:25 +00:00
### **Nazwy użytkowników/Hasła**
Logi przechowywane w tabelach MIB są badane pod kątem **nieudanych prób logowania**, które mogą przypadkowo zawierać hasła wprowadzone jako nazwy użytkowników. Słowa kluczowe takie jak _fail_, _failed_ lub _login_ są wyszukiwane w celu znalezienia cennych danych:
```bash
grep -i "login\|fail" *.snmp
```
### **Emails**
Na koniec, aby wyodrębnić **adresy e-mail** z danych, używana jest **komenda grep** z wyrażeniem regularnym, koncentrując się na wzorcach, które pasują do formatów e-mail:
```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
```
2024-02-11 01:46:25 +00:00
## Modyfikowanie wartości SNMP
Możesz użyć _**NetScanTools**_, aby **zmodyfikować wartości**. Będziesz musiał znać **prywatny ciąg**, aby to zrobić.
## Fałszowanie
Jeśli istnieje ACL, który pozwala tylko niektórym adresom IP na zapytania do usługi SMNP, możesz sfałszować jeden z tych adresów wewnątrz pakietu UDP i podsłuchiwać ruch.
## Zbadaj pliki konfiguracyjne SNMP
* snmp.conf
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Jeśli jesteś zainteresowany **karierą w hackingu** i chcesz złamać to, co nie do złamania - **zatrudniamy!** (_wymagana biegła znajomość polskiego w mowie i piśmie_).
{% embed url="https://www.stmcyber.com/careers" %}
2024-02-11 01:46:25 +00:00
## Automatyczne polecenia 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-02-11 01:46:25 +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-02-11 01:46:25 +00:00
https://book.hacktricks.xyz/pentesting/pentesting-snmp
2021-08-15 17:47:07 +00:00
Entry_2:
2024-02-11 01:46:25 +00:00
Name: SNMP Check
Description: Enumerate SNMP
Command: snmp-check {IP}
2021-08-15 17:47:07 +00:00
Entry_3:
2024-02-11 01:46:25 +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-02-11 01:46:25 +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-02-11 01:46:25 +00:00
Name: Hydra Brute Force
Description: Need Nothing
Command: hydra -P {Big_Passwordlist} -v {IP} snmp
2022-05-08 22:42:39 +00:00
```
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:<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">\
Ucz się i ćwicz Hacking GCP: <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>Wsparcie HackTricks</summary>
2024-01-02 18:28:27 +00:00
* Sprawdź [**plany subskrypcyjne**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}