
Фреймворк для симуляции ботнета
BSF предоставляет дискретную среду симуляции для реализации и расширения одноранговых ботнетов, настройки их параметров и позволяет защитникам оценивать методы мониторинга и противодействия.
В гонке вооружений между ботмастерами и защитниками у ботмастеров есть преимущество, поскольку защитникам приходится реагировать на действия и новые угрозы, вводимые ботмастерами. Фреймворк для симуляции ботнетов (BSF) решает эту проблему, выравнивая игровое поле. Он позволяет защитникам опередить в гонке вооружений, разрабатывая и оценивая новые методы мониторинга ботнетов и контрмеры. Это важно, поскольку эксперименты в реальных условиях будут мешать другим исследователям и, возможно, предупредят ботмастеров.
BSF позволяет реалистично симулировать одноранговые ботнеты для изучения и исследования конструкции и влияния механизмов мониторинга и попыток ликвидации до их развертывания в реальных условиях. BSF — это дискретный симулятор ботнетов, который предоставляет набор высококонфигурируемых (и настраиваемых) функций ботнета, включая:
Более того, BSF предоставляет интерактивный модуль визуализации для дальнейшего изучения результатов симуляции. BSF нацелен на то, чтобы дать исследователям и защитникам возможность изучать конструкцию различных механизмов мониторинга в присутствии механизмов антимониторинга [1,2,3]. Кроме того, этот инструмент позволяет пользователям исследовать и понимать влияние конструктивных решений ботнетов, наблюдаемых на сегодняшний день.
BSF состоит из фреймворка симуляции и инструмента визуализации. Сам фреймворк симуляции построен на основе OMNeT++. Визуализация построена на основе Dash для обеспечения интерактивности в вашем любимом браузере.
Текущая версия BSF собрана и протестирована с OMNeT++ версии 5.4.1.
Пожалуйста, обратитесь к документации OMNeT++ за инструкциями по установке, учебными пособиями и справочной информацией о предоставляемых функциях.
Для визуализации симуляций ботнетов требуются следующие пакеты Python:
pip install dash==1.2.0 # The core dash backend
pip install dash-daq==0.1.0 # DAQ components (newly open-sourced!)
pip install networkx
pip install natsort
pip install numpy
Симуляции OMNeT++ основаны на конфигурациях, определенных в файлах .ini. Папка simulations этого репозитория содержит набор предопределенных конфигураций, расположенных в файлах tests.ini и sample.ini.
Для запуска конфигурации вы можете использовать либо IDE OMNeT++, либо командную строку. Поскольку BSF не использует графические возможности OMNeT++, мы рекомендуем запускать все симуляции в cmdenv, т.е. используя только вывод в консоль.
Чтобы запустить симуляцию в IDE, необходимо настроить конфигурацию запуска. Для этого щелкните правой кнопкой мыши файл *.ini и выберите Run As -> Run Configurations. Затем настройте ваш файл конфигурации, как показано на изображении ниже:

Теперь просто нажмите Apply и Run. Вывод симуляции появится в консоли IDE.
Чтобы запустить из командной строки, сначала необходимо собрать проект. Перейдите в корневую папку и выполните:
make MODE=release all
Затем перейдите в папку simulations и выполните:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Независимо от того, запускаете ли вы симуляцию из IDE или командной строки, вы должны увидеть вывод, похожий на этот:
** Event #577792 t=64831.46985369179 Elapsed: 4.21157s (0m 04s) 37% completed (37% total)
Speed: ev/sec=180486 simsec/sec=14682 ev/simsec=12.293
Messages: created: 406512 present: 2108 in FES: 487
Just crawled: 24 nodes at 88983.25891616358
Just crawled: 40 nodes at 92583.25891616358
** Event #1050880 t=93607.74036896409 Elapsed: 6.28757s (0m 06s) 54% completed (54% total)
Speed: ev/sec=227885 simsec/sec=13861.4 ev/simsec=16.4402
Messages: created: 729732 present: 2106 in FES: 630
Just crawled: 108 nodes at 96183.25891616358
Just crawled: 286 nodes at 99783.25891616358
Just crawled: 570 nodes at 103383.25891616358
Блоки, начинающиеся с **, являются стандартными выводами OMNeT++, указывающими ход выполнения и статистику симуляции. В выбранной конфигурации есть дополнительные выводы краулера, сообщающие количество узлов, обнаруженных в каждом интервале обхода. Хотя это не говорит нам о многом, в следующем разделе мы покажем, как можно визуализировать вывод как самого ботнета, так и результаты работы краулера.
Визуализация отделена от фреймворка симуляции и работает на основе сгенерированных файлов графа и журналов мониторинга. Мы также загрузили некоторые примеры данных для изучения визуализаций без запуска основного фреймворка.
Чтобы визуализировать результаты симуляций, перейдите в папку visualization и вызовите app.py. После этого откройте ваш любимый браузер и перейдите по адресу http://127.0.0.1:8050/. Это должно предоставить вам графическое представление одной из примерных конфигураций, которое будет выглядеть примерно так:

Раскрывающееся меню в правом верхнем углу экрана позволяет выбирать между результатами различных конфигураций. Внизу экрана вы можете видеть временную шкалу, показывающую все доступные снимки состояния ботнета. Это позволяет визуализировать изменения в активности и связности ботов. Кроме того, меню справа позволяет визуализировать информацию, собранную краулерами или сенсорами. Пример можно увидеть на следующем рисунке, где вид краулера выделен зеленым цветом.

Кроме того, в настоящее время мы работаем над более продвинутыми визуализациями, помогающими анализировать операции мониторинга и ликвидации.
Следующие публикации представляют примеры использования BSF:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah