 |
ODBParser |
TL;DR
ODBParser एक ऐसा उपकरण है जो खुले डेटाबेस में उजागर PII की खोज करता है।
केवल उजागर PII की पहचान करने और सर्वर मालिकों को गैर-जिम्मेदार डेटाबेस रखरखाव के प्रति सचेत करने के लिए उपयोग करें
या उन डेटाबेसों को क्वेरी करें जिन्हें एक्सेस करने की आपकी अनुमति है!
कृपया जिम्मेदारी से उपयोग करें
यह क्या है?
यह एक वन-स्टॉप OSINT टूल बनाने के लिए लिखा गया था जो खुले डेटाबेस को खोजने, पार्स करने और विश्लेषण करने में सक्षम हो, ताकि तृतीय-पक्ष सर्वरों पर PII के रिसाव की पहचान की जा सके। अन्य उपकरण या तो केवल खुले डेटाबेस की खोज करते हैं या उन्हें डंप करते हैं जब आप उनकी पहचान कर लेते हैं और फिर अंधाधुंध डेटा खींचते हैं। यह एक या दो फ़ंक्शन से बढ़कर इस रिपॉजिटरी में विकसित हो गया, इसलिए कोड उतना साफ-सुथरा नहीं है जितना हो सकता था।
विशेषताएँ
खुले डेटाबेस की पहचान करने के लिए आप:
- सभी संभावित पैरामीटर (देश, पोर्ट नंबर आदि के अनुसार फ़िल्टर) का उपयोग करके Shodan और BinaryEdge को क्वेरी कर सकते हैं
- एकल IP पता निर्दिष्ट कर सकते हैं
- IP पतों की सूची वाली फ़ाइल लोड कर सकते हैं
- क्लिपबोर्ड से IP पतों की सूची पेस्ट कर सकते हैं
डंपिंग विकल्प:
- आपके द्वारा निर्दिष्ट डेटा की पहचान करने के लिए सभी डेटाबेस/कलेक्शन को पार्स करता है
- सर्वर पर होस्ट की गई सभी चीज़ें खींचता है
- केवल एक इंडेक्स/कलेक्शन खींचता है
- किसी विशेष इंडेक्स को डंप करने से बचने के लिए ctrl+c का उपयोग करें
पोस्ट-प्रोसेसिंग:
- JSON डंप को CSV में बदलें
- CSV से अनुपयोगी कॉलम हटाएं
अन्य विशेषताएँ:
- आपके द्वारा क्वेरी किए गए सभी IP पतों और डेटाबेसों के साथ-साथ प्रत्येक सर्वर के बारे में जानकारी का ट्रैक रखता है
- आपके द्वारा क्वेरी किए गए IP, पार्स किए गए डेटाबेस और डंप किए गए रिकॉर्ड की संख्या का स्टैट्स फ़ाइल बनाए रखता है
- पहले से मौजूद JSON डंप को CSV में बदलता है
- प्रत्येक डेटाबेस के लिए जिसमें कुल रिकॉर्ड की संख्या आपकी सीमा से अधिक है, स्क्रिप्ट 5 नमूना रिकॉर्ड के साथ एक विशेष फ़ाइल में एक प्रविष्टि बनाएगी ताकि आप समीक्षा कर सकें और तय कर सकें कि डेटाबेस लेने लायक है या नहीं
- डिफ़ॉल्ट आउटपुट लाइन-अलग JSON फ़ाइल है जिसमें प्रत्येक पंक्ति में एक JSON ऑब्जेक्ट होता है। आप "properjson" फ़्लैग का उपयोग करके "उचित JSON" फ़ाइल आउटपुट करना चुन सकते हैं
- आप फ़ाइलों को ऑन-द-फ्लाई CSV में बदल सकते हैं या केवल कुछ फ़ाइलों को रन पूरा होने के बाद बदल सकते हैं (मैं बाद वाले की सलाह देता हूँ)। परिवर्तित JSON फ़ाइलें उसी निर्देशिका में "JSON backups" नामक फ़ोल्डर में ले जाई जाएँगी। नोट: CSV में परिवर्तित करते समय, स्क्रिप्ट सटीक डुप्लिकेट पंक्तियों को हटाती है और उन कॉलमों और पंक्तियों को हटाती है जहाँ सभी मान NaN हैं, क्योंकि मैं यही चाहता था। यदि आप JSON फ़ाइल की सटीक प्रतिलिपि चाहते हैं तो फ़ंक्शन को संपादित करने में संकोच न करें।
- केवल Windows यदि स्क्रिप्ट बड़ी संख्या में इंडेक्स लाती है जिनमें आपका रुचि का फ़ील्ड है, तो स्क्रिप्ट डीबी के नाम सूचीबद्ध करेगी, रुकेगी और आपको दस सेकंड का समय देगी ताकि आप तय कर सकें कि क्या आप सभी इंडेक्स से सभी डेटा निकालना चाहते हैं, क्योंकि मैंने पाया है कि यदि आपके द्वारा निर्दिष्ट फ़ील्ड के बाद भी बहुत सारे डेटाबेस वापस आते हैं, तो इस बात की अच्छी संभावना है कि डेटा नकली या बेकार लॉग है, और आप आमतौर पर नाम से बता सकते हैं कि कौन सी संभावना है। यदि आप 10 सेकंड के भीतर कार्रवाई नहीं करते हैं, तो स्क्रिप्ट हर इंडेक्स को डंप कर देगी।
- जैसा कि आपने देखा होगा, बहुत से लोग MongoDB डेटाबेस को स्कैन कर रहे हैं और उन्हें बंधक बना रहे हैं, अक्सर नाम बदलकर "TO_RESTORE_EMAIL_XXXRESTORE.COM" जैसा कुछ कर देते हैं। MongoDb स्क्रैपर उन सभी डेटाबेस और कलेक्शन को अनदेखा करेगा जो पायदान में डाले गए हैं, DB/कलेक्शन के नाम को पॉन्ज के संकेत देने वाली स्ट्रिंग्स की सूची के विरुद्ध जाँच करके।
- स्क्रिप्ट काफी वर्बोज़ है (शायद बहुत अधिक) लेकिन मुझे यह देखना पसंद है कि क्या हो रहा है। यदि आप चाहें तो प्रिंट स्टेटमेंट्स को शांत करने के लिए स्वतंत्र हैं।
अनुकूलन
अपने पैरामीटर निर्दिष्ट करने के लिए odbconfig.py फ़ाइल देखें, क्योंकि वास्तव में खेल का नाम उस डेटा को उजागर करना है जिसमें आपकी रुचि है। मैंने कॉन्फ़िग फ़ाइल में कुछ उदाहरण दिए हैं। उनके साथ खेलें!
आप:
- कॉन्फ़िग फ़ाइल में सबस्ट्रिंग निर्दिष्ट करके बता सकते हैं कि आप कौन से इंडेक्स या कलेक्शन नाम एकत्र करना चाहते हैं। उदाहरण के लिए, यदि "client" शब्द है, तो स्क्रिप्ट "clients" या "client_data" नामक इंडेक्स खींचेगी। मैं अनुशंसा करता हूँ कि आप इन सूचियों को खाली रखें क्योंकि आप कभी नहीं जानते कि आपके रुचि के डेटाबेस क्या कहलाएंगे, और इसके बजाय उन फ़ील्ड को निर्दिष्ट करें जिनमें आपकी रुचि है।
- निर्दिष्ट कर सकते हैं कि आप किन फ़ील्ड में रुचि रखते हैं: यदि आप केवल ES इंडेक्स प्राप्त करना चाहते हैं जिनमें किसी फ़ील्ड नाम में "email" हो, जैसे "user_emails", तो आप ऐसा कर सकते हैं। यदि आप सुनिश्चित करना चाहते हैं कि इंडेक्स में कम से कम 2 फ़ील्ड हों जिनमें आपकी रुचि है, तो आप ऐसा भी कर सकते हैं। या यदि आप बस फ़ील्ड की परवाह किए बिना सब कुछ प्राप्त करना चाहते हैं, तो आप ऐसा भी कर सकते हैं।
- निर्दिष्ट कर सकते हैं कि आप कौन से इंडेक्स नहीं चाहते, जैसे कि सिस्टम इंडेक्स नाम और अन्य जो आमतौर पर बुनियादी लॉगिंग के लिए उपयोग होते हैं। कॉन्फ़िग फ़ाइल में उदाहरण दिए गए हैं।
- कॉन्फ़िग को ओवरराइड कर सकते हैं और सर्वर पर सब कुछ प्राप्त कर सकते हैं।
- आउटपुट निर्दिष्ट कर सकते हैं (डिफ़ॉल्ट JSON है, CSV चुन सकते हैं)।
- डिफ़ॉल्ट रूप से स्क्रिप्ट द्वारा डंप किए जाने वाले डेटाबेस का न्यूनतम और अधिकतम आकार निर्धारित कर सकते हैं, और केस-बाय-केस आधार पर अधिकतम दस्तावेज़ों को ओवरराइड करने के लिए फ़्लैग सेट कर सकते हैं।
स्थापना और आवश्यकताएँ
- मशीन पर क्लोन या डाउनलोड करें
- Shodan और/या BinaryEdge के लिए API कुंजियाँ प्राप्त करें
- ODBconfig.py फ़ाइल में पैरामीटर कॉन्फ़िगर करें
- फ़ाइल से आवश्यकताएँ स्थापित करें
मेरा सुझाव है कि ODBParser के लिए वर्चुअल वातावरण बनाएं ताकि गलत मॉड्यूल संस्करणों से कोई समस्या न हो।
नोट: केवल Python 3.7.3 और Windows 10 पर परीक्षण किया गया।
कृपया जिम्मेदारी से उपयोग करें
अगले कदम और ज्ञात मुद्दे
- कोड को थोड़ा और साफ करें
- विभिन्न प्रक्रियाओं को मल्टीथ्रेड करें
- अन्य DB प्रकारों तक विस्तार करें
- अन्य ओपन डायरेक्टरी सर्च इंजन (Zoomeye, आदि) जोड़ें
- कुछ ES इंस्टेंस के लिए पहले पेज से आगे स्क्रॉल करने में असमर्थता, ES <2.0 के तरीके के कारण। किसी भी मदद की सराहना करूँगा! लगभग सुनिश्चित हूँ कि इसे ठीक कर दिया है। यदि scrollid त्रुटियाँ मिलती हैं तो मुद्दा खोलें
उपयोग
Examples: python ODBParser.py -cn US -p 8080 -t users --elastic --shodan --csv --limit 100
python ODBParser.py -ip 192.168.2:8080 --mongo --ignorelogs --nosizelimits
Damage to-date: 0 servers parsed | 0 databases dumped | 0 records pulled
_____________________________________________________________________________
optional arguments:
-h, --help show this help message and exit
Query Options:
--shodan, -sh Add this flag if using Shodan. Specify ES or MDB w/
flags.
--binary, -be Add this flag if using BinaryEdge. Specify ES or MDB
w/ flags.
--ip , -ip Query one server. Add port like so '192.165.2.1:8080'
or will use default ports for each db type. Add ES or
MDB flags to specify parser.
--file , -f Load line-separated IPs from file. Add port or will
assume default ports for each db type. Add ES or MDB
flags to specify parser.
--paste, -v Query line-separated IPs from clipboard. Add port or
will assume default ports for each db type, e.g. 9200
for ES. Add ES or MDB flags to specify parser.