
Marco de simulación de botnets
BSF proporciona un entorno de simulación discreta para implementar y extender botnets peer-to-peer, ajustar sus configuraciones y permitir a los defensores evaluar medidas de monitoreo y contramedidas.
En la carrera armamentista entre botmasters y defensores, los botmasters tienen la ventaja, ya que los defensores deben reaccionar a las acciones y nuevas amenazas introducidas por los botmasters. El Marco de Simulación de Botnets (BSF) aborda este problema nivelando el campo de juego. Permite a los defensores adelantarse en la carrera armamentista mediante el desarrollo y evaluación de nuevas técnicas de monitoreo de botnets y contramedidas. Esto es crucial, ya que experimentar en la naturaleza interferiría con otros investigadores y posiblemente alertaría a los botmasters.
BSF permite la simulación realista de botnets peer-to-peer para explorar y estudiar el diseño y el impacto de los mecanismos de monitoreo y los intentos de desmantelamiento antes de ser desplegados en la naturaleza. BSF es un simulador de botnets de eventos discretos que proporciona un conjunto de características de botnets altamente configurables (y personalizables) que incluyen:
Además, BSF proporciona un módulo de visualización interactiva para estudiar más a fondo el resultado de una simulación. BSF está dirigido a permitir a investigadores y defensores estudiar el diseño de los diferentes mecanismos de monitoreo en presencia de mecanismos anti-monitoreo [1,2,3]. Además, esta herramienta permite a los usuarios explorar y comprender el impacto de las elecciones de diseño de las botnets vistas hasta la fecha.
BSF consta de un framework de simulación y una herramienta de visualización. El framework de simulación en sí está construido sobre OMNeT++. La visualización está construida sobre Dash para proporcionar una experiencia interactiva dentro de su navegador favorito.
La versión actual de BSF está construida y probada con OMNeT++ versión 5.4.1.
Consulte la documentación de OMNeT++ para obtener guías de instalación, tutoriales y referencias sobre las funcionalidades proporcionadas.
Para visualizar las simulaciones de botnets, se requieren los siguientes paquetes de Python:
pip install dash==1.2.0 # El backend principal de Dash
pip install dash-daq==0.1.0 # Componentes DAQ (¡recién liberados como código abierto!)
pip install networkx
pip install natsort
pip install numpy
Las simulaciones de OMNeT++ se basan en configuraciones definidas en archivos .ini. La carpeta de simulaciones de este repositorio contiene un conjunto de configuraciones predefinidas ubicadas en los archivos tests.ini y sample.ini.
Para ejecutar una configuración, puede usar el IDE de OMNeT++ o la línea de comandos. Como BSF no utiliza ninguna de las características gráficas de OMNeT++, recomendamos ejecutar todas las simulaciones en cmdenv, es decir, usando solo la salida de consola.
Para ejecutar una simulación dentro del IDE, debe configurar una configuración de ejecución. Para ello, haga clic derecho en el archivo *.ini y seleccione Run As -> Run Configurations. A continuación, configure su archivo de configuración como se muestra en la imagen a continuación:

Ahora simplemente presione Apply y Run. La salida de la simulación aparecerá en la consola del IDE.
Para ejecutar desde la línea de comandos, primero debemos compilar el proyecto. Navegue a la carpeta raíz y ejecute:
make MODE=release all
Después, navegue a la carpeta simulations y ejecute:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
Independientemente de si ejecuta la simulación desde el IDE o la línea de comandos, debería ver una salida similar a esta:
** 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
Los bloques que comienzan con ** son salidas estándar de OMNeT++ que indican el progreso y las estadísticas de la simulación. En la configuración seleccionada, tenemos salidas adicionales del crawler que informan el número de nodos descubiertos en cada intervalo de rastreo. Si bien esto no nos dice mucho, mostraremos en la siguiente sección cómo puede visualizar la salida tanto de la botnet como de los resultados del crawler.
La visualización está desacoplada del framework de simulación y funciona sobre los archivos de registro de gráficos y monitoreo generados. También hemos subido algunos datos de muestra para explorar las visualizaciones sin ejecutar el framework principal.
Para visualizar los resultados de las simulaciones, debe navegar a la carpeta visualization y ejecutar app.py. Después, abra su navegador favorito y abra http://127.0.0.1:8050/. Esto debería proporcionarle una vista gráfica de una de las configuraciones de muestra que se ve algo así:

El menú desplegable en la esquina superior derecha de la pantalla le permite elegir entre los resultados de diferentes configuraciones. En la parte inferior de la pantalla puede ver una línea de tiempo que indica todas las instantáneas disponibles de la botnet. Esto permite visualizar cambios en la actividad y conectividad de los bots. Además, el menú de la derecha permite visualizar la información recolectada por los crawlers o sensores. Un ejemplo se puede ver en la siguiente figura, donde la vista del crawler está resaltada en verde.

Además, actualmente estamos trabajando en visualizaciones más avanzadas que ayuden al análisis de operaciones de monitoreo y desmantelamiento.
Las siguientes publicaciones presentan ejemplos de los casos de uso de BSF:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah