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

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

अगर आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखित और बोली जानी चाहिए).

मूल जानकारी

SNMP - सिम्पल नेटवर्क प्रबंधन प्रोटोकॉल एक प्रोटोकॉल है जिसका उपयोग नेटवर्क में विभिन्न उपकरणों का मॉनिटरिंग करने के लिए किया जाता है (जैसे राउटर, स्विच, प्रिंटर, आईओटी...).

PORT    STATE SERVICE REASON                 VERSION
161/udp open  snmp    udp-response ttl 244   ciscoSystems SNMPv3 server (public)

SNMP भी traps के लिए 162/UDP पोर्ट का उपयोग करता है। ये डेटा पैकेट्स हैं जो SNMP सर्वर से ग्राहक को निर्देशित रूप से अनुरोध किए बिना भेजे जाते हैं

MIB

To ensure that SNMP access works across manufacturers and with different client-server combinations, the Management Information Base (MIB) was created. MIB is an independent format for storing device information. A MIB is a text file in which all queryable SNMP objects of a device are listed in a standardized tree hierarchy. It contains at least one Object Identifier (OID), which, in addition to the necessary unique address and a name, also provides information about the type, access rights, and a description of the respective object MIB files are written in the Abstract Syntax Notation One (ASN.1) based ASCII text format. The MIBs do not contain data, but they explain where to find which information and what it looks like, which returns values for the specific OID, or which data type is used.

OIDs

ऑब्जेक्ट पहचानकर्ता (OIDs) महत्वपूर्ण भूमिका निभाते हैं। ये अद्वितीय पहचानकर्ता प्रबंधन सूचना आधार (MIB) के भीतर ऑब्जेक्ट्स को प्रबंधित करने के लिए डिज़ाइन किए गए हैं।

MIB ऑब्जेक्ट आईडीज़ के सबसे ऊँचे स्तर, या OIDs, विविध मानक-सेटिंग संगठनों को आवंटित किए गए हैं। यहीं पर वैश्विक प्रबंधन अभ्यास और मानकों के लिए ढांचा स्थापित होता है।

इसके अतिरिक्त, विक्रेताओं को निजी शाखाएँ स्थापित करने की स्वतंत्रता प्रदान की जाती है। इन शाखाओं के भीतर, वे अपनी उत्पाद लाइन के महत्वपूर्ण प्रबंधित ऑब्जेक्ट्स शामिल करने की अधिकारी होते हैं। यह प्रणाली सुनिश्चित करती है कि विभिन्न विक्रेताओं और मानकों के बीच विभिन्न ऑब्जेक्ट्स की पहचान और प्रबंधन के लिए एक संरचित और व्यवस्थित विधि है।

आप एक OID वृक्ष से वेब के माध्यम से नेविगेट कर सकते हैं यहाँ से: http://www.oid-info.com/cgi-bin/display?tree=#focus या देख सकते हैं कि एक OID का मतलब क्या है (जैसे 1.3.6.1.2.1.1) तक पहुँचने के लिए http://oid-info.com/get/1.3.6.1.2.1.1। कुछ प्रसिद्ध OIDs हैं जैसे 1.3.6.1.2.1 के भीतर वाले जो MIB-2 परिभाषित सिम्पल नेटवर्क प्रबंधन प्रोटोकॉल (SNMP) चरों को संदर्भित करते हैं। और इससे इसके बाद के OIDs से आप कुछ दिलचस्प होस्ट डेटा (सिस्टम डेटा, नेटवर्क डेटा, प्रक्रिया डेटा...) प्राप्त कर सकते हैं।

OID उदाहरण

यहाँ से उदाहरण देखें:

1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7

इस पते का विश्लेषण यहाँ है।

  • 1 – इसे आईएसओ कहा जाता है और यह स्थापित करता है कि यह एक OID है। इसलिए सभी OID "1" से शुरू होते हैं।

  • 3 – इसे ओआरजी कहा जाता है और यह यह निर्माण करने वाले संगठन को निर्दिष्ट करने के लिए प्रयोग किया जाता है।

  • 6 – यह डीओडी या डिपार्टमेंट ऑफ डिफेंस है जो पहले इंटरनेट की स्थापना करने वाला संगठन है।

  • 1 – यह इंटरनेट का मूल्य है जिससे सभी संचार इंटरनेट के माध्यम से होंगे।

  • 4 – यह मूल्य निर्धारित करता है कि यह उपकरण एक निजी संगठन द्वारा बनाया गया है और सरकारी नहीं।

  • 1 – यह मूल्य यह दर्शाता है कि उपकरण एक उद्यम या व्यापारिक इकाई द्वारा बनाया गया है।

