
बॉटनेट कमांड एवं नियंत्रण मॉनिटर
Hale एक बॉटनेट कमांड एवं कंट्रोल मॉनिटर/जासूस है, जिसमें मॉड्यूलर डिज़ाइन है ताकि C&C सर्वरों द्वारा उपयोग किए जाने वाले नए प्रोटोकॉल की निगरानी करने वाले नए मॉड्यूल आसानी से विकसित किए जा सकें। Hale के साथ Twisted का उपयोग करके विकसित IRC और HTTP मॉनिटर आते हैं, जो बड़ी संख्या में कनेक्शनों की स्केलेबिलिटी को संभालते हैं। इन मॉड्यूलों में कॉन्फ़िगर करने योग्य प्रोटोकॉल व्याकरण (grammar) और बॉट सेटिंग्स होती हैं, लेकिन इन्हें आपकी आवश्यकताओं के अनुसार भी संशोधित किया जा सकता है। सभी कैप्चर किए गए लॉग और फ़ाइलें डेटाबेस में सहेजी जाती हैं, और IRC के मामले में, ट्रैक किए गए IP नंबर भी सहेजे जाते हैं।
ऑपरेटर का स्थान छिपाने के लिए, कनेक्शन SOCKSv5 प्रॉक्सी के माध्यम से किए जा सकते हैं, और यह वेब इंटरफ़ेस के माध्यम से कॉन्फ़िगर करने योग्य है, जहाँ सभी लॉग सांख्यिकीय चार्ट और टाइमलाइन के साथ ब्राउज़ करने के लिए उपलब्ध हैं। इंटरफ़ेस को Django और Google Visualization API के साथ विकसित किया गया था। वेब UI में कुछ अतिरिक्त सुविधाओं में OAuth समर्थन के साथ RESTful API और एक खोज इंजन का समर्थन शामिल है।
Hale का मुख्य विचार सेंसरों (Hale मॉनिटर) का एक नेटवर्क बनाकर बॉटनेट शिकार और शोध में सहयोग करने में मदद करना है। इस विचार को बेहतर बनाने के लिए, एक केंद्रीकृत XMPP सर्वर से जुड़ने के लिए एक XMPP बॉट उपलब्ध है, जहाँ वर्तमान में सेंसरों के बीच समन्वय के लिए दो अलग-अलग ग्रुपरूम और लॉग एवं फ़ाइलें साझा करने के लिए एक कक्ष का उपयोग किया जाता है। समन्वय कक्ष बॉटनेट हैश का उपयोग करता है, जो बॉटनेट सेटिंग्स में अद्वितीय कुंजियों से बनाए जाते हैं; इस प्रकार, समान हैश (पहचान) वाले दो बॉटनेटों को एक साथ मॉनिटर नहीं करना पड़ता और उपयोग में सुधार होता है। तीसरे पक्षों को इस नेटवर्क का उपयोग करने में मदद करने के लिए, एक बॉट समन्वय कक्ष में शामिल हो सकता है और किसी सेंसर से किसी बॉटनेट को ट्रैक करना शुरू करने के लिए कह सकता है, यदि वह ट्रैक नहीं किया गया है, तो उसके लिए कॉन्फ़िगरेशन भेजकर। इसके अतिरिक्त, शेयर कक्ष में, तीसरे पक्ष के बॉट वास्तविक समय में सेंसरों द्वारा कैप्चर किए गए लॉग और फ़ाइलें प्राप्त कर सकते हैं। लॉग इतिहास में सहायता के लिए वेब API का उपयोग किया जा सकता है, जो GET अनुरोधों का समर्थन करता है।
Hale की निम्नलिखित निर्भरताएँ हैं:
Python == 2.6
Django == 1.2.1
Twisted == 10.1.0
GeoIP-Python == 1.2.4 (and GeoIP C lib)
Whoosh == 0.3.18
django-haystack == 1.0.1-final
django-piston == 0.2.3rc1
pefile == 1.2.10-63
sleekxmpp == 0.9Rrc1
wsgiref == 0.1.2
zope.interface == 3.6.1
oauth2 == 1.2.0
httplib2 == 0.6.0
इसके अतिरिक्त मॉनिटर को django द्वारा उपयोग किए जाने वाले डेटाबेस के अनुरूप एक डेटाबेस बैकएंड ड्राइवर की आवश्यकता होती है। जब ये लाइब्रेरीज़ स्थापित हो जाएँ, तो यहाँ से स्रोत डाउनलोड करें और इसे कहीं भी निकालें।
पहले एक डेटाबेस बनाएँ जिसका उपयोग Hale द्वारा किया जाएगा; डेटाबेस इंजन आपकी पसंद का कोई भी हो सकता है। यदि आप किसी मौजूदा डेटाबेस का उपयोग कर रहे हैं तो इस चरण को छोड़ दें।
अगला चरण सर्वर इंजन द्वारा उपयोग किए गए ड्राइवर के अनुरूप python डेटाबेस बैकएंड ड्राइवर स्थापित करना है।
hale/src/webdb/ में settings.py को संपादित करें और निम्नलिखित कॉन्फ़िगरेशन संपादित करें: ENGINE, NAME, USER, PASSWORD, HOST और PORT, जहाँ इंजन सेटिंग उदाहरण के लिए django.db.backends.mysql है, यदि आपका सर्वर इंजन MySQL है। NAME सेटिंग आपके डेटाबेस का नाम है, जिसका उपयोग इसे बनाते समय किया गया था।
यदि आप अपना स्वयं का वेब UI शुरू नहीं करना चाहते हैं, तो इस चरण को छोड़ें और 8) पर जाएँ। settings.py में, PATH_TO_APP को Django एप्लिकेशन के पूर्ण पथ की ओर इंगित करने के लिए बदलें, उदाहरण के लिए: '/home/..../Hale/src/webdb'। webdb निर्देशिका में निम्नलिखित कमांड चलाएँ: python manage.py syncdb। यदि आपको यहाँ कोई त्रुटि मिलती है, तो संभवतः settings.py में डेटाबेस सेटिंग्स गलत हैं। साथ ही, सिंक के दौरान सुपरयूज़र सेट करें, जिसका उपयोग उपयोगकर्ताओं को प्रशासित करते समय किया जाएगा।
वेब इंटरफ़ेस में खोज का समर्थन करने के लिए, खोज इंजन को पहली बार इंडेक्स करने देने हेतु python manage.py rebuild_index चलाएँ। यह whoosh.index/ नामक एक निर्देशिका बनाएगा; वेब सर्वर को यहाँ लिखने देने के लिए, chmod o+w whoosh.index/ जारी करें। इसके बाद आप इसके बजाय python manage.py update_index चलाएँ और इसे अपनी पसंद के नियमित अंतराल पर इंडेक्स अपडेट करने हेतु एक cron job के रूप में रखें।
python manage.py runserver चलाएँ और यह जाँचने के लिए http://127.0.0.1:8000 पर जाएँ कि सेटअप सही ढंग से किया गया था या नहीं।
runserver कमांड एक डेवलपमेंट सर्वर तैनात करता है, जो प्रदर्शन समस्याओं के कारण प्रोडक्शन उपयोग के लिए अनुशंसित नहीं है। इसके बजाय Apache के लिए mod_wsgi स्थापित करके वेब UI तैनात करें; यह मानते हुए कि आप Ubuntu चला रहे हैं, apt-get install libapache2-mod-wsgi चलाएँ। /etc/apache2/sites-available/default में निम्नलिखित जोड़ें:
Alias /media /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
<Location /media>
Order allow,deny
Allow from all
</Location>
WSGIDaemonProcess username processes=2 maximum-requests=500 threads=10
WSGIProcessGroup group
WSGIScriptAlias / /home/..../webdb/django.wsgi
और उस username और group को संपादित करें जिसके रूप में WSGI डेमॉन को चलना चाहिए। WSGIScriptAlias को webdb निर्देशिका में स्थित django.wsgi फ़ाइल के पूर्ण पथ पर सेट किया जाना चाहिए। ऊपर निर्दिष्ट Alias प्रशासन पृष्ठ को सही ढंग से प्रस्तुत करने के लिए आवश्यक है। वेब इंटरफ़ेस के माध्यम से मॉड्यूल अपलोड करने में सक्षम होने के लिए, chmod o+w webdb/modules जारी करें।
hale/src/modules/ से उपयोग किए जाने वाले मॉड्यूल अपलोड करें या अपना स्वयं का लिखें (विकास अनुभाग देखें)। एडमिन इंटरफ़ेस में वांछित मॉड्यूल अपलोड करें और उदाहरण के लिए मॉड्यूल का नाम irc और फ़ाइल नाम ircModule.py संपादित करें। hale/conf/modules.conf में स्थित संबंधित अनुभाग में मॉड्यूल के लिए कॉन्फ़िगरेशन नियम निर्दिष्ट करें और उसे टेक्स्टबॉक्स में रखें; साथ ही अपलोड किए जा रहे मॉड्यूल के लिए uniqueKeys अनुभाग भी जोड़ें।
मॉनिटर चलाने से पहले, यदि आप XMPP सर्वर का उपयोग करना चाहते हैं, तो hale/src/conf/ में hale.conf संपादित करें। XMPP बॉट सक्रिय करने के लिए use सेटिंग को True पर सेट करें, और या तो लॉगिन जानकारी को किसी मौजूदा खाते और सर्वर के लिए संपादित करें या अपना स्वयं का XMPP सर्वर शुरू करें। XMPP सर्वर शुरू करते समय एक महत्वपूर्ण कदम अधिकतम स्टैंज़ा आकार को डिफ़ॉल्ट मान से बढ़ाकर लगभग 10Mb करना है; अन्यथा मैलवेयर विज्ञापन संभव नहीं होगा। hale.conf में channel सेटिंग्स का उपयोग बॉट द्वारा उपयोग किए जाने वाले शेयर ग्रुपरूम के लिए किया जाता है, और coord सेटिंग का उपयोग उस ग्रुपरूम के लिए किया जाता है जहाँ सेंसरों के बीच सभी समन्वय होता है।
hale.conf संपादित करें और क्लाइंट एवं सर्वर सेटिंग्स सेट करें।
मॉनिटर शुरू करने के लिए hale/src/ पर जाएँ और python server.py चलाएँ। यदि यह त्रुटियों के साथ शुरू होता है, तो django settings.py फ़ाइल सही ढंग से सेट नहीं है या कुछ लाइब्रेरीज़ गायब हैं। क्लाइंट के साथ सर्वर को कमांड जारी करना संभव है, लेकिन इसके लिए उपयोगकर्ता को सर्वर के विरुद्ध स्वयं को प्रमाणित करना आवश्यक है; उन उपयोगकर्ताओं को पहुँच प्रदान की जाती है, जिन्हें वेब इंटरफ़ेस के माध्यम से स्टाफ सदस्यों के रूप में सेट किया गया है। जब क्लाइंट चल रहा हो, तो उपलब्ध कमांड पाने के लिए help या ? टाइप करें। किसी विशिष्ट कमांड के बारे में अधिक जानकारी पाने के लिए help कमांड टाइप करें। मॉनिटर बॉट शुरू करना पहले hale/src/conf/modules.conf फ़ाइल को संपादित करके किया जाता है, उदाहरण के लिए निम्नानुसार एक IRC कॉन्फ़िगरेशन का उपयोग करके:
[uniqueKeys]
irc = botnet, *grammar
[ircConf]
module = irc
botnet = irc.freenode.net
port = 6667
password = None
nick = nickname
username = agent007
realname = Spying
channel = #channelname
channel_pass = somepass
pass_grammar = PASS
nick_grammar = NICK
user_grammar = USER
join_grammar = JOIN
version_grammar = VERSION
time_grammar = TIME
privmsg_grammar = PRIVMSG
topic_grammar = TOPIC
currenttopic_grammar = 332
ping_grammar = PING
pong_grammar = PONG