
कोसा नोस्ट्रा, एक FOSS ग्राफ-आधारित मालवेयर क्लस्टरीकरण टूलकिट।
Cosa Nostra एक ओपन सोर्स सॉफ्टवेयर क्लस्टरिंग टूलकिट है जो मैलवेयर विश्लेषण पर केंद्रित है। यह बाइनरी मैलवेयर नमूनों के फाइलोजेनेटिक पेड़ बना सकता है जो संरचनात्मक रूप से समान होते हैं। इसे मूल रूप से SyScan360 Shanghai (2016) के दौरान जारी किया गया था।
मैं मूल रूप से इसे 2016 से अपने एकमात्र उपयोगकर्ता के लिए बनाए रखता हूं, जो संयोग से एक मित्र है... खैर।
Cosa Nostra का उपयोग करने के लिए आपको Python 3.X का एक संस्करण और कोड विश्लेषण करने के लिए निम्नलिखित में से एक टूल की आवश्यकता होगी:
एक बार जब आप ऊपर बताए गए किसी भी टूल को स्थापित कर लेते हैं, तो आपको मैलवेयर नमूनों का विश्लेषण करने के लिए उपयुक्त बैच टूल का उपयोग करना होगा, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
$ cd $COSA_NOSTRA_DIR
$ /path/to/ida64 -B -A -S/full/path/to/ida_batch.py example.exe
या
$ cd $COSA_NOSTRA_DIR
$ python r2_batch.py example.exe
एक मैलवेयर डेटासेट का विश्लेषण करने का सबसे आसान तरीका है कि निम्नलिखित उदाहरण जैसा एक कमांड चलाया जाए:
$ find /your/malware/dataset/path -type f -exec python r2_batch.py {} ';'
इसे 'GNU Parallel' टूल का उपयोग करके समानांतर में किया जा सकता है, जैसा कि निम्नलिखित उदाहरण में है:
$ find /your/malware/dataset/path -type f | parallel -j 8 ida64 -B -A -S/path/to/ida_batch.py {}
उपरोक्त उदाहरण में, यह कुल 8 pyew_batch प्रक्रियाओं को समानांतर में लॉन्च करेगा।
मैलवेयर नमूनों के विश्लेषण के बाद, यदि विश्लेषण सफल रहा, तो प्रत्येक नमूने के लिए कॉल ग्राफ डेटा डिफ़ॉल्ट रूप से एक SQLite डेटाबेस में संग्रहीत किया जाएगा जिसका नाम 'db.sqlite' है। आप डेटाबेस का नाम, पथ, डेटाबेस सिस्टम आदि को $COSA_NOSTRA_DIR/ फ़ाइल को संपादित करके कॉन्फ़िगर कर सकते हैं, जैसा कि नीचे दिखाया गया है:
$ cat config.cfg
########################################################################
# Configuration for SQLite3
########################################################################
[database]
dbn=sqlite
# Database name
db=db.sqlite
यदि आप, मान लीजिए, MySQL डेटाबेस सिस्टम का उपयोग करना पसंद करते हैं, तो आप इसे config.cfg में अपने सेटअप के लिए उपयुक्त मानों के साथ निम्नलिखित कॉन्फ़िगरेशन अनुभाग डालकर कॉन्फ़िगर कर सकते हैं:
########################################################################
# Example configuration for MySQL
########################################################################
[database]
dbn=mysql
# Database hostname or IP address
host=localhost
# Database name
db=db_name
# Database username
user=username
# Database password
pw=password
यह वह चरण है जिसमें अधिक समय लगेगा। एक बार जब आप अपने डेटासेट के सभी मैलवेयर नमूनों का विश्लेषण कर लेते हैं और कॉल ग्राफ सिग्नेचर, संबंधित अभाज्य संख्याएं आदि की गणना कर ली जाती है और डेटाबेस में संग्रहीत कर ली जाती हैं, तो अगला कदम क्लस्टर खोजना है। इसके लिए उपकरण को 'cn_clusterer.py' कहा जाता है। यह विश्लेषित नमूनों के लिए कॉल ग्राफ सिग्नेचर निकालने के लिए उसी डेटाबेस कॉन्फ़िगरेशन फ़ाइल ($COSA_NOSTRA_DIR/config.cfg) का उपयोग करेगा। इसे चलाना उतना ही सरल है जितना कि निम्नलिखित करना:
$ cd $COSA_NOSTRA_DIR
$ ./cn_clusterer.py
(...)
Calculating difference matrix for 2357, iteration 5540280 out of 7507600 (4858784 matches, 600144 cache misses)
Calculating difference matrix for 2354, iteration 5543020 out of 7507600 (4861293 matches, 600373 cache misses)
Calculating difference matrix for 471, iteration 5545760 out of 7507600 (4863903 matches, 600373 cache misses)
(...)
Making tree for group with 59 sample(s), iteration 0 out of 256
Making tree for group with 393 sample(s), iteration 1 out of 256
Making tree for group with 1347 sample(s), iteration 2 out of 256
(...)
[Wed Nov 2 13:37:12 2016 2830:140561185462080] Creating unnamed cluster...
[Wed Nov 2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Skylock-4'...
[Wed Nov 2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Downloader.133181-1'...
[Wed Nov 2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Agent-1213378'...
[Wed Nov 2 13:37:13 2016 2830:140561185462080] Done processing phylogenetic trees!
[Wed Nov 2 13:37:13 2016 2830:140561185462080] Done
जब प्रक्रिया समाप्त हो जाती है, तो निर्दिष्ट डेटाबेस में विश्लेषित मैलवेयर नमूनों को समूहित करने वाले क्लस्टर बनाए जाएंगे।
अंतिम चरण web.py आधारित वेब एप्लिकेशन लॉन्च करना और लॉग इन करना है:
$ cd $COSA_NOSTRA_DIR
$ python cosa_nostra.py [optional port to listen to]
http://0.0.0.0:YOURPORT/
फिर, एक ब्राउज़र खोलें और cosa_nostra.py द्वारा मुद्रित पते पर जाएं। एक लॉगिन फॉर्म दिखाई देगा जिसमें उपयोगकर्ता नाम और पासवर्ड मांगा जाएगा। डिफ़ॉल्ट रूप से, यह 'admin/cosanostra' है। आप इसे $COSA_NOSTRA_DIR/config.py फ़ाइल में बदल सकते हैं:
$ cat config.py
#!/usr/bin/env python
#-----------------------------------------------------------------------
# Configuration for Cosa Nostra
#-----------------------------------------------------------------------
DEBUG=False
CN_USER="admin"
# SHA1 hash of the password "cosanostra", change to the SHA1 hash of
# whatever password you prefer.
CN_PASS="048920dedfe36c112d74dc8108abb4db5185a918"
(...)
एक बार लॉग इन करने के बाद, आप बाएं पैनल से निम्नलिखित विकल्पों में से एक चुन सकते हैं:
'क्लस्टर' दृश्य में, कोई भिन्न क्लस्टर चुन सकता है और खोजे गए मैलवेयर परिवार का एक पदानुक्रमित ग्राफ देख सकता है।
Cosa Nostra में दिखाए गए क्लस्टरों की सूची:

Trojan.Backspace-1 का एक छोटा क्लस्टर (ClamAV द्वारा नाम):

MiniDukes का एक छोटा क्लस्टर:

Kazy/Bifroses का एक क्लस्टर:

FannyWorms के वास्तव में बड़े क्लस्टर का एक छोटा हिस्सा:
