El Marco de Simulación de Botnets (BSF) proporciona un entorno de simulación discreta para implementar y ampliar botnets peer-to-peer, ajustar su configuración y permitir que los defensores evalúen los mecanismos de monitoreo y las contramedidas.
Sinopsis
En la carrera armamentista entre los botmasters y los defensores, los botmasters tienen la ventaja, ya que los defensores deben reaccionar a las acciones y las nuevas amenazas que introducen 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 desarrollando y evaluando nuevas técnicas de monitoreo de botnets y contramedidas. Esto es crucial, ya que experimentar en la naturaleza interferirá con otros investigadores y posiblemente alertará 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 e intentos de desactivación antes de implementarlos 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:
- Comportamiento de rotación realista
- Comportamiento de bot variable
- Mecanismos de monitoreo (rastreadores y sensores)
- Mecanismos anti-monitoreo
Además, BSF proporciona un módulo de visualización interactiva para estudiar más a fondo el resultado de una simulación. BSF tiene como objetivo permitir que los investigadores y defensores estudien el diseño de los diferentes mecanismos de monitoreo en presencia de mecanismos anti-monitoreo. Además, esta herramienta permite a los usuarios explorar y comprender el impacto de las opciones de diseño de las botnets observadas hasta la fecha.
Instalación
BSF consta del marco de simulación y una herramienta de visualización. El marco de simulación en sí se basa en OMNeT++. La visualización se basa en Dash para proporcionar una interfaz interactiva en tu navegador favorito.
Configurando OMNeT++
La versión actual de BSF está construida y probada con OMNeT++ versión 5.4.1.
Consulta la documentación de OMNeT++ para obtener instrucciones de instalación, tutoriales y referencias sobre las funcionalidades proporcionadas.
Configurando los componentes de visualización
Para visualizar las simulaciones de botnets, se requieren los siguientes paquetes de 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 networkxComenzando
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, puedes usar el IDE de OMNeT++ o la línea de comandos. Como BSF no utiliza ninguna de las funciones gráficas de OMNeT++, se recomienda ejecutar todas las simulaciones en cmdenv, es decir, utilizando solo la salida de la consola.
Ejecutando simulaciones dentro del IDE
Para ejecutar una simulación dentro del IDE, debes configurar una configuración de ejecución. Para ello, haz clic derecho en el archivo *.ini y selecciona Ejecutar como -> Configuraciones de ejecución. A continuación, configura tu archivo de configuración como se muestra en la imagen siguiente.

Ahora simplemente presiona aplicar y ejecutar. La salida de la simulación aparecerá en la consola del IDE.
Ejecutando simulaciones desde la línea de comandos
Para ejecutar desde la línea de comandos, primero debemos construir el proyecto. Navega a la carpeta raíz y ejecuta:
make MODE=release all Después, navega a la carpeta de simulaciones y ejecuta:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.iniSalida de la simulación
Independientemente de si ejecutas la simulación desde el IDE o desde la línea de comandos, deberías 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.25891616358Los 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 rastreador que informan sobre el número de nodos descubiertos en cada intervalo de rastreo. Si bien esto no nos dice mucho, en la siguiente sección mostraremos cómo puedes visualizar la salida tanto de la botnet como los resultados del rastreador.
Visualizando resultados
La visualización está desacoplada del marco 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 marco principal.
Para visualizar los resultados de las simulaciones, debes navegar a la carpeta de visualización y llamar a app.py. Después, abre tu navegador favorito y abre http://127.0.0.1:8050/. Esto debería proporcionarte una vista gráfica de una de las configuraciones de muestra que se parece a esto:

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

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


