Fleex allows you to create multiple VPS on cloud providers and use them to distribute your workload.

Fleex

Fleex allows you to create multiple VPS on cloud providers and use them to distribute your workload. Run tools like masscan, puredns, ffuf, httpx or anything you need and get results quickly!

AUR license badge



Install

GO111MODULE=on go get -v github.com/FleexSecurity/fleex

Supported providers

Available commands

./fleex -h

Available Commands:
  build       Build image
  config      Config setup
  delete      Delete a fleet or a single box
  help        Help about any command
  images      List available images
  init        This command initializes fleex
  ls          List running boxes
  run         Run a command
  scan        Distributed scanning
  scp         SCP client
  spawn       Spawn a fleet
  ssh         Start SSH

Documentation

Fleex-docs

Referrals

Digitalocean referral link Linode referral link

Main contributors

sw33tLie
sw33tLie
xm1k3
xm1k3

Sponsors

projectdiscovery
ProjectDiscovery
bsysop
bsysop

License

Fleex is distributed under Apache-2.0 License

Comments
  • ssh authentication issue

    ssh authentication issue

    every time I run fleex scan ( digital ocean), it gives the below error message

    (( ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain ))

  • Default username not changed

    Default username not changed

    Default username not changed after changed username in config. fleex ssh connect with default username op not and connet with custum user name root in config

    2021-07-08 08_39_22-Window

    provider: linode
    public-ssh-file: id_rsa.pub
    private-ssh-file: id_rsa
    linode:
      token: 71c0d8ec6bd5
      region: eu-central
      size: g6-nanode-1
      image: private/12937769
      port: 22
      username: root
      password: ttpTT4fab$tm
    digitalocean:
      token: YOUR_DIGITALOCEAN_TOKEN
      region: fra1
      size: s-1vcpu-1gb
      image: 12345678 # put your image id here
      port: 2266
      username: op
      password: USER_PASSWORD
      tags:
        - vps
        - fleex
    
  • Failed to send file: failed to stat source file Error

    Failed to send file: failed to stat source file Error

    Hello,

    When I'm trying to send this command:

    fleex scan -n pwn -i list.txt -o scan-results.txt -c "findomain -f {{INPUT}} -o {{OUTPUT}}"

    The contents of list.txt contains a list of domains.

    I get this error:

    FATA[0004] Failed to send file: failed to stat source file: err=stat /tmp/XXXXXX/input/chunk-pwn-2: no such file or directory

    May I know what can be the issue?

  • "terminal make raw:inappropriate ioctl for device"

    Hello,

    I noticed when running fleex scans from within a bash loop, it causes an issue with SSH. I have not been able to figure out the solution to this yet, but it should be easy to reproduce.

    Error I get: FATA[0002] terminal make raw:inappropriate ioctl for device

    Working bash script

    #!/bin/bash
    fleex scan -n pwn -i "/home/myInput.txt" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/myOutput.txt"
    

    Erroring bash script

    #!/bin/bash
    while read f; do
      FILE="/home/$f.txt"
      fleex scan -n pwn -i "${f}" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/${f}-output.txt"
    done </home/hosts.txt
    

    You should even be able to reproduce with less code...

    #!/bin/bash
    while read f; do
      fleex scan -n pwn -i "/home/myInput.txt" -c "~/go/bin/httpx -l {{INPUT}} -o {{OUTPUT}}" -o "/home/myOutput.txt"
    done </home/hosts.txt
    

    Possible code in question: https://github.com/FleexSecurity/fleex/blob/f4a0d874ba5c933dec2602145abfca1fdb8ef980/pkg/sshutils/sshutils.go#L101

    Possible solution 1: https://github.com/golang/go/issues/19909 Possible solution 2: https://github.com/c-bata/go-prompt/issues/88

    Thanks!

  • replaced go get with go install

    replaced go get with go install

    After spawning boxes, I saw that only the gobuster was installed. Then I realized maybe only gobuster used go install and other tools was using go get So just replaced go get with go install and now I see all other tools also get installed

  • Folder output not supported

    Folder output not supported

    i scan list of web with gowitness and the output not processed by fleex got error not a regular file.

    Command

    fleex scan -i test -o screenshot -c "cat {{INPUT}} | gowitness file -f {{INPUT}} --threads 2 --screenshot-path {{OUTPUT}}"

    Error

    FATA[0016] Failed to get file: failed to read scp message header: err=scp: /tmp/fleex-1626745411693753043-chunk-out-pwn-1: not a regular file

  • File chunks issue

    File chunks issue

    I scaned 3 targets input with 3 boxes then i got error err=scp: /tmp/fleex-1625591403254096294-chunk-out-vmp-1: No such file or directory Provider linode 2021-07-06 22_33_24-Window

  • Fleex installation does not create $HOME/fleex/ folder !

    Fleex installation does not create $HOME/fleex/ folder !

    Hello Thank you so much for your amazing tool. really appreciate

    I am facing an issue after installing, can you please look into it After installing Fleex I see no $HOME/fleex folder no config file

    Terminal Record https://asciinema.org/a/wfIiuQu9YSp2m9egKdmhxp8Ql

  • Spawn no longer working on DO

    Spawn no longer working on DO

    Hello,

    Not sure if this is some issue with my own device, but it appears fleex spawn is no longer working for Digital Ocean. If I wait long enough, I eventually get a 524 (a timeout occurred) from Digital Ocean.

    $ fleex spawn -c 5 -n pwn
    INFO[0001] All spawn requests sent! Now waiting for all boxes to become ready 
    FATA[0155] GET https://api.digitalocean.com/v2/droplets?page=1&per_page=9999: 524 <!DOCTYPE html>
    ...
    

    I'll spend some time to see if I can discover the issue myself.

    Thanks!

  • Large file not split evenly

    Large file not split evenly

    Hello,

    I was attempting to scan a large file split across 10 boxes, but found some of the boxes were taking a lot longer to finish than others. Looking at the split files, this is what I found...

    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-1 | wc -l
    14490760
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-2 | wc -l
    537
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-1 | wc -l
    14490760
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-2 | wc -l
    537
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-3 | wc -l
    26
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-4 | wc -l
    75382
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-5 | wc -l
    30
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-6 | wc -l
    6830214
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-7 | wc -l
    15
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-8 | wc -l
    9
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-9 | wc -l
    23415813
    $ cat /tmp/fleex-1638000776404301032/chunk-out-pwn-10 | wc -l
    80
    

    Maybe there's something I'm not doing correctly. The command used: fleex scan -n pwn -i myfile.txt -c "cat {{INPUT}} | ~/go/bin/dnsx >> {{OUTPUT}}" -o output.txt

    Thanks!

  • Replace path by filepath

    Replace path by filepath

    Hi, "path" uses "/" as path separator regardless of the platform where we are compiling which may have undesired effects, better use "filepath" which is cross-platform. I tweeted once about an app that "stopped" working on Windows, the reason was exactly that.

    https://twitter.com/melardev/status/1327761725664489472

    Someone also blogged about it: https://parsiya.net/blog/2019-03-09-path.join-considered-harmful/

  • Fleex unable to build/scan

    Fleex unable to build/scan

    hello,

    so i am having a problem where i receive an error during buildprocess. here's the error:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x7d325c]
    
    goroutine 1 [running]:
    golang.org/x/crypto/ssh.(*connection).clientAuthenticate(0xc00021e080, 0xc00021c000)
            /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client_auth.go:65 +0x53c
    golang.org/x/crypto/ssh.(*connection).clientHandshake(0xc00021e080, {0xc000349e00, 0x12}, 0xc00021c000)
            /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:113 +0x285
    golang.org/x/crypto/ssh.NewClientConn({0xb02c40, 0xc000010738}, {0xc000349e00, 0x12}, 0xc000135980)
            /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:83 +0x12e
    golang.org/x/crypto/ssh.Dial({0xa1693f?, 0xa1cd45?}, {0xc000349e00, 0x12}, 0xc000135980)
            /root/go/pkg/mod/golang.org/x/[email protected]/ssh/client.go:177 +0x59
    github.com/FleexSecurity/fleex/pkg/sshutils.Connect({0xc000349e00, 0x12}, {0xa16e5f, 0x4}, {0xc000349d70?, 0xa3939c?})
            /root/go/pkg/mod/github.com/!fleex!security/[email protected]/pkg/sshutils/sshutils.go:170 +0x1ac
    github.com/FleexSecurity/fleex/pkg/sshutils.GetConnectionBuild({0xc00024f040, 0xf}, 0xa163b5?, {0xa16e5f, 0x4}, {0xa1b05d, 0xd})
            /root/go/pkg/mod/github.com/!fleex!security/[email protected]/pkg/sshutils/sshutils.go:156 +0x85
    github.com/FleexSecurity/fleex/cmd.glob..func1(0xe17d20?, {0xa16d83?, 0x0?, 0x0?})
            /root/go/pkg/mod/github.com/!fleex!security/[email protected]/cmd/build.go:131 +0xb0b
    github.com/spf13/cobra.(*Command).execute(0xe17d20, {0xe52350, 0x0, 0x0})
            /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x663
    github.com/spf13/cobra.(*Command).ExecuteC(0xe17aa0)
            /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x3b4
    github.com/spf13/cobra.(*Command).Execute(...)
            /root/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
    github.com/FleexSecurity/fleex/cmd.Execute()
            /root/go/pkg/mod/github.com/!fleex!security/[email protected]/cmd/root.go:45 +0x25
    main.main()
            /root/go/pkg/mod/github.com/!fleex!security/[email protected]/main.go:6 +0x17
    

    both linode and digitalocean showed the same error, but the images were successfully built. i tried to re do all of the process on my 2nd machine and it still showed the same error.

    really appreciate if anybody would point out my mistake.

    thank you

  • Thoughts on the project :D

    Thoughts on the project :D

    looking at the idea of the project i think this can be a very successful project within the time being with improvements, i didn't take a look at the code which is beyond the scope of this comment, however here are some things you can add to make it a bit nicer.

    1)>> add a web UI: I think given the times a webUI would make this project get out there alot more, the ui would include such things as a User dashboard / settings tab, settings management tab, conguration storage which would allow the user to reload certian settings they have used in the past. user/host information and updates which will allow the user to look at the load the VPS's take on their system or CPU's.

    2)>> Database's: i think for settings the use of YAML or YML configuration files is a really good idea, however given this project might get larger and larger over the years (if you choose to keep managing this project instead of leaving it as it) then the use of MySQL, SQLServer, PostGreSQL, MongoDb, or other databases might be a good idea ESPECIALLY if you implement previous setting configurations by the user as said in option 1 of implementing a web UI. For my personal cyber weapons and pen testing/blue team security tools which utilize a web UI i always use sessions, and in order to load previous values from those sessions i will always store them in a MongoDB server that i made using golangs drivers for databases, and third party golang mongoDB drivers. i think it might improve alot more to this project

    3)>> Cross platform: If you choose to keep this project up you should add a simple makefile or mkconfig file or exe or ELF that someone could easily install this utility on, this is really only if the tool gets bigger, an example would be if you implement databases, and large web user interfaces and graphical user interfaces. Another thing about making it more cross platform would be how much people would use this, sure alot of people operate on linux and when you use a VPS you are most likely an expert at this or learning, however in the case this project manages to get alot bigger then it would be best to make an auto configuration file and system setup file for people who are newer to this kind of thing.

    4)>> API Usage: this would be a last minute thing however it might be good to make the use of LUA, LUA and golang work great together ESPECIALLY if you want people to contribute to your project and make it better in every way they think fits the project, most projects like nmap, zenmap, wireshark, metasploit etc use scirpting languages like LUA to utilize plugins for their security tool, this might be a cool thing to add in the further future

    5)>> Adding automation: since this tool as said allows you to create multiple VPS on cloud providers and use them to distribute your workload. Run tools like masscan, puredns, ffuf, httpx or anything you need and get results quickly! you should add something to automate tools, like masscan, ffuf, httpx, etc and output them on something like the web UI, given how go works around its syscall and system operations it would work amazing with web interfaces if you can structure it correctly and make it very very easy to manipulate and update every so often. This would make FLEEX a much more useful tool for something like security experts or people who are getting into the field.

    Conclusion: This project seems amazing, right now it may just be a simple VPS spawner, however you can turn this project into something way more than it was meant to be, there is alot you can add and manipulate and alot you can do to better optimize the code and make user experience more amazing than it is right now. keep up the great work ~ ArkAngeL43

  • feat: custom vps on fleex

    feat: custom vps on fleex

    WIP:implementation of custom vps with Fleex

    Configuration:

    custom:
      vps-1:
        ip: {VPS-IP}
        port: {VPS-PORT}
        username: {USERNAME}
        password: {PASSWD}
      vps-2:
        ip: {VPS-IP}
        port: {VPS-PORT}
        username: {USERNAME}
        password: {PASSWD}
      vps-3:
        ip: {VPS-IP}
        port: {VPS-PORT}
        username: {USERNAME}
        password: {PASSWD}
    
  • Delete Fleet/Boxes on command fail

    Delete Fleet/Boxes on command fail

    So i run fleex scan with the --delete flag, for some reason the file copying failed and hence the command didn't run. But also, the boxes were not deleted. Imagine my surprise a couple of hours later. I think on command fail the rest of the clean up should still go through.

  • Enhancement - Dynamic input distribution

    Enhancement - Dynamic input distribution

    Current implementation make equal chunks and send for scan. But if one chunk takes more time to complete the job all other machine sits idle. There is an option -d to delete upon completion but this is not helpful if some chunk requires more time.

    Instead of making static chunk like lines_count(input_file)/len(fleet), dynamically distributing using a loop by sending few lines for fleet be helpful.

  • fleex build not working properly

    fleex build not working properly

    Hi i am using linode with fleex

    when i am creating a new image with fleex build -d (with or without -d, it doesn't matter) the image is does not get created but and the VPS is getting deleted immediatly when the fleex build command is executed, so there is not enough time to make an image.

    I guess it has to do with the merge from 13th of august. https://github.com/sw33tLie/fleex/commit/1107e6b81607d03609f9e4a104b76d170e92b49e

    fleex build everthings getting installed. INFO[0894] Fleet/Box deleted! <-- so there is no time for creating a image.

    the image is getting build, but receives an error because the vps is deleted.

    If you need more info, let me know.

provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

Dec 20, 2022
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications

Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.

Jan 5, 2023
The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your container orchestrator

fortress-csi The Container Storage Interface (CSI) Driver for Fortress Block Storage This driver allows you to use Fortress Block Storage with your co

Jan 23, 2022
Go serverless functions examples with most popular Cloud Providers

go-serverless Go serverless functions examples with most popular Cloud Providers Creating zip archive go mod download go build ./cmd/<aws|gcp> zip -

Nov 16, 2021
This provider simply rotates Slack refresh tokens (for use in other providers).

Terraform Provider Slack Token This provider simply rotates Slack refresh tokens (for use in other providers). Requirements Terraform >= 1.0 Go >= 1.1

Jun 5, 2022
easy way to distribute commands over ssh.

grapes grapes is lightweight tool designed to distribute commands over ssh with ease. Update (25/04/2019) Handshake validation is now in place in orde

Dec 20, 2022
Simple wrapper around multiple fs.FS instances, recursively merging them together dynamically.

go-layerfs This is a simple wrapper around multiple fs.FS instances, recursively merging them together dynamically. If you have two directories, of wh

Aug 9, 2022
A Docker image that allows you to use Hetzner DNS as a DynDNS Provider

Docker Hetzner DDNS This Docker image will allow you to use the Hetzner DNS Service as a Dynamic DNS Provider (DDNS). How does it work? The Go script

Dec 27, 2022
After approve this contract, you can use the contract to adventure with multiple characters at the same time
After approve this contract, you can use the contract to adventure with multiple characters at the same time

MultipleRarity 又又又更新了! MultipleRarity最新版:0x8ACcaa4b940eaFC41b33159027cDBDb4A567d442 注:角色冷却时间不统一时,可以不用管能不能冒险或升级,合约内部加了筛选,但消耗的gas增加了一点点,介意的可以使用常规修复版。 Mu

Nov 19, 2021
A batch scheduler of kubernetes for high performance workload, e.g. AI/ML, BigData, HPC
A batch scheduler of kubernetes for high performance workload, e.g. AI/ML, BigData, HPC

kube-batch kube-batch is a batch scheduler for Kubernetes, providing mechanisms for applications which would like to run batch jobs leveraging Kuberne

Jan 6, 2023
Reconstruct Open API Specifications from real-time workload traffic seamlessly
Reconstruct Open API Specifications from real-time workload traffic seamlessly

Reconstruct Open API Specifications from real-time workload traffic seamlessly: Capture all API traffic in an existing environment using a service-mes

Jan 1, 2023
Kubernetes workload controller for container image deployment

kube-image-deployer kube-image-deployer는 Docker Registry의 Image:Tag를 감시하는 Kubernetes Controller입니다. Keel과 유사하지만 단일 태그만 감시하며 더 간결하게 동작합니다. Container, I

Mar 8, 2022
SionReplayer is the workload replayer for SION project.

SionReplayer SionReplayer is the workload replayer for SION project. Simulation A sample of IBM docker registry trace is included. To run the simulati

Jan 13, 2022
Jenkins CLI allows you manage your Jenkins as an easy way

Quick start 简体中文 Jenkins CLI Jenkins CLI allows you manage your Jenkins in an easy way. No matter if you're a plugin developer, administrator or just

Jan 4, 2023
Mattermost outline plugin allows you to search your teams documents.
Mattermost outline plugin allows you to search your teams documents.

mattermost-plugin-outline Mattermost Outline plugin allows you to search your teams documents. Installation In Mattermost 5.16 and later, this plugin

Dec 7, 2022
A tool that allows you to manage Kubernetes manifests for your services in a Git repository

kuberpult Readme for users About Kuberpult is a tool that allows you to manage Kubernetes manifests for your services in a Git repository and manage t

Dec 16, 2022
S3pd - CLI utility that downloads multiple s3 objects at a time, with multiple range-requests issued per object

S3 Parallel Downloader CLI utility that downloads multiple s3 objects at a time,

May 13, 2022
Testcontainers is a Golang library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.

When I was working on a Zipkin PR I discovered a nice Java library called Testcontainers. It provides an easy and clean API over the go docker sdk to

Jan 7, 2023
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023