
Cosa Nostra، مجموعة أدوات تجميع البرمجيات الخبيثة مفتوحة المصدر (FOSS) قائمة على الرسوم البيانية.
كوزا نوسترا هي أداة تجميع برمجيات مفتوحة المصدر تركز على تحليل البرمجيات الخبيثة. يمكنها إنشاء أشجار تطورية لعينات البرمجيات الخبيثة الثنائية المتشابهة هيكليًا. تم إصدارها لأول مرة خلال SyScan360 Shanghai (2016).
أساسًا، أحافظ عليها منذ 2016 لمستخدمي الوحيد، الذي يصادف أنه صديق... حسنًا.
لاستخدام كوزا نوسترا، ستحتاج إلى إصدار من 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"
(...)
بمجرد تسجيل الدخول، يمكنك الاختيار من اللوحة اليسرى أحد الخيارات التالية:
في عرض "المجموعات"، يمكنك اختيار مجموعات مختلفة وعرض رسم بياني هرمي لعائلة البرمجيات الخبيثة المكتشفة.
قائمة المجموعات كما تظهر في كوزا نوسترا:

مجموعة صغيرة من Trojan.Backspace-1 (الاسم حسب ClamAV):

مجموعة صغيرة من MiniDukes:

مجموعة من Kazy/Bifroses:

جزء صغير من مجموعة كبيرة جدًا من FannyWorms:
