BoNeSi: simular una botnet para pruebas DDoS

BoNeSi es una herramienta para simular el tráfico de una Botnet con el objetivo de estudiar el efecto de los ataques DDoS.

¿Qué tráfico puede generar? Pues BoNeSi genera ataques de flooding ICMP, UDP y TCP (HTTP) simulando ser una botnet de un tamaño definido (diferentes direcciones IP). BoNeSi es altamente configurable y se pueden configurar distintos ratios, volumen de datos, direcciones IP de origen, URL y otros parámetros.

¿Qué lo hace diferente de otras herramientas? Existen muchas otras herramientas para falsificar direcciones IP con UDP e ICMP, pero para TCP no existe una solución. BoNeSi es la primera herramienta para simular floods HTTP-GET de redes de bots a gran escala. BoNeSi también trata de evitar generar paquetes con patrones fáciles de identificar (que se pueden filtrar fácilmente).

¿Dónde se puede ejecutar BoNeSi? Hasta su autor, Markus Goldstein, recomienda encarecidamente ejecutar BoNeSi en un entorno de prueba cerrado. Sin embargo, los ataques UDP e ICMP también pueden ejecutarse en Internet, pero se debe tener cuidado. Los ataques HTTP-Flooding no se pueden simular en Internet, porque las respuestas del servidor web deben enrutarse al host que ejecuta BoNeSi.

¿Cómo funciona TCP Spoofing? BoNeSi busca paquetes TCP en la interfaz de red y responde a todos los paquetes para establecer conexiones TCP. Para esta función, es necesario que todo el tráfico del servidor web de destino se enrute de nuevo al host que ejecuta BoNeSi

¿Qué tan bueno es el rendimiento de BoNeSi? Se centran mucho en el rendimiento para simular grandes botnets. En un AMD Opteron con 2Ghz pudieron generar hasta 150.000 paquetes por segundo. En un AMD Phenom II X6 1100T más reciente con 3,3 Ghz, puede generar 300.000 pps (que se ejecutan en 2 cores).

¿Son exitosos los ataques BoNeSi? Sí, son muy exitosos. Los ataques UDP/ICMP pueden saturar fácilmente el ancho de banda y los ataques HTTP-Flooding tiran rápidamente los servidores web. También probaron BoNeSi contra sistemas de mitigación DDoS comerciales de última generación y pudieron bloquearlos u ocultar el ataque para que no fuera detectado.

Detalle técnico

BoNeSi es un generador de tráfico de red para diferentes tipos de protocolos. Los atributos de los paquetes y conexiones creadas pueden controlarse mediante varios parámetros, como la velocidad de envío o el tamaño del payload, o se determinan aleatoriamente. Falsifica las direcciones IP de origen incluso al generar tráfico TCP. Por lo tanto, incluye una simple tcp-stack para manejar las conexiones tcp en modo promiscuo. Para que funcione correctamente hay que asegurarse de que los paquetes de respuesta se enruten al host en el que se ejecuta BoNeSi. El tipo de tráfico más avanzado qu puede generar son las peticiones http.

TCP/HTTP 

Para que las peticiones http sean más realistas, varias cosas se determinan aleatoriamente:

- Puerto de origen
- ttl: 3..255
- Opciones tcp: siete opciones diferentes realistas con diferentes longitudes y probabilidades
- Agente de usuario para el encabezado http: fuera de una lista dada por archivo (se incluye un archivo de ejemplo)

Instalación
:~$ ./configure 
:~$ make
:~$ make install

Uso
:~$ bonesi [OPTION...] <dst_ip:port>

 Options:

  -i, --ips=FILENAME               filename with ip list
  -p, --protocol=PROTO             udp (default), icmp or tcp
  -r, --send_rate=NUM              packets per second, 0 = infinite (default)
  -s, --payload_size=SIZE          size of the paylod, (default: 32)
  -o, --stats_file=FILENAME        filename for the statistics, (default: 'stats')
  -c, --max_packets=NUM            maximum number of packets (requests at tcp/http), 0 = infinite (default)
      --integer                    IPs are integers in host byte order instead of in dotted notation
  -t, --max_bots=NUM               determine max_bots in the 24bit prefix randomly (1-256)
  -u, --url=URL                    the url (default: '/') (only for tcp/http)
  -l, --url_list=FILENAME          filename with url list (only for tcp/http)
  -b, --useragent_list=FILENAME    filename with useragent list (only for tcp/http)
  -d, --device=DEVICE              network listening device (only for tcp/http, e.g. eth1)
  -m, --mtu=NUM                    set MTU, (default 1500). Currently only when using TCP.
  -f, --frag=NUM                   set fragmentation mode (0=IP, 1=TCP, default: 0). Currently only when using TCP.
  -v, --verbose                    print additional debug messages
  -h, --help                       print help message and exit

Archivos de ejemplo incluidos adicionalmente

- 50k-bots: 50.000 direcciones IP generadas al azar para usar con la opción --ips
- browserlist.txt: varias identificaciones de navegador para usar con la opción --useragentlist
- urllist.txt: varias urls para usar con la opción --urllist

Repositoriohttps://github.com/Markus-Go/bonesi

Comentarios

  1. que quiere decir decir "simular una botnet?". Lo que yo entiendo es una herramienta estilo mirai, no?.
    corregirme por favor

    ResponderEliminar
    Respuestas
    1. Atendiendo a tu petición, se dice 'corregidme' xD

      Eliminar
  2. Realmente se dice "Corregidme, por favor". Mayúscula después de punto y aparte y coma para la pausa xDDD

    ResponderEliminar

Publicar un comentario