
Framework de simulation de botnet
BSF fournit un environnement de simulation discrète pour implémenter et étendre des botnets pair-à-pair, modifier leurs paramètres et permettre aux défenseurs d'évaluer la surveillance et les contre-mesures.
Dans la course aux armements entre les botmasters et les défenseurs, les botmasters ont l'avantage, car les défenseurs doivent réagir aux actions et aux nouvelles menaces introduites par les botmasters. Le Botnet Simulation Framework (BSF) répond à ce problème en équilibrant les forces. Il permet aux défenseurs de prendre de l'avance dans cette course en développant et en évaluant de nouvelles techniques de surveillance et contre-mesures. Ceci est crucial, car expérimenter dans la nature interférerait avec d'autres chercheurs et pourrait alerter les botmasters.
BSF permet une simulation réaliste des botnets pair-à-pair pour explorer et étudier la conception et l'impact des mécanismes de surveillance et des tentatives de démantèlement avant leur déploiement sur le terrain. BSF est un simulateur de botnets à événements discrets qui fournit un ensemble de fonctionnalités de botnet hautement configurables (et personnalisables), notamment :
De plus, BSF propose un module de visualisation interactif pour étudier plus en détail les résultats d'une simulation. BSF vise à permettre aux chercheurs et aux défenseurs d'étudier la conception des différents mécanismes de surveillance en présence de mécanismes anti-surveillance [1,2,3]. En outre, cet outil permet aux utilisateurs d'explorer et de comprendre l'impact des choix de conception des botnets observés à ce jour.
BSF se compose du framework de simulation et d'un outil de visualisation. Le framework de simulation lui-même est construit sur OMNeT++. La visualisation est construite sur Dash pour offrir une interaction dans votre navigateur préféré.
La version actuelle de BSF est construite et testée avec OMNeT++ version 5.4.1.
Veuillez vous référer à la documentation OMNeT++ pour les instructions d'installation, les tutoriels et les références concernant les fonctionnalités fournies.
Pour visualiser les simulations de botnets, les paquets python suivants sont requis :
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
Les simulations OMNeT++ sont basées sur des configurations définies dans des fichiers .ini. Le dossier simulations de ce dépôt contient un ensemble de configurations prédéfinies situées dans les fichiers tests.ini et sample.ini.
Pour exécuter une configuration, vous pouvez utiliser soit l'IDE OMNeT++, soit la ligne de commande. Comme BSF n'utilise aucune des fonctionnalités graphiques d'OMNeT++, nous recommandons d'exécuter toutes les simulations dans cmdenv, c'est-à-dire en utilisant uniquement la sortie console.
Pour exécuter une simulation dans l'IDE, vous devez configurer une configuration d'exécution. Pour cela, faites un clic droit sur le fichier *.ini et sélectionnez Run As -> Run Configurations. Ensuite, configurez votre fichier de configuration comme indiqué dans l'image ci-dessous :

Maintenant, cliquez simplement sur Apply puis Run. La sortie de la simulation apparaîtra dans la console de l'IDE.
Pour exécuter depuis la ligne de commande, nous devons d'abord compiler le projet. Accédez au dossier racine et exécutez :
make MODE=release all
Ensuite, accédez au dossier simulations et exécutez :
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Que vous exécutiez la simulation depuis l'IDE ou la ligne de commande, vous devriez voir une sortie similaire à celle-ci :
** 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
Les blocs commençant par ** sont des sorties standard d'OMNeT++ indiquant la progression et les statistiques de la simulation. Dans la configuration sélectionnée, nous avons des sorties supplémentaires du crawler rapportant le nombre de nœuds découverts à chaque intervalle de crawling. Bien que cela ne nous en apprenne pas beaucoup, nous montrerons dans la section suivante comment visualiser la sortie du botnet et les résultats du crawler.
La visualisation est découplée du framework de simulation et fonctionne à partir des fichiers de log du graphe et de la surveillance générés. Nous avons également téléchargé quelques exemples de données pour explorer les visualisations sans exécuter le framework principal.
Pour visualiser les résultats des simulations, vous devez naviguer vers le dossier visualization et appeler app.py. Ensuite, ouvrez votre navigateur préféré et accédez à http://127.0.0.1:8050/. Cela devrait vous fournir une vue graphique de l'une des configurations d'exemple ressemblant à ceci :

Le menu déroulant en haut à droite de l'écran vous permet de choisir entre les résultats de différentes configurations. En bas de l'écran, vous pouvez voir une chronologie indiquant tous les instantanés disponibles du botnet. Cela permet de visualiser les changements dans l'activité et la connectivité des bots. De plus, le menu à droite permet de visualiser les informations collectées par les crawlers ou les capteurs. Un exemple peut être vu dans la figure suivante, où la vue du crawler est mise en évidence en vert.

De plus, nous travaillons actuellement sur des visualisations plus avancées pour faciliter l'analyse des opérations de surveillance et de démantèlement.
Les publications suivantes présentent des exemples de cas d'utilisation de BSF :
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah