
Cosa Nostra — свободный инструментарий (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
########################################################################
# Конфигурация для SQLite3
########################################################################
[database]
dbn=sqlite
# Имя базы данных
db=db.sqlite
Если вы предпочитаете использовать, скажем, систему баз данных MySQL, вы можете настроить её в файле config.cfg, поместив следующие разделы конфигурации с подходящими для вашей установки значениями:
########################################################################
# Пример конфигурации для MySQL
########################################################################
[database]
dbn=mysql
# Имя хоста или IP-адрес базы данных
host=localhost
# Имя базы данных
db=db_name
# Имя пользователя базы данных
user=username
# Пароль базы данных
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
#-----------------------------------------------------------------------
# Конфигурация для Cosa Nostra
#-----------------------------------------------------------------------
DEBUG=False
CN_USER="admin"
# SHA1-хэш пароля "cosanostra", измените на SHA1-хэш
# любого предпочитаемого вами пароля.
CN_PASS="048920dedfe36c112d74dc8108abb4db5185a918"
(...)
После входа в систему вы можете выбрать на левой панели один из следующих параметров:
В представлении «Clusters» можно выбирать разные кластеры и просматривать иерархический граф обнаруженного семейства вредоносных программ.
Список кластеров, отображаемый в Cosa Nostra:

Небольшой кластер Trojan.Backspace-1 (название по ClamAV):

Небольшой кластер MiniDukes:

Кластер Kazy/Bifroses:

Небольшая часть очень большого кластера FannyWorms:
