Skip to main content

High-performance DDoS vulnerability testing toolkit. Various L4/7 attack vectors. Async networking.

Project description

FiberFox ๐ŸฆŠ

High-performance DDoS vulnerability testing toolkit. Implements various L4/7 attack vectors. Low CPU/RAM requirements with async networking (thousands of active connections with <100Mb of memory).

Heavily inspired by MHDDoS project.

WARNING: Do not test websites without their owners consent. Package default settings are tuned to avoid large impact when running tests.

analysis

Install

From sources:

$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ python setup.py install

From PyPI:

$ pip install fiberfox

Build Docker image:

$ git clone https://github.com/kachayev/fiberfox.git
$ cd fiberfox
$ docker build -t fiberfox .

Usage

Example:

$ fiberfox \
    --targets tcp://127.0.0.1:8080 http://127.0.0.1:8081 \
    --concurrency 512 \
    --rpc 1024 \
    --strategy STRESS \
    --duration-seconds 3600 \
    --proxies-list ./proxies.txt

Features:

  • --concurrency (or -c) defines number of async coroutines to run. Fiber doesn't create a new OS thread so you can run a lot of them with small overhead. For TCP attack vectors, number of fibers rougly corresponds to the max number of open TCP connections. For UDP attacks, running too many fibers typically makes performance worse.
  • Muliple targets are supported. --concurrency (-c) option defines number of fibers per target.
  • Connections could be established using HTTP/SOCK4/SOCK5 proxies. Available proxies could be setup from the static configuration file or dynamically resolved from proxy providers. The tool automatically detects "dead" proxies and removes them from the pool.

More documentation about flags:

$ python fiberfox --help
usage: fiberfox [-h] [--targets [TARGETS ...]] [-c CONCURRENCY] [-s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB}] [--rpc RPC] [--packet-size PACKET_SIZE] [-d DURATION_SECONDS]
               [--providers-config PROVIDERS_CONFIG] [--proxies-list PROXIES_LIST] [--proxies [PROXIES ...]]

options:
  -h, --help            show this help message and exit
  --targets [TARGETS ...]
                        List of targets, separated by spaces (if many)
  -c CONCURRENCY, --concurrency CONCURRENCY
                        Number of fibers per target (for TCP means max number of open connections)
  -s {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB}, --strategy {UDP,TCP,STRESS,BYPASS,CONNECTION,SLOW,CFBUAM,AVB}
                        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
  --providers-config PROVIDERS_CONFIG
                        Configuration file with proxy providers
  --proxies-list PROXIES_LIST
                        List proxies
  --proxies [PROXIES ...]
                        List of proxy servers, separated by spaces (if many)

Attack Vectors

Attack vector is defined by --strategy option when execution the script.

Note: the package is under active development, more methods will be added soon.

L4

  • UDP
  • TCP
  • CONNECTION

L7

  • BYPASS
  • STRESS
  • CFBUAM
  • SLOW
  • AVB

Analysis

The tool reports number of statistics per each target: number of packets, traffic, rate. For TCP-based attacks (both L4 and L7), it also reports histogram of packets sent within a single session (session here means traffic sent within a single open connection). Ideally, the histogram should be skewed towards right side. If otherwise is true, it means the peer closes connection earlier than "requests per connection" packets were sent. This might indicate that the attack strategy choosen is not effective.

Contribute

  • Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.
  • Fork the repository on Github & fork master to feature-* branch to start making your changes.

License

Release under the MIT license. See LICENSE for the full license.


                                        โ–ˆโ–ˆโ–ˆโ–ˆ                                
                                    โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆ                                
                                  โ–ˆโ–ˆโ–ˆโ–ˆ  โ–’โ–’โ–ˆโ–ˆ                                
                                โ–ˆโ–ˆโ–’โ–’  โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ                              
                              โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆ        โ–ˆโ–ˆ                              
  โ–ˆโ–ˆโ–ˆโ–ˆ                      โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆ          โ–ˆโ–ˆ                              
โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ                โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆ      โ–’โ–’  โ–ˆโ–ˆโ–ˆโ–ˆ                            
โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–ˆโ–ˆ    โ–ˆโ–ˆโ–ˆโ–ˆ      โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ    โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ                  
โ–ˆโ–ˆโ–’โ–’    โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆ              
โ–ˆโ–ˆโ–’โ–’โ–’โ–’      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ            
  โ–ˆโ–ˆโ–’โ–’      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆ        
  โ–ˆโ–ˆ        โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ      
  โ–ˆโ–ˆโ–’โ–’    โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ    
  โ–ˆโ–ˆโ–’โ–’โ–’โ–’  โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’  โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ    
    โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’    โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
    โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
    โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ        โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
      โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
      โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ
        โ–ˆโ–ˆโ–ˆโ–ˆ  โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’    โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ
          โ–ˆโ–ˆ    โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’    โ–ˆโ–ˆโ–’โ–’  โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ
          โ–ˆโ–ˆ            โ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’    โ–ˆโ–ˆ  โ–’โ–’  โ–’โ–’        โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
            โ–ˆโ–ˆ                      โ–ˆโ–ˆ  โ–ˆโ–ˆโ–ˆโ–ˆ  โ–’โ–’          โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
              โ–ˆโ–ˆ                      โ–ˆโ–ˆโ–’โ–’โ–ˆโ–ˆ              โ–’โ–’  โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  
                โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–ˆโ–ˆ                    โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ    
                      โ–ˆโ–ˆโ–’โ–’      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ                    โ–’โ–’โ–’โ–’โ–ˆโ–ˆ      
                      โ–ˆโ–ˆโ–’โ–’โ–’โ–’  โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–ˆโ–ˆ                  โ–’โ–’โ–’โ–’โ–ˆโ–ˆ        
                      โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ  โ–ˆโ–ˆ                    โ–ˆโ–ˆ          
                        โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–’โ–’โ–’โ–’โ–’โ–’โ–ˆโ–ˆ    โ–ˆโ–ˆ                โ–ˆโ–ˆโ–ˆโ–ˆ            
                              โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ      โ–ˆโ–ˆ          โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ                
                                            โ–ˆโ–ˆ    โ–ˆโ–ˆโ–ˆโ–ˆ                      
                                            โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ                          

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiberfox-0.2.4.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

fiberfox-0.2.4-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file fiberfox-0.2.4.tar.gz.

File metadata

  • Download URL: fiberfox-0.2.4.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.0

File hashes

Hashes for fiberfox-0.2.4.tar.gz
Algorithm Hash digest
SHA256 d1d8b737bf9a7c0784d897cb4d2f4882f4ab617d2e90a93f39e201a13799ec84
MD5 74f6ac4b4755516695931a6bcf2e8e59
BLAKE2b-256 9e3815d03b081f054d4f67c3d577f29472818082583a3fbfdcf97d6b6c4c842a

See more details on using hashes here.

File details

Details for the file fiberfox-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: fiberfox-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/1.5.0 colorama/0.4.4 CPython/3.10.0

File hashes

Hashes for fiberfox-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0aab65faabac9dafb521414d298f2f816657a49eadc6e4698e0c2465f1228f49
MD5 c5351e55100c2ec7fd1dc378fc2f1782
BLAKE2b-256 74d0085eb99f86e74f4c431bac7db0d048af87c6fc3e03c4820b6d3b92478002

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page