README

RedAmon Logo
RedAmon
Unmask the hidden before the world does

RedAmon is an open-source, self-hosted AI penetration testing framework that maps your attack surface into a graph, autonomously exploits it from a Kali sandbox with human approval gates, and opens pull requests that fix what it finds. From first packet to merged patch, with human oversight at every critical step.


Sponsored by NVISO      samugit83%2Fredamon | Trendshift

RedAmon Website Discord Community Telegram Channel RedAmon Platform Tour

GitHub Stars Version 7.6.2 Security Tool Warning MIT License AI Powered AI Gauntlet — Offensive AI Testing Fireteam Parallel Multi-Agent One Command Deploy on Server TrafficMind mitmproxy HTTP Capture 100+ Security Tools 185,000+ Detection Rules 400+ AI Models Metasploit Framework OpenVAS Scanner CypherFix Auto Remediation Wiki Documentation

LEGAL DISCLAIMER: This tool is intended for authorized security testing, educational purposes, and research only. Never use this system to scan, probe, or attack any system you do not own or have explicit written permission to test. Unauthorized access is illegal and punishable by law. By using this tool, you accept full responsibility for your actions. Read Full Disclaimer

🏆 Flagship result: RedAmon solves 101 / 104 (97.1%) of the XBOW web-security benchmark fully black-box. Every solve ships a complete, unedited raw agent session and a reproducible, step-by-step walkthrough: open any row and read exactly how the flag fell, tool call by tool call. Auditable, line by line. See the XBOW Validation Benchmark scorecard.

📊 Coverage, measured and self-scored: the Bug Bounty Coverage — The Full Taxonomy Audit (PDF, 124 pages) audits RedAmon against all 397 classes of web bug-bounty finding, one line at a time, naming the exact module, skill or scanner behind every verdict, and scoring the recon pipeline and the agentic system separately against their own remit. It is deliberately self-critical, it records what is missing as plainly as what is covered: 134 classes complete, 210 in the build backlog, 44 deliberately excluded, with one explicit decision for every class.

RedAmon Agent Demo

YouTube - Demos YouTube - XBOW Bench YouTube - Hacklab


Dynamic Multi-Tool Parallel Recon Pipeline

Parallel recon pipeline in action

RedAmon launches multiple reconnaissance tools in parallel, each feeding results into a shared knowledge graph in real time. Tools spin up, adapt their scope based on live discoveries, and coordinate without manual intervention. The entire attack surface -- subdomains, ports, endpoints, parameters -- materializes in minutes, not hours.


Recon as a Living Knowledge Graph

RedAmon Neo4j attack-surface graph rendered in 2D

Industry-standard scanners chained so each tool's output feeds the next, then merged into a single Neo4j knowledge graph. Findings are deduplicated, relationships are explicit, and the agent inherits a structured, fully connected attack surface ready to query in natural language.


Offense meets defense. One pipeline, full visibility.

Reconnaissance ➜ Exploitation ➜ Post-Exploitation ➜ AI Triage ➜ CodeFix Agent ➜ GitHub PR

RedAmon doesn't stop at finding vulnerabilities, it fixes them. The pipeline starts with a 6-phase reconnaissance engine that maps your target's entire attack surface, then hands control to an autonomous AI agent that validates CVE exploitability, tests credential policies, and maps lateral movement paths. Every finding is recorded in a Neo4j knowledge graph. When the offensive phase completes, CypherFix takes over: an AI triage agent correlates hundreds of findings, deduplicates them, and ranks them by exploitability. Then a CodeFix agent clones your repository, navigates the codebase with 11 code-aware tools, implements targeted fixes, and opens a GitHub pull request, ready for review and merge.

CypherFix demo


Roadmap & Community Contributions

We maintain a public Project Board with upcoming features open for community contributions. Pick a task and submit a PR!

Want to contribute? See CONTRIBUTING.md for how to get started.

Maintainers

Samuele Giampieri
Samuele Giampieri: Creator, Maintainer & AI Platform Architect

AI Platform Architect & Full-Stack Lead with 15+ years of freelancing experience and more than 30 projects shipped to production, including enterprise-scale AI agentic systems. AWS-certified (DevOps Engineer, ML Specialty) and IBM-certified AI Engineer. Designs end-to-end ML solutions spanning deep learning, NLP, Computer Vision, and AI Agent systems with LangChain/LangGraph.

LinkedIn · GitHub · Devergo Labs

Pathbreak - Agentic Cloud Security
From the same creator: Pathbreak - Agentic Cloud Security
See the attack path. Then break it.

Pathbreak is an agentic cloud security platform that discovers and validates the real attack paths a threat actor would exploit across your cloud. It catches the control-plane chains most tools miss.

Pathbreak - agentic cloud security
pathbreak.io
Ritesh Gohil
Ritesh Gohil: Maintainer & Lead Security Researcher

Cyber Security Engineer at Workday with over 7 years of experience in Web, API, Mobile, Network, and Cloud penetration testing. Published 11 CVEs in MITRE, with security acknowledgements from Google (4×) and Apple (6×). Secured 200+ web and mobile applications and contributed to Exploit Database, Google Hacking Database, and the AWS Community. Holds AWS Security Specialty, eWPTXv2, eCPPTv2, CRTP, and CEH certifications with expertise in red teaming, cloud security, CVE research, and security architecture review.

LinkedIn · GitHub

Anthropic Cyber Verification Program: the team behind RedAmon is approved under Anthropic’s Cyber Verification Program.


Quick Start

Prerequisites

  • Docker Engine 28.0.0 or newer & Docker Compose v2+ (check with docker version --format '{{.Server.Version}}')
    • macOS: Docker Desktop, with Memory raised to at least 4 GB (8 GB with --gvm) in Settings → Resources. Clone under ~/ so the path is inside the default File Sharing list.
    • Windows: Docker Desktop with the WSL2 backend, run from inside the WSL2 filesystem (~/), not /mnt/c/.

That’s it. No Node.js, Python, or security tools needed on your host.

Minimum System Requirements
Resource Without OpenVAS With OpenVAS (full stack)
CPU 2 cores 4 cores
RAM 7 GB 10 GB (16 GB recommended)
Disk 80 GB free 110 GB free

RAM is checked at start. ./redamon.sh refuses to start when the memory Docker can use does not cover the minimum of every service the profile runs (the memory allocator’s per-service floors, see README.MEMORY_GOVERNOR.md). With the default reserves that is about 6.5 GB for the core stack and about 9.6 GB with OpenVAS. REDAMON_SKIP_RAM_GATE=1 skips the check.

Without OpenVAS runs 9 containers: webapp, postgres, neo4j, agent, kali-sandbox, recon-orchestrator, docker-broker (a filtering Docker-socket proxy that the recon orchestrator’s spawned scan containers go through, so they can only launch the known tool images), and the plugin platform’s plugin-runner and plugin-gateway. With OpenVAS adds 4 more runtime containers (gvmd, ospd-openvas, gvm-postgres, gvm-redis) plus ~8 one-shot data-init containers for vulnerability feeds (~170K+ NVTs). First launch takes ~30 minutes for GVM feed synchronization. Dynamic recon and scan containers are spawned on-demand during operations and require additional resources.

Disk sizing for a real deployment. The figures above are bare minimums to build and run the stack (fixed platform footprint: ~70 GB without OpenVAS, ~95 GB with - measured by true on-disk image size after deduplicating the shared Kali base layers). For an always-on server running real engagements, add ~100 GB of free space for operational data - the Neo4j attack graph, scan artifacts/outputs, Postgres, and container logs all grow with use. That means 200 GB without OpenVAS, 250 GB with OpenVAS, each leaving well over 100 GB free for operations. See the deployment guide for the full breakdown.

1. Clone & Install

git clone https://github.com/samugit83/redamon.git
cd redamon

# Without GVM (lighter, faster startup):
./redamon.sh install

# With GVM / OpenVAS (full stack, ~30 min first run):
./redamon.sh install --gvm

The script builds all images and starts the services.

2. Create Admin Account

At the end of the install (and on every ./redamon.sh up or ./redamon.sh update if no admin exists), you will be prompted in the terminal:

[WARN] No admin user found. Let's create one.

  Admin name: Your Name
  Admin email: [email protected]
  Admin password: ********
  Confirm password: ********
  • Admin name – display name shown in the UI (e.g. Admin, your name, anything you want).
  • Admin email – used to log in at http://localhost:3000/login.
  • Admin password – minimum 12 characters.

After creation, open http://localhost:3000 and sign in with the email and password you just set.

No prompt appeared? On a heavy first boot (especially --gvm, or a small VM) the webapp can take a while to come up, so the automatic prompt may be skipped. Create the admin at any time with:

./redamon.sh create-admin

It waits for the webapp, then prompts for the same details. It is safe to re-run: reusing an existing admin’s email resets that password, a new email adds another admin.

What the admin can do:

  • Switch between all users via the user dropdown in the header (including users without a password).
  • Create new users (with or without a password) and assign them admin or standard roles.
  • Set or change any user’s password.
  • Delete users (except themselves).
  • Access the Users management page from the header navigation.

Standard users can only log in (if they have a password set by an admin), change their own password, and use the app within their own scope. They cannot switch users, create users, or access user management.

If you forget the admin password, reset it from the terminal:

./redamon.sh reset-password   # reset an EXISTING user's password
./redamon.sh create-admin     # create the first admin, or reset an admin by re-entering its email

Use create-admin when no admin exists yet (it upserts on email); reset-password only updates a user that already exists.

3. Configure

Open http://localhost:3000/settings (gear icon in the header) to configure everything. No .env file is needed.

  • LLM Providers – add API keys for OpenAI, Anthropic, OpenRouter, AWS Bedrock, or any OpenAI-compatible endpoint (Ollama, vLLM, Groq, etc.). Each provider can be tested before saving. The model selector in project settings dynamically fetches available models from configured providers.
  • API Keys – Tavily, Shodan, SerpAPI, NVD, Vulners, URLScan, and threat intelligence keys (Censys, FOFA, OTX, Netlas, VirusTotal, ZoomEye, CriminalIP) to enable extended agent capabilities (web search, OSINT, CVE lookups, passive threat intel). Uncover multi-engine search keys (Quake, Hunter, PublicWWW, HunterHow, Google, Onyphe, Driftnet) expand target discovery across 13 search engines – shared keys (Shodan, Censys, FOFA, etc.) are automatically reused. Supports key rotation – configure multiple keys per tool with automatic round-robin rotation to avoid rate limits.
  • Tunneling – configure ngrok or chisel for reverse shell tunneling. Changes apply immediately without container restarts.

All settings are stored per-user in the database. See the AI Model Providers wiki page for detailed setup instructions.

4. Open the Webapp

Go to http://localhost:3000 – create a project, configure your target, and start scanning.

For a detailed walkthrough of every feature, check the Wiki.

Prefer video? Watch the Product Demos playlist on YouTube for step-by-step tutorials.

Having issues? See the Troubleshooting guide or the Wiki Troubleshooting page.

Management Commands

All lifecycle management is handled by a single script:

Command Description
./redamon.sh install Build + start lightweight (no GVM, no Knowledge Base, Tavily-only web search)
./redamon.sh install --kbase Build + start with the local Knowledge Base (~4.4 GB heavier)
./redamon.sh install --gvm Build + start with GVM/OpenVAS

Flags can be combined: ./redamon.sh install --gvm --kbase

Command Description
./redamon.sh update Pull latest version, smart-rebuild only changed services (preserves your install-time GVM/KB choice), and apply a changed .env to the running services
./redamon.sh up Start services (auto-detects GVM and KB mode from install)
./redamon.sh up dev Start in dev mode with hot-reload (auto-detects GVM and KB mode)
./redamon.sh down Stop services (preserves data)
./redamon.sh status Show running services, version, GVM mode, KB state, plugin platform state (and why it cannot run on this host, when it cannot)
./redamon.sh clean Remove containers + images, keep data
./redamon.sh create-admin Create the admin login (or reset it) – use if no prompt appeared at install
./redamon.sh reset-password Reset an existing user’s password from the terminal
./redamon.sh supply-chain-sync [ecosystems] Populate the offline OSV database for the supply-chain feature (default: npm; e.g. npm PyPI Go)
./redamon.sh purge Remove everything including all data

Updating to a New Version

Just run:

./redamon.sh update

The script pulls the latest code from GitHub, detects which Dockerfiles and source files changed, rebuilds only the affected images, and restarts the updated services. Your databases, scan results, and reports are preserved – volumes are never deleted.

One-time note when a release adds a new background service. update re-execs the freshly-pulled script so new build/start rules apply automatically – but only for the script version you are updating from. When updating from a version that predates this self-heal (i.e. your first update onto it), run ./redamon.sh up once right after update so any newly added core service is started:

./redamon.sh update && ./redamon.sh up

up is idempotent – it starts only what is missing and leaves running containers untouched. After this one-time step, plain ./redamon.sh update handles everything on its own.

Upgrading across 6.9 (repository reorganization). 6.9 grouped the top-level directories under scanners/, services/, testing/, tooling/ and docs/. git pull moves only tracked files, so data that git does not track – the knowledge-base index, past scan outputs, and the single-host deploy .env and TLS material – would otherwise be left behind at the old paths. update (and up/status) migrate it for you automatically and print what moved. If any file was written by a container as root and could not be moved, finish it with:

sudo ./redamon.sh migrate-layout

The webapp also checks for updates automatically and shows a notification in the UI when a new version is available.

Deploy to a Server (Production)

The Quick Start above runs RedAmon locally on localhost. To run a shared, internet-reachable instance on a Linux server (EC2, DigitalOcean, Hetzner, or bare metal), use the single-host deploy in tooling/deploy/single-host/. It drives redamon.sh over SSH from your laptop and wraps the stack in the internet-facing security layer RedAmon omits by default: nginx + TLS (Let’s Encrypt), a host firewall, SSH hardening, and fail2ban, with a single public HTTPS origin so only the login page is reachable and everything else stays bound to loopback.

cd tooling/deploy/single-host
cp .env.example .env      # set HOST_IP, DOMAIN, SSH_KEY_PATH, OPERATOR_ALLOW_CIDRS,
                          # LETSENCRYPT_EMAIL, ADMIN_* ...
./deploy.sh init          # first build takes 30-60 min, then log in at https://<domain>/

Full walkthrough: Wiki: Deploying to a Server. Complete reference: tooling/deploy/single-host/README.md.

Development Mode

For contributors and active development with Next.js fast refresh:

./redamon.sh up dev           # auto-detects GVM mode from install

Tool images are built automatically on first run if they don’t exist yet. The dev override swaps the production webapp image for a dev container with your source code volume-mounted. Every file save triggers instant hot-reload in the browser.

