
Botnet-Simulationsframework
BSF bietet eine diskrete Simulationsumgebung, um Peer-to-Peer-Botnets zu implementieren und zu erweitern, ihre Einstellungen anzupassen und es Verteidigern zu ermöglichen, Überwachungs- und Gegenmaßnahmen zu bewerten.
Im Wettrüsten zwischen Botmastern und Verteidigern haben die Botmaster die Oberhand, da Verteidiger auf Aktionen und neuartige Bedrohungen reagieren müssen, die von Botmastern eingeführt werden. Das Botnet Simulation Framework (BSF) adressiert dieses Problem, indem es die Wettbewerbsbedingungen ausgleicht. Es ermöglicht Verteidigern, im Wettrüsten die Nase vorn zu haben, indem sie neue Botnet-Überwachungstechniken und Gegenmaßnahmen entwickeln und bewerten. Dies ist entscheidend, da Experimente in freier Wildbahn andere Forscher stören und möglicherweise Botmaster alarmieren könnten.
BSF ermöglicht realistische Simulation von Peer-to-Peer-Botnets, um das Design und die Auswirkungen von Überwachungsmechanismen und Takedown-Versuchen zu erforschen und zu untersuchen, bevor sie in freier Wildbahn eingesetzt werden. BSF ist ein diskreter Ereignis-Botnet-Simulator, der eine Reihe von hochgradig konfigurierbaren (und anpassbaren) Botnet-Funktionen bietet, darunter:
Darüber hinaus bietet BSF ein interaktives Visualisierungsmodul, um die Ergebnisse einer Simulation weiter zu untersuchen. BSF zielt darauf ab, Forschern und Verteidigern zu ermöglichen, das Design der verschiedenen Überwachungsmechanismen in Gegenwart von Anti-Überwachungsmechanismen zu untersuchen [1,2,3]. Darüber hinaus ermöglicht dieses Tool den Benutzern, die Auswirkungen von Designentscheidungen bisheriger Botnets zu erkunden und zu verstehen.
BSF besteht aus dem Simulationsframework und einem Visualisierungstool. Das Simulationsframework selbst basiert auf OMNeT++. Die Visualisierung basiert auf Dash, um eine interaktive Darstellung in Ihrem bevorzugten Browser zu ermöglichen.
Die aktuelle Version von BSF wurde mit OMNeT++ Version 5.4.1. erstellt und getestet.
Bitte beachten Sie die OMNeT++-Dokumentation für Installationshinweise, Tutorials und Referenzen zu den bereitgestellten Funktionen.
Zur Visualisierung der Botnet-Simulationen werden die folgenden Python-Pakete benötigt:
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++-Simulationen basieren auf Konfigurationen, die in .ini-Dateien definiert sind. Der simulations-Ordner dieses Repositorys enthält eine Reihe vordefinierter Konfigurationen in den Dateien tests.ini und sample.ini.
Um eine Konfiguration auszuführen, können Sie entweder die OMNeT++-IDE oder die Befehlszeile verwenden. Da BSF keine der grafischen Funktionen von OMNeT++ nutzt, empfehlen wir, alle Simulationen in der cmdenv auszuführen, d.h. nur mit Konsolenausgabe.
Um eine Simulation in der IDE auszuführen, müssen Sie eine Ausführungskonfiguration einrichten. Klicken Sie dazu mit der rechten Maustaste auf die *.ini-Datei und wählen Sie Ausführen als -> Ausführungskonfigurationen. Richten Sie anschließend Ihre Konfigurationsdatei wie im folgenden Bild gezeigt ein:

Klicken Sie nun einfach auf Übernehmen und Ausführen. Die Ausgabe der Simulation erscheint in der IDE-Konsole.
Um über die Befehlszeile zu starten, müssen wir zunächst das Projekt erstellen. Navigieren Sie zum Stammordner und führen Sie aus:
make MODE=release all
Navigieren Sie anschließend zum simulations-Ordner und führen Sie aus:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Unabhängig davon, ob Sie die Simulation über die IDE oder die Befehlszeile ausführen, sollten Sie eine Ausgabe ähnlich der folgenden sehen:
** 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
Die Blöcke, die mit ** beginnen, sind Standardausgaben von OMNeT++, die den Fortschritt und die Statistiken der Simulation anzeigen. In der ausgewählten Konfiguration gibt es zusätzliche Ausgaben des Crawlers, die die Anzahl der in jedem Crawling-Intervall entdeckten Knoten melden. Auch wenn uns das nicht viel sagt, werden wir im nächsten Abschnitt zeigen, wie Sie die Ausgabe des Botnets und die Ergebnisse des Crawlers visualisieren können.
Die Visualisierung ist vom Simulationsframework entkoppelt und arbeitet auf Basis der generierten Graphen- und Überwachungsprotokolldateien. Wir haben auch einige Beispieldaten hochgeladen, um die Visualisierungen zu erkunden, ohne das Hauptframework ausführen zu müssen.
Um die Ergebnisse der Simulationen zu visualisieren, müssen Sie zum Ordner visualization navigieren und app.py aufrufen. Öffnen Sie anschließend Ihren bevorzugten Browser und rufen Sie http://127.0.0.1:8050/ auf. Dies sollte Ihnen eine Graphenansicht einer der Beispielkonfigurationen bieten, die etwa so aussieht:

Das Dropdown-Menü oben rechts auf dem Bildschirm ermöglicht es Ihnen, zwischen den Ergebnissen verschiedener Konfigurationen zu wählen. Unten auf dem Bildschirm sehen Sie eine Zeitleiste, die alle verfügbaren Schnappschüsse des Botnetzes anzeigt. Dies ermöglicht die Visualisierung von Änderungen in der Aktivität und Konnektivität der Bots. Darüber hinaus ermöglicht das Menü auf der rechten Seite die Visualisierung der von Crawlern oder Sensoren gesammelten Informationen. Ein Beispiel ist in der folgenden Abbildung zu sehen, in der die Ansicht des Crawlers grün hervorgehoben ist.

Darüber hinaus arbeiten wir derzeit an fortschrittlicheren Visualisierungen, die die Analyse von Überwachungs- und Takedown-Operationen unterstützen.
Die folgenden Veröffentlichungen zeigen Beispiele für die Anwendungsfälle von BSF:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah