161,162,10161,10162/udp - Pentesting SNMP
Reading time: 13 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Basic Information
SNMP - Simple Network Management Protocol एक प्रोटोकॉल है जिसका उपयोग नेटवर्क में विभिन्न उपकरणों (जैसे राउटर, स्विच, प्रिंटर, IoTs...) की निगरानी के लिए किया जाता है।
PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
note
SNMP भी 162/UDP पोर्ट का उपयोग ट्रैप्स के लिए करता है। ये डेटा पैकेट्स हैं जो SNMP सर्वर से क्लाइंट को बिना स्पष्ट अनुरोध के भेजे जाते हैं।
MIB
यह सुनिश्चित करने के लिए कि SNMP एक्सेस विभिन्न निर्माताओं और विभिन्न क्लाइंट-सर्वर संयोजनों के बीच काम करता है, मैनेजमेंट इंफॉर्मेशन बेस (MIB) बनाया गया था। MIB एक स्वतंत्र प्रारूप है जो डिवाइस की जानकारी को संग्रहीत करने के लिए है। एक MIB एक पाठ फ़ाइल है जिसमें एक डिवाइस के सभी क्वेरी करने योग्य SNMP ऑब्जेक्ट्स को एक मानकीकृत पेड़ संरचना में सूचीबद्ध किया गया है। इसमें कम से कम एक ऑब्जेक्ट आइडेंटिफायर
(OID
) होता है, जो आवश्यक विशिष्ट पते और एक नाम के अलावा, संबंधित ऑब्जेक्ट के प्रकार, पहुंच अधिकारों और विवरण के बारे में जानकारी भी प्रदान करता है।
MIB फ़ाइलें एब्स्ट्रैक्ट सिंटैक्स नोटेशन वन
(ASN.1
) आधारित ASCII पाठ प्रारूप में लिखी जाती हैं। MIBs में डेटा नहीं होता, लेकिन वे बताते हैं कहाँ कौन सी जानकारी मिलेगी और वह कैसी दिखती है, जो विशेष OID के लिए मान लौटाती है, या कौन सा डेटा प्रकार उपयोग किया जाता है।
OIDs
ऑब्जेक्ट आइडेंटिफायर (OIDs) एक महत्वपूर्ण भूमिका निभाते हैं। ये अद्वितीय पहचानकर्ता मैनेजमेंट इंफॉर्मेशन बेस (MIB) के भीतर ऑब्जेक्ट्स को प्रबंधित करने के लिए डिज़ाइन किए गए हैं।
MIB ऑब्जेक्ट IDs, या 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 – इसे ISO कहा जाता है और यह स्थापित करता है कि यह एक OID है। यही कारण है कि सभी OIDs "1" से शुरू होते हैं।
- 3 – इसे ORG कहा जाता है और इसका उपयोग उस संगठन को निर्दिष्ट करने के लिए किया जाता है जिसने डिवाइस बनाया।
- 6 – यह dod या रक्षा विभाग है जो पहला इंटरनेट स्थापित करने वाला संगठन है।
- 1 – यह इंटरनेट का मान है जो यह दर्शाता है कि सभी संचार इंटरनेट के माध्यम से होगा।
- 4 – यह मान निर्धारित करता है कि यह डिवाइस एक निजी संगठन द्वारा बनाया गया है और न कि सरकारी।
- 1 – यह मान दर्शाता है कि डिवाइस एक उद्यम या व्यवसाय इकाई द्वारा बनाया गया है।
ये पहले छह मान सभी डिवाइसों के लिए समान होते हैं और ये आपको उनके बारे में मूल जानकारी देते हैं। ये संख्याओं का अनुक्रम सभी OIDs के लिए समान होगा, सिवाय इसके कि डिवाइस सरकारी द्वारा बनाया गया हो।
अगले संख्याओं के सेट पर चलते हैं।
- 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 में यदि आप खराब कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर प्रतिक्रिया नहीं देगा। इसलिए, यदि यह प्रतिक्रिया करता है, तो एक मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था।
पोर्ट्स
- SNMP एजेंट UDP पोर्ट 161 पर अनुरोध प्राप्त करता है।
- प्रबंधक पोर्ट 162 पर सूचनाएँ प्राप्त करता है (ट्रैप्स और InformRequests)।
- जब ट्रांसपोर्ट लेयर सुरक्षा या डेटाग्राम ट्रांसपोर्ट लेयर सुरक्षा के साथ उपयोग किया जाता है, तो अनुरोध पोर्ट 10161 पर प्राप्त होते हैं और सूचनाएँ पोर्ट 10162 पर भेजी जाती हैं।
ब्रूट-फोर्स कम्युनिटी स्ट्रिंग (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
विस्तारित क्वेरीज़ (download-mibs) के लिए धन्यवाद, निम्नलिखित कमांड के साथ सिस्टम के बारे में और अधिक जानकारी प्राप्त करना संभव है:
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
SNMP में होस्ट के बारे में बहुत सारी जानकारी होती है और जो चीजें आपको दिलचस्प लग सकती हैं वे हैं: नेटवर्क इंटरफेस (IPv4 और IPv6 पता), उपयोगकर्ता नाम, अपटाइम, सर्वर/OS संस्करण, और प्रक्रियाएँ
चल रही (शायद पासवर्ड शामिल हो)...
खतरनाक सेटिंग्स
नेटवर्क प्रबंधन के क्षेत्र में, कुछ कॉन्फ़िगरेशन और पैरामीटर व्यापक निगरानी और नियंत्रण सुनिश्चित करने के लिए कुंजी हैं।
एक्सेस सेटिंग्स
दो मुख्य सेटिंग्स पूर्ण OID पेड़ तक पहुंच सक्षम करती हैं, जो नेटवर्क प्रबंधन में एक महत्वपूर्ण घटक है:
rwuser noauth
को OID पेड़ तक पूर्ण पहुंच की अनुमति देने के लिए सेट किया गया है बिना प्रमाणीकरण की आवश्यकता के। यह सेटिंग सीधी है और बिना किसी प्रतिबंध के पहुंच की अनुमति देती है।- अधिक विशिष्ट नियंत्रण के लिए, पहुंच प्रदान की जा सकती है:
rwcommunity
के लिए IPv4 पते, औरrwcommunity6
के लिए IPv6 पते।
दोनों कमांड एक कम्युनिटी स्ट्रिंग और संबंधित IP पते की आवश्यकता होती है, जो अनुरोध के स्रोत की परवाह किए बिना पूर्ण पहुंच प्रदान करती है।
Microsoft Windows के लिए SNMP पैरामीटर
Windows सिस्टम के विभिन्न पहलुओं की निगरानी के लिए एक श्रृंखला प्रबंधन सूचना आधार (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 स्थानीय पोर्ट की निगरानी के लिए निर्धारित किया गया है, जो सक्रिय नेटवर्क कनेक्शनों की जानकारी प्रदान करता है।
Cisco
यदि आप Cisco उपकरण हैं तो इस पृष्ठ पर एक नज़र डालें:
SNMP से RCE तक
यदि आपके पास स्ट्रिंग है जो आपको SNMP सेवा के भीतर मान लिखने की अनुमति देती है, तो आप इसका दुरुपयोग करके कमांड निष्पादित कर सकते हैं:
मासिव SNMP
Braa एक मास SNMP स्कैनर है। इस तरह के उपकरण का इरादा, निश्चित रूप से, SNMP प्रश्न करना है - लेकिन net-snmp से snmpwalk के विपरीत, यह एक ही प्रक्रिया में दर्जनों या सैकड़ों होस्ट को एक साथ प्रश्न करने में सक्षम है। इस प्रकार, यह बहुत कम सिस्टम संसाधनों का उपभोग करता है और स्कैनिंग बहुत तेज़ करता है।
Braa अपना खुद का SNMP स्टैक लागू करता है, इसलिए इसे net-snmp जैसी किसी भी SNMP लाइब्रेरी की आवश्यकता नहीं होती है।
सिंटैक्स: braa [Community-string]@[IP of SNMP server]:[iso id]
braa ignite123@192.168.1.125:.1.3.6.*
यह बहुत सारा MB जानकारी निकाल सकता है जिसे आप मैन्युअल रूप से प्रोसेस नहीं कर सकते।
तो, चलिए सबसे दिलचस्प जानकारी की तलाश करते हैं (from https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/):
उपकरण
यह प्रक्रिया प्रत्येक फ़ाइल से sysDesc MIB डेटा (1.3.6.1.2.1.1.1.0) को निकालने के साथ शुरू होती है ताकि उपकरणों की पहचान की जा सके। यह एक grep कमांड के उपयोग के माध्यम से पूरा किया जाता है:
grep ".1.3.6.1.2.1.1.1.0" *.snmp
निजी स्ट्रिंग की पहचान करें
एक महत्वपूर्ण कदम निजी समुदाय स्ट्रिंग की पहचान करना है जो संगठनों द्वारा उपयोग की जाती है, विशेष रूप से Cisco IOS राउटर्स पर। यह स्ट्रिंग राउटर्स से चल रही कॉन्फ़िगरेशन को निकालने की अनुमति देती है। पहचान अक्सर SNMP ट्रैप डेटा का विश्लेषण करने पर निर्भर करती है जिसमें "trap" शब्द होता है, grep कमांड के साथ:
grep -i "trap" *.snmp
यूजरनेम/पासवर्ड
MIB तालिकाओं में संग्रहीत लॉग को असफल लॉगिन प्रयासों के लिए जांचा जाता है, जिसमें गलती से यूजरनेम के रूप में दर्ज किए गए पासवर्ड शामिल हो सकते हैं। मूल्यवान डेटा खोजने के लिए fail, failed, या login जैसे कीवर्ड खोजे जाते हैं:
grep -i "login\|fail" *.snmp
ईमेल
अंत में, डेटा से ईमेल पते निकालने के लिए, एक grep कमांड का उपयोग किया जाता है जिसमें एक नियमित अभिव्यक्ति होती है, जो ईमेल प्रारूपों से मेल खाने वाले पैटर्न पर ध्यान केंद्रित करती है:
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
SNMP मानों को संशोधित करना
आप NetScanTools का उपयोग करके मानों को संशोधित कर सकते हैं। ऐसा करने के लिए आपको निजी स्ट्रिंग जानने की आवश्यकता होगी।
स्पूफिंग
यदि कोई ACL है जो केवल कुछ IPs को SMNP सेवा को क्वेरी करने की अनुमति देती है, तो आप UDP पैकेट के अंदर इनमें से किसी एक पते को स्पूफ कर सकते हैं और ट्रैफ़िक को स्निफ कर सकते हैं।
SNMP कॉन्फ़िगरेशन फ़ाइलों की जांच करें
- snmp.conf
- snmpd.conf
- snmp-config.xml
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.wiki/en/network-services-pentesting/pentesting-smtp/index.html
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
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।