Skip to content

joshsagredo/syn-flood

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Syn Flood

CI Docker pulls Go Report Card Quality Gate Status Reliability Rating Maintainability Rating Security Rating Coverage Release Go version License

This project is developed with the objective of learning low level network operations with Golang. It starts a syn flood attack with raw sockets.

Legal Disclaimer

This tool is created for the sole purpose of security awareness and education, it should not be used against systems that you do not have permission to test/attack. The author is not responsible for misuse or for any damage that you may cause. You agree that you use this software at your own risk.

Prerequisites

You need root access to run syn-flood

syn-flood needs lots of open file descriptors while running so we need to increase it first. You can increase it like below temporarily.

$ sudo ulimit -S -n 2048000
$ sudo syn-flood --host foo.example.com --port 443 --floodType syn

If you still get "too many open files" error, try increasing the value that passed to first command.

Configuration

syn-flood can be customized with several command line arguments:

Usage:
  syn-flood [flags]

Flags:
      --floodDurationSeconds int   Provide the duration of the attack in seconds, -1 for no limit, defaults to -1 (default -1)
      --floodType string           Provide the attack type. Proper values are: syn, ack, synack (default "syn")
  -h, --help                       help for syn-flood
      --host string                Provide public ip or DNS of the target (default "213.238.175.187")
      --payloadLength int          Provide payload length in bytes for each SYN packet (default 1400)
      --port int                   Provide reachable port of the target (default 443)
  -v, --verbose                    verbose output of the logging library (default false)
      --version                    version for syn-flood

To be able to run syn-flood with unlimited time range, you should also increase your operating system open file limits, you can refer here about how to do that.

Download

Binary

Binary can be downloaded from Releases page.

After then, you can simply run binary by providing required command line arguments:

$ sudo ./syn-flood --host 10.0.0.100 --port 443

Or with DNS:

$ sudo ./syn-flood --host foo.example.com --port 443

Homebrew

This project can be installed with Homebrew:

$ brew tap joshsagredo/tap
$ brew install joshsagredo/tap/syn-flood
$ sudo syn-flood --host foo.example.com --port 443 --floodType syn

Docker

Docker image can be downloaded with below command:

$ docker run joshsagredo/syn-flood:latest

Development

This project requires below tools while developing:

After you installed pre-commit, simply run below command to prepare your development environment:

$ pre-commit install -c build/ci/.pre-commit-config.yaml

References

License

Apache License 2.0