ये पहले छह मान आम तौर पर सभी उपकरणों के लिए समान होते हैं और वे आपको उनके बारे में मूल जानकारी देते हैं। यह संख्याओं का अनुक्रम सभी OID के लिए समान होगा, केवल जब उपकरण सरकार द्वारा बनाया गया हो।

अगले सेट की ओर बढ़ते हैं।

  • 1452 – इस उपकरण का निर्माता संगठन का नाम देता है।

  • 1 – उपकरण के प्रकार की व्याख्या करता है। इस मामले में, यह एक अलार्म घड़ी है।

  • 2 – यह निर्दिष्ट करता है कि यह उपकरण एक रिमोट टर्मिनल इकाई है। शेष मान उपकरण के बारे में विशेष जानकारी देते हैं।

  • 5 - एक विशिष्ट अलार्म प्वाइंट को दर्शाता है।

  • 1 - उपकरण में विशिष्ट प्वाइंट

  • 3 - पोर्ट

  • 21 - पोर्ट का पता

  • 1 - पोर्ट के लिए प्रदर्शन

  • 4 - प्वाइंट नंबर

  • 7 - प्वाइंट की स्थिति

SNMP संस्करण

SNMP के 2 महत्वपूर्ण संस्करण हैं:

  • SNMPv1: मुख्य संस्करण, यह अब भी सबसे अधिक फ्रीक्वेंट है, प्रमाणीकरण एक स्ट्रिंग पर आधारित है (कम्युनिटी स्ट्रिंग) जो सादा-पाठ में यात्रा करता है (सभी जानकारी सादा-पाठ में यात्रा करती है)। संस्करण 2 और 2c भी यात्रा सादा-पाठ में करते हैं और प्रमाणीकरण के रूप में कम्युनिटी स्ट्रिंग का उपयोग करते हैं।

  • SNMPv3: एक बेहतर प्रमाणीकरण रूप का उपयोग करता है और जानकारी एन्क्रिप्टेड में यात्रा करती है (शब्दकोश हमला किया जा सकता है लेकिन SNMPv1 और v2 में सही क्रेडेंशियल्स ढूंढना संभव होने की तुलना में बहुत कठिन होगा)।

कम्युनिटी स्ट्रिंग्स

जैसा पहले उल्लेख किया गया है, MIB पर सहेजी गई जानकारी तक पहुंचने के लिए आपको संस्करण 1 और 2/2c पर कम्युनिटी स्ट्रिंग और संस्करण 3 पर क्रेडेंशियल्स पता होना चाहिए2 प्रकार की कम्युनिटी स्ट्रिंग्स हैं:

  • public मुख्य रूप से केवल पढ़ने वाले कार्य

  • private सामान्य रूप से पढ़ने/लिखने के लिए

ध्यान दें कि एक OID की लिखने की क्षमता कम्युनिटी स्ट्रिंग पर निर्भर करती है, इसलिए यदि आपको लगता है कि "public" का उपयोग हो रहा है, तो आप कुछ मान्यताएँ लिख सकते हैं। इसके अलावा सदैव "केवल पढ़ने वाला" वस्तुएं हो सकती हैं। यदि आप किसी वस्तु को लिखने का प्रयास करते हैं तो noSuchName या readOnly त्रुटि प्राप्त की जाती है**।**

संस्करण 1 और 2/2c में यदि आप बुरा कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर प्रतिक्रिया नहीं देगा। इसलिए, यदि यह प्रतिक्रिया देता है, तो एक मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था

पोर्ट

Wikipedia से:

कम्युनिटी स्ट्रिंग की ब्रूट-फोर्स (v1 और v2c)

कम्युनिटी स्ट्रिंग को अनुमान लगाने के लिए आप एक शब्दकोश हमला कर सकते हैं। यहाँ SNMP के खिलाफ ब्रूट-फोर्स हमला करने के विभिन्न तरीके की जांच करें। एक बार उपयोग की जाने वाली कम्युनिटी स्ट्रिंग public है।

