
Malcom - मैलवेयर संचार विश्लेषक
Malcom एक उपकरण है जिसे नेटवर्क ट्रैफ़िक के ग्राफिकल प्रतिनिधित्व का उपयोग करके सिस्टम के नेटवर्क संचार का विश्लेषण करने और उन्हें ज्ञात मैलवेयर स्रोतों से क्रॉस-रेफरेंस करने के लिए डिज़ाइन किया गया है। यह तब काम आता है जब यह विश्लेषण किया जाता है कि कुछ मैलवेयर प्रजातियाँ बाहरी दुनिया से संवाद करने का प्रयास कैसे करती हैं।
Malcom आपकी मदद कर सकता है:
Malcom का उद्देश्य किसी दिए गए होस्ट या नेटवर्क से उत्पन्न नेटवर्क ट्रैफ़िक का मानव-पठनीय संस्करण प्रदान करके मैलवेयर विश्लेषण और इंटेल संग्रह को तेज़ बनाना है। नेटवर्क ट्रैफ़िक की जानकारी को तेज़ी से कार्रवाई योग्य खुफिया जानकारी में बदलें।
त्वरित आरंभ के लिए कुछ अच्छे स्क्रीनशॉट और अपने स्वयं के फीड कैसे जोड़ें पर एक ट्यूटोरियल के लिए wiki देखें।
यदि आपको कुछ सहायता चाहिए, या योगदान देना चाहते हैं, तो मेलिंग सूची में शामिल होने या IRC पर किसी को पकड़ने का प्रयास करें (#malcom on freenode.net, यह काफी शांत है लेकिन आसपास हमेशा कोई न कोई होता है)। आप मुझे ट्विटर पर भी संपर्क कर सकते हैं @tomchop_
यहाँ होस्ट tomchop.me के लिए एक उदाहरण ग्राफ़ है

डेटासेट दृश्य (केवल IP दिखाने के लिए फ़िल्टर किया गया)

mongodb और redis-server चल रहे हैं./malcom.py -c malcom.conf का उपयोग करके शुरू करें (या ./malcom.py --help के साथ विकल्प देखें)
** एक उदाहरण कॉन्फ़िगरेशन फ़ाइल के लिए, आप malcom.conf.example को malcom.conf पर कॉपी कर सकते हैं
** डिफ़ॉल्ट पोर्ट 8080 है
** वैकल्पिक रूप से, celery से फीड चलाएँ। यह कैसे करें, इसके विवरण के लिए फीड अनुभाग देखें।Malcom पायथन में लिखा गया है। बशर्ते आपके पास आवश्यक लाइब्रेरी हों, आप इसे किसी भी प्लेटफ़ॉर्म पर चला सकें। मैं पायथन वर्चुअल एनवायरनमेंट (virtualenv) के उपयोग की अत्यधिक अनुशंसा करता हूँ ताकि आपके सिस्टम लाइब्रेरीज़ खराब न हों।
निम्नलिखित Ubuntu server 14.04 LTS पर परीक्षण किया गया था:
git, python और libevent लिब्स, mongodb, redis, और अन्य निर्भरताएँ स्थापित करें
$ sudo apt-get install build-essential git python-dev libevent-dev mongodb libxml2-dev libxslt-dev zlib1g-dev redis-server libffi-dev libssl-dev python-virtualenv
Git रेपो क्लोन करें:
$ git clone https://github.com/tomchop/malcom.git malcom
अपना virtualenv बनाएँ और इसे सक्रिय करें:
$ cd malcom
$ virtualenv env-malcom
$ source env-malcom/bin/activate
scapy प्राप्त करें और स्थापित करें:
$ cd ..
$ wget http://www.secdev.org/projects/scapy/files/scapy-latest.tar.gz
$ tar xvzf scapy-latest.tar.gz
$ cd scapy-2.1.0
$ python setup.py install
अभी भी अपने virtualenv से, फ़ाइल से आवश्यक पायथन पैकेज स्थापित करें:
डिफ़ॉल्ट रूप से, Malcom एक स्थानीय mongodb इंस्टेंस से कनेक्ट करने का प्रयास करेगा और अपना स्वयं का डेटाबेस बनाएगा, जिसका नाम malcom होगा। यदि यह आपके लिए ठीक है, तो आप निम्नलिखित चरणों को छोड़ सकते हैं। अन्यथा, आपको अपनी malcom.conf फ़ाइल के database अनुभाग को संपादित करने की आवश्यकता होगी।
डिफ़ॉल्ट रूप से, Malcom malcom नामक डेटाबेस का उपयोग करेगा। आप malcom.conf फ़ाइल को संपादित करके और database अनुभाग से name निर्देश को अपनी पसंद के अनुसार सेट करके इस व्यवहार को बदल सकते हैं।
[database]
...
name = my_malcom_database
...
डिफ़ॉल्ट रूप से, Malcom localhost से कनेक्ट करने का प्रयास करेगा, लेकिन आपका डेटाबेस किसी अन्य सर्वर पर हो सकता है। इसे बदलने के लिए, बस hosts निर्देश सेट करें। आप होस्टनाम या IPv4/v6 पतों का उपयोग कर सकते हैं (बस ध्यान रखें कि अपने IPv6 पतों को [ और ] के बीच संलग्न करें, उदा. [::1])।
यदि आप होस्ट my.mongo.server पर एक स्टैंडअलोन डेटाबेस का उपयोग करना चाहते हैं, तो बस सेट करें:
[database]
...
hosts = my.mongo.server
...
आप अपने सर्वर के नाम/पते के बाद : से अलग करके उस पोर्ट को भी निर्दिष्ट कर सकते हैं जिस पर mongod सुन रहा है:
[database]
...
hosts = localhost:27008
...
और यदि आप my.mongo1.server और my.mongo2.server को पुनर्समूहित करने वाले ReplicaSet का उपयोग कर रहे हैं, तो बस सेट करें:
[database]
...
hosts = my.mongo1.server,my.mongo2.server
...
हो सकता है कि आपने अपने mongod इंस्टेंस को प्रमाणित कनेक्शन लागू करने के लिए कॉन्फ़िगर किया हो। उस स्थिति में, आपको उपयोगकर्ता नाम सेट करना होगा जिसका उपयोग ड्राइवर को अपने mongod इंस्टेंस से कनेक्ट करने के लिए करना होगा। ऐसा करने के लिए, बस malcom.conf फ़ाइल में database अनुभाग में एक username निर्देश जोड़ें। आपको password निर्देश के साथ पासवर्ड भी सेट करना पड़ सकता है। यदि उपयोगकर्ता के पास पासवर्ड नहीं है, तो बस password निर्देश को अनदेखा करें (यानी टिप्पणी करें)।
[database]
...
username = my_user
password = change_me
...
यदि उपयोगकर्ता malcom डेटाबेस से नहीं बल्कि किसी अन्य डेटाबेस से जुड़ा है (उदा. एक व्यवस्थापक उपयोगकर्ता के लिए admin डेटाबेस), तो आपको उस डेटाबेस के नाम के साथ authentication_database निर्देश सेट करना होगा।
[database]
...
authentication_database = some_other_database
...
रेप्लिका सेट का उपयोग करते समय, आपको यह सुनिश्चित करने की आवश्यकता हो सकती है कि आप सही से जुड़े हैं। इसके लिए, बस mongo ड्राइवर को रेप्लिकासेट के नाम की जाँच करने के लिए बाध्य करने के लिए replset निर्देश जोड़ें:
[database]
...
replset = my_mongo_replica
...
डिफ़ॉल्ट रूप से, Malcom रेप्लिका सेट के प्राथमिक नोड से कनेक्ट करने का प्रयास करेगा। आपको इसे बदलने की आवश्यकता/इच्छा हो सकती है। उस व्यवहार को बदलने के लिए, बस read_preference निर्देश सेट करें। अधिक जानकारी के लिए mongo दस्तावेज़ीकरण देखें।
[database]
...
read_preference = NEAREST
...
समर्थित रीड प्रेफरेंसेस हैं:
आरंभ करने का सबसे तेज़ तरीका सार्वजनिक डॉकर रेपो से डॉकर इमेज खींचना है। पुराने, अधिक स्थिर डॉकर बिल्ड को खींचने के लिए, tomchop/malcom-automatic के बजाय tomchop/malcom का उपयोग करें।
$ sudo docker pull tomchop/malcom-automatic
$ sudo docker run -p 8080:8080 -d --name malcom tomchop/malcom-automatic
http://<docker_host>:8080/ से कनेक्ट करने पर आप आरंभ कर सकते हैं।
Malcom अब TLS इंटरसेप्शन का समर्थन करता है। इसके काम करने के लिए, आपको Malcom/networking/tlsproxy/keys में कुछ कुंजियाँ उत्पन्न करने की आवश्यकता है। यह कैसे करें, इस पर अधिक जानकारी के लिए वहाँ KEYS.md फ़ाइल देखें।
सुनिश्चित करें कि आपके पास IPtables (आपके पास पहले से होना चाहिए) और इसके साथ कुछ पोर्ट फ़ॉरवर्डिंग करने की अनुमतियाँ हैं (इसके लिए आमतौर पर आपको रूट होने की आवश्यकता होती है)।
आप इसके लिए सुविधाजनक forward_port.sh स्क्रिप्ट का उपयोग कर सकते हैं। उदाहरण के लिए, पोर्ट 443 की ओर सभी TLS संचार को इंटरसेप्ट करने के लिए, forward_port.sh 443 9999 का उपयोग करें। फिर आपको malcom को पोर्ट 9999 पर एक इंटरसेप्शन प्रॉक्सी चलाने के लिए कहना होगा।
भविष्य के रिलीज़ में इस प्रक्रिया को स्वचालित करने की अपेक्षा करें।
Malcom को Ubuntu Server 14.04 LTS VM पर डिज़ाइन और परीक्षण किया गया था।
यदि आप मैलवेयर विश्लेषण करने के आदी हैं, तो आपके पास शायद पहले से ही होस्ट OS पर ढेरों वर्चुअल मशीनें चल रही हैं। बस एक नए VM पर Malcom स्थापित करें, और अपने अन्य VM के कनेक्शन को Malcom के माध्यम से रूट करें। Malcom चलाने वाले VM पर रूटिंग / NATing सक्रिय करने के लिए enable_routing.sh का उपयोग करें। आपको गेस्ट OS में एक अतिरिक्त नेटवर्क कार्ड जोड़ने की आवश्यकता होगी।
जब तक इसे लेयर-3 नेटवर्क डेटा मिल रहा है, Malcom को कहीं भी तैनात किया जा सकता है। हालाँकि उच्च-उपलब्धता नेटवर्क पर इसका उपयोग करने की अनुशंसा नहीं की जाती है (इसे तेज़ होने के लिए डिज़ाइन नहीं किया गया था, अस्वीकरण देखें), आप इसे अपने स्विच के मिरर पोर्ट के अंत में या अपने गेटवे पर चला सकते हैं।
Malcom का एक इंस्टेंस लॉन्च करने के लिए जो केवल फीड से जानकारी प्राप्त करता है, Malcom को --feeds विकल्प के साथ चलाएँ या कॉन्फ़िगरेशन फ़ाइल को ट्वीक करें।
आपका डेटाबेस स्वचालित रूप से पॉप्युलेट होना चाहिए। यदि आप कोड में खुदाई कर सकते हैं, तो फीड जोड़ना काफी सीधा है (यह मानते हुए कि आप Evil ऑब्जेक्ट उत्पन्न कर रहे हैं)। आप /feeds/zeustracker में एक उदाहरण फीड पा सकते हैं। एक अधिक विस्तृत ट्यूटोरियल यहाँ उपलब्ध है।
आप फीड चलाने के लिए celery का भी उपयोग कर सकते हैं। सुनिश्चित करें कि celery आपके virtualenv से $ pip install celery चलाकर स्थापित है। फिर आप 12 समकालिक कर्मचारियों के साथ फीडिंग प्रक्रिया लॉन्च करने के लिए celery worker -E --config=celeryconfig --loglevel=DEBUG --concurrency=12 का उपयोग कर सकते हैं।
Malcom ज्यादातर स्क्रैच से, पायथन में लिखा गया था। यह काम करने के लिए निम्नलिखित फ्रेमवर्क का उपयोग करता है:
सहयोग - मुख्य दिशा जो मैं इस उपकरण को लेना चाहता हूँ वह सहयोगी बनना है। इसके लिए मेरे पास कुछ विचार हैं, और मुझे लगता है कि डेटा साझाकरण लागू होने के बाद यह 100x अधिक उपयोगी हो जाएगा।
विस्तारशीलता - दूसरी चीज़ जो मैं उपकरण में शामिल करना चाहता हूँ वह है इसे और अधिक आसानी से विस्तारित करने की क्षमता। मेरी आवश्यकताएँ सभी के समान नहीं हैं, और यह उपकरण मेरी आवश्यकताओं को ध्यान में रखते हुए बनाया गया था। अब आप नए फीड जोड़कर Malcom को अनुकूलित कर सकते हैं।
एक बार सहयोग और विस्तार चालू हो जाने के बाद, मुझे लगता है कि यह बाहर के एक से अधिक घटना प्रतिक्रियाकर्ताओं के लिए सहायक होगा। :-)
यह उपकरण मेरे खाली समय में कोडित किया गया था। बड़ी संख्या में उपकरणों की तरह जिन्हें हम प्रतिदिन डाउनलोड और उपयोग करते हैं, मैं इसे उत्पादन वातावरण में उपयोग करने की अनुशंसा नहीं करूँगा जहाँ डेटा स्थिरता और विश्वसनीयता अनिवार्य है।
यह विकास के शुरुआती चरणों में है, जिसका अर्थ है "यह मेरे लिए काम करता है"। आप इसे साझा करने, इसे बेहतर बनाने, पुल अनुरोधों के लिए पूछने के लिए स्वतंत्र हैं।
Malcom - मैलवेयर संचार विश्लेषक कॉपीराइट (C) 2013 Thomas Chopitea
यह प्रोग्राम मुफ़्त सॉफ़्टवेयर है: आप इसे पुनर्वितरित और/या संशोधित कर सकते हैं GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत जैसा कि फ्री सॉफ़्टवेयर फाउंडेशन द्वारा प्रकाशित किया गया है, या तो लाइसेंस का संस्करण 3, या (आपके विकल्प पर) कोई बाद का संस्करण।
यह प्रोग्राम इस उम्मीद में वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; यहां तक कि व्यापारिकता की निहित वारंटी या किसी विशेष उद्देश्य के लिए उपयुक्तता के बिना। अधिक जानकारी के लिए GNU जनरल पब्लिक लाइसेंस देखें।
आपको इस प्रोग्राम के साथ GNU जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त होनी चाहिए थी। यदि नहीं, तो http://www.gnu.org/licenses/ देखें।
कृपया ध्यान दें कि Redis, MongoDB, d3js, Maximind और Bootstrap (और Malcom में शामिल अन्य तृतीय-पक्ष लाइब्रेरी) के अपने GPL संगत लाइसेंस हो सकते हैं।
requirements.txt $ cd ../malcom
$ pip install -r requirements.txt
IP भू-स्थान के काम करने के लिए, आपको Maxmind डेटाबेस डाउनलोड करना होगा और फ़ाइल को malcom/Malcom/auxiliary/geoIP निर्देशिका में निकालना होगा। आप निम्नलिखित लिंक से Maxmind का मुफ़्त (और इस प्रकार कमोबेश सटीक) डेटाबेस प्राप्त कर सकते हैं: http://dev.maxmind.com/geoip/geoip2/geolite2/:
$ cd Malcom/auxiliary/geoIP
$ wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
$ gunzip -d GeoLite2-City.mmdb.gz
$ mv GeoLite2-City.mmdb GeoIP2-City.mmdb
वेबसर्वर को malcom निर्देशिका से ./malcom.py का उपयोग करके लॉन्च करें। सुनने के इंटरफ़ेस और पोर्ट के लिए ./malcom.py --help देखें।
malcom.conf.example फ़ाइल को malcom.conf पर कॉपी कर सकते हैं और ./malcom.py -c malcom.conf चला सकते हैं