mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
299 lines
17 KiB
Markdown
299 lines
17 KiB
Markdown
# 161,162,10161,10162/udp - Testowanie penetracyjne SNMP
|
||
|
||
<details>
|
||
|
||
<summary><strong>Zacznij od zera i zostań ekspertem od hakowania AWS dzięki</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Inne sposoby wsparcia HackTricks:
|
||
|
||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
|
||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
|
||
|
||
</details>
|
||
|
||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Jeśli interesuje Cię **kariera w hakerstwie** i hakowanie niemożliwego - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
|
||
|
||
{% embed url="https://www.stmcyber.com/careers" %}
|
||
|
||
## Podstawowe informacje
|
||
|
||
**SNMP - Simple Network Management Protocol** to protokół używany do monitorowania różnych urządzeń w sieci (takich jak routery, przełączniki, drukarki, urządzenia IoT...).
|
||
```
|
||
PORT STATE SERVICE REASON VERSION
|
||
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
|
||
```
|
||
{% hint style="info" %}
|
||
SNMP używa również portu **162/UDP** do **pułapek**. Są to **pakiety danych wysyłane z serwera SNMP do klienta bez wyraźnego żądania**.
|
||
{% endhint %}
|
||
|
||
### MIB
|
||
|
||
Aby zapewnić, że dostęp SNMP działa między producentami i różnymi kombinacjami klient-serwer, została stworzona **Baza Informacji Zarządzania (MIB)**. MIB to **niezależny format przechowywania informacji o urządzeniu**. MIB to **plik tekstowy**, w którym wszystkie **obiekty SNMP** urządzenia są wymienione w **standaryzowanej** hierarchii drzewa. Zawiera co najmniej jeden `Identyfikator Obiektu` (`OID`), który oprócz niezbędnego **unikalnego adresu** i **nazwy**, zawiera również informacje o typie, prawach dostępu i opisie danego obiektu.\
|
||
Pliki MIB są napisane w formacie tekstowym ASCII opartym na `Notacji Składni Abstrakcyjnej Jedynki` (`ASN.1`). **MIB nie zawierają danych**, ale wyjaśniają **gdzie znaleźć jakie informacje** i jak one wyglądają, zwracają wartości dla konkretnego OID, lub jaki typ danych jest używany.
|
||
|
||
### OID
|
||
|
||
**Identyfikatory Obiektów (OID)** odgrywają kluczową rolę. Te unikalne identyfikatory są przeznaczone do zarządzania obiektami w ramach **Bazy Informacji Zarządzania (MIB)**.
|
||
|
||
Najwyższe poziomy identyfikatorów obiektów MIB, czyli OID, są przydzielane różnym organizacjom ustalającym standardy. To właśnie na tych najwyższych poziomach ustanawiany jest szkielet globalnych praktyk zarządzania i standardów.
|
||
|
||
Dodatkowo, dostawcom przyznaje się swobodę tworzenia prywatnych gałęzi. W ramach tych gałęzi mają **autonomię do dodawania zarządzanych obiektów związanych z ich własnymi liniami produktów**. Ten system zapewnia, że istnieje strukturalna i zorganizowana metoda identyfikowania i zarządzania szerokim zakresem obiektów różnych dostawców i standardów.
|
||
|
||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||
|
||
Możesz **przejrzeć** drzewo **OID** z poziomu 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** (np. `1.3.6.1.2.1.1`) przechodząc pod [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** takie jak te wewnątrz [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1), które odnoszą się do zdefiniowanych zmiennych protokołu SNMP w MIB-2. Z **OIDów zależnych od tego** można uzyskać interesujące dane hosta (dane systemowe, sieciowe, procesy...)
|
||
|
||
### **Przykład OID**
|
||
|
||
[**Przykład stąd**](https://www.netadmintools.com/snmp-mib-and-oids/):
|
||
|
||
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
|
||
|
||
Oto rozbicie tego adresu.
|
||
|
||
* 1 – to jest ISO i oznacza, że jest to OID. Dlatego wszystkie OIDy zaczynają się od "1"
|
||
* 3 – 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, oznaczająca, że cała komunikacja będzie odbywać się przez Internet.
|
||
* 4 – ta wartość określa, że to urządzenie jest produkowane przez organizację prywatną, a nie rządową.
|
||
* 1 – ta wartość oznacza, że urządzenie jest produkowane przez przedsiębiorstwo lub jednostkę biznesową.
|
||
|
||
Te pierwsze sześć wartości są zazwyczaj 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 gdy urządzenie jest produkowane przez rząd.
|
||
|
||
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 zdalną jednostką terminalową.
|
||
|
||
Pozostałe wartości podają konkretne informacje o urządzeniu.
|
||
|
||
* 5 – oznacza dyskretny punkt alarmowy.
|
||
* 1 – konkretny punkt w urządzeniu
|
||
* 3 – port
|
||
* 21 – adres portu
|
||
* 1 – wyświetlacz dla portu
|
||
* 4 – numer punktu
|
||
* 7 – stan punktu
|
||
|
||
### Wersje SNMP
|
||
|
||
Istnieją 2 ważne wersje SNMP:
|
||
|
||
* **SNMPv1**: Główna, nadal najczęstsza, **uwierzytelnienie oparte jest na ciągu znaków** (ciąg społeczności) przesyłanym w **tekście jawnym** (wszystkie informacje przesyłane są w tekście jawnym). **Wersja 2 i 2c** również przesyłają **ruch w tekście jawnym** i używają **ciągu społeczności jako uwierzytelnienia**.
|
||
* **SNMPv3**: Używa lepszego **sposobu uwierzytelniania** i informacje przesyłane są **zaszyfrowane** (atak słownikowy może być przeprowadzony, ale znalezienie poprawnych danych uwierzytelniających byłoby znacznie trudniejsze niż w SNMPv1 i v2).
|
||
|
||
### Ciągi Społeczności
|
||
|
||
Jak wspomniano wcześniej, **aby uzyskać dostęp do informacji zapisanych w MIB, należy znać ciąg społeczności w wersjach 1 i 2/2c oraz dane uwierzytelniające w wersji 3.**\
|
||
Istnieją **2 rodzaje ciągów społeczności**:
|
||
|
||
* **`public`** głównie **funkcje tylko do odczytu**
|
||
* **`private`** **Odczyt/Zapis** ogólnie
|
||
|
||
Zauważ, że **możliwość zapisu OID zależy od użytego ciągu społeczności**, więc **nawet** jeśli odkryjesz, że używany jest "**public**", możesz być w stanie **zapisać niektóre wartości**. Istnieją również 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 **nieprawidłowego** ciągu społeczności, serwer nie **odpowie**. Dlatego jeśli otrzymasz odpowiedź, został użyty **prawidłowy ciąg społeczności**.
|
||
|
||
## Porty
|
||
|
||
[Z Wikipedii](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
||
|
||
* 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 [Warstwa Bezpieczeństwa Transportu](https://en.wikipedia.org/wiki/Transport\_Layer\_Security) lub [Datagramowa Warstwa Bezpieczeństwa Transportu](https://en.wikipedia.org/wiki/Datagram\_Transport\_Layer\_Security), żądania są odbierane na porcie **10161**, a powiadomienia są wysyłane na port **10162**.
|
||
|
||
## Atak Siłowy na Ciąg Społeczności (v1 i v2c)
|
||
|
||
Aby **odgadnąć ciąg społeczności**, można przeprowadzić atak słownikowy. Sprawdź [tutaj różne sposoby przeprowadzenia ataku siłowego na SNMP](../../generic-methodologies-and-resources/brute-force.md#snmp). Często używanym ciągiem społeczności jest `public`.
|
||
|
||
## Wyliczanie SNMP
|
||
|
||
Zaleca się zainstalowanie następującego, aby zobaczyć, co oznacza **każdy zebrany OID** z urządzenia:
|
||
```bash
|
||
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
|
||
```
|
||
Jeśli znasz poprawny ciąg społeczności, możesz uzyskać dostęp do danych za pomocą **SNMPWalk** lub **SNMP-Check**:
|
||
```bash
|
||
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
|
||
```
|
||
Dzięki rozszerzonym zapytaniom (download-mibs) można jeszcze bardziej wyliczyć informacje o systemie za pomocą następującej komendy:
|
||
```bash
|
||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||
```
|
||
**SNMP** zawiera wiele informacji o hostingu, a rzeczy, które mogą Cię zainteresować to: **Interfejsy sieciowe** (adresy IPv4 i **IPv6**), Nazwy użytkowników, Czas pracy, Wersja serwera/systemu operacyjnego oraz **procesy**
|
||
|
||
**uruchomione** (mogą zawierać hasła)....
|
||
|
||
### **Niebezpieczne ustawienia**
|
||
|
||
W dziedzinie zarządzania siecią pewne konfiguracje i parametry są kluczowe dla zapewnienia kompleksowego monitorowania i kontroli.
|
||
|
||
### Ustawienia dostępu
|
||
|
||
Dwa główne ustawienia umożliwiają dostęp do **pełnego drzewa OID**, co jest istotnym elementem w zarządzaniu siecią:
|
||
|
||
1. **`rwuser noauth`** jest ustawione w celu umożliwienia pełnego dostępu do drzewa OID bez konieczności uwierzytelniania. To ustawienie jest proste i pozwala na nieograniczony dostęp.
|
||
2. Dla bardziej szczegółowej kontroli dostęp może być udzielony za pomocą:
|
||
* **`rwcommunity`** dla adresów **IPv4**, oraz
|
||
* **`rwcommunity6`** dla adresów **IPv6**.
|
||
|
||
Oba polecenia wymagają **ciągu społecznościowego** i odpowiedniego adresu IP, oferując pełny dostęp niezależnie od pochodzenia żądania.
|
||
|
||
### Parametry SNMP dla systemu Microsoft Windows
|
||
|
||
Seria wartości **Bazy Informacji Zarządzania (MIB)** jest wykorzystywana do monitorowania różnych aspektów systemu Windows za pomocą SNMP:
|
||
|
||
* **Procesy systemowe**: Dostępne za pomocą `1.3.6.1.2.1.25.1.6.0`, ten parametr pozwala na monitorowanie aktywnych procesów w systemie.
|
||
* **Uruchomione programy**: Wartość `1.3.6.1.2.1.25.4.2.1.2` jest przeznaczona do śledzenia aktualnie uruchomionych programów.
|
||
* **Ścieżka procesów**: Aby określić, z którego miejsca uruchamiany jest proces, wykorzystywana jest wartość MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||
* **Jednostki pamięci**: Monitorowanie jednostek pamięci jest ułatwione przez `1.3.6.1.2.1.25.2.3.1.4`.
|
||
* **Nazwa oprogramowania**: Do zidentyfikowania zainstalowanego oprogramowania na systemie używane jest `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**: Wreszcie, `1.3.6.1.2.1.6.13.1.3` jest przeznaczony do monitorowania lokalnych portów TCP, dostarczając informacji o aktywnych połączeniach sieciowych.
|
||
|
||
### Cisco
|
||
|
||
Zajrzyj na tę stronę, jeśli korzystasz z urządzeń Cisco:
|
||
|
||
{% content-ref url="cisco-snmp.md" %}
|
||
[cisco-snmp.md](cisco-snmp.md)
|
||
{% endcontent-ref %}
|
||
|
||
## Od SNMP do RCE
|
||
|
||
Jeśli masz **ciąg**, który pozwala Ci **zapisywać wartości** w usłudze SNMP, możesz go wykorzystać do **wykonywania poleceń**:
|
||
|
||
{% content-ref url="snmp-rce.md" %}
|
||
[snmp-rce.md](snmp-rce.md)
|
||
{% endcontent-ref %}
|
||
|
||
## **Masywny SNMP**
|
||
|
||
[Braa ](https://github.com/mteg/braa)to masowy skaner SNMP. Intencją użycia 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, i to w jednym procesie. Dlatego zużywa bardzo mało zasobów systemowych i skanuje BARDZO szybko.
|
||
|
||
Braa implementuje SWÓJ stos SNMP, więc NIE potrzebuje żadnych bibliotek SNMP, takich jak net-snmp.
|
||
|
||
**Składnia:** braa \[Ciąg społecznościowy]@\[IP serwera SNMP]:\[iso id]
|
||
```bash
|
||
braa ignite123@192.168.1.125:.1.3.6.*
|
||
```
|
||
To może wydobyć dużo MB informacji, których nie można przetworzyć ręcznie.
|
||
|
||
Więc, szukajmy 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/)):
|
||
|
||
### **Urządzenia**
|
||
|
||
Proces rozpoczyna się od wydobycia danych **sysDesc MIB** (1.3.6.1.2.1.1.1.0) z każdego pliku, aby zidentyfikować urządzenia. Dokonuje się tego za pomocą polecenia **grep**:
|
||
```bash
|
||
grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
||
```
|
||
### **Zidentyfikuj prywatny ciąg znaków**
|
||
|
||
Kluczowym krokiem jest zidentyfikowanie **prywatnego ciągu znaków społeczności**, używanego przez organizacje, w szczególności na routerach Cisco IOS. Ten ciąg umożliwia wydobycie **konfiguracji działającej** z routerów. Identyfikacja często polega na analizie danych pułapki SNMP pod kątem słowa "trap" za pomocą polecenia **grep**:
|
||
```bash
|
||
grep -i "trap" *.snmp
|
||
```
|
||
### **Nazwy użytkowników/Hasła**
|
||
|
||
Logi przechowywane w tabelach MIB są analizowane 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
|
||
```
|
||
### **Emaile**
|
||
|
||
Wreszcie, aby wydobyć **adresy e-mail** z danych, używane jest polecenie **grep** z wyrażeniem regularnym, skupiając się na wzorcach pasujących 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
|
||
```
|
||
## Modyfikowanie wartości SNMP
|
||
|
||
Możesz użyć _**NetScanTools**_ do **modyfikowania wartości**. Będziesz musiał znać **prywatny ciąg znaków**, aby to zrobić.
|
||
|
||
## Podszycanie się
|
||
|
||
Jeśli istnieje lista ACL, która zezwala tylko niektórym adresom IP na zapytanie usługi SMNP, możesz podszyć się pod jeden z tych adresów wewnątrz pakietu UDP i podsłuchać ruch.
|
||
|
||
## Sprawdzanie plików konfiguracyjnych SNMP
|
||
|
||
* snmp.conf
|
||
* snmpd.conf
|
||
* snmp-config.xml
|
||
|
||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Jeśli interesuje Cię **kariera w dziedzinie hakowania** i hakowanie tego, co nie do złamania - **rekrutujemy!** (_wymagana biegła znajomość języka polskiego w mowie i piśmie_).
|
||
|
||
{% embed url="https://www.stmcyber.com/careers" %}
|
||
|
||
## Automatyczne polecenia 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
|
||
|
||
|
||
```
|
||
<details>
|
||
|
||
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
Inne sposoby wsparcia HackTricks:
|
||
|
||
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
|
||
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
||
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
||
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|