Files

95 lines
2.7 KiB
YAML

name: basic-recon-flow
kind: flow
desc: Basic reconnaissance flow orchestrating subdomain enumeration, port scanning, and screenshots
params:
- name: threads
value: "20"
- name: timeout
value: "3600"
modules:
# Module 1: Subdomain Enumeration
- name: subdomain-enum
condition: "true"
steps:
- name: setup-enum
type: bash
commands:
- mkdir -p {{Output}}/subdomains
- mkdir -p {{Output}}/resolved
exports:
subdomain_dir: "{{Output}}/subdomains"
- name: passive-enum
type: bash
parallel_commands:
- "{{Binaries}}/subfinder -d {{Target}} -silent -o {{subdomain_dir}}/subfinder.txt"
- "{{Binaries}}/assetfinder --subs-only {{Target}} > {{subdomain_dir}}/assetfinder.txt"
timeout: 600
- name: merge-subdomains
type: bash
command: "cat {{subdomain_dir}}/*.txt | sort -u > {{Output}}/all-subdomains.txt"
exports:
all_subdomains: "{{Output}}/all-subdomains.txt"
# Module 2: Port Scanning (depends on subdomain-enum)
- name: port-scan
depends_on:
- subdomain-enum
condition: "fileLength('{{all_subdomains}}') > 0"
steps:
- name: setup-ports
type: bash
command: mkdir -p {{Output}}/ports
exports:
ports_dir: "{{Output}}/ports"
- name: scan-ports
type: foreach
input: "{{all_subdomains}}"
variable: subdomain
threads: "{{threads}}"
step:
name: naabu-scan
type: bash
command: "{{Binaries}}/naabu -host [[subdomain]] -top-ports 100 -silent >> {{ports_dir}}/open-ports.txt"
timeout: 120
on_error: continue
- name: aggregate-ports
type: bash
command: "sort -u {{ports_dir}}/open-ports.txt -o {{Output}}/all-ports.txt"
exports:
all_ports: "{{Output}}/all-ports.txt"
# Module 3: Screenshot Capture (depends on port-scan)
- name: screenshot
depends_on:
- port-scan
condition: "fileLength('{{all_ports}}') > 0"
steps:
- name: setup-screenshots
type: bash
command: mkdir -p {{Output}}/screenshots
- name: probe-http
type: bash
command: "{{Binaries}}/httpx -l {{all_subdomains}} -silent -o {{Output}}/http-hosts.txt"
timeout: 300
exports:
http_hosts: "{{Output}}/http-hosts.txt"
- name: capture-screenshots
type: foreach
input: "{{http_hosts}}"
variable: url
threads: 10
step:
name: gowitness-capture
type: bash
command: "{{Binaries}}/gowitness single --url=[[url]] --screenshot-path={{Output}}/screenshots --timeout=30"
timeout: 60
on_error: continue