
एनम4लिनक्स (एक विंडोज/सांबा एन्यूमरेशन टूल) का एक अगली पीढ़ी का संस्करण जिसमें JSON/YAML निर्यात जैसी अतिरिक्त सुविधाएँ हैं। सुरक्षा पेशेवरों और CTF खिलाड़ियों के लिए लक्षित।
enum4linux का अगली पीढ़ी का संस्करण
enum4linux-ng.py, Mark Lowe (पूर्व Portcullis Labs, अब Cisco CX Security Labs) के enum4linux.pl का पुनर्लेखन है, जो विंडोज और सांबा सिस्टम से जानकारी एकत्र करने के लिए एक उपकरण है, जो सुरक्षा पेशेवरों और CTF खिलाड़ियों के लिए लक्षित है। यह उपकरण मुख्य रूप से सांबा उपकरणों nmblookup, net, rpcclient और smbclient के चारों ओर एक आवरण (wrapper) है।
मैंने इसे अपने लिए शैक्षणिक उद्देश्यों के लिए और enum4linux.pl के साथ समस्याओं को दूर करने के लिए बनाया। इसमें मूल उपकरण के समान कार्यक्षमता है (हालांकि यह कुछ काम अलग तरीके से करता है)। मूल उपकरण के अलावा, यह सांबा उपकरणों के सभी आउटपुट को पार्स करता है और सभी निष्कर्षों को YAML या JSON फ़ाइल के रूप में निर्यात करने की अनुमति देता है। इसके पीछे का विचार यह है कि अन्य उपकरण इन निष्कर्षों को आयात कर सकें और उन्हें आगे संसाधित कर सकें। भविष्य में नई सुविधाएँ जोड़ने की योजना है।
मूल enum4linux की तुलना में कुछ चीजें अलग तरीके से लागू की गई हैं। ये महत्वपूर्ण अंतर हैं:
-Gm से सक्षम किया जा सकता है-A) का हिस्सा नहीं है, लेकिन -R से सक्षम किया जा सकता है-a के बजाय -A)मैं पूर्व Portcullis Labs (अब Cisco CX Security Labs) के लोगों को धन्यवाद देना और श्रेय देना चाहूंगा, विशेष रूप से:
इसके अलावा, मैं धन्यवाद देना और श्रेय देना चाहूंगा:
आपका कोड पढ़ने में बहुत मज़ा आया! :)
अंत में, लेकिन कम महत्वपूर्ण नहीं, मैं उन विभिन्न लोगों को धन्यवाद देना चाहूंगा जिन्होंने कोड का योगदान दिया, समस्याओं की रिपोर्ट की, और उपकरण को बेहतर बनाने के लिए उपयोगी सुझाव दिए।
यदि आप उपकरण का उपयोग करते हैं: इसका उपयोग अवैध उद्देश्यों के लिए न करें।
एक उदाहरण चलाना इस प्रकार दिख सकता है:
enum4linux-ng.py -As <लक्ष्य> -oY आउट
यह Windows Server 2012 R2 मानक स्थापना के विरुद्ध एक चलाने का प्रदर्शन करता है। निम्नलिखित कमांड का उपयोग किया जा रहा है:
enum4linux-ng.py 192.168.125.131 -u Tester -p 'Start123!' -oY out
एक उपयोगकर्ता 'Tester' पासवर्ड 'Start123!' के साथ बनाया गया। फ़ायरवॉल पहुँच की अनुमति दी गई। एक बार गणना समाप्त होने पर, मैं ऊपर स्क्रॉल करता हूँ ताकि परिणाम अधिक स्पष्ट हो जाएँ। चूँकि कोई अन्य गणना विकल्प निर्दिष्ट नहीं है, उपकरण -A मान लेगा जो enum4linux के -a विकल्प के समान व्यवहार करता है। उपयोगकर्ता और पासवर्ड पारित किए जाते हैं। -oY विकल्प सभी गणना डेटा को आगे की प्रक्रिया के लिए YAML फ़ाइल के रूप में out.yaml में निर्यात करेगा। उपकरण शुरुआत में स्वचालित रूप से पता लगाता है कि LDAP रिमोट होस्ट पर नहीं चल रहा है। इसलिए यह किसी भी आगे की LDAP जाँच को छोड़ देगा जो सामान्यतः डिफ़ॉल्ट गणना का हिस्सा होगी।