SNMP का जिञासा

यह सुनिश्चित करने के लिए निम्नलिखित को स्थापित करना सुझावित है कि उपकरण से एक OID जुटाई गई प्रत्येक अर्थ क्या है देखने के लिए:

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

यदि आपके पास एक मान्य समुदाय स्ट्रिंग है, तो आप SNMPWalk या 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

विस्तृत क्वेरीज (डाउनलोड-एमआईबीएस) के धन्यवाद, निम्नलिखित कमांड के साथ सिस्टम के बारे में और अधिक जानकारी को जांचना संभव है:

snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull

SNMP में मेज़बान के बारे में बहुत सारी जानकारी होती है और आपको दिलचस्प लगने वाली चीजें हो सकती हैं: नेटवर्क इंटरफेसेस (IPv4 और IPv6 पता), उपयोगकर्ता नाम, अपटाइम, सर्वर/ओएस संस्करण, और प्रक्रियाएँ (जिनमें पासवर्ड हो सकता है)।

खतरनाक सेटिंग्स

नेटवर्क प्रबंधन के क्षेत्र में, कुछ विशेष समाकृतियाँ और पैरामीटर सम्पूर्ण मॉनिटरिंग और नियंत्रण सुनिश्चित करने के लिए महत्वपूर्ण हैं।

एक्सेस सेटिंग्स

नेटवर्क प्रबंधन में महत्वपूर्ण एक्सेस की दो मुख्य सेटिंग्स हैं जो पूरे OID ट्री तक पहुंचने की सुनिश्चित करती हैं, जो नेटवर्क प्रबंधन के एक महत्वपूर्ण घटक हैं:

  1. rwuser noauth OID ट्री तक पूरी पहुंच की अनुमति देने के लिए सेट किया गया है बिना प्रमाणीकरण की आवश्यकता के। यह सेटिंग सीधी है और प्रतिबंधित पहुंच की अनुमति देती है।

  2. अधिक विशिष्ट नियंत्रण के लिए, एक्सेस की अनुमति दी जा सकती है इस्तेमाल करके:

  • rwcommunity IPv4 पतों के लिए, और

  • rwcommunity6 IPv6 पतों के लिए।

दोनों कमांड्स कोई समुदाय स्ट्रिंग और संबंधित आईपी पता मांगते हैं, अनुरोध के मूल्य के अपेक्षाहीन पूरी पहुंच प्रदान करते हैं।

माइक्रोसॉफ्ट विंडोज के लिए SNMP पैरामीटर

विंडोज सिस्टम के विभिन्न पहलुओं को SNMP के माध्यम से मॉनिटर करने के लिए एक श्रृंखला के मैनेजमेंट इनफॉर्मेशन बेस (MIB) मान का उपयोग किया जाता है:

  • सिस्टम प्रक्रियाएँ: 1.3.6.1.2.1.25.1.6.0 के माध्यम से पहुंचा जाता है, यह पैरामीटर सिस्टम में सक्रिय प्रक्रियाओं का मॉनिटरिंग करने की अनुमति देता है।

  • चल रहे कार्यक्रम: 1.3.6.1.2.1.25.4.2.1.2 मान वर्तमान में चल रहे कार्यक्रमों को ट्रैक करने के लिए निर्धारित किया गया है।

  • प्रक्रियाएँ पथ: प्रक्रिया कहाँ से चल रही है यह निर्धारित करने के लिए 1.3.6.1.2.1.25.4.2.1.4 MIB मान का उपयोग किया जाता है।

  • स्टोरेज इकाइयाँ: स्टोरेज इकाइयों का मॉनिटरिंग 1.3.6.1.2.1.25.2.3.1.4 के माध्यम से सुविधाजनक है।

  • सॉफ़्टवेयर नाम: सिस्टम पर स्थापित सॉफ़्टवेयर की पहचान करने के लिए 1.3.6.1.2.1.25.6.3.1.2 का उपयोग किया जाता है।

  • उपयोगकर्ता खाते: 1.3.6.1.4.1.77.1.2.25 मान उपयोगकर्ता खातों का ट्रैकिंग करने की अनुमति देता है।

  • TCP स्थानीय पोर्ट्स: अंत में, 1.3.6.1.2.1.6.13.1.3 वर्तमान TCP स्थानीय पोर्ट्स का मॉनिटरिंग करने के लिए निर्धारित किया गया है, जो सक्रिय नेटवर्क कनेक्शन्स में अंदरूनी दृष्टिकोण प्रदान करता है।

सिस्को

यदि आप सिस्को उपकरण हैं तो इस पृष्ठ पर एक नज़र डालें:

pageCisco SNMP

SNMP से RCE तक

यदि आपके पास वह स्ट्रिंग है जो आपको SNMP सेवा के अंदर मान्यांकन करने की अनुमति देता है, तो आप इसका दुरुपयोग करके कमांड निष्पादित करने की संभावना है:

pageSNMP RCE

विशाल SNMP

Braa एक विशाल SNMP स्कैनर है। इस तरह के उपकरण का उद्देश्य स्वाभाविक रूप से SNMP क्वेरी करना है - लेकिन net-snmp से snmpwalk की तरह, यह दर्जनों या सैकड़ों होस्टों पर एक साथ क्वेरी करने में सक्षम है, और एक ही प्रक्रिया में। इसलिए, यह बहुत कम सिस्टम संसाधन खपाता है और बहुत तेजी से स्कैनिंग करता है।

Braa अपना खुद का snmp स्टैक लागू करता है, इसलिए इसे net-snmp जैसी किसी भी SNMP पुस्तकालय की आवश्यकता नहीं है।

सिंटैक्स: braa [कम्युनिटी स्ट्रिंग]@[SNMP सर्वर का आईपी]:[आईएसओ आईडी]

braa ignite123@192.168.1.125:.1.3.6.*

उपकरण

प्रक्रिया sysDesc MIB डेटा (1.3.6.1.2.1.1.1.0) की निकालने से शुरू होती है, जिससे उपकरणों की पहचान होती है। यह grep कमांड का उपयोग करके पूरा किया जाता है:

grep ".1.3.6.1.2.1.1.1.0" *.snmp

निजी स्ट्रिंग की पहचान करें

एक महत्वपूर्ण कदम में शामिल है निजी समुदाय स्ट्रिंग की पहचान करना जो संगठनों द्वारा उपयोग की जाती है, खासकर सिस्को IOS राउटर्स पर। यह स्ट्रिंग राउटर से चल रही विन्यास को निकालने की संभावना प्रदान करती है। पहचान अक्सर "trap" शब्द के लिए SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें grep कमांड का उपयोग किया जाता है:

grep -i "trap" *.snmp

उपयोगकर्ता नाम/पासवर्ड

MIB तालिकाओं में संग्रहीत लॉगों की जांच की जाती है विफल लॉगऑन प्रयासों के लिए, जिसमें गलती से पासवर्ड उपयोगकर्ता नाम के रूप में दर्ज किए जा सकते हैं। fail, failed, या login जैसे कीवर्ड्स की खोज की जाती है मूल्यवान डेटा ढूंढने के लिए:

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

ईमेल

अंत में, डेटा से ईमेल पते निकालने के लिए, एक नियमित अभिव्यक्ति के साथ ग्रेप कमांड का उपयोग किया जाता है, जो ईमेल प्रारूपों से मेल खाते हैं:

grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp

स्नीपिंग मानों को संशोधित करना

आप NetScanTools का उपयोग मानों को संशोधित करने के लिए कर सकते हैं। इसे करने के लिए आपको निजी स्ट्रिंग का पता होना चाहिए।

स्पूफिंग

यदि किसी ACL है जो केवल कुछ IPs को SMNP सेवा क्वेरी करने की अनुमति देता है, तो आप इसमें से एक पता डाल सकते हैं और यूडीपी पैकेट के अंदर ट्रैफिक को स्निफ कर सकते हैं।

SNMP कॉन्फ़िगरेशन फ़ाइलें जांचें

  • snmp.conf

  • snmpd.conf

  • snmp-config.xml

यदि आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (चुस्त पोलिश लिखने और बोलने की आवश्यकता है).

हैकट्रिक्स स्वचालित कमांड्स

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

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए:

Last updated