BSF Botnet Simulation Framework
BSF Botnet Simulation Framework

BSF: Marco de Simulación de Botnets

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 networkx

Comenzando

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.

Running Simulations BSF
Running Simulations BSF

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.ini

Salida 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.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 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:

Visualizing Botnet
Visualizing Botnet

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.

Botnet Visualization Crawler
Botnet Visualization Crawler

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:

[1] Leon Böck, Emmanouil Vasilomanolakis, Jan Helge Wolf, Max Mühlhäuser: Autonomously detecting sensors in fully distributed botnets. Computers & Security 83: 1-13 (2019)

[2] Leon Böck, Emmanouil Vasilomanolakis, Max Mühlhäuser, Shankar Karuppayah: Next Generation P2P Botnets: Monitoring Under Adverse Conditions. RAID 2018: 511-531

[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah

Ver código fuente

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda