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

Support HackTricks

If you are interested in karierze w hackingu and hack the unhackable - rekrutujemy! (wymagana biegła znajomość języka polskiego w mowie i piśmie).

Podstawowe informacje

SNMP - Protokół prostego zarządzania siecią 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)

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.

MIB

Aby zapewnić, że dostęp do SNMP działa w różnych producentów 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).

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.

Ponadto, dostawcy mają swobodę ustanawiania prywatnych gałęzi. W ramach tych gałęzi mają autonomię do włączania zarządzanych obiektów związanych z 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.

Możesz nawigować przez drzewo OID w sieci tutaj: 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. Istnieją znane OIDs jak te w 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...)

Przykład OID

Przykład stąd:

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 to jest 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.

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

  • 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ęś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 używany jest „public”, 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.

Porty

Z Wikipedii:

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

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 ważny 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żliwe jest uzyskanie jeszcze więcej informacji o systemie za pomocą następującego polecenia:

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

Niebezpieczne ustawienia

W dziedzinie zarządzania siecią, niektóre 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, które jest kluczowym elementem w zarządzaniu siecią:

  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.

Oba polecenia wymagają ciągu społeczności oraz odpowiedniego adresu IP, oferując pełny dostęp niezależnie od pochodzenia żądania.

Parametry SNMP dla Microsoft Windows

Seria wartości MIB (Management Information Base) 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 umożliwia 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 umożliwia ś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.

Cisco

Zobacz tę stronę, jeśli masz sprzęt Cisco:

Cisco SNMP

Od SNMP do RCE

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:

SNMP RCE

Masowe SNMP

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 zapytywać dziesiątki lub setki hostów jednocześnie, w jednym procesie. Dzięki temu 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ści]@[IP serwera SNMP]:[id iso]

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

Urządzenia

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:

grep ".1.3.6.1.2.1.1.1.0" *.snmp

Zidentyfikuj Prywatny String

A crucial step involves identifying the private community string used by organizations, particularly on Cisco IOS routers. This string enables the extraction of running configurations from routers. The identification often relies on analyzing SNMP Trap data for the word "trap" with a grep command:

grep -i "trap" *.snmp

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:

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

Emaile

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:

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, aby zmodyfikować wartości. Musisz 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

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

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

Wsparcie HackTricks

Last updated