hacktricks/network-services-pentesting/pentesting-snmp
2024-02-11 01:46:25 +00:00
..
cisco-snmp.md Translated to Polish 2024-02-11 01:46:25 +00:00
README.md Translated to Polish 2024-02-11 01:46:25 +00:00
snmp-rce.md Translated to Polish 2024-02-11 01:46:25 +00:00

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

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:


Wskazówka dotycząca bug bounty: zarejestruj się na platformie Intigriti, premium platformie bug bounty stworzonej przez hakerów, dla hakerów! Dołącz do nas na https://go.intigriti.com/hacktricks już dziś i zacznij zarabiać nagrody do 100 000 USD!

{% embed url="https://go.intigriti.com/hacktricks" %}

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 dane pakietów wysyłanych z serwera SNMP do klienta bez wyraźnego żądania. {% endhint %}

MIB

Aby zapewnić, że dostęp SNMP działa w różnych kombinacjach producentów i klientów-serwerów, utworzono Management Information Base (MIB). MIB to niezależny format przechowywania informacji o urządzeniu. MIB to plik tekstowy, w którym wszystkie zapytywalne obiekty SNMP urządzenia są wymienione w standaryzowanej hierarchii drzewa. Zawiera co najmniej jeden Object Identifier (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ą pisane w opartym na tekście ASCII formacie Abstract Syntax Notation One (ASN.1). MIBy nie zawierają danych, ale wyjaśniają gdzie znaleźć jakie informacje i jak to wygląda, zwracając wartości dla określonego OID lub jakiego typu danych używane są.

OIDs

Object Identifiers (OIDs) odgrywają kluczową rolę. Te unikalne identyfikatory są przeznaczone do zarządzania obiektami w Management Information Base (MIB).

Najwyższe poziomy identyfikatorów obiektów MIB, czyli OIDs, są przydzielane różnym organizacjom ustalającym standardy. To na tych najwyższych poziomach ustalane są ramy dla globalnych praktyk zarządzania i standardów.

Ponadto, producentom przyznaje się swobodę tworzenia prywatnych gałęzi. W ramach tych gałęzi mają autonomię do uwzględniania zarządzanych obiektów związanych z ich własnymi liniami produktów. Ten system zapewnia strukturalną i zorganizowaną metodę identyfikacji i zarządzania różnymi obiektami w różnych producentach i standardach.

Możesz nawigować przez drzewo OID tutaj: http://www.oid-info.com/cgi-bin/display?tree=#focus lub zobaczyć, co oznacza OID (jak 1.3.6.1.2.1.1) przechodząc do http://oid-info.com/get/1.3.6.1.2.1.1.
Istnieją pewne znane OIDs, takie jak te wewnątrz 1.3.6.1.2.1, które odnoszą się do zmiennych protokołu SNMP zdefiniowanych w MIB-2. A z OIDów zależnych od tego można uzyskać pewne interesujące dane hosta (dane systemowe, dane sieciowe, dane procesów...)

Przykład OID

Przykład stąd:

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

Oto rozbicie tego adresu.

  • 1 - to jest nazywane ISO i ustala, że jest to OID. Dlatego wszystkie OIDs zaczynają się od "1"
  • 3 - to jest nazywane ORG i służy do określenia organizacji, która zbudowała urządzenie.
  • 6 - to jest dod lub Department of Defense, czyli organizacja, która jako pierwsza ustanowiła Internet.
  • 1 - to jest 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 prywatną organizację, 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ą zwykle takie same dla wszystkich urządzeń i dają podstawowe informacje o nich. Ta sekwencja liczb będzie taka sama dla wszystkich OIDs, z wyjątkiem urządzeń produkowanych przez rząd.

Przechodząc do następnego zestawu liczb.

  • 1452 - podaje nazwę organizacji, która wyprodukowała to urządzenie.
  • 1 - wyjaśnia rodzaj urządzenia. W tym przypadku jest to budzik.
  • 2 - określa, że to urządzenie jest zdalną jednostką terminalową.

Reszta wartości podaje 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 wersja, nadal najczęstsza, uwierzytelnianie oparte jest na ciągu znaków (community string), który przesyła się w tekście jawnym (wszystkie informacje przesyłane są w tekście jawnym). Wersje 2 i 2c również przesyłają ruch w tekście jawnym i używają ciągu znaków community jako uwierzytelnienia.
  • SNMPv3: Używa lepszej formy uwierzytelniania, a informacje przesyłane są szyfrowane (atak słownikowy może być przeprowadzony, ale znalezienie poprawnych poświadczeń byłoby trudniejsze niż w SNMPv1 i v2).

Ciągi community

Jak już wspomniano, aby uzyskać dostęp do informacji zapisanych w MIB, musisz znać ciąg community w wersjach 1 i 2/2c oraz poświadczenia w wersji 3.
Istnieją 2 rodzaje ciągów community:

  • public głównie funkcje tylko do odczytu
  • private Odczyt/Zapis ogólnie

Należy zauważyć, że możliwość zapisu OID zależy od użytego ciągu community, więc nawet jeśli okaże się, że używane jest "publiczne", możesz mieć możliwość zapisu niektórych 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 community, serwer nie odpowie. Więc jeśli otrzymasz odpowiedź, użyto poprawnego ciągu community.

Porty

Z Wikipedii:

Brute-Force ciągu community (v1 i v2c)

Aby odgadnąć ciąg community, można przeprowadzić atak słownikowy. Sprawdź tutaj różne sposoby przeprowadzania ataku brute-force na SNMP. Często używanym ciągiem community jest public.

Wyliczanie SNMP

Zaleca się zainstalowanie następujących narzędzi, aby zobaczyć, co oznacza każdy zebrany OID z urządzenia:

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 prawidłowy ciąg społeczności, możesz uzyskać dostęp do danych za pomocą SNMPWalk lub 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

Dzięki rozszerzonym zapytaniom (download-mibs) można jeszcze bardziej wyliczać informacje o systemie za pomocą następującej komendy:

snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull

SNMP zawiera wiele informacji o hoście, a interesujące mogą być: interfejsy sieciowe (adresy IPv4 i IPv6), nazwy użytkowników, czas pracy, wersja serwera/OS oraz procesy

uruchomione (mogą zawierać hasła)....

Niebezpieczne ustawienia

W dziedzinie zarządzania siecią istnieje kilka konfiguracji i parametrów, które są kluczowe dla zapewnienia wszechstronnego monitorowania i kontroli.

Ustawienia dostępu

Dwa główne ustawienia umożliwiają dostęp do pełnego drzewa OID, które jest kluczowym elementem w zarządzaniu siecią:

  1. rwuser noauth jest ustawione, aby umożliwić pełny dostęp do drzewa OID bez konieczności uwierzytelniania. To ustawienie jest proste i pozwala na nieograniczony dostęp.

  2. Dla bardziej szczegółowej kontroli dostępu można przyznać dostęp 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

Do monitorowania różnych aspektów systemu Windows za pomocą SNMP wykorzystuje się serię wartości Management Information Base (MIB):

  • Procesy systemowe: Dostępne za pomocą 1.3.6.1.2.1.25.1.6.0, ten parametr umożliwia 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 jakiego miejsca 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 jest ułatwione dzięki 1.3.6.1.2.1.25.2.3.1.4.
  • Nazwa oprogramowania: Aby zidentyfikować zainstalowane oprogramowanie na systemie, używa 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 umożliwia śledzenie kont użytkowników.
  • Lokalne porty TCP: Na koniec, 1.3.6.1.2.1.6.13.1.3 jest przeznaczony do monitorowania lokalnych portów TCP, co pozwala uzyskać informacje o aktywnych połączeniach sieciowych.

Cisco

Jeśli korzystasz z urządzeń Cisco, zajrzyj na tę stronę:

{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}

Od SNMP do RCE

Jeśli masz ciąg, który umożliwia zapisywanie wartości w usłudze SNMP, możesz go wykorzystać do wykonywania poleceń:

{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}

Masywne SNMP

Braa to masowy skaner SNMP. Przeznaczeniem tego narzędzia jest oczywiście wykonywanie zapytań SNMP - ale w przeciwieństwie do snmpwalk z net-snmp, jest ono 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 WŁASNY stos SNMP, więc nie potrzebuje żadnych bibliotek SNMP, takich jak net-snmp.

Składnia: braa [Ciąg społecznościowy]@[Adres IP serwera SNMP]:[iso id]

braa ignite123@192.168.1.125:.1.3.6.*

To może wydobyć dużo MB informacji, które nie da się przetworzyć ręcznie.

Więc, szukajmy najbardziej interesujących informacji (z 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:

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ściowego, używanego przez organizacje, zwłaszcza na routerach Cisco IOS. Ten ciąg znaków umożliwia wydobycie konfiguracji działającej z routerów. Identyfikacja często polega na analizie danych SNMP Trap w poszukiwaniu słowa "trap" za pomocą polecenia grep:

grep -i "trap" *.snmp

Nazwy użytkowników/Hasła

Rejestry przechowywane w tabelach MIB są analizowane pod kątem nieudanych prób logowania, które przypadkowo mogą 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:

grep -i "login\|fail" *.snmp

Emaile

W końcu, aby wyodrębnić adresy e-mail z danych, używane jest polecenie grep z wyrażeniem regularnym, skupiające się na wzorcach pasujących do formatów adresów e-mail:

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ć.

Spoofing

Jeśli istnieje lista kontrolna dostępu (ACL), która pozwala tylko niektórym adresom IP na zapytanie usługi SNMP, możesz podszyć się pod jeden z tych adresów wewnątrz pakietu UDP i podsłuchać ruch.

Badanie plików konfiguracyjnych SNMP

  • snmp.conf
  • snmpd.conf
  • snmp-config.xml

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


Wskazówka dotycząca bug bounty: Zarejestruj się na platformie Intigriti, premium platformie bug bounty stworzonej przez hakerów dla hakerów! Dołącz do nas już dziś na https://go.intigriti.com/hacktricks i zacznij zarabiać nagrody do 100 000 USD!

{% embed url="https://go.intigriti.com/hacktricks" %}

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: