.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
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:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź SUBSCRIPTION PLANS!
- Zdobądź 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.
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
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 odczytuprivate
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
- Agent SNMP odbiera żądania na porcie UDP 161.
- Manager odbiera powiadomienia (Pułapki i InformRequests) na porcie 162.
- Gdy używane jest Transport Layer Security lub Datagram Transport Layer Security, żądania są odbierane na porcie 10161, a powiadomienia są wysyłane na port 10162.
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ą:
-
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. -
Dla bardziej szczegółowej kontroli dostępu można przyznać dostęp 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
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:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź SUBSCRIPTION PLANS!
- Zdobądź 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 trikami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.