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 का समर्थन करें

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 में यदि आप खराब कम्युनिटी स्ट्रिंग का उपयोग करते हैं तो सर्वर प्रतिक्रिया नहीं देगा। इसलिए, यदि यह प्रतिक्रिया करता है, तो एक मान्य कम्युनिटी स्ट्रिंग का उपयोग किया गया था

पोर्ट्स

विकिपीडिया से:

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

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

SNMP की गणना करना

यह अनुशंसा की जाती है कि आप निम्नलिखित स्थापित करें ताकि आप देख सकें कि डिवाइस से एकत्रित प्रत्येक OID का क्या मतलब है:

bash
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 का उपयोग करके डेटा तक पहुँच सकते हैं:

bash
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) के लिए धन्यवाद, निम्नलिखित कमांड के साथ सिस्टम के बारे में और अधिक जानकारी प्राप्त करना संभव है:

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

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

चल रही (शायद पासवर्ड शामिल हो)...

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

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

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

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

  1. rwuser noauth को OID पेड़ तक पूर्ण पहुंच की अनुमति देने के लिए सेट किया गया है बिना प्रमाणीकरण की आवश्यकता के। यह सेटिंग सीधी है और बिना किसी प्रतिबंध के पहुंच की अनुमति देती है।
  2. अधिक विशिष्ट नियंत्रण के लिए, पहुंच प्रदान की जा सकती है:
  • 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 उपकरण हैं तो इस पृष्ठ पर एक नज़र डालें:

Cisco SNMP

SNMP से RCE तक

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

SNMP RCE

मासिव SNMP

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

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

सिंटैक्स: braa [Community-string]@[IP of SNMP server]:[iso id]

bash
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 कमांड के उपयोग के माध्यम से पूरा किया जाता है:

bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp

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

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

bash
grep -i "trap" *.snmp

यूजरनेम/पासवर्ड

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

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

ईमेल

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

bash
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 का समर्थन करें