ShadowMap is a Rust framework Vibe coded for disciplined subdomain enumeration, vulnerability detection, and attack-surface mapping at scale.
- Comprehensive discovery: Aggregates subdomains from CRT.sh and complementary sources with IDN normalization and wildcard handling.
- Built-in validation: Resolves DNS, inspects headers and TLS, and flags CORS or takeover risks with heuristic de-duplication.
- Performance-first engine: Async Rust core with configurable concurrency to cover large scopes quickly.
- Actionable exports: Ships clean CSV, JSON, and TXT outputs for reporting or downstream automation.
- Extensible recon modules: Plug-in architecture for port scanning, fingerprinting, and cloud exposure checks.
- Rig-style autonomy: Optional agent orchestrator that sequences every recon module, retries failures, and flags deep cloud assets automatically.
- Rust 1.70 or newer (includes Cargo)
git clone https://github.com/YOUR-ORG/ShadowMap.git
cd ShadowMap
cargo build --release./target/release/shadowmap -d example.com -o results.csvcargo fmt --all
cargo clippy --workspace --all-targets -- -D warningsShadowMap now includes a minimalist, luxury-inspired landing page that mirrors the in-app experience. The Rust server renders it dynamically with localized pricing and optional Stripe checkout, while a static export in landing-page/index.html is ready for Vercel hosting.
cargo run --bin export_landingThe helper binary regenerates landing-page/index.html from the latest templates in src/web/views.rs. Run it after copy or styling updates so commits (and deployments) always ship the current markup.
-
Export your Stripe credentials and price IDs (test or live):
export STRIPE_PUBLISHABLE_KEY=pk_test_... export STRIPE_SECRET_KEY=sk_test_... export STRIPE_PRICE_STARTER_USD=price_123 export STRIPE_PRICE_STARTER_EUR=price_456 export STRIPE_PRICE_GROWTH_USD=price_789 export STRIPE_PRICE_GROWTH_EUR=price_abc export STRIPE_PRICE_ENTERPRISE_USD=price_def export STRIPE_PRICE_ENTERPRISE_EUR=price_ghi # Optional overrides for post-checkout navigation export STRIPE_SUCCESS_URL=https://shadowmap.io/app?checkout=success export STRIPE_CANCEL_URL=https://shadowmap.io/pricing
-
(Optional) Point the lead-capture database at a custom SQLite location. The server defaults to
sqlite://shadowmap.dbin the working directory and creates thelanding_leadstable automatically:export DATABASE_URL=sqlite:///var/lib/shadowmap/leads.db -
Launch the server:
cargo run --bin shadowmap-server
-
Visit
http://localhost:8080/for the public landing page andhttp://localhost:8080/appfor the recon dashboard. Checkout attempts log the work email, plan, and region to thelanding_leadstable for follow-up.
- Install the Vercel CLI and authenticate (
vercel login). - From the repository root, deploy the static export:
The included
vercel --prod
vercel.jsonregisterslanding-page/index.htmlas the build artifact and rewrites all routes to it. - Future updates only require re-running
cargo run --bin export_landing, committing the refreshed HTML, and redeploying withvercel --prod.
Note: Checkout buttons remain disabled in the static export until the server exposes Stripe keys, keeping the hosted page aligned with production capabilities.
ShadowMap includes a lightweight workflow for generating a Software Bill of Materials (SBOM) and scanning it for known vulnerab ilities. The steps below follow the cargo-cyclonedx + Grype quickstart from the securi ty guide referenced in this task.
-
Install cargo-cyclonedx (once per machine):
cargo install cargo-cyclonedx
-
Install Grype (Linux/WSL example):
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sudo sh -s -- -b /usr/local/binRefer to the Grype README for macOS and Windows alternatives.
-
Generate the SBOM in CycloneDX JSON format with all ShadowMap features enabled. Overriding the filename causes
cargo-cyclonedxto place the SBOM in the current working directory, making it easy to move or archive:cargo cyclonedx --format json --spec-version 1.5 --all-features --override-filename bom # cargo-cyclonedx writes bom.json into the current working directory; move it if you prefer a different location -
Scan the SBOM with Grype (pointing at whichever location you chose above):
grype sbom:./bom.json
-
(Optional) Export detailed findings:
grype sbom:./bom.json -o json --file vulnerability-report.json
For repeatability you can run ./scripts/security-scan.sh which wraps the SBOM generation and Grype scan with sensible defaults.
ShadowMap aligns its operational safeguards with SOC 2 Trust Services Criteria and GDPR privacy requirements. The Data Security and Compliance Strategy describes the control owners, evidence expectations, and validation activities that keep reconnaissance data secure throughout its lifecycle.
Teams layering social listening on top of ShadowMap can adopt the Social Intelligence Insights for Security guide. It explains how the Codex agent configuration transforms emerging chatter into normalized signals, correlates them with known assets, and drives guardrailed remediation playbooks.
The framework now runs those social intelligence stages natively during every autonomous scan. Normalized mentions are
correlated with live assets, exported alongside the technical report, and surfaced in the interactive dashboard so
teams can immediately see high-signal chatter, affected hosts, and recommended responses. Override the baked-in Codex
plan by setting SHADOWMAP_SOCIAL_CONFIG=/path/to/framework.yaml before launching a run to load a custom orchestration
file without recompiling.
Run ./scripts/generate-technical-report.sh to materialize the latest reconnaissance brief as build/technical-report.md.
The Generate technical report PDF workflow wires this script into the
CI pipeline and uses Pandoc to emit a downloadable artifact—trigger it manually from the Actions tab whenever you need a
fresh PDF without committing binaries.
Teams that need to spot unapproved apps, fragmented data flows, or silent system failures can extend ShadowMap's discoveries into governance and reliability workflows using the Application Governance Integration guide. It outlines how to fuse ShadowMap outputs with CMDBs, data lineage tools, and observability platforms to close monitoring gaps.
Security programs that want to operationalize ShadowMap across large enterprises can follow the Organizational Adoption Playbook. It lays out governance structures, stakeholder roles, and business metrics that translate reconnaissance coverage into measurable risk reduction and executive-aligned value.
The repository ships with a dedicated GitHub Action located at .github/workflows/security-scan.yml. It installs cargo-cyclonedx and grype, generates shadowmap-bom.json, scans it for vulnerabilities, and uploads the SBOM plus a JSON report as build artifacts. The workflow runs automatically for pull requests and pushes to main, and can also be started manually from the Actions tab via the Run workflow button.
cargo run --features gui --bin shadowmap-guiEnter a target domain in the GUI and select Run Scan; results are written to the output directory displayed on completion. The interface is implemented entirely in Rust via iced.
cargo run --features dashboard --bin shadowmap-dashboardUse the Slint-powered dashboard to launch scans, review live status messages, and visualize summaries of subdomain activity and alert categories.
Run a default reconnaissance scan and export CSV output:
shadowmap -d example.com -o results.csvAdjust concurrency to tune throughput for large scopes:
shadowmap -d example.com -c 50 -o results.jsonPipe JSON output for downstream automation:
shadowmap -d target.com --json > report.jsonEnable the autonomous Rig-inspired orchestrator with deep cloud discovery:
shadowmap -d target.com --autonomousThe agent executes each reconnaissance stage with retry-aware control flow, surfaces SaaS predictors, and produces cloud_assets.json alongside traditional reports for deep storage/bucket exposure review.
subdomain,http_status,server_header,open_ports,cors_issues,fingerprints,takeover_risks
api.example.com,200,nginx,"80,443","Wildcard CORS allowed","{server: nginx, framework: react}","None"
cdn.example.com,0,,,"","",Potential AWS S3 takeover
- Passive and active DNS integrations (SecurityTrails, Shodan, etc.)
- Advanced port fingerprinting through Nmap integration
- Plugin system for bespoke reconnaissance modules
- Cloud asset exposure detection (GCP Buckets, Azure Blobs, etc.)
- Continuous recon mode for persistent monitoring
ShadowMap's SBOM generation and vulnerability scanning workflows rely on the CycloneDX standard and the Grype scanner maintained by Anchore. If you redistribute ShadowMap guidance or reuse the automation scripts, please keep those upstream attributions (or submodule references) intact so the maintainers receive credit for their work.
This tool is for educational and authorized security testing only. Do not use ShadowMap against systems you don’t own or have explicit permission to test.
Pull requests are welcome! Please open an issue to discuss improvements, new modules, or bug fixes.
ShadowMap is built on the idea that defenders need fast, global, reliable, and open tooling to match adversary velocity.