
Snoopy v2.0 - मॉड्यूलर डिजिटल स्थलीय ट्रैकिंग फ्रेमवर्क
SensePost प्रस्तुत करता है:
/$$$$$$
/$$__ $$
| $$ \__/ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$
| $$$$$$ | $$__ $$ /$$__ $$ /$$__ $$ /$$__ $$| $$ | $$
\____ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ \ $$| $$ | $$
/$$ \ $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$| $$ | $$
| $$$$$$/| $$ | $$| $$$$$$/| $$$$$$/| $$$$$$$/| $$$$$$$
\______/ |__/ |__/ \______/ \______/ | $$____/ \____ $$
| $$ /$$ | $$
| $$ | $$$$$$/
|__/ \______/
संस्करण: 2.0
कोड: [email protected] // @glennzw
विजिट करें: www.sensepost.com // @sensepost
लाइसेंस: गैर-व्यावसायिक उपयोग
Snoopy संस्करण 2.0 में आपका स्वागत है!
Snoopy को स्थापित और सेटअप करने के लिए:
bash install.sh
वायरलेस, sysinfo और heartbeat प्लगइन्स से डेटा स्थानीय रूप से सहेजने के लिए:
snoopy -v -m wifi:mon=True -m sysinfo -m heartbeat -d myDrone -l London
क्लाइंट से सर्वर पर डेटा सिंक करने के लिए:
सर्वर:
snoopy_auth --create myDrone # खाता बनाएं
snoopy -v -m server # सर्वर प्लगइन शुरू करें
क्लाइंट:
snoopy -v -m wifi:mon=True -s http://<server>:9001/ -d myDrone -l London -k <key>
परिचय और अवलोकन ============================= Snoopy एक वितरित, सेंसर, डेटा संग्रह, अवरोधन, विश्लेषण और विज़ुअलाइज़ेशन फ्रेमवर्क है। यह मॉड्यूलर प्रारूप में लिखा गया है, जो Python प्लगइन्स के माध्यम से विभिन्न स्रोतों से मनमाना डेटा एकत्र करने की अनुमति देता है।
आर्किटेक्चर
प्रत्येक Snoopy इंस्टेंस एक साथ कई प्लगइन्स चला सकता है। एक प्लगइन डेटा एकत्र करता है, जिसे मुख्य Snoopy प्रक्रिया द्वारा क्वेरी किया जाता है और एक स्थानीय डेटाबेस में लिखा जाता है। Snoopy क्लाइंट्स (ड्रोन) और सर्वर के बीच डेटा सिंक कर सकता है, और क्लाइंट्स (ड्रोन) सर्वर से डेटा की प्रतियां भी खींच सकते हैं। प्रत्येक Snoopy इंस्टेंस अपनी स्थिति के अनुरूप प्लगइन्स चला सकता है। यहाँ एक संभावित सेटअप दर्शाने वाला आरेख है:
Drone01 Server01
+---------------+ +--------------+
| प्लगइन्स: | | प्लगइन्स: |
| * WiFi | | *Server |
| * Bluetooth |====3G====>| |<=========================\
| * GSM | | | ||
| * FitBit | | | ||
+---------------+ +--------------+ ||
||
Drone02 Server02 Server03 ||
+---------------+ +--------------+ +-------------+ ||
| प्लगइन्स: | | प्लगइन्स: | | प्लगइन्स: | ||
| * WiFi | | * Server | | * Server | ||
| * Cookie |=====Xbee==>| * Heartbeat |==3G==>| * Wigle |<==\
| चोर | || | | | * DataViz | ||
| * GPS | || | | | | ||
+---------------+ || +--------------+ +-------------+ ||
|| Internet
Drone03 || Laptop01 ||
+---------------+ || +--------------+ ||
| प्लगइन्स: | || | प्लगइन्स: | ||
| * थर्मल | || | *RemotePull | ||
| * कैमरा |===/ | |====/
| * हीट | | चलाएं: |
| | | *Maltego |
+---------------+ +--------------+
उपरोक्त चित्रण में, तीन ड्रोन चल रहे हैं और अपना डेटा दो अलग-अलग सर्वरों पर सिंक कर रहे हैं। एक 3G पर सिंक करता है, अन्य दो Xbee पर। दूसरा सर्वर अपना डेटा तीसरे सर्वर पर सिंक करता है। अंत में, एक क्लाइंट (लैपटॉप) पहले और तीसरे सर्वर से सारा डेटा खींचता है, और डेटा का अन्वेषण करने के लिए Maltego चलाता है।
'snoopy-ng.git' निर्देशिका के अंदर 'sh install.sh' चलाने से सभी आवश्यक पैकेज स्थापित हो जाएंगे। यह aircrack को स्रोत से स्थापित करने का विकल्प प्रदान करता है, जो उन वितरणों के लिए आवश्यक है जिनमें यह पैकेज नहीं है (वायरलेस प्लगइन्स के लिए aircrack सूट का उपयोग किया जाता है)। हम डेटा अन्वेषण के लिए Maltego की अत्यधिक अनुशंसा करते हैं, एक सामुदायिक संस्करण (कुछ प्रतिबंधों के साथ) Paterva वेबसाइट http://paterva.com से मुफ्त डाउनलोड किया जा सकता है।
सभी उपलब्ध फ़्लैग और विकल्पों को देखने के लिए, हमने आपके लिए दो कमांड बनाए हैं:
root@kali:~# snoopy --help (शॉर्टहैंड -h)
यह कमांड आपको सभी चल रहे विकल्प देता है, जैसे कि किस सर्वर से सिंक करना है, ड्रोन का नाम और उसका स्थान। इसके अलावा, यह भी परिचय देता है कि विभिन्न प्लगइन्स को कैसे चलाया जाए।
root@kali:~# snoopy --list (शॉर्टहैंड -i)
यह कमांड सभी उपलब्ध प्लगइन्स और प्रत्येक प्लगइन के ठीक से काम करने के लिए आवश्यक पैरामीटर सूचीबद्ध करता है। प्रत्येक प्लगइन के बारे में अधिक विस्तृत जानकारी प्राप्त करने के लिए, '-ii' या '-iii' का उपयोग करें। किसी विशिष्ट प्लगइन के बारे में जानकारी प्राप्त करने के लिए '-i -m ' का उपयोग करें।
प्लगइन्स को --plugin (या शॉर्टहैंड -m) विकल्प के साथ निर्दिष्ट किया जा सकता है। कई प्लगइन्स निर्दिष्ट किए जा सकते हैं, और दर्ज किए गए क्रम में शुरू किए जाएंगे। प्रत्येक प्लगइन को अपनी तैयार स्थिति इंगित करने के लिए 60 सेकंड दिए जाएंगे, जिसके बाद यह टाइम आउट हो जाएगा और अगला प्लगइन शुरू किया जाएगा। यह उपयोगी हो सकता है यदि बाद के प्लगइन्स पिछले वाले की क्रियाओं पर निर्भर करते हैं।
प्रत्येक प्लगइन (--list आउटपुट में इंगित) अल्पविराम से अलग किए गए कुंजी-मान जोड़े के रूप में कई पैरामीटर ले सकता है। नीचे हम 'example' प्लगइन का उपयोग करते हैं, जो केवल यादृच्छिक संख्याएँ उत्पन्न करता है।
snoopy --plugin example:x=1,v=True
यदि ड्रोन / स्थान विकल्प प्रदान नहीं किए जाते हैं तो डिफ़ॉल्ट मान प्रदान किए जाते हैं। वैकल्पिक रूप से, उन्हें नीचे दिए अनुसार निर्दिष्ट किया जा सकता है।
snoopy --plugin example:x=1,v=True --drone myDrone --location Cansas
--server (-s) विकल्प प्रदान करके डेटा को एक दूरस्थ मशीन पर सिंक्रोनाइज़ किया जा सकता है। दूरस्थ मशीन पर सर्वर प्लगइन (--plugin server) चल रहा होना चाहिए। पहले से एक ड्रोन नाम के लिए एक कुंजी उत्पन्न की जानी चाहिए। नीचे यह दर्शाया गया है।
सर्वर
root@server:~# snoopy_auth --create myDrone01 --verbose
[+] नया Snoopy सर्वर सिंक खाता बना रहा है
[+] 'myDrone01' के लिए कुंजी 'GWWVF' है
[+] क्लाइंट मोड में डेटा को दूरस्थ सर्वर से सिंक करने के लिए इस मान का उपयोग करें।
root@kali:~# snoopy --plugin server
[+] '0.0.0.0:9001' पर वेबसर्वर चला रहा है
[+] प्लगइन server ने 2 तालिकाओं के लिए डेटा कैप्चर किया।
क्लाइंट
root@client:~# snoopy --plugin example:x=1 --drone myDrone --key GWWVF --server http://<server_ip>:9001/ --verbose
[+] प्लगइन्स के साथ Snoopy शुरू कर रहा है: example
[+] प्लगइन example ने नई यादृच्छिक संख्या बनाई: 21
[+] Snoopy ने 2 तालिकाओं में 2 तत्व सफलतापूर्वक सिंक किए।
रिमोट डेटा पुल
local_sync प्लगइन का उपयोग करके सर्वर से डेटा खींचा जा सकता है। उदाहरण के लिए, मान लें कि उपरोक्त सर्वर चल रहा है, और इस ऑपरेशन को क्लाइंट से करें:
root@client:~# snoopy --plugin local_sync:server_url=http://<server_ip>:9001/ --drone myDrone --key GWWVF
[+] प्लगइन local_sync ने रिमोट सर्वर से 888 रिकॉर्ड खींचे।
डिफ़ॉल्ट व्यवहार सभी डेटा को SQLITE फ़ाइल snoopy.db के अंदर संग्रहीत करना है। इसे --dbms पैरामीटर के साथ ओवरराइड किया जा सकता है। विभिन्न डेटाबेस इंजनों को निर्दिष्ट करने के तरीके के लिए SQL Alchemy दस्तावेज़ देखें (http://docs.sqlalchemy.org/en/rel_0_9/dialects/index.html)। एक उदाहरण के रूप में, नीचे हम MySQL का उपयोग करते हैं:
root@client:~# snoopy -v --plugin example --dbms=mysql://glenn:secret@localhost/snoopy_db
[+] केवल स्थानीय कैप्चर कर रहा है। 'mysql://glenn:secret@localhost/snoopy_db' में सहेज रहा है
छोटे उपकरणों पर SQLITE स्टोरेज का उपयोग करना उपयोगी हो सकता है, और सर्वर प्लगइन को MySQL (या इसी तरह) में सहेजने के लिए कहा जा सकता है। एक और उदाहरण उपयोगी हो सकता है जहां हम डेटा संग्रहीत करने के लिए फ़ाइल स्थान निर्दिष्ट करते हैं, जैसे कि हटाने योग्य मीडिया पर:
root@client:~# snoopy -v --plugin example --dbms=sqlite:////media/USB01/snoopy.db
एक --flush (-f) विकल्प है जो किसी अपस्ट्रीम सर्वर के साथ सिंक्रोनाइज़ होने के बाद स्थानीय स्टोरेज से डेटा को 'फ्लश' करता है।
Snoopy को एक upstart स्क्रिप्ट के साथ शुरू किया जा सकता है (./setup/upstarts फ़ोल्डर देखें)। अन्य नमूना upstart स्क्रिप्ट उसी निर्देशिका में प्रदान की गई हैं - उदाहरण के लिए, 3G मॉडम से PPP कनेक्शन लाने के लिए एक, और SSH रिमोट कमांड चैनल बनाने के लिए एक।
डेबियन-आधारित सिस्टम (जैसे Kali) upstart का समर्थन नहीं करते प्रतीत होते हैं। अंतरिम में, प्रदान की गई rc.local फ़ाइल का उपयोग बूट पर Snoopy और संबंधित सेवाओं को शुरू करने के लिए किया जा सकता है।
Maltego विज़ुअलाइज़ेशन करने के लिए पसंदीदा उपकरण है। निर्देश नीचे हैं:
इससे इकाइयों के साथ-साथ ट्रांसफ़ॉर्म भी आयात होने चाहिए। आरंभ करने के लिए, Palette मेनू में Snoopy टैब से 'Base of Operations' इकाई को एक खाली ग्राफ पर खींचें। एक उदाहरण के रूप में, इकाई पर निम्नलिखित ऑपरेशन करें:
ट्रांसफ़ॉर्म डोमेन और कुकीज़ (निष्क्रिय निगरानी से) प्राप्त करने, SSID सड़क पतों की खोज करने के लिए मौजूद हैं, और कई द्विदिश हैं (उदाहरण के लिए, स्थान से क्लाइंट, या क्लाइंट से स्थान देख सकते हैं)। सबसे अच्छा है कि इसे आज़माएं।
यदि डिफ़ॉल्ट sqlite प्रारूप का उपयोग नहीं कर रहे हैं, तो डेटा का स्थान निर्दिष्ट करने के लिए निम्न फ़ाइल संपादित करें:
snoopy_ng/transforms/db_path.conf
Snoopy ग्राफ़ को Maltego के सहयोग फ़ंक्शन का उपयोग करके एक साथ कई विश्लेषकों द्वारा साझा किया जा सकता है। Collaboration चुनें, और 'Share Current Graph' चुनें।
व्यावसायिक उपयोग =================== जिस लाइसेंस के तहत Snoopy जारी किया गया है, वह इसके उपयोग से वित्तीय (या अन्यथा) लाभ प्राप्त करने से रोकता है (LICENSE.txt देखें)। हमारे पास व्यावसायिक उपयोग के लिए एक अलग लाइसेंस उपलब्ध है, जिसमें अतिरिक्त कार्यक्षमता शामिल है जैसे:
संपर्क करें ([email protected] / [email protected]) यदि आप हमारे साथ जुड़ना चाहते हैं।
प्लगइन्स को कैसे लिखा जाना चाहिए, यह समझने के लिए plugins/example.py फ़ाइल देखें। plugins फ़ोल्डर में रखी गई कोई भी फ़ाइल एक प्लगइन मानी जाएगी, और इसमें निम्नलिखित गुण होने चाहिए:
अन्यथा, प्लगइन वह कर सकता है जो आप चाहते हैं।
Snoopy किसी भी Linux उपकरण पर चलेगा जिसमें install.sh फ़ाइल से फ़ाइलें स्थापित करने के लिए पर्याप्त समर्थन हो। अर्थात् Python और संबंधित पैकेज। हार्डवेयर समर्थन इस बात पर निर्भर करेगा कि किन प्लगइन्स की आवश्यकता है, लेकिन WiFi डेटा एकत्र करने और 3G के माध्यम से अपलोड करने के सबसे सामान्य परिदृश्य के लिए, निम्नलिखित अनुशंसित है:
Kali 1.05 और Ubuntu 12.04 का परीक्षण किया गया है। समान सिस्टम काम करने चाहिए।
डेटा को स्थानीय रूप से एकत्र करते समय, दूरस्थ सर्वर पर सिंक करते समय, और फिर सर्वर से प्रतिलिपि खींचते समय एक त्रुटि स्थिति उत्पन्न होती है। उदाहरण के लिए:
सर्वर
root@kali:~# snoopy -m server -m wigle:username=u,password=p,[email protected]
[+] '0.0.0.0:9001' पर वेबसर्वर चला रहा है
[+] प्लगइन server ने 2 तालिकाओं के लिए डेटा कैप्चर किया।
क्लाइंट
root@client:~# snoopy -m wifi -m local_sync:server_url=http://1.1.1.1:9001/ -d myDrone -l London -k secretkey -s http://1.1.1.1:9001/