Skip to main content

38-phase automated reconnaissance framework for security researchers

Project description

██████╗ ███████╗ ██████╗ ██████╗ ███╗   ██╗███╗   ██╗██╗███╗   ██╗     ██╗ █████╗
██╔══██╗██╔════╝██╔════╝██╔═══██╗████╗  ██║████╗  ██║██║████╗  ██║     ██║██╔══██╗
██████╔╝█████╗  ██║     ██║   ██║██╔██╗ ██║██╔██╗ ██║██║██╔██╗ ██║     ██║███████║
██╔══██╗██╔══╝  ██║     ██║   ██║██║╚██╗██║██║╚██╗██║██║██║╚██╗██║██   ██║██╔══██║
██║  ██║███████╗╚██████╗╚██████╔╝██║ ╚████║██║ ╚████║██║██║ ╚████║╚█████╔╝██║  ██║
╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═══╝╚═╝╚═╝  ╚═══╝ ╚════╝ ╚═╝  ╚═╝

38-phase automated reconnaissance framework for authorized security testing.

Version Python Tests License Author Docs Changelog

⚠️ Use only against targets you own or have explicit written permission to test.


What it does

ReconNinja turns a single command into a full recon engagement. Point it at a domain or IP and it drives the complete pipeline — passive OSINT, port scanning, web discovery, vulnerability scanning, cloud intelligence, credential hunting, and AI-powered threat analysis — then generates HTML, JSON, Markdown, and SARIF reports.

v8.0.0 added a local desktop GUI: launch reconninja --gui, open your browser, and run scans point-and-click with real-time progress streaming and an in-app findings dashboard.


Install

# Recommended — full install with all system tools
git clone https://github.com/ExploitCraft/ReconNinja.git
cd ReconNinja && chmod +x install.sh && ./install.sh

# Python + alias only (skip Go/Rust tools)
./install.sh --python-only

# Skip Go tools
./install.sh --skip-go

# Skip RustScan
./install.sh --skip-rust

# From PyPI — installs reconninja command automatically
pip install ReconNinja

# From GitHub (latest commit)
pip install git+https://github.com/ExploitCraft/ReconNinja.git

# With optional extras
pip install "ReconNinja[full]"   # AI providers + Shodan + pysnmp
pip install "ReconNinja[ai]"     # AI providers only (groq, openai, gemini)
pip install "ReconNinja[dns]"    # dnspython for zone transfer

Arch Linux: if paru is found it's used exclusively (official + AUR, no sudo needed). Optionally add the BlackArch repo when prompted — unlocks 2800+ security tools via pacman.


Quick start

# Interactive mode — guided setup, no flags needed
reconninja

# Standard scan
reconninja -t example.com

# Full 38-phase pipeline, no prompts
reconninja -t example.com --profile full_suite -y

# Desktop GUI (opens browser on http://127.0.0.1:7117)
reconninja --gui

# Passive intel only — no keys required
reconninja -t example.com --whois --wayback --ssl -y

# v6 modules — no keys required
reconninja -t example.com --github-osint --js-extract \
  --cloud-buckets --dns-zone --waf --cors -y

# Full scan with keys + Slack alerts
reconninja -t example.com --profile full_suite \
  --shodan --shodan-key KEY \
  --vt --vt-key KEY \
  --ai --ai-provider groq --ai-key KEY \
  --github-osint --github-token TOKEN \
  --notify slack://hooks.slack.com/services/xxx \
  -y

# Diff two scan reports
reconninja --diff reports/example.com/20260101/report.json \
                  reports/example.com/20260301/report.json

GUI — v8.0.0

reconninja --gui
# Opens http://127.0.0.1:7117

The GUI is a local Flask web app — nothing leaves your machine.

Feature Detail
Scan configuration Target, profile, custom module picker, output formats, timeout
Live progress Real-time log stream via SSE — no page refresh
Findings dashboard Severity breakdown, findings table with Critical / High / Medium / Low / Info
Scan history Browse previous runs, re-open output directories

Scan profiles

Profile What runs
fast Top 100 ports, no scripts
standard Top 1000 ports, scripts + versions (default)
thorough All ports, OS detection, aggressive scripts
stealth SYN scan, low timing, no banners
web_only httpx + dir scan + nuclei
port_only RustScan + Masscan + Nmap
full_suite All 38 phases
custom Interactive module builder

Pipeline — 38 phases

Phase  1    Passive Recon      subdomain enum — amass, subfinder, crt.sh
Phase  2    RustScan           ultra-fast port discovery (all 65535 ports)
Phase  2b   Async TCP          pure-Python fallback, no root required
Phase  3    Masscan            optional SYN sweep (root required)
Phase  4    Nmap               deep service / version / script analysis
Phase  4b   CVE Lookup         NVD API CVE matching on detected services
Phase  5    httpx              live web detection + tech fingerprint
Phase  5b   WAF Detection      passive headers + wafw00f
Phase  5c   CORS Scanner       misconfiguration probe
Phase  6    Dir Scan           feroxbuster → ffuf → dirsearch fallback chain
Phase  6b   JS Extraction      endpoint + secret extraction from JS files
Phase  7    WhatWeb            technology fingerprinting
Phase  8    Nikto              classic web vulnerability scanner
Phase  9    Nuclei             template-based vulnerability detection
Phase  10   Screenshots        aquatone → gowitness fallback
Phase  11   AI Analysis        Groq / Ollama / Gemini / OpenAI
Phase  12   Intelligence       WHOIS · Wayback · SSL · VirusTotal · Shodan
Phase  13a  GitHub OSINT       secret / config file exposure search
Phase  13b  Cloud Buckets      AWS S3 / Azure Blob / GCS enumeration
Phase  13c  DNS Zone Transfer  AXFR vulnerability check
Phase  14a  Email Security     SPF / DKIM / DMARC + spoofability score 0–100
Phase  14b  Breach Check       HaveIBeenPwned domain breach lookup
Phase  14c  Cloud Metadata     AWS / Azure / GCP IMDS SSRF probe
Phase  14d  GraphQL Scanner    endpoint discovery + introspection dump
Phase  14e  JWT Scanner        none-algorithm bypass + weak HMAC secret cracker
Phase  14f  ASN / BGP Map      owned IP CIDRs via RIPE Stat
Phase  14g  Supply Chain       vulnerable JS libs + npm squatting check
Phase  14h  K8s / Docker Probe unauthenticated Kubernetes / Docker API detection
Phase  14i  DB Exposure        Redis / Elasticsearch / MongoDB / Memcached unauth
Phase  14j  SMTP Enum          user enumeration via VRFY / EXPN / RCPT TO
Phase  14k  SNMP Scan          community string brute-force + MIB walk
Phase  14l  LDAP Enum          anonymous bind + user / group / attribute dump
Phase  14m  DevOps Scan        Terraform state file exposure + Jenkins anon access
Phase  14n  GreyNoise          IP noise / RIOT / unknown tagging
Phase  14o  Typosquat          200+ lookalike domain variants, live DNS-resolved
Phase  14p  Censys             host intelligence (free API credentials)
Phase  14q  DNS History        historical resolutions via VirusTotal PDNS
Phase  15   Plugins            drop a .py into plugins/ to extend the pipeline
Phase  16   Reports            HTML · JSON · Markdown · SARIF 2.1.0

All flags

Target
  -t, --target           Domain, IP, CIDR, or path to list file
  -p, --profile          Scan profile (see above)
  -y, --yes              Skip confirmation prompt (CI / automation)

Port scanning
  --all-ports            Scan all 65535 ports
  --top-ports N          Top N ports (default: 1000)
  --timing T1-T5         Nmap timing template (default: T4)
  --threads N            Concurrent threads (default: 20)
  --rustscan             Enable RustScan pre-scan (requires rustscan)
  --masscan              Enable Masscan sweep (requires root)
  --masscan-rate N       Masscan packets per second (default: 5000)
  --async-concurrency N  Async TCP concurrency (default: 1000)
  --async-timeout N      Async TCP timeout in seconds (default: 1.5)

Web & discovery
  --httpx                Live service detection and fingerprinting
  --whatweb              WhatWeb technology fingerprinting
  --ferox                Feroxbuster directory brute-force
  --nikto                Nikto web server vulnerability scanner
  --nuclei               Nuclei template-based vulnerability scanner
  --aquatone             Visual recon and screenshot capture
  --subdomains           Subdomain enumeration (subfinder, amass, assetfinder)
  --wordlist-size        small (~1K) | medium (~10K, default) | large (~100K)

Vulnerability intelligence
  --cve                  NVD CVE lookup for detected services
  --nvd-key KEY          NVD API key (50 req/30s vs 5 without key)

v5 integrations
  --shodan               Shodan host intelligence
  --shodan-key KEY       Shodan API key
  --vt                   VirusTotal reputation check
  --vt-key KEY           VirusTotal API key
  --whois                WHOIS lookup (no key needed)
  --wayback              Wayback Machine URL discovery (no key needed)
  --ssl                  SSL/TLS certificate analysis (no key needed)

v6 modules
  --github-osint         GitHub secret / config file exposure search
  --github-token KEY     GitHub token (raises rate limit 60 → 5000 req/hr)
  --js-extract           JS endpoint and secret extraction
  --cloud-buckets        Cloud bucket enumeration (AWS / Azure / GCS)
  --dns-zone             DNS zone transfer (AXFR) check
  --waf                  WAF detection
  --cors                 CORS misconfiguration scanner

v7 modules
  --email-security       SPF / DKIM / DMARC validation + spoofability score
  --breach-check         HaveIBeenPwned domain breach check
  --hibp-key KEY         HIBP API key for email-level lookup
  --cloud-meta           AWS / Azure / GCP metadata SSRF probe
  --graphql              GraphQL endpoint discovery + introspection
  --jwt-scan             JWT none-alg bypass + weak HMAC secret cracker
  --asn-map              BGP / ASN → all owned IP CIDRs
  --supply-chain         Vulnerable JS libs + npm squat check
  --k8s-probe            Kubernetes / Docker unauthenticated API detection
  --db-exposure          Unauthenticated Redis / Elasticsearch / MongoDB / Memcached
  --smtp-enum            SMTP user enumeration (VRFY / RCPT TO)
  --snmp-scan            SNMP community string brute-force + MIB walk
  --ldap-enum            LDAP anonymous bind + user / group dump
  --devops-scan          Terraform state file + Jenkins exposure
  --greynoise            GreyNoise IP noise / RIOT / unknown tagging
  --greynoise-key KEY    GreyNoise API key (optional — community tier is free)
  --typosquat            Lookalike domain variant detection
  --censys               Censys host intelligence
  --censys-id ID         Censys API ID
  --censys-secret KEY    Censys API secret
  --dns-history          DNS history via VirusTotal PDNS (requires --vt-key)
  --sarif                Export findings as SARIF 2.1.0

v8 features
  --api-fuzz             REST API fuzzer: endpoint discovery, IDOR, auth bypass
  --oauth-scan           OAuth 2.0 / OIDC misconfiguration scanner
  --web-vulns            XSS, SQLi, LFI, SSRF vulnerability probes
  --open-redirect        Open redirect vulnerability scanner
  --linkedin             LinkedIn employee OSINT + tech stack inference
  --paste-monitor        Paste site credential and secret leak scanner
  --se-osint             Social engineering OSINT: emails, phones, contacts
  --apk-scan PATH        APK static analysis (provide path to .apk file)
  --app-store            Google Play + Apple App Store metadata scraper
  --anon-detect          Tor / VPN / proxy / hosting IP detection
  --dns-leak             DNS rebinding, open resolver, internal exposure check
  --web3-scan            Smart contract recon, ABI exposure, on-chain data
  --ens-lookup           ENS domain lookup + on-chain social profile resolution
  --gui                  Launch local desktop GUI on http://127.0.0.1:7117
  --gui-port N           GUI port (default: 7117)

AI analysis
  --ai                   Enable AI threat analysis
  --ai-provider          groq | ollama | gemini | openai (default: groq)
  --ai-key KEY           API key for the selected AI provider
  --ai-model MODEL       Override the default model
  --ai-consensus         Run multiple AI providers and synthesize consensus
  --attack-paths         AI-generated MITRE ATT&CK kill-chain attack paths
  --ai-remediate         Per-finding AI remediation + CVSSv3 scoring

Output & integrations
  --output DIR           Output directory (default: reports/)
  --output-format FMT    all | html | json | md | txt | pdf | sarif
  --pdf-report           Export pentest-ready PDF report
  --jira URL:EMAIL:TOKEN:PROJECT   Push findings to Jira
  --gh-issues TOKEN:OWNER/REPO     Push findings to GitHub Issues
  --siem URL:TOKEN[:TYPE]          Push to Splunk / Elastic HEC
  --notify URL           Webhook: slack://... discord://... https://...
  --exclude PHASES       Comma-separated phases to skip
  --timeout N            Per-operation timeout in seconds (default: 30)
  --rate-limit N         Seconds between requests (default: 0)

Scan management
  --resume FILE          Resume from a state.json checkpoint
  --diff A.json B.json   Compare two scan reports
  --update               Check GitHub for a newer version
  --force-update         Force update even if already on latest
  --check-tools          Show availability of all external tools

Output

Each scan creates a timestamped folder:

reports/
└── example.com_20260320_120000/
    ├── report.html          ← dark-mode dashboard
    ├── report.json          ← full machine-readable results
    ├── report.md            ← markdown summary
    ├── report.sarif         ← SARIF 2.1.0 for GitHub / VSCode / Azure DevOps
    ├── scan_config.json     ← exact config used for this run
    ├── scan.log             ← full execution log
    ├── state.json           ← resume checkpoint
    ├── subdomains/
    ├── nmap/
    ├── nuclei/
    ├── js_extract/
    ├── cloud_buckets/
    ├── dns_zone/
    ├── waf/
    └── cors/

Scan diff

# Baseline scan
reconninja -t example.com -y

# Scan again after changes
reconninja -t example.com -y

# See exactly what changed
reconninja --diff reports/example.com/20260101_120000/report.json \
                  reports/example.com/20260320_120000/report.json

Diff output covers: new / closed ports, new subdomains, new vulnerabilities, new technologies, changed service versions.


Notifications

# Slack
reconninja -t example.com --notify slack://hooks.slack.com/services/T.../B.../xxx -y

# Discord
reconninja -t example.com --notify discord://discord.com/api/webhooks/xxx/yyy -y

# Generic JSON webhook
reconninja -t example.com --notify https://your-server.com/webhook -y

Resume interrupted scans

reconninja --resume reports/example.com_20260320_120000/state.json

All results are checkpointed after every phase and fully restored on resume.


Plugin system

Drop a .py file into plugins/ and it runs automatically after all phases complete.

# plugins/my_check.py
PLUGIN_NAME    = "my_check"
PLUGIN_VERSION = "1.0"

def run(target, out_folder, result, cfg):
    print(f"Custom: {len(result.github_findings)} GitHub findings")
    print(f"Custom: {len(result.bucket_findings)} bucket findings")

Tool dependencies

reconninja --check-tools
Type Tools
Port scanning nmap · rustscan · masscan
Subdomain enum amass · subfinder · assetfinder
Web httpx · feroxbuster · ffuf · dirsearch · whatweb · nikto · nuclei · wafw00f
Screenshots aquatone · gowitness
DNS dig
GUI flask

Development

git clone https://github.com/ExploitCraft/ReconNinja.git
cd ReconNinja
chmod +x install.sh && ./install.sh

# Run all tests
python3 -m pytest tests/ -v

# Run specific test suites
python3 -m pytest tests/test_orchestrator.py -v
python3 -m pytest tests/test_v8_2_release.py -v

Changelog highlights

v8.3.0

  • Centralized version into info/version — single source of truth; bump one file, everything syncs

v8.2.1

  • Fixed pip install ReconNinjareconninja command now works after install

v8.2.0

  • Fixed requirements.txt — 9 missing core dependencies added
  • Fixed --help — 17 arguments had no description

v8.0.0

  • Desktop GUIreconninja --gui launches a local Flask web app on port 7117
  • 13 new scan modules across API security, social engineering, mobile, privacy, and Web3

v7.0.0

  • 17 new modules across Phases 14a–14q

v6.0.0

  • GitHub OSINT, JS extraction, cloud bucket enumeration, WAF detection, CORS scanner, DNS zone transfer, scan diff

Full history in CHANGELOG.md


Part of the ExploitCraft Ecosystem

Tool Description
envleaks Codebase & git history secret scanner
gitdork Google / Shodan dork generator
wifi-passview Cross-platform WiFi credential dumper
VaultHound Secret & credential scanner
ReconNinja 38-phase recon framework ← you are here

License

MIT — see LICENSE


ExploitCraft · Bangladesh · Building tools that matter

📄 Full documentation → doc.emonpersonal.xyz

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reconninja-8.3.0.tar.gz (195.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reconninja-8.3.0-py3-none-any.whl (202.1 kB view details)

Uploaded Python 3

File details

Details for the file reconninja-8.3.0.tar.gz.

File metadata

  • Download URL: reconninja-8.3.0.tar.gz
  • Upload date:
  • Size: 195.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reconninja-8.3.0.tar.gz
Algorithm Hash digest
SHA256 08a1ae189c5d8ada05ab62783bf49772d5cc56ec610170b64ee4f316bfb250b5
MD5 5e8a4881a4d5a5a3b6de9b4794655f22
BLAKE2b-256 3b0d0f3ef8c9eb903d86a115c668c1d74415f366bc763598541a5f4c12e371df

See more details on using hashes here.

Provenance

The following attestation bundles were made for reconninja-8.3.0.tar.gz:

Publisher: release.yml on ExploitCraft/ReconNinja

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file reconninja-8.3.0-py3-none-any.whl.

File metadata

  • Download URL: reconninja-8.3.0-py3-none-any.whl
  • Upload date:
  • Size: 202.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reconninja-8.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 afffa25579993526b49311d293282bc4b44736cf8992f0c693b19a93df0a81ea
MD5 5e7e9c073581cb4fc30d5efb5557f1dd
BLAKE2b-256 df426f2e1ac7ebee95f16998adce96023e2fdcdf6596fed8a6a80097b5e274c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for reconninja-8.3.0-py3-none-any.whl:

Publisher: release.yml on ExploitCraft/ReconNinja

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page