• Stars
    star
    272
  • Rank 151,235 (Top 3 %)
  • Language
    Go
  • License
    MIT License
  • Created over 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A lightweight tool for orchestrating and organizing your bug hunting recon / pentesting command-line workflows

Rayder

A lightweight tool for orchestrating and organizing your command-line workflows

About β€’ Installation β€’ Usage β€’ Workflow Configuration β€’ Parallel Execution β€’ Workflows

rayder

About

Rayder is a command-line tool designed to simplify the orchestration and execution of workflows. It allows you to define a series of modules in a YAML file, each consisting of commands to be executed. Rayder helps you automate complex processes, making it easy to streamline repetitive modules and execute them parallelly if the commands do not depend on each other.

Installation

To install Rayder, ensure you have Go (1.16 or higher) installed on your system. Then, run the following command:

go install github.com/devanshbatham/[email protected]

Usage

Rayder offers a straightforward way to execute workflows defined in YAML files. Use the following command:

rayder -w path/to/workflow.yaml

Workflow Configuration

A workflow is defined in a YAML file with the following structure:

vars:
  VAR_NAME: value
  # Add more variables...

parallel: true|false
modules:
  - name: task-name
    cmds:
      - command-1
      - command-2
      # Add more commands...
    silent: true|false
  # Add more modules...

Using Variables in Workflows

Rayder allows you to use variables in your workflow configuration, making it easy to parameterize your commands and achieve more flexibility. You can define variables in the vars section of your workflow YAML file. These variables can then be referenced within your command strings using double curly braces ({{}}).

Defining Variables

To define variables, add them to the vars section of your workflow YAML file:

vars:
  VAR_NAME: value
  ANOTHER_VAR: another_value
  # Add more variables...

Referencing Variables in Commands

You can reference variables within your command strings using double curly braces ({{}}). For example, if you defined a variable OUTPUT_DIR, you can use it like this:

modules:
  - name: example-task
    cmds:
      - echo "Output directory: {{OUTPUT_DIR}}"

Supplying Variables via the Command Line

You can also supply values for variables via the command line when executing your workflow. Use the format VARIABLE_NAME=value to provide values for specific variables. For example:

rayder -w path/to/workflow.yaml VAR_NAME=new_value ANOTHER_VAR=updated_value

If you don't provide values for variables via the command line, Rayder will automatically apply default values defined in the vars section of your workflow YAML file.

Remember that variables supplied via the command line will override the default values defined in the YAML configuration.

Example

Example 1:

Here's an example of how you can define, reference, and supply variables in your workflow configuration:

vars:
  ORG: "example.org"
  OUTPUT_DIR: "results"

modules:
  - name: example-task
    cmds:
      - echo "Organization: {{ORG}}"
      - echo "Output directory: {{OUTPUT_DIR}}"

When executing the workflow, you can provide values for ORG and OUTPUT_DIR via the command line like this:

rayder -w path/to/workflow.yaml ORG=custom_org OUTPUT_DIR=custom_results_dir

This will override the default values and use the provided values for these variables.

Example 2:

Here's an example workflow configuration tailored for reverse whois recon and processing the root domains into subdomains, resolving them and checking which ones are alive:

vars:
  ORG: "Acme, Inc"
  OUTPUT_DIR: "results-dir"

parallel: false
modules:
  - name: reverse-whois
    silent: false
    cmds:
      - mkdir -p {{OUTPUT_DIR}}
      - revwhoix -k "{{ORG}}" > {{OUTPUT_DIR}}/root-domains.txt

  - name: finding-subdomains
    cmds:
      - xargs -I {} -a {{OUTPUT_DIR}}/root-domains.txt echo "subfinder -d {} -o {}.out" | quaithe -workers 30 
    silent: false

  - name: cleaning-subdomains
    cmds:
      -  cat *.out > {{OUTPUT_DIR}}/root-subdomains.txt
      -  rm *.out
    silent: true

  - name: resolving-subdomains
    cmds:
      - cat {{OUTPUT_DIR}}/root-subdomains.txt | dnsx -silent -threads 100 -o {{OUTPUT_DIR}}/resolved-subdomains.txt
    silent: false

  - name: checking-alive-subdomains
    cmds:
      - cat {{OUTPUT_DIR}}/resolved-subdomains.txt | httpx -silent -threads 1000 -o {{OUTPUT_DIR}}/alive-subdomains.txt
    silent: false

To execute the above workflow, run the following command:

rayder -w path/to/reverse-whois.yaml ORG="Yelp, Inc" OUTPUT_DIR=results

Parallel Execution

The parallel field in the workflow configuration determines whether modules should be executed in parallel or sequentially. Setting parallel to true allows modules to run concurrently, making it suitable for modules with no dependencies. When set to false, modules will execute one after another.

Workflows

Explore a collection of sample workflows and examples in the Rayder workflows repository. Stay tuned for more additions!

Inspiration

Inspiration of this project comes from Awesome taskfile project.

More Repositories

1

Awesome-Bugbounty-Writeups

A curated list of bugbounty writeups (Bug type wise) , inspired from https://github.com/ngalongc/bug-bounty-reference
Python
4,655
star
2

ParamSpider

Mining URLs from dark corners of Web Archives for bug hunting/fuzzing/further probing
Python
2,467
star
3

FavFreak

Making Favicon.ico based Recon Great again !
Python
1,113
star
4

OpenRedireX

A fuzzer for detecting open redirect vulnerabilities
Python
694
star
5

Vulnerabilities-Unmasked

This repo tries to explain complex security vulnerabilities in simple terms that even a five-year-old can understand!
364
star
6

headerpwn

A fuzzer for finding anomalies and analyzing how servers respond to different HTTP headers
Go
312
star
7

Gorecon

Gorecon is a All in one Reconnaissance Tool , a.k.a swiss knife for Reconnaissance , A tool that every pentester/bughunter might wanna consider into their arsenal
Go
270
star
8

ArchiveFuzz

Hunt down the secrets from the WebArchives for Fun and Profit
Python
165
star
9

CertEagle

Weaponizing Live CT logs for automated monitoring ofΒ assets
Python
132
star
10

DNSleuth

DNSleuth sniffs DNS packets, i.e, allowing you to spy on the DNS queries your machine is making
Python
100
star
11

Solidity-Gas-Optimization-Tips

Solidity Gas Optimization Tips
86
star
12

Passivehunter

Subdomain discovery using the power of 'The Rapid7 Project Sonar datasets'
Python
86
star
13

awesome-bughunting-oneliners

A list of Awesome Bughunting oneliners , collected from the various sources
Python
65
star
14

heaptruffle

Mine URLs from Browser's Heap Snapshot for fun and profit
JavaScript
63
star
15

revit

A command-line utility for performing reverse DNS lookups
Go
57
star
16

Drishti

A fast HTTP Response status checker implemented in Python3
Python
57
star
17

rayder-workflows

Repo for hosting rayder workflows
55
star
18

Everything-About-DNS

DNS Explained : This repo aims to explain the basics of DNS at different levels of complexity for readers with various technical backgrounds.
53
star
19

realm

A utility for recursively traversing SSL/TLS certificates for collecting DNS names
Go
43
star
20

ip2cloud

Check IP addresses against known cloud provider IP address ranges
Python
43
star
21

revwhoix

A simple utility to perform reverse WHOIS lookups using whoisxml API
Python
38
star
22

Quaithe

Quaithe empowers you to execute multiple commands in parallel for blazing-fast performance.
Python
27
star
23

dnsaudit

A command-line utility for auditing DNS configuration using Zonemaster API
Go
27
star
24

autoreport

autoreport generates bug report templates for security researchers
Python
21
star
25

getresolvers

A simple utility to fetch freshly updated DNS resolvers
Python
17
star
26

ip2asn

A utility to quickly map IP addresses to their respective ASN
Python
14
star
27

getsan

A utility to fetch and display dns names from the SSL/TLS cert data
Go
12
star
28

Watson

Watson is a utility for note management and search from your terminal
Python
7
star
29

CLI-Project-Generator

A simple module for generating CLI project in python
Python
4
star
30

OS-ASSIGMENT

Here is my Solution for the assigned question (for OS CA2)
C
2
star
31

devanshbatham

2
star
32

CTF-Arsenal

My CTF stuff
Python
2
star
33

Cyberhack-Village-2.0

This Repo contains solution for challenges that I have created as a part of Cyberhack Village 2.0
Python
2
star