17 KiB
161,162,10161,10162/udp - Testowanie penetracyjne SNMP
Zacznij od zera i zostań ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCYJNY!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
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.
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 w MIB-2. Z OIDów zależnych od tego można uzyskać interesujące dane hosta (dane systemowe, sieciowe, procesy...)
Przykład OID
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 odczytuprivate
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
- Agent SNMP odbiera żądania na porcie UDP 161.
- Menedżer odbiera powiadomienia (Pułapki i InformRequests) na porcie 162.
- Gdy używane jest Warstwa Bezpieczeństwa Transportu lub Datagramowa Warstwa Bezpieczeństwa Transportu, żą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. 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ą następującej 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ą:
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.- Dla bardziej szczegółowej kontroli dostęp może być udzielony za pomocą:
rwcommunity
dla adresów IPv4, orazrwcommunity6
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 {% 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]:[iso id]
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ć.
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
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
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud github repos.