高性能 (D)DoS 漏洞测试工具包。实现各种 L4/7 攻击向量。异步网络方法有助于降低 CPU/RAM 要求,同时执行复杂的网络交互。
笔记?该工具包不具备对目标服务器或网络进行正确性能测试所需的功能。目标是通过执行专门设计用于滥用常见陷阱并绕过常见保护措施的攻击来了解保护级别。
警告❗ 未经所有者同意,请勿测试基础设施(服务器、网站、网络设备等)。包默认设置经过调整,以避免运行测试时产生巨大的意外影响。
受到 MHDDoS 项目的启发。
来自 PyPI:
$ pip install fiberfox
来源:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install
构建 Docker 镜像:
$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .
例子:
$ 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
特征:
--concurrency
(或-c
)定义要运行的异步协程的数量。 Fiber 不会创建新的操作系统线程,因此您可以以微不足道的开销运行大量线程。对于 TCP 攻击向量,光纤数量大致对应于打开的 TCP 连接的最大数量。对于 UDP 攻击,运行过多的纤程通常会使性能变差。SLOW
或CONNECTIONS
等攻击向量时),请确保设置的光纤数量多于目标数量。有关标志的更多文档:
$ 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)
执行脚本时,攻击向量由--strategy
选项定义。
注意:该包正在积极开发中,很快就会添加更多方法。
L4 攻击旨在针对传输层,因此主要用于使网络容量过载。需要对目标有最少的了解。
战略 | 层 | 运输 | 设计 | 笔记 |
---|---|---|---|---|
UDP | L4 | UDP协议 | 简单洪水:向目标发送随机生成的UDP数据包 | 从网络设备接收到NO_BUFFER_AVAILABLE 时自动限制光纤。为了防止这种情况发生,在测试 UDP 洪水攻击时,每个目标不要配置超过 2 个光纤。 |
TCP | L4 | 传输控制协议 | 简单洪水:将 RPC 随机生成的 TCP 数据包发送到打开的 TCP 连接中。 | 支持配置单个数据包的大小以及要发送到每个打开连接的数据包数量。 |
CONNECTION | L4 | 传输控制协议 | 打开 TCP 连接并尽可能长时间地保持它们的活动状态。 | 为了有效,这种类型的攻击需要比平常更多的光纤。请注意,现代服务器非常擅长处理打开的非活动连接。 |
一类特殊的 L4 攻击。
UDP 是一种无连接协议。除非应用层进行显式处理,否则它不会验证源 IP 地址。这意味着攻击者可以轻松伪造数据报以包含任意源 IP 地址。通常,应用程序协议的设计方式是使响应中生成的数据包大得多,从而产生放大效应(因此得名)。通过将此类数据报发送到许多不同的服务器(反射器),攻击者可以为目标(受害者)设备生成大量流量。
实施的放大攻击:
战略 | 协议 | 放大系数 | 漏洞 |
---|---|---|---|
RDP | 远程桌面协议 (RDP) | ||
CLDAP | 无连接轻量级目录访问协议 (CLDAP) | 56岁70岁 | |
MEM | 内存缓存 | 10,000 至 50,000 | |
CHAR | 字符生成器协议 (CHARGEN) | 358.8 | 字符生成请求 |
ARD | 苹果远程桌面 (ARD) | ||
NTP | 网络时间协议 (NTP) | 556.9 | TA14-013A |
DNS | 域名系统 (DNS) | 28 至 54 | TA13-088A |
所有放大攻击都需要提供反射服务器列表。
L7 攻击旨在利用应用程序层协议中的弱点或应用程序(或操作系统内核)的特定实现细节。通常更强大,但可能需要了解目标系统的工作原理。
战略 | 层 | 运输 | 设计 | 笔记 |
---|---|---|---|---|
GET | L7 | 传输控制协议 | 通过开放的 TCP 连接发送随机生成的 HTTP GET 请求 | 不需要 200 OK HTTP 响应代码(因为它根本不消耗响应)。尽管针对负载均衡器或 WAF 执行的攻击可能无效(与 L4 TCP 洪水相比)。 |
STRESS | L7 | 传输控制协议 | 通过单个打开的 TCP 连接发送一系列具有大型正文的 HTTP 请求。 | 为了最大限度地提高性能,请确保目标主机允许管道传输(在持久连接中发送新请求,而不首先读取响应)。不需要 200 OK HTTP 响应代码(因为它根本不消耗响应)。尽管针对负载均衡器或 WAF 执行的攻击可能无效(与 L4 TCP 洪水相比)。 |
BYPASS | L7 | 传输控制协议 | 通过开放的 TCP 连接发送 HTTP get 请求,读回响应。 | 分块读取是通过连接中的recv 字节执行的,而不解析为 HTTP 响应。 |
SLOW | L7 | 传输控制协议 | 与 STRESS 类似,发出 HTTP 请求并尝试通过读回单个字节并发送附加负载(在发送操作之间存在时间延迟)来保持连接的利用。 | 理想情况下,应正确设置时间延迟,以避免由于读取超时而被对等方重置连接(取决于对等方设置)。 |
CFBUAM | L7 | 传输控制协议 | 发送单个 HTTP GET,在长时间延迟后通过同一 TCP 连接发出更多请求。 | |
AVB | L7 | 传输控制协议 | 将 HTTP GET 数据包发送到开放连接中,发送操作之间存在较长的延迟。为了避免连接因读取超时而被对方重置,最大延迟设置为1秒。 |
通过配置一组代理服务器,即使从单台计算机运行该工具包,也可以模拟分布式攻击。当代理可用时, fiberfox
首先连接到它们,并从这些机器建立到目标的连接。通过这样做,系统可以绕过最简单的 IP 封锁保护措施。该工具包支持 HTTP/SOCKS4/SOCS5 协议以及用户/密码身份验证。它还动态管理提供的一组代理,以避免使用那些不响应或不满足攻击要求的代理。
使用代理时必须牢记以下几点:
现在攻击的成功部分取决于代理服务器的容量。例如,当使用公共代理时,网络速率可能会很低,因为代理过于拥挤。在这种情况下,请考虑使用私有基础设施或付费的专用代理服务器集群。
代理服务器本身可能会减轻一些攻击媒介。例如,当使用“慢速连接”方法时,代理服务器可以配置为限制或关闭连接。通过这样做在某种程度上“保护”目标。请注意代理设置如何干预攻击机制(网络、协议等)。
该工具包的目标之一是提供全面的监控信息来指导漏洞查找。
该工具报告每个目标的统计数据:数据包数、流量和速率。对于基于 TCP 的攻击(L4 和 L7),它还会报告单个会话中发送的数据包的直方图(此处的会话是指单个开放连接中发送的流量)。理想情况下,直方图应向左侧倾斜。这意味着对等方在发送“每个连接的请求”数据包之前关闭连接。如果主要位于右侧,则目标接受应被视为“垃圾流量”的内容。
分析时要小心。网络速率低、尝试连接频率高、错误率高等。所有这些信号都可能表明目标在面对攻击时仍然坚强,而且它已经死亡。为了充分了解保护级别,您应该使用目标端的监控信息(例如,在受到挑战时正确工作的能力)。
请注意,出站率显示为大约值。发送每个数据包的时间测量包括调度延迟(对于光纤)和选择/池化。在大多数情况下,这些可以忽略不计。但运行 10k+ 光纤时要小心分析。
feature-*
分支以开始进行更改。 根据 MIT 许可发布。请参阅许可证以获取完整许可证。
████
████▒▒██
████ ▒▒██
██▒▒ ▒▒▒▒▒▒██
██▒▒██ ██
████ ██▒▒██ ██
██▒▒▒▒██████ ██▒▒██ ▒▒ ████
██▒▒▒▒██ ████ ██████▒▒▒▒▒▒██ ▒▒▒▒██████████████
██▒▒ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████
██▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████
██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒████▒▒▒▒▒▒▒▒██
████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒████▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
████ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ██▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ████▒▒▒▒▒▒▒▒▒▒ ██ ▒▒ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██ ████ ▒▒ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
██ ██▒▒██ ▒▒ ▒▒▒▒▒▒▒▒▒▒██
██████████████████████▒▒▒▒██ ▒▒▒▒▒▒██
██▒▒ ██▒▒▒▒▒▒▒▒██ ▒▒▒▒██
██▒▒▒▒ ██▒▒▒▒▒▒▒▒████ ▒▒▒▒██
██▒▒▒▒▒▒██▒▒▒▒▒▒██ ██ ██
██████▒▒▒▒▒▒██ ██ ████
██████ ██ ██████
██ ████
██████