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

18 KiB
Raw Blame History

161,162,10161,10162/udp - Testowanie penetracyjne SNMP

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Jeśli interesuje Cię kariera w dziedzinie hakowania i hakowanie niemożliwych do zhakowania - 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 Abstrakcyjnej Notacji Składni Jedynki (ASN.1). MIB nie zawierają danych, ale wyjaśniają gdzie znaleźć jakie informacje i jak one wyglądają, zwracając wartości dla konkretnego OID, lub jaki typ danych jest używany.

OIDs

Identyfikatory Obiektów (OIDs) 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 ustanawiającym standardy. To właśnie na tych najwyższych poziomach ustanawiany jest szkielet globalnych praktyk zarządzania i standardów.

Ponadto, producentom 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 producentów i standardów.

Możesz przejrzeć drzewo OID z poziomu sieci tutaj: 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. Istnieją znane OIDs takie jak te wewnątrz 1.3.6.1.2.1, które odnoszą się do zdefiniowanych zmiennych protokołu SNMP (Simple Network Management Protocol) w MIB-2. Z OIDs zależnych od tego można uzyskać interesujące dane hosta (dane systemowe, sieciowe, procesy...)

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 oznacza, że jest to OID. Dlatego wszystkie OIDy 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 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 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, 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 opiera się 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 znaków społeczności jako uwierzytelnienie.
  • 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 odpowiada, został użyty prawidłowy ciąg społeczności.

Porty

Z Wikipedii:

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

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:

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ą poniższej komendy:

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.
  • Porty lokalne 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 {% 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 {% endcontent-ref %}

Masywny SNMP

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]:[identyfikator iso]

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/):

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ś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:

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:

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:

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

Podszycie

Jeśli istnieje lista ACL, która zezwala tylko na zapytania od niektórych adresów IP do 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

Jeśli interesuje Cię kariera hakera i hakerski nie do złamania - rekrutujemy! (biegła znajomość języka polskiego w mowie i piśmie wymagana).

{% 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


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

Inne sposoby wsparcia HackTricks: