
バグハンティングの偵察/ペネトレーションテストのコマンドライン作業フローを調整・整理するための軽量ツール
コマンドラインワークフローをオーケストレーションおよび整理するための軽量ツール
概要 • インストール • 使用方法 • ワークフロー設定 • 並列実行 • ワークフロー

Rayderは、ワークフローのオーケストレーションと実行を簡素化するために設計されたコマンドラインツールです。YAMLファイルで一連のモジュール(それぞれ実行するコマンドから構成される)を定義できます。Rayderは複雑なプロセスの自動化を支援し、繰り返しモジュールを合理化し、コマンドが相互に依存しない場合は並列に実行することを容易にします。
Rayderをインストールするには、システムにGo(1.16以上)がインストールされていることを確認してください。その後、次のコマンドを実行します:
go install github.com/devanshbatham/[email protected]
RayderはYAMLファイルで定義されたワークフローを実行するための簡単な方法を提供します。次のコマンドを使用します:
rayder -w path/to/workflow.yaml
ワークフローは以下の構造のYAMLファイルで定義されます:
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...
Rayderではワークフロー設定で変数を使用でき、コマンドをパラメータ化してより柔軟性を高めることができます。ワークフローYAMLファイルのvarsセクションに変数を定義できます。これらの変数は、二重中括弧({{}})を使用してコマンド文字列内で参照できます。
変数を定義するには、ワークフローYAMLファイルのvarsセクションに追加します:
vars:
VAR_NAME: value
ANOTHER_VAR: another_value
# Add more variables...
二重中括弧({{}})を使用してコマンド文字列内で変数を参照できます。例えば、変数OUTPUT_DIRを定義した場合、次のように使用できます:
modules:
- name: example-task
cmds:
- echo "Output directory {{OUTPUT_DIR}}"
ワークフロー実行時にコマンドラインから変数の値を指定することもできます。VARIABLE_NAME=valueの形式で特定の変数に値を指定します。例:
rayder -w path/to/workflow.yaml VAR_NAME=new_value ANOTHER_VAR=updated_value
コマンドラインで変数の値を指定しない場合、Rayderは自動的にワークフローYAMLファイルのvarsセクションで定義されたデフォルト値を適用します。
コマンドラインで指定された変数は、YAML設定で定義されたデフォルト値を上書きすることに注意してください。
ワークフロー設定で変数を定義、参照、指定する方法の例を以下に示します:
vars:
ORG: "example.org"
OUTPUT_DIR: "results"
modules:
- name: example-task
cmds:
- echo "Organization {{ORG}}"
- echo "Output directory {{OUTPUT_DIR}}"
ワークフローを実行する際、次のようにコマンドラインでORGとOUTPUT_DIRの値を指定できます:
rayder -w path/to/workflow.yaml ORG=custom_org OUTPUT_DIR=custom_results_dir
これによりデフォルト値が上書きされ、指定された値がこれらの変数に使用されます。
以下は、リバースWhois偵察とルートドメインをサブドメインに処理し、それらを解決して生きているものを確認するためのワークフロー設定例です:
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
上記のワークフローを実行するには、次のコマンドを実行します:
rayder -w path/to/reverse-whois.yaml ORG="Yelp, Inc" OUTPUT_DIR=results
ワークフロー設定のparallelフィールドは、モジュールを並列に実行するか順次実行するかを決定します。parallelをtrueに設定するとモジュールが同時に実行され、依存関係のないモジュールに適しています。falseに設定すると、モジュールは順番に実行されます。
Rayderワークフローレポジトリでサンプルワークフローと例のコレクションを探索してください。さらなる追加にご期待ください!
このプロジェクトのインスピレーションは、Awesome taskfile プロジェクトから来ています。