When to Rebuild vs Restart
What changed Action needed
webapp/src/ (frontend code) Nothing – Next.js hot-reload handles it in dev mode
agentic/*.py (agent Python code) docker compose build agent && docker compose up -d agent (source is baked into the image, so restart alone won’t pick up .py changes)
recon_orchestrator/*.py docker compose restart recon-orchestrator
mcp/servers/*.py (MCP servers) docker compose restart kali-sandbox
agentic/Dockerfile or agentic/requirements.txt docker compose build agent && docker compose up -d agent
recon_orchestrator/Dockerfile or its requirements.txt docker compose build recon-orchestrator && docker compose up -d recon-orchestrator
mcp/kali-sandbox/Dockerfile docker compose build kali-sandbox && docker compose up -d kali-sandbox
webapp/Dockerfile or webapp/package.json docker compose build webapp && docker compose up -d webapp
recon/Dockerfile docker compose --profile tools build recon
scanners/gvm_scan/Dockerfile docker compose --profile tools build vuln-scanner
scanners/github_secret_hunt/Dockerfile docker compose --profile tools build github-secret-hunter
scanners/trufflehog_scan/Dockerfile (Secret Multiscanner) docker compose --profile tools build trufflehog-scanner
scanners/baddns_scan/Dockerfile or scanners/baddns_scan/entrypoint.sh docker compose --profile tools build baddns-scanner
scanners/wcvs/Dockerfile (web cache poisoning engine) docker compose --profile tools build wcvs
scanners/supply_chain_scan/Dockerfile (L1 scanner) docker compose --profile tools build supply-chain
scanners/supply_chain_analyzer/ (DIRTY analyzer; entrypoint is baked) docker compose --profile tools build supply-chain-analyzer
docker-compose.yml docker compose up -d (re-creates affected containers)
prisma/schema.prisma docker compose exec webapp npx prisma db push

Rebuild a single service:

docker compose build <service>                    # Rebuild one image
docker compose up -d --no-deps <service>          # Restart only that service

Common dev commands:

docker compose ps                                 # Check service status
docker compose logs -f <service>                  # Follow logs for a service
docker compose down                               # Stop all (preserves volumes)
docker compose --profile tools down --rmi local   # Remove built images
docker compose --profile tools down --rmi local --volumes --remove-orphans  # Full cleanup

Reclaim disk space:

docker system df                                  # Show Docker disk usage (add -v for per-image breakdown)
docker image prune -f                             # Remove dangling images (auto-run by `./redamon.sh install` and `update`)
docker builder prune -f                           # Drop unused build cache (auto-run after every successful build; opt out with REDAMON_NO_AUTO_PRUNE=1)
docker builder prune -af                          # Drop ALL build cache, including what the current images reuse -- frees no extra disk and makes the next rebuild cold
docker container prune -f                         # Remove stopped containers

For a complete development reference – hot-reload rules, common commands, important rules, and AI-assisted coding guidelines – see the Developer Guide.


The agent’s web_search tool includes a local Knowledge Base – a RAG pipeline that searches curated security datasets (GTFOBins, LOLBAS, OWASP WSTG, NVD CVEs, ExploitDB, Nuclei templates, and agent skill docs) before falling back to Tavily web search. When the KB returns a high-confidence match, Tavily is skipped entirely for faster, offline-capable results.

How it works: When the KB is enabled, install / up / update builds a lightweight KB index (~1,200 chunks in 10-15 min on CPU). At query time, the agent runs a hybrid retrieval pipeline (FAISS vector search + Neo4j fulltext), reranks with a cross-encoder, and checks a confidence threshold. If the score is high enough, results come from the local KB. Otherwise, it falls back to Tavily or merges both.

Default behavior: The KB is opt-in. ./redamon.sh install produces a lightweight install (~4.4 GB lighter, Tavily-only web search). To enable the local KB, pass --kbase:

./redamon.sh install --kbase

On first install with --kbase, RedAmon detects your hardware (GPU / CPU / API) and offers a quick-start profile. The choice is persisted, so subsequent update / up commands respect it without re-passing the flag.

Speed up ingestion with API embeddings: By default, embeddings run locally on CPU/GPU. On CPU-only machines, large datasets (ExploitDB, NVD) can take hours. You can offload embedding to an external API by creating a .env file from the template:

cp .env.example .env

Then configure the embedding API in .env:

Variable Default Description
KB_EMBEDDING_USE_API false Set to true to use API-based embeddings instead of local model
KB_EMBEDDING_API_BASE_URL (empty = OpenAI) Any OpenAI-compatible endpoint (Ollama, vLLM, LiteLLM, Together AI, Azure)
KB_EMBEDDING_API_KEY (empty) API key for the embedding provider
KB_EMBEDDING_API_MODEL text-embedding-3-small Model name (provider-specific)
NVD_API_KEY (empty) Free NVD API key for 10x faster CVE ingestion

Example with Ollama (free, local, no API key cost):

KB_EMBEDDING_USE_API=true
KB_EMBEDDING_API_BASE_URL=http://host.docker.internal:11434/v1
KB_EMBEDDING_API_KEY=ollama
KB_EMBEDDING_API_MODEL=nomic-embed-text

Important: Ingestion and query must use the same model. If you switch models, rebuild the index: make -C services/knowledge_base kb-rebuild-lite MODE=docker

Manage the KB:

./redamon.sh kb build lite          # Build with lite profile (~30-60s with API)
./redamon.sh kb build standard      # Add NVD CVEs
./redamon.sh kb update nvd          # Incremental NVD refresh
./redamon.sh kb stats               # Show index statistics
./redamon.sh kb rebuild lite        # Wipe and rebuild from scratch

For full technical documentation – query pipeline, data sources, ingestion profiles, scoring, security model – see the Knowledge Base Technical Reference or the Wiki: Knowledge Base & Web Search.


Table of Contents


Overview

RedAmon is a modular, containerized penetration testing framework that chains automated reconnaissance, AI-driven exploitation, and graph-powered intelligence into a single, end-to-end offensive security pipeline. Every component runs inside Docker (no tools installed on your host) and communicates through well-defined APIs so each layer can evolve independently.

The platform is built around six pillars:

Pillar What it does
Reconnaissance Pipeline A parallelized fan-out / fan-in scanning pipeline that maps your target’s entire attack surface (starting from a single domain, IP addresses / CIDR ranges, or a Domain batch of many domains scanned in turn) from subdomain discovery (5 concurrent tools) through port scanning, Nmap service detection and NSE vulnerability scripts, HTTP probing, resource enumeration, and vulnerability detection. Independent modules run concurrently via ThreadPoolExecutor, graph DB updates happen in a background thread, and results are stored as a rich, queryable graph. Complemented by standalone GVM network scanning, GitHub secret hunting, and Secret Multiscanner deep secret scanning modules.
AI Agent Orchestrator A LangGraph-based autonomous agent that reasons about the graph, selects security tools via MCP, transitions through informational / exploitation / post-exploitation phases, and can be steered in real-time via chat.
Attack Surface Graph A Neo4j knowledge graph (every node type and relationship is declared once, in graph_db/schema_sections.md) that serves as the single source of truth for every finding, and the primary data source the AI agent queries before every decision.
EvoGraph A persistent, evolutionary attack chain graph in Neo4j that tracks every step, finding, decision, and failure across the attack lifecycle, bridging the recon graph and enabling cross-session intelligence accumulation.
CypherFix Automated vulnerability remediation pipeline: one triage run scores every finding from the graph with a fixed risk model, groups the ones that share a fix, has an LLM check the evidence behind each, and writes one fix item per group. A CodeFix agent then clones the target repository, implements a fix using a ReAct loop with 11 code tools, and opens a GitHub pull request.
Project Settings Engine Hundreds of per-project parameters (exposed through the webapp UI, each one listed in the generated Project Settings Registry) that control every tool’s behavior, from Naabu thread counts to Nuclei severity filters to agent approval gates.

Built for Enterprise, Secure by Design

RedAmon is engineered to drop into a real security organization, not just a researcher’s laptop.

  • Secure by design, STRIDE threat-modeled. The whole platform is assessed end to end under STRIDE and hardened in independently verified waves: code-level privilege separation, a filtering Docker broker in front of the host socket, fail-closed auth, SSRF egress guards, secret redaction, append-only audit trails, and a non-disableable guardrail that blocks government, military, and intergovernmental targets. See the Security Posture and Threat Model.
  • Fully isolated and containerized. Every tool, scanner, and agent runs in its own container with no host-level execution. Scan jobs are spawned as ephemeral sibling containers with their own filesystem and network namespace, then torn down on completion, keeping the host clean and containing the blast radius of any exploit.
  • Governed and multi-tenant. Multi-user / multi-project tenancy with admin and standard roles, DB-level user_id + project_id scoping on every node, Rules-of-Engagement enforcement, human-in-the-loop approval gates, and hundreds of per-project settings give teams the control an enterprise engagement requires.

Deploy to a server in one command. Beyond local localhost, RedAmon ships a hardened single-host deploy that stands up a shared, internet-reachable instance and wraps the stack in nginx + TLS (Let’s Encrypt), a host firewall, SSH hardening, and fail2ban, exposing a single public HTTPS origin:

cd tooling/deploy/single-host
cp .env.example .env      # set DOMAIN, HOST_IP, SSH_KEY_PATH, ADMIN_* ...
./deploy.sh init          # builds the full stack and brings it up over SSH

Full walkthrough: Wiki: Deploying to a Server.


Security & Threat Model

RedAmon is offensive software, so we hold it to the standard it tests others by. It is engineered secure by design and has been assessed end to end under the STRIDE methodology (Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege), with findings remediated in sequenced, independently verified waves.

This is not a marketing claim. It is grounded in a published, evidence-based analysis you can read:

  • Security Posture - the full defense-in-depth control catalog: every layer implemented, mapped to the code.
  • Threat Model - the assets, trust boundaries, data flows, entry points, and network surface the analysis was built on.

Highlights of what is implemented:

  • Code-level privilege separation. The target-facing worker is the least trusted component and holds no secrets; a filtering docker-broker stands between the orchestrator and the host Docker socket (image allowlist, denies --privileged, host-root binds, dangerous capabilities).
  • Two deployment postures, one trust model. Local (backends bound to loopback) and a hardened public-internet deploy that adds nginx + TLS, an operator gate, login rate-limiting, and a single public origin.
  • Fail-closed by default. Unset auth tokens reject rather than serve, default database credentials are refused and rotated, WebSockets require a signed ticket plus a server-side same-origin check, and every request is scoped to its authenticated owner (per-user access control with anti-enumeration 404s).
  • Defense in depth. SSRF egress guards, secret redaction in logs, append-only audit trails, container-escape hardening, decompression and concurrency caps, and supply-chain pinning (sha256 + commit pins).
  • A non-disableable hard guardrail blocks government, military, and intergovernmental targets regardless of configuration.
  • Third-party plugins are contained, not trusted. The plugin platform installs only from an Ed25519-signed catalog, runs each plugin under its own UID in a runner with no internet and no database or LLM credentials, reaches the stack only through a two-route proxy that re-authorizes every call, and lets a plugin change the agent’s instructions only through text a person approves.
  • Verified, release-gated remediation. Fixes ship in sequenced waves, each independently verified with live exploit reproduction before and after the patch. See the Changelog security entries.

Found a vulnerability? See our Security Policy for private disclosure.


Feature Highlights

Reconnaissance Pipeline

Interactive walkthrough: Inside the Recon Pipeline

A fully automated, end-to-end external attack-surface mapper running inside a Kali Linux container. Give it one input (a root domain, a subdomain list, IP/CIDR ranges, or a Domain batch: a list of hostnames grouped by domain and scanned one group after another into a single graph) and the pipeline returns a complete, structured picture of the target: every subdomain, every live host, every open port, every HTTP service with its technology stack, every crawled endpoint and discovered parameter, every CVE the target is likely vulnerable to, plus dedicated scanners for GraphQL APIs, subdomain takeovers, hidden virtual hosts behind reverse proxies, web cache poisoning & deception, and an Adversarial AI Surface layer that tags AI runtimes / vector DBs / LLM frontends / proxies / MCP servers / chat / completion / embedding / RAG endpoints and prompt-injectable parameters using header / favicon / title / path / parameter-name signatures, then actively confirms them with a dedicated AI Surface Recon module (benign chat-shape probes, MCP handshake + tool-poisoning scan, vector-DB reads — no LLM calls).

Everything runs on a fan-out / fan-in architecture: each phase fires as many tools in parallel as the work allows, then converges before the next phase begins. 40+ industry tools integrate into one coordinated workflow, wildcard DNS poisoning is filtered out automatically with puredns, and stealth mode keeps the entire pipeline running on passive sources only when active probing is off-limits. Findings stream into the Neo4j knowledge graph on a background thread so the scan never blocks on database writes, and the raw JSON is preserved for download. The detailed tool-by-tool breakdown is in the matrix below.

Wiki: Running Reconnaissance | Technical: README.RECON.md

RedAmon Reconnaissance Pipeline

Recon Pipeline Tool Matrix
Settings Tab Phase Tools Type Execution
Discovery & OSINT Subdomain Discovery crt.sh, HackerTarget, Subfinder, Amass, Knockpy Passive* 5 tools parallel
Wildcard Filtering Puredns Active Sequential
WHOIS + URLScan python-whois, URLScan.io API Passive Parallel
DNS Resolution dnspython Passive 20 parallel workers
OSINT Enrichment Shodan / InternetDB Passive Parallel with port scan
Uncover Expansion ProjectDiscovery Uncover (13 engines: Shodan, Censys, FOFA, ZoomEye, Netlas, CriminalIP, Quake, Hunter, PublicWWW, HunterHow, Google, Onyphe, Driftnet) Passive Before port scan (GROUP 2b)
Threat Intel Enrichment Censys, FOFA, OTX (AlienVault), Netlas, VirusTotal, ZoomEye, CriminalIP Passive 7 tools parallel (GROUP 3b)
Port Scanning Port Scanning Masscan, Naabu Active / Passive Both parallel (Naabu supports passive InternetDB mode)
Nmap Service Detection Service Version Detection Nmap (-sV, --script vuln) Active Sequential per target
Port Scanning TLS Certificate Grab tlsx: one handshake per open non-HTTP port (SMTPS 465, IMAPS 993, POP3S 995, LDAPS 636, FTPS 990, and any odd TLS port the port scan found), capturing issuer / SAN / validity / posture where httpx only reaches the five HTTPS ports it dials. In-scope SAN hostnames feed back as scan targets (apex-scoped, resolve-checked); optional JARM / JA3 fingerprints and TLS version / cipher enumeration Active After Nmap, before HTTP probing so discovered hostnames become probe targets (GROUP 3.6)
HTTP Probing HTTP Probing httpx Active Internal parallel
Tech Detection Wappalyzer Passive Sequential (post-probe)
Banner Grabbing Custom (Python sockets: SSH, FTP, SMTP, MySQL, etc.) Active Parallel workers
Resource Enum Web Crawling Katana, Hakrawler Active Parallel
Archive Discovery GAU (Wayback, CommonCrawl, OTX) Passive Parallel with crawlers
Parameter Mining ParamSpider (Wayback CDX) Passive Parallel with crawlers
JS Analysis jsluice Active Sequential (post-crawl)
Directory Fuzzing FFuf Active Sequential (post-jsluice)
Browser Crawling ZAP Ajax Spider Active Sequential (post-FFuf), per-seed Docker containers in parallel
Parameter Discovery Arjun Active / Passive Methods parallel (GET/POST/JSON/XML)
API Discovery Kiterunner Active Sequential per wordlist
API Specification Import OpenAPI / Swagger (declared endpoints, never called) Active (documents only) Sequential (after the other sources)
Endpoint AI Classifier Path + parameter classifier — tags Endpoint.ai_interface_type (llm-chat, llm-completion, llm-embedding, llm-tool-call, sse-stream, mcp, llm-graphql), is_ai_rag_ingest, Parameter.is_ai_prompt_injectable against catalogued AI signatures Passive Sequential (post-crawl)
JS Recon JS Secret Detection 100 regex patterns + custom uploads Passive Parallel per file
Key Validation 21 service validators (AWS, GitHub, Stripe, etc.) Active Rate-limited (1/sec/svc)
TruffleHog Engine TruffleHog in a hardened sidecar over local copies of the JS, keys merged one per key (on by default for new projects; no network unless keys are validated) Passive (Active with key validation) Own worker, own budget
Source Map Discovery Comment, header, path probing Active Per JS file
Dependency Confusion npm registry check Passive Per scoped package
Endpoint Extraction REST, GraphQL, WebSocket, router patterns Passive Per JS file
Framework Fingerprinting 12 built-in + custom signatures Passive Per JS file
DOM Sink Detection 17 XSS/prototype pollution patterns Passive Per JS file
Serialized Object Scan Serialized-Object Detection Passive, in-memory detection of insecure-deserialization sinks across every major family (native Java rO0/aced, Jackson/FastJSON/XMLDecoder/XStream/SnakeYAML/Hessian, PHP O:/a: + PHAR, Python pickle, .NET BinaryFormatter + ASP.NET ViewState, Ruby Marshal) in response headers, Set-Cookie, enumerated parameters and crawled form fields; bomb-safe decode-and-recurse normalizer that never deserializes. Writes info-severity :Vulnerability candidates (needs_agent_confirmation) that the Insecure Deserialization agent skill then confirms with a non-destructive OOB oracle. Disabled by default Passive GROUP 5b (beside JS Recon)
Supply Chain Recon Malicious Package Detection Black-box harvest of the npm package set the target serves (source-map node_modules mining + import/require + Wappalyzer technologies), synthesized into a CycloneDX SBOM and verdicted against the offline OSV database. Writes Package + MalPackageFinding nodes, anchored to BaseURL via DEPENDS_ON. No new fetches (parses JS-recon output) Passive (offline) Post-JS-recon (GROUP 5.5)
AI Surface Recon AI/LLM/MCP/Vector-DB Fingerprinting Active confirmation of the surfaces the classifier flagged — chat-shape probes (dialect/streaming/latency), MCP handshake + tools/list + Cisco YARA tool-poisoning scan, OpenAPI/model-listing discovery, Julius YAML probe-pack engine, vector-DB confirmation reads (qdrant/chroma/weaviate/milvus). Writes Endpoint.ai_* / ai_mcp_*, Parameter.is_ai_prompt_injectable, confirmed Technology(ai-*), and MCP tool-poisoning Vulnerability nodes Active (benign, no LLM calls) Hosts parallel, workloads sequential (GROUP 5c / Phase 4.5)
AI Gauntlet Broad LLM Scan garak — 40 probe families (prompt injection, DAN jailbreaks, encoding bypass, data-leak replay, system-prompt extraction, toxicity, malware / exploit generation, package hallucination) Active (offensive) Offensive follow-up to recon; one-shot per probe, ASR per family, local-judge graded
Multi-Turn Jailbreaks PyRIT — bounded conversational attacks (crescendo, skeleton-key, TAP, many-shot) Active (offensive) Multi-turn escalation, local attacker / judge model
Quality + Safety Scan Giskard — app-tailored detectors (prompt injection, information disclosure, hallucination, harmfulness, stereotypes, sycophancy, output formatting) Active (offensive) Test set generated from the app purpose, local judge
Red-Team Eval promptfoo — public attack datasets (Pliny, BeaverTails, HarmBench) + encoding strategies (base64, rot13, leetspeak, morse, pig latin) Active (offensive) Dataset eval, ASR per plugin, local judge
Vulnerability Scanning Vulnerability Scanning Nuclei (12,000+ templates + DAST + custom template upload) Active Parallel with GraphQL Scan + Subdomain Takeover + VHost & SNI + Web Cache Poisoning + Origin Discovery (GROUP 6 Phase A)
GraphQL Security GraphQL Security Testing Endpoint discovery, introspection test, schema extraction, sensitive-field detection, graphql-cop (12 misconfig checks: alias/batch/directive DoS, GraphiQL, trace mode, GET/POST CSRF, field suggestions) Active / Passive Parallel with Nuclei + Subdomain Takeover + VHost & SNI + Web Cache Poisoning + Origin Discovery (GROUP 6 Phase A)
Subdomain Takeover Subdomain Takeover Detection Subjack (Apache-2.0 DNS-first fingerprints) + Nuclei takeover templates (http/takeovers/ + dns/) + BadDNS (AGPL-3.0 isolated sidecar: CNAME, NS, MX, TXT, SPF, DMARC, wildcard, NSEC, references, zonetransfer). Cross-tool dedup, 12+ auto-exploitable providers, confidence-scored confirmed / likely / manual_review verdicts Active / Passive Parallel with Nuclei + GraphQL Scan + VHost & SNI + Web Cache Poisoning + Origin Discovery (GROUP 6 Phase A)
VHost & SNI Enumeration Hidden Virtual Host Discovery Curl-only dual-layer probing: L7 Host-header overrides + L4 TLS SNI swaps via --resolve, baseline-comparison anomaly detection, 4-tier severity ladder (high for L7/L4 routing inconsistency, medium for internal-keyword matches, low/info for status/size deltas), 2,471-entry default wordlist + custom + graph-derived candidates, discovery feedback loop into httpx Active Parallel with Nuclei + GraphQL Scan + Subdomain Takeover + Web Cache Poisoning + Origin Discovery (GROUP 6 Phase A)
Web Cache Poisoning Web Cache Poisoning & Deception Two-engine detection: WCVS (Hackmanit, Docker-in-Docker) breadth sweep across 10+ technique classes (unkeyed-header poisoning, parameter cloaking, path/cache-key normalization, cache-key injection, web cache deception) then a RedAmon-native 5-phase confirmation (cache oracle with silent-cache frozen-Date fallback, isolated cache-buster, fingerprint-gated framework packs for Next.js/Nuxt/Remix, baseline→poison→clean persistence check, verified against a never-poisoned control slot and reproduced on fresh slots, reflected + non-reflective differential detection). Confidence-scored Confirmed/Strong/Tentative tiers, min-confidence gate; benign .invalid canaries + isolated cache buckets so the real cache is never poisoned. Disabled by default Active Parallel with Nuclei + GraphQL Scan + Subdomain Takeover + VHost & SNI + Origin Discovery (GROUP 6 Phase A)
Route Exposure Scan Unauthenticated Routes & Exposed Files Requests the routes recon found (crawl, ffuf, kiterunner, OpenAPI, JS bundles) plus generated ones (internal/admin/debug seed paths, .git/.svn/.hg/.env/web.config, backup copies read with HEAD and a 1 KB Range, older API versions, sibling routes of each API, framework debug paths from the detected stack, the routes an open catalog lists, and optionally the paths that hit tried on sibling hosts) without credentials and, where the AuthProfile covers the host, logged in. Leads for the agent (needs_agent_confirmation): a route answering anonymously where auth was expected (OpenAPI security, locked siblings, a locked newer version, Vary on auth), an API hidden only by the browser’s router (client_gated), a response with sensitive fields / other people’s personal data (types and one count stored, never values), a credentialed CORS origin reflection, or logged-in content a shared cache would serve. Findings a signature proves: exposed VCS/env/config/backup files (a .git proven by a bounded walk to its commit object), Werkzeug/Ignition consoles, actuator env/heapdump, debug pages, route catalogs, secrets. The Access Control, Path Traversal and RCE agent skills confirm the leads with read-only proofs; three optional TypeSafe Jev hooks rank the routes and order the leads (saved on each finding), never dropping one. Catch-all control probe, login-wall prefilter, GET/HEAD only, never a state-changing path, one locked pacer under the RoE ceiling. Disabled by default Active Parallel with Nuclei + GraphQL Scan + Subdomain Takeover + VHost & SNI + Web Cache Poisoning + Origin Discovery (GROUP 6 Phase A)
Origin Discovery Origin-IP Discovery (CDN/WAF unmasking) Finds the real origin server hidden behind a CDN/WAF by pivoting on the fingerprints the origin leaks: 44 non-CDN subdomain names, SPF/MX record IPs, crt.sh SANs, the favicon hash (mmh3), internet-wide scanners (Shodan/Censys/FOFA/ZoomEye/OTX/VirusTotal), and passive-DNS history (SecurityTrails/ViewDNS). It then confirms each candidate by fetching it directly and with a forged Host: header, scoring HTML 60% + TLS cert 25% + headers 15% (± status) against the fronted site. Fail-closed SSRF / CDN-range / current-resolution / RoE filters before any probe; per-scan keyed-search budget; per-target cache; never-raise; converges with the WAF-bypass finding via a tenant-scoped id. Disabled by default Active / Passive Parallel with Nuclei + GraphQL Scan + Subdomain Takeover + VHost & SNI + Web Cache Poisoning (GROUP 6 Phase A)
Security Checks Security Checks WAF bypass, direct IP access, TLS expiry, missing headers, cache-control Active Parallel workers
CVE & MITRE CVE Enrichment NVD API, Vulners API Passive Sequential
MITRE Enrichment CWE / CAPEC mapping Passive Sequential

*Amass can run in active mode when configured. Knockpy performs active DNS probing.

Partial Recon

Run any single tool from the pipeline independently without re-running the entire scan. Up to 12 partial recons can run in parallel per project, each with independent logs, stop controls, and status badges visible in both the Graph toolbar and Project Settings header. Each tool section has a play button that opens a modal where you can review existing graph data, add custom targets (subdomains, IPs, ports, or URLs), and launch the tool in isolation. Results are merged back into the Neo4j graph using MERGE operations – duplicates are updated, not recreated. The tool runs with all project settings (timeouts, wordlists, API keys, proxy) applied automatically. All pipeline tools support partial recon.

Wiki: Recon Pipeline Workflow – Partial Recon

AI in Pipeline

Optional LLM-augmented decision points wired inside the recon pipeline where static look-ups historically drift – Nuclei prunes its tag list to the detected tech stack, the WAF classifier catches header-stripped Cloudflare/AWS WAF/Imperva, and many others across FFuf, Nuclei false-positive filtering, and subdomain-takeover disambiguation. Each hook is a cascade fallback after the static path with a deterministic safe fallback, so an LLM outage cannot break a scan. One master toggle in the Target tab governs them all.

The recon pipeline uses TypeSafe Jev, a typed decision model, for nine decisions: what kind of page each URL is, which host Hakrawler crawls first, which directories and extensions FFuf fuzzes, whether a tool failed or just found nothing, which Nuclei tags to run, whether a WAF is in front, whether a takeover is real, and which serialization format a flagged blob is. Three more Jev hooks steer the Route Exposure Scan: which routes fill its request budget, whether a lead’s page is a disguised login wall, and how sensitive each lead is, so the agent confirms the most sensitive first. They only rank and order: no lead is dropped, and without a Jev answer the scan is the deterministic one. Jev needs a token on the project owner’s account; see how it works in the Jev Meets the Recon Pipeline walkthrough on redamon.org.

Wiki: TypeSafe Jev

Wiki: AI in Pipeline

AI Gauntlet: Offensive AI/LLM Testing

Where the recon pipeline finds the AI surface, the AI Gauntlet attacks it. Pick the discovered LLM endpoints (or type a custom URL), choose a tool, confirm the Rules of Engagement, and launch: a short-lived container runs the target through four industry red-team tools – garak (broad single-shot scanner, 40 probe families), PyRIT (bounded multi-turn jailbreaks), Giskard (LLM-assisted safety scan), and promptfoo (dataset red-team eval) – measuring an Attack Success Rate per attack and writing the confirmed weaknesses back onto the graph as OWASP-LLM / MITRE-ATLAS-mapped Vulnerability findings with evidence transcripts.

It is deterministic (seeds, fixed bounds, pinned tool versions) and runs with zero external egress: every judge / grader / embedding call is forced to a local Ollama model, so no payload or transcript ever leaves your machine. Off by default and RoE-gated, with live phase-by-phase progress, and findings surfaced in the Red Zone AI Gauntlet Vulnerabilities table and the pentest report.

Wiki: AI Gauntlet | Technical: AI_GAUNTLET_TECH_DOC.md

GVM Vulnerability Scanner

GVM/OpenVAS performs deep network-level vulnerability assessment with 170,000+ NVTs, probing services at the protocol layer for misconfigurations, outdated software, default credentials, and known CVEs. Complements Nuclei’s web-layer findings. Seven pre-configured scan profiles from quick host discovery (~2 min) to exhaustive deep scanning (~8 hours). Findings are stored as Vulnerability nodes in Neo4j alongside the recon graph.

Wiki: GVM Vulnerability Scanning | Technical: README.GVM.md

AI Agent Orchestrator

Interactive walkthrough: Inside RedAmon Agent

A LangGraph-based autonomous agent implementing the ReAct pattern. It progresses through three phases: Informational (intelligence gathering, graph queries, Shodan, Google dorking), Exploitation (Metasploit, Hydra credential testing, social engineering simulation), and Post-Exploitation (enumeration, lateral movement). The agent executes 22 security tools via MCP servers inside a Kali sandbox, supports parallel tool execution via Wave Runner, and provides real-time chat interaction with guidance, stop/resume, and approval workflows. Deep Think mode enables structured strategic analysis before acting.

Wiki: AI Agent Guide | Technical: README.AGENTIC_SYSTEM.md

RedAmon Exploitation Demo

Agent Tool Arsenal
Category Tool Description Phases MCP Server
Intelligence query_graph Neo4j graph queries – primary source of truth for recon data All –
web_search Internet search via Tavily for CVE details, exploit PoCs, advisories All –
cve_intel ProjectDiscovery vulnx – structured CVE intelligence aggregating NVD + CISA KEV + EPSS + HackerOne + GitHub PoCs + Nuclei template availability. 69 lucene-filterable fields. Optional PDCP key (per-user, anonymous mode = 10 req/min) All network_recon :8000
tradecraft_lookup User-curated catalog of trusted security knowledge URLs (HackTricks, PayloadsAllTheThings, CVE PoC repos, vendor blogs) – 6 auto-detected resource types, sitemap-driven section pick, sqlite+disk cache Exploit, Post –
shodan Shodan OSINT – host details, reverse DNS, device search Info, Exploit –
google_dork Google dorking via SerpAPI – exposed files, admin panels, directory listings Info –
Recon & OSINT execute_subfinder Passive subdomain enumeration via OSINT (CT logs, DNS datasets). No traffic to target Info, Exploit network_recon :8000
execute_gau Passive URL discovery from Wayback Machine, Common Crawl, AlienVault OTX, URLScan. No traffic to target Info, Exploit network_recon :8000
execute_amass OWASP Amass subdomain enumeration and network mapping (passive + active, ASN intel) Info, Exploit network_recon :8000
Scanning execute_naabu Fast port scanning and verification Info, Exploit network_recon :8000
execute_nmap Deep service detection (-sV), OS fingerprint, NSE scripts All nmap :8004
execute_nuclei CVE verification and exploitation with 12,000+ templates + custom uploads Info, Exploit nuclei :8002
execute_httpx HTTP probing and fingerprinting – status codes, titles, server headers, tech detection Info, Exploit network_recon :8000
execute_wpscan WordPress vulnerability scanner – detects vulnerable plugins, themes, users, misconfigurations Info, Exploit network_recon :8000
Web & HTTP execute_curl HTTP requests – reachability, headers, status codes, banners All network_recon :8000
execute_katana Web crawling and endpoint discovery with JS parsing and known-file enumeration Info, Exploit network_recon :8000
execute_jsluice JavaScript static analysis for hidden API endpoints, URL paths, and secrets Info, Exploit network_recon :8000
execute_arjun HTTP parameter discovery by brute-forcing ~25,000 common parameter names Info, Exploit network_recon :8000
execute_ffuf Web fuzzing for hidden directories, files, virtual hosts, and parameters Info, Exploit network_recon :8000
execute_playwright Headless Chromium browser automation – JS-rendered content extraction and interactive scripting for SPAs, form testing, XSS verification All playwright :8005
Exploitation metasploit_console Persistent msfconsole – exploit execution, session management, post-exploitation Exploit, Post metasploit :8003
msf_restart Full Metasploit reset – kills all sessions, clears module state Exploit, Post metasploit :8003
execute_hydra THC Hydra brute force – 50+ protocols (SSH, FTP, RDP, SMB, HTTP, MySQL, etc.) Exploit, Post network_recon :8000
Code Execution kali_shell Full Kali Linux shell – nikto, whatweb, testssl, commix, smuggler, h2csmuggler, sstimap, tplmap, ysoserial, phpggc, ruby, viewgen, dnsrecon, dnsx, subzy, enum4linux-ng, netexec, kerbrute, bloodhound-python, bhgraph, certipy-ad, bloodyAD, jwt_tool, graphql-cop, graphqlmap, clairvoyance, betterleaks, semgrep, hashcat, john, cewl, paramspider, Node.js + npm, Python libs (websockets, zeep, python3-saml, boto3, msal, azure-identity, google-auth, google-cloud-storage), pre-staged post-exploit toolkits at /opt/tools/{linux,windows}/ (linpeas, LinEnum, pspy64, deepce, winPEAS, PowerUp, PrivescCheck), and 70+ CLI tools All network_recon :8000
execute_code Write and run code files (Python, bash, Ruby, Perl, C, C++) – no shell escaping Exploit, Post network_recon :8000
Supply Chain execute_osv_scanner Offline OSV verdict – is a package known-malicious (MAL-) or known-vulnerable (CVE/GHSA)? Passive, zero network (reads the local OSV DB). Accepts a purl, lockfile, or SBOM All network_recon :8000
execute_guarddog Behavioural malware analysis of one package (install hooks, obfuscation, exfil, typosquat). Downloads the tarball, so it dispatches to the hardened analyzer sandbox – never unpacked inline Info, Exploit network_recon :8000
Traffic (TrafficMind) proxy_brain DANGEROUS – web hacking in code: it writes Python against a pre-imported redamon SDK to work the captured HTTP corpus (search / get / sitemap / params / grep / diff / to_curl / query reads, decode / jwt().forge() crypto, replay / batch(parallel) / fuzz active sends, and browser(id) to drive a real Chromium for DOM-based XSS / SPA / post-JS bugs). Reads run in any phase; active sends and the browser are host-pinned to the origin, tenant-scoped by a signed tag, exploitation-gated, budgeted, and re-captured. The agent reads its own on-demand cookbook via redamon.manual(). Replaces the former ten proxy_* tools All (send: Exploit, Post) network_recon :8000
Workspace FS fs_read Read workspace file with line numbers, auto-detects binary, stores snapshot for fs_diff vs_last_read All – (in-process)
fs_read_many Batched read of multiple files, capped at max_total_bytes (default 200 KB) All – (in-process)
fs_stat Metadata only – size, mtime, mode, type, optional SHA-256 All – (in-process)
fs_write Atomic create/overwrite/append, auto-creates parents All – (in-process)
fs_edit Exact-string replacement with uniqueness check, records undo ent

README 内容过长,已截取前 64 KB。完整内容请前往 GitHub 仓库查看。

评论

暂无评论