दूसरा प्रदर्शन Metasploitable 2 के विरुद्ध एक चलाने को दर्शाता है। निम्नलिखित कमांड का उपयोग किया जा रहा है:
enum4linux-ng.py 192.168.125.145 -A -C
इस बार -A और -C विकल्प का उपयोग किया गया है। जबकि पहला enum4linux के -a विकल्प के समान व्यवहार करता है, दूसरा सेवाओं की गणना को सक्षम करेगा। इस बार कोई क्रेडेंशियल प्रदान नहीं किए गए। उपकरण स्वचालित रूप से पता लगाता है कि इसे SMBv1 का उपयोग करने की आवश्यकता है। कोई YAML या JSON फ़ाइल नहीं लिखी जाती। फिर से मैं ऊपर स्क्रॉल करता हूँ ताकि परिणाम अधिक स्पष्ट हो जाएँ।

usage: enum4linux-ng.py [-h] [-A] [-As] [-U] [-G] [-Gm] [-S] [-C] [-P] [-O] [-L] [-I] [-R [BULK_SIZE]] [-N] [-w DOMAIN] [-u USER]
[-p PW | -K TICKET_FILE | -H NTHASH] [--local-auth] [-d] [-k USERS] [-r RANGES] [-s SHARES_FILE] [-t TIMEOUT] [-v] [--keep]
[-oJ OUT_JSON_FILE | -oY OUT_YAML_FILE | -oA OUT_FILE]
host
यह उपकरण Mark Lowe के enum4linux.pl का पुनर्लेखन है, जो विंडोज और सांबा सिस्टम से जानकारी एकत्र करने के लिए एक उपकरण है। यह मुख्य रूप से सांबा उपकरणों nmblookup, net, rpcclient और smbclient के चारों ओर एक आवरण है। मूल उपकरण के अलावा यह गणना परिणामों को YAML या JSON फ़ाइल के रूप में निर्यात करने की अनुमति देता है, ताकि इसे अन्य उपकरणों के साथ आगे संसाधित किया जा सके। उपकरण एक 'स्मार्ट' गणना करने का प्रयास करता है। यह पहले जाँचता है कि लक्ष्य पर SMB या LDAP सुलभ है या नहीं। इस जाँच के परिणाम के आधार पर, यह गतिशील रूप से जाँचों को छोड़ देगा (जैसे LDAP जाँच यदि LDAP नहीं चल रहा है)। यदि SMB सुलभ है, तो यह हमेशा जाँच करेगा कि कोई सत्र स्थापित किया जा सकता है या नहीं। यदि कोई सत्र स्थापित नहीं किया जा सकता, तो उपकरण गणना रोक देगा। गणना प्रक्रिया को CTRL+C से बाधित किया जा सकता है। यदि विकल्प -oJ या -oY प्रदान किए जाते हैं, तो उपकरण CTRL+C से ट्रिगर SIGINT प्राप्त करने पर वर्तमान गणना स्थिति को JSON या YAML फ़ाइल में लिख देगा। उपकरण सुरक्षा पेशेवरों और CTF खिलाड़ियों के लिए बनाया गया था। अवैध उपयोग निषिद्ध है।
positional arguments:
host
options:
-h, --help यह सहायता संदेश दिखाएँ और बाहर निकलें
-A nmblookup (-U -G -S -P -O -N -I -L) सहित सभी सरल गणना करें। यदि आप कोई अन्य विकल्प प्रदान नहीं करते हैं तो यह विकल्प सक्षम होता है।
-As NetBIOS नाम लुकअप के बिना सभी सरल छोटी गणना करें (-U -G -S -P -O -I -L)
-U RPC के माध्यम से उपयोगकर्ता प्राप्त करें
-G RPC के माध्यम से समूह प्राप्त करें
-Gm RPC के माध्यम से समूह सदस्यों के साथ समूह प्राप्त करें
-S RPC के माध्यम से शेयर प्राप्त करें
-C RPC के माध्यम से सेवाएँ प्राप्त करें
-P RPC के माध्यम से पासवर्ड नीति जानकारी प्राप्त करें
-O RPC के माध्यम से OS जानकारी प्राप्त करें
-L LDAP/LDAPS के माध्यम से अतिरिक्त डोमेन जानकारी प्राप्त करें (केवल DC के लिए)
-I RPC के माध्यम से प्रिंटर जानकारी प्राप्त करें
-R [BULK_SIZE] RID साइक्लिंग के माध्यम से उपयोगकर्ताओं की गणना करें। वैकल्पिक रूप से, लुकअप अनुरोध आकार निर्दिष्ट करता है।
-N NetBIOS नाम लुकअप करें (nbtstat के समान) और आउटपुट से वर्कग्रुप प्राप्त करने का प्रयास करें
-w DOMAIN वर्कग्रुप/डोमेन मैन्युअल रूप से निर्दिष्ट करें (सामान्यतः स्वचालित रूप से मिल जाता है)
-u USER उपयोग करने के लिए उपयोगकर्ता नाम निर्दिष्ट करें (डिफ़ॉल्ट "")
-p PW उपयोग करने के लिए पासवर्ड निर्दिष्ट करें (डिफ़ॉल्ट "")
-K TICKET_FILE Kerberos के साथ प्रमाणित करने का प्रयास करें, केवल Active Directory वातावरण में उपयोगी (नोट: इस विकल्प के काम करने के लिए DNS सही ढंग से सेट होना चाहिए)
-H NTHASH हैश के साथ प्रमाणित करने का प्रयास करें
--local-auth लक्ष्य पर स्थानीय रूप से प्रमाणित करें
-d उपयोगकर्ताओं और समूहों के लिए विस्तृत जानकारी प्राप्त करें, -U, -G और -R पर लागू होता है
-k USERS रिमोट सिस्टम पर मौजूद उपयोगकर्ता (डिफ़ॉल्ट: administrator,guest,krbtgt,domain admins,root,bin,none). "lookupsids" के साथ sid प्राप्त करने के लिए उपयोग किया जाता है
-r RANGES RID श्रेणियाँ गणना करने के लिए (डिफ़ॉल्ट: 500-550,1000-1050)
-s SHARES_FILE शेयरों के लिए ब्रूट फोर्स अनुमान
-t TIMEOUT सेकंड में कनेक्शन टाइमआउट सेट करता है (डिफ़ॉल्ट: 10s)
-v वर्बोज़, चलाए जा रहे पूर्ण सांबा टूल कमांड दिखाएँ (net, rpcclient, आदि)
--keep गणना के बाद टूल रन के दौरान बनाई गई सांबा कॉन्फ़िगरेशन फ़ाइल को न हटाएँ (-v के साथ उपयोगी)
-oJ OUT_JSON_FILE आउटपुट को JSON फ़ाइल में लिखता है (एक्सटेंशन स्वचालित रूप से जोड़ा जाता है)
-oY OUT_YAML_FILE आउटपुट को YAML फ़ाइल में लिखता है (एक्सटेंशन स्वचालित रूप से जोड़ा जाता है)
-oA OUT_FILE आउटपुट को YAML और JSON फ़ाइल में लिखता है (एक्सटेंशन स्वचालित रूप से जोड़े जाते हैं)
उपकरण को स्थापित करने के कई तरीके हैं। या तो उपकरण आपके Linux वितरण के साथ एक पैकेज के रूप में आता है या आपको मैन्युअल स्थापना करने की आवश्यकता है।
apt install enum4linux-ng
pacman -S enum4linux-ng
(NixOS 20.9 पर परीक्षण किया गया)
nix-env -iA nixos.enum4linux-ng
यदि आपका Linux वितरण कोई पैकेज प्रदान नहीं करता है, तो निम्नलिखित मैन्युअल स्थापना विधियों का उपयोग किया जा सकता है।
उपकरण सांबा क्लाइंट टूल का उपयोग करता है, अर्थात्:
ये सभी Linux वितरणों के लिए उपलब्ध होने चाहिए। पैकेज को आमतौर पर smbclient, samba-client या कुछ इसी तरह कहा जाता है।
इसके अलावा, आपको निम्नलिखित Python पैकेजों की आवश्यकता होगी:
YAML के तेज़ प्रसंस्करण के लिए (वैकल्पिक!) यह भी स्थापित करें (अधिकांश Linux वितरणों के लिए PyYaml की निर्भरता के रूप में आना चाहिए):
कुछ विशिष्ट Linux वितरण स्थापनाओं के उदाहरण नीचे सूचीबद्ध हैं। वैकल्पिक रूप से, वितरण-अज्ञेय तरीके (python pip, python virtual env और Docker) संभव हैं।
नीचे दिए गए सभी वितरण उदाहरणों के लिए, LibYAML पहले से ही संबंधित PyYaml पैकेज की निर्भरता है और इसलिए स्वचालित रूप से स्थापित हो जाएगा।
pacman -S smbclient python-ldap3 python-yaml impacket
(Fedora Workstation 31 पर परीक्षण किया गया)
dnf install samba-common-tools samba-client python3-ldap3 python3-pyyaml python3-impacket
(Ubuntu 18.04 या उससे नीचे के लिए Docker या Python virtual environment विकल्प का उपयोग करें)
apt install smbclient python3-ldap3 python3-yaml python3-impacket
Linux वितरण के आधार पर या तो pip3 या pip की आवश्यकता है:
pip install pyyaml ldap3 impacket
वैकल्पिक:
pip install -r requirements.txt
याद रखें कि आपको अभी भी ऊपर बताए अनुसार सांबा उपकरण स्थापित करने की आवश्यकता है।
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
python3 -m venv venv
source venv/bin/activate
pip install wheel
pip install -r requirements.txt
फिर इस प्रकार चलाएँ:
python3 enum4linux-ng.py -As <लक्ष्य>
याद रखें कि आपको अभी भी ऊपर बताए अनुसार सांबा उपकरण स्थापित करने की आवश्यकता है। इसके अलावा, सुनिश्चित करें कि हर बार जब आप एक नया शेल खोलते हैं तो आप source venv/bin/activate चलाएँ। अन्यथा, गलत Python इंटरप्रेटर गलत लाइब्रेरीज़ के साथ उपयोग किया जाएगा (आपके सिस्टम वाला, virtual environment वाले के बजाय)।
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
docker build . --tag enum4linux-ng
एक बार समाप्त होने पर, एक उदाहरण चलाना इस प्रकार दिख सकता है:
docker run -t enum4linux-ng -As <लक्ष्य>
कभी-कभी, उपकरण इस तरह त्रुटि संदेश उगलेगा:
Could not <कुछ पाठ यहाँ>, कृपया एक GitHub issue खोलें
उस स्थिति में, कृपया -v और --keep विकल्प के साथ उपकरण को फिर से चलाएँ। यह आपको वह सटीक कमांड देखने की अनुमति देगा जिसने त्रुटि संदेश उत्पन्न किया। उस कमांड को कॉपी करें, इसे अपने टर्मिनल में चलाएँ और आउटपुट को एक फ़ाइल में रीडायरेक्ट करें। फिर यहाँ एक GitHub issue खोलें, कमांड पेस्ट करें और त्रुटि आउटपुट फ़ाइल संलग्न करें। यह समस्या को डीबग करने में मदद करता है। बेशक, आप स्वयं इसे डीबग कर सकते हैं और एक पुल रिक्वेस्ट बना सकते हैं।
यदि उपकरण आपके लिए उपयोगी है, तो मुझे खुशी होगी यदि आप एक स्टार छोड़ दें!