.. | ||
cisco-snmp.md | ||
README.md | ||
snmp-rce.md |
161,162,10161,10162/udp - Pentesting SNMP
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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).
{% embed url="https://www.stmcyber.com/careers" %}
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)
{% hint style="info" %} 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. {% endhint %}
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
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 odczytuprivate
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
- Agent SNMP odbiera żądania na porcie UDP 161.
- Menedżer odbiera powiadomienia (Pułapki i InformRequests) na porcie 162.
- Gdy używane jest z Transport Layer Security lub Datagram Transport Layer Security, żądania są odbierane na porcie 10161, a powiadomienia są wysyłane na port 10162.
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ą:
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.- Dla bardziej szczegółowej kontroli, dostęp można przyznać za pomocą:
rwcommunity
dla adresów IPv4, orazrwcommunity6
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:
{% content-ref url="cisco-snmp.md" %} cisco-snmp.md {% endcontent-ref %}
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:
{% content-ref url="snmp-rce.md" %} snmp-rce.md {% endcontent-ref %}
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).
{% 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
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.