Kit de herramientas de prueba de vulnerabilidad DoS (D) de alto rendimiento. Implementa varios vectores de ataque L4/7. El enfoque asíncrono para la creación de redes ayuda a reducir los requisitos de CPU/RAM mientras realiza interacciones de red incluso complejas.
NOTA ? El kit de herramientas no tiene las capacidades necesarias para realizar pruebas de rendimiento adecuadas de los servidores o redes de destino. El objetivo es comprender el nivel de protección mediante la realización de ataques especialmente diseñados para aprovechar los errores comunes y eludir las medidas de protección comunes.
ADVERTENCIA ❗ No pruebe la infraestructura (servidores, sitios web, dispositivos de red, etc.) sin el consentimiento del propietario. La configuración predeterminada del paquete se ajusta para evitar un gran impacto no deseado al ejecutar pruebas.
Inspirado en el proyecto MHDDoS.
De PyPI:
$ pip install fiberfox
De fuentes:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
Construya una imagen de Docker:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
Ejemplo:
$ fiberfox
--targets tcp://127.0.0.1:8080 http://127.0.0.1:8081
--concurrency 512
--rpc 1024
--strategy STRESS
--duration-seconds 3600
--proxies-config ./proxies.txt
Características:
--concurrency
(o -c
) define la cantidad de rutinas asíncronas que se ejecutarán. Fiber no crea un nuevo subproceso del sistema operativo, por lo que puedes ejecutar muchos de ellos con una sobrecarga insignificante. Para los vectores de ataque TCP, la cantidad de fibras corresponde aproximadamente a la cantidad máxima de conexiones TCP abiertas. En el caso de los ataques UDP, utilizar demasiadas fibras normalmente empeora el rendimiento.SLOW
o CONNECTIONS
), asegúrese de configurar más fibras de las que tiene objetivos.Más documentación sobre banderas:
$ python fiberfox --help
usage: fiberfox [-h] [--targets [TARGETS ...]] [--targets-config TARGETS_CONFIG] [-c CONCURRENCY] [-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}] [--rpc RPC] [--packet-size PACKET_SIZE]
[-d DURATION_SECONDS] [--proxies [PROXIES ...]] [--proxies-config PROXIES_CONFIG] [--proxy-providers-config PROXY_PROVIDERS_CONFIG] [--log-level {DEBUG,INFO,ERROR,WARN}]
[--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS]
options:
-h, --help show this help message and exit
--targets [TARGETS ...]
List of targets, separated by spaces (if many)
--targets-config TARGETS_CONFIG
File with the list of targets (target per line). Both local and remote files are supported.
-c CONCURRENCY, --concurrency CONCURRENCY
Total number of fibers (for TCP attacks means max number of open connections)
-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}, --strategy {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB,GET}
Flood strategy to utilize
--rpc RPC Number of requests to be sent to each connection
--packet-size PACKET_SIZE
Packet size (in bytes)
-d DURATION_SECONDS, --duration-seconds DURATION_SECONDS
How long to keep sending packets, in seconds
--proxies [PROXIES ...]
List of proxy servers, separated by spaces (if many)
--proxies-config PROXIES_CONFIG
File with a list of proxy servers (newline-delimited). Both local and remote files are supported.
--proxy-providers-config PROXY_PROVIDERS_CONFIG
Configuration file with proxy providers (following MHDDoS configuration file format). Both local and remote files are supported.
--reflectors-config REFLECTORS_CONFIG
File with the list of reflector servers (IP per line). Only required for amplification attacks. Both local and remote files are supported.
--log-level {DEBUG,INFO,ERROR,WARN}
Log level (defaults to INFO)
--connection-timeout-seconds CONNECTION_TIMEOUT_SECONDS
Proxy connection timeout in seconds (default: 10s)
Un vector de ataque se define mediante la opción --strategy
al ejecutar el script.
Nota: el paquete está en desarrollo activo; pronto se agregarán más métodos.
Los ataques L4 están diseñados para atacar las capas de transporte y, por lo tanto, se utilizan principalmente para sobrecargar las capacidades de la red. Requiere conocimientos mínimos del objetivo.
Estrategia | Capa | Transporte | Diseño | Notas |
---|---|---|---|---|
UDP | L4 | UDP | Inundación simple: envía paquetes UDP generados aleatoriamente al objetivo | Acelera automáticamente la fibra al recibir NO_BUFFER_AVAILABLE del dispositivo de red. Para evitar que esto suceda, no configure más de 2 fibras por objetivo cuando pruebe el ataque de inundación UDP. |
TCP | L4 | tcp | Inundación simple: envía paquetes TCP generados aleatoriamente por RPC a una conexión TCP abierta. | Admite la configuración para el tamaño de un solo paquete y la cantidad de paquetes que se enviarán a cada conexión abierta. |
CONNECTION | L4 | tcp | Abre conexiones TCP y las mantiene vivas el mayor tiempo posible. | Para ser efectivo, este tipo de ataque requiere de un mayor número de fibras de lo habitual. Tenga en cuenta que los servidores modernos son bastante buenos para manejar conexiones abiertas e inactivas. |
Una clase especial de ataques L4.
UDP es un protocolo sin conexión. No valida la dirección IP de origen a menos que la capa de aplicación realice un procesamiento explícito. Significa que un atacante puede falsificar fácilmente el datagrama para incluir una dirección IP de origen arbitraria. A menudo, el protocolo de aplicación está diseñado de manera que el paquete generado en respuesta sea mucho más grande, lo que crea un efecto de amplificación (de ahí el nombre). Al enviar dicho datagrama a muchos servidores diferentes (reflectores), el atacante puede generar un tráfico significativo hacia el dispositivo objetivo (víctima).
Ataques de amplificación implementados:
Estrategia | Protocolo | Factor de amplificación | Vulnerabilidad |
---|---|---|---|
RDP | Protocolo de escritorio remoto (RDP) | ||
CLDAP | Protocolo ligero de acceso a directorios sin conexión (CLDAP) | 56 años 70 | |
MEM | Memcached | 10.000 a 50.000 | |
CHAR | Protocolo generador de caracteres (CHARGEN) | 358,8 | Solicitud de generación de caracteres |
ARD | Escritorio remoto de Apple (ARD) | ||
NTP | Protocolo de tiempo de red (NTP) | 556,9 | TA14-013A |
DNS | Sistema de nombres de dominio (DNS) | 28 a 54 | TA13-088A |
Todos los ataques de amplificación requieren que se proporcione una lista de servidores de reflexión.
Los ataques L7 están diseñados para aprovechar las debilidades en los protocolos de la capa de aplicación o detalles de implementación específicos de las aplicaciones (o kernels del sistema operativo). Generalmente es más potente, pero puede requerir conocimientos sobre cómo funciona el sistema de destino.
Estrategia | Capa | Transporte | Diseño | Notas |
---|---|---|---|---|
GET | L7 | tcp | Envía solicitudes HTTP GET generadas aleatoriamente a través de una conexión TCP abierta | No requiere un código de respuesta HTTP 200 OK (ya que no consume ninguna respuesta). Aunque el ataque realizado contra el balanceador de carga o WAF podría no ser efectivo (en comparación con la inundación TCP L4). |
STRESS | L7 | tcp | Envía una secuencia de solicitudes HTTP con un cuerpo grande a través de una única conexión TCP abierta. | Para maximizar el rendimiento, asegúrese de que el host de destino permita la canalización (enviar una nueva solicitud dentro de una conexión persistente sin leer primero la respuesta). No requiere un código de respuesta HTTP 200 OK (ya que no consume la respuesta en absoluto). Aunque el ataque realizado contra el equilibrador de carga o WAF podría no ser efectivo (en comparación con la inundación TCP L4). |
BYPASS | L7 | tcp | Envía solicitudes de obtención HTTP a través de una conexión TCP abierta y lee la respuesta. | La lectura fragmentada se realiza mediante bytes recv de la conexión, sin analizar la respuesta HTTP. |
SLOW | L7 | tcp | De manera similar a STRESS, emite solicitudes HTTP e intenta mantener la conexión utilizada leyendo un solo byte y enviando una carga útil adicional con retrasos de tiempo entre las operaciones de envío. | Idealmente, el retraso de tiempo debe configurarse correctamente para evitar que el interlocutor restablezca la conexión debido al tiempo de espera de lectura (depende de la configuración del interlocutor). |
CFBUAM | L7 | tcp | Envía un único HTTP GET y, después de un largo retraso, emite más solicitudes a través de la misma conexión TCP. | |
AVB | L7 | tcp | Emite paquetes HTTP GET en una conexión abierta con grandes retrasos entre las operaciones de envío. Para evitar que el interlocutor restablezca la conexión debido al tiempo de espera de lectura, el retraso máximo se establece en 1 segundo. |
Al configurar un conjunto de servidores proxy, se pueden simular ataques distribuidos incluso cuando se ejecuta el kit de herramientas desde una sola máquina. Cuando hay servidores proxy disponibles, fiberfox
se conecta a ellos primero y establece conexiones con el objetivo desde esas máquinas. Al hacerlo, el sistema puede eludir las medidas de protección de bloqueo de IP más simples. El kit de herramientas admite protocolos HTTP/SOCKS4/SOCS5 y autenticación de usuario/contraseña. También gestiona dinámicamente un conjunto de servidores proxy proporcionados para evitar el uso de aquellos que no responden o no cumplen con los requisitos de ataque.
Hay algunas consideraciones al utilizar proxies que debes tener en cuenta:
El éxito del ataque realizado ahora depende en parte de la capacidad de los servidores proxy. Por ejemplo, cuando se utilizan servidores proxy públicos, la velocidad de la red puede ser baja porque el proxy está saturado. En este caso, considere utilizar infraestructura privada o grupos pagos de servidores proxy dedicados.
Los propios servidores proxy podrían mitigar algunos vectores de ataque. Por ejemplo, cuando se utiliza el enfoque de "conexión lenta", el servidor proxy podría configurarse para acelerar o cerrar la conexión. En cierto modo "protege" al objetivo al hacerlo. Tenga en cuenta cómo interviene la configuración del proxy en la mecánica del ataque (redes, protocolos, etc.).
Uno de los objetivos del conjunto de herramientas es proporcionar información de monitoreo integral para guiar la búsqueda de vulnerabilidades.
La herramienta informa una cantidad de estadísticas por cada objetivo: cantidad de paquetes, tráfico y velocidad. Para ataques basados en TCP (tanto L4 como L7), también informa un histograma de paquetes enviados dentro de una sola sesión (aquí sesión significa tráfico enviado dentro de una única conexión abierta). Idealmente, el histograma debería estar sesgado hacia el lado izquierdo. Significa que el par cierra la conexión antes de que se enviaran los paquetes de "solicitudes por conexión". Si es principalmente de derechas, el objetivo acepta lo que debería considerarse "tráfico basura".
Ojo con el análisis. Baja tasa de red, alta frecuencia de intentos de conexión, alta tasa de errores y más. Todas esas señales podrían indicar tanto el hecho de que el objetivo se mantiene fuerte frente al ataque como que ya está muerto. Para obtener una comprensión completa del nivel de protección, debe utilizar información de seguimiento en el lado objetivo (por ejemplo, capacidad para funcionar correctamente cuando se le cuestiona).
Tenga en cuenta que la tarifa de salida se muestra aproximadamente. La medición del tiempo para enviar cada paquete incluye retrasos de programación (para fibras) y selección/agrupación. En la mayoría de los casos, estos son insignificantes. Aunque tenga cuidado con el análisis cuando utilice más de 10.000 fibras.
feature-*
para comenzar a realizar tus cambios. Lanzamiento bajo licencia MIT. Consulte LICENCIA para obtener la licencia completa.
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████