
Framework di simulazione di botnet
BSF fornisce un ambiente di simulazione discreta per implementare ed estendere botnet peer-to-peer, modificarne le impostazioni e consentire ai difensori di valutare monitoraggio e contromisure.
Nella corsa agli armamenti tra botmaster e difensori, i botmaster hanno il vantaggio, poiché i difensori devono reagire alle azioni e alle nuove minacce introdotte dai botmaster. Il Botnet Simulation Framework (BSF) affronta questo problema livellando il campo di gioco. Consente ai difensori di mettersi al passo nella corsa agli armamenti sviluppando e valutando nuove tecniche di monitoraggio e contromisure per botnet. Questo è cruciale, poiché sperimentare nel mondo reale interferirebbe con altri ricercatori e potrebbe allertare i botmaster.
BSF permette una simulazione realistica di botnet peer-to-peer per esplorare e studiare il design e l'impatto dei meccanismi di monitoraggio e dei tentativi di smantellamento prima di essere implementati nel mondo reale. BSF è un simulatore di botnet a eventi discreti che offre un insieme di funzionalità altamente configurabili (e personalizzabili), tra cui:
Inoltre, BSF fornisce un modulo di visualizzazione interattiva per studiare ulteriormente il risultato di una simulazione. BSF è pensato per consentire a ricercatori e difensori di studiare il design dei diversi meccanismi di monitoraggio in presenza di meccanismi anti-monitoraggio [1,2,3]. Inoltre, questo strumento permette agli utenti di esplorare e comprendere l'impatto delle scelte progettuali delle botnet osservate fino ad oggi.
BSF è composto dal framework di simulazione e da uno strumento di visualizzazione. Il framework di simulazione stesso è costruito sopra OMNeT++. La visualizzazione è costruita sopra Dash per fornire un'interazione all'interno del tuo browser preferito.
La versione attuale di BSF è compilata e testata con OMNeT++ versione 5.4.1.
Si prega di fare riferimento alla documentazione di OMNeT++ per le linee guida di installazione, tutorial e riferimenti riguardanti le funzionalità fornite.
Per visualizzare le simulazioni delle botnet, sono richiesti i seguenti pacchetti 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
Le simulazioni OMNeT++ si basano su configurazioni definite in file .ini. La cartella simulations di questo repository contiene una serie di configurazioni predefinite situate nei file tests.ini e sample.ini.
Per eseguire una configurazione, puoi utilizzare l'IDE di OMNeT++ o la riga di comando. Poiché BSF non utilizza alcuna delle funzionalità grafiche di OMNeT++, consigliamo di eseguire tutte le simulazioni in cmdenv, cioè utilizzando solo l'output della console.
Per eseguire una simulazione nell'IDE, devi impostare una configurazione di esecuzione. Per farlo, fai clic con il pulsante destro sul file *.ini e seleziona Run As -> Run Configurations. Successivamente, imposta il tuo file di configurazione come mostrato nell'immagine seguente:

Ora premi semplicemente Apply e quindi Run. L'output della simulazione apparirà nella console dell'IDE.
Per eseguire dalla riga di comando, dobbiamo prima compilare il progetto. Naviga nella cartella principale ed esegui:
make MODE=release all
Successivamente, naviga nella cartella simulations ed esegui:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Indipendentemente dal fatto che tu esegua la simulazione dall'IDE o dalla riga di comando, dovresti vedere un output simile a questo:
** 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
I blocchi che iniziano con ** sono output standard di OMNeT++ che indicano l'avanzamento e le statistiche della simulazione. Nella configurazione selezionata, abbiamo output aggiuntivi da parte del crawler che riportano il numero di nodi scoperti a ogni intervallo di crawling. Sebbene questo non ci dica molto, mostreremo nella prossima sezione come visualizzare l'output sia della botnet che dei risultati del crawler.
La visualizzazione è disaccoppiata dal framework di simulazione e funziona sopra i file di log generati dal grafico e dal monitoraggio. Abbiamo anche caricato alcuni dati di esempio per esplorare le visualizzazioni senza eseguire il framework principale.
Per visualizzare i risultati delle simulazioni, devi navigare nella cartella visualization e chiamare app.py. Successivamente, apri il tuo browser preferito e apri http://127.0.0.1:8050/. Questo dovrebbe fornirti una vista grafica di una delle configurazioni di esempio che assomiglia a questa:

Il menu a discesa in alto a destra dello schermo ti permette di scegliere tra i risultati di diverse configurazioni. Nella parte inferiore dello schermo puoi vedere una timeline che indica tutti gli snapshot disponibili della botnet. Questo permette di visualizzare i cambiamenti nell'attività e nella connettività dei bot. Inoltre, il menu a destra permette di visualizzare le informazioni raccolte dai crawler o dai sensori. Un esempio può essere visto nella figura seguente, dove la vista del crawler è evidenziata in verde.

Inoltre, stiamo attualmente lavorando a visualizzazioni più avanzate che aiutano l'analisi delle operazioni di monitoraggio e smantellamento.
Le seguenti pubblicazioni presentano esempi sui casi d'uso di BSF:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah