<< All versions

Skill v1.0.0

currentAutomated scan100/100
samugit83/redamon/traffic-capture
──Details
PublishedOctober 21, 2026 at 12:46 PM
Content Hashsha256:5902b99566b47f90...
Git SHAcf1b9e926a2a
──Files
Files (1 file, 3.0 KB)
SKILL.md3.0 KBactive
SKILL.md · 69 lines · 3.0 KB

version: "1.0.0" name: traffic-capture description: > Working on the HTTP capture proxy and its replay/fuzz path: the egress guard that stops the proxy becoming an SSRF pivot, why it checks the resolved IP, and keeping capture off the scan's critical path. Trigger: editing scanners/capture_proxy/ (capture_addon.py, egress.py, ingest_worker.py); adding a forward/replay/fuzz path; changing EgressPolicy or the internal denylist; wiring an agent tool that replays captured traffic. license: MIT metadata: author: redamon version: "1.0.0" scope: [capture_proxy] auto_invoke:

  • "Editing the capture proxy, egress guard, or replay/fuzz path"

When to Use

  • Changing how the proxy forwards, captures, ingests, or replays traffic.

The one-line "route every egress through the guard" rule is in the capture_proxy AGENTS.md CRITICAL RULES; this skill is the mechanism.


Critical Rules

  • NEVER match the internal denylist on the hostname alone. The guard denies

on the resolved IP (RFC1918 and friends), because a hostname that resolves to an internal address (or re-resolves after a check) is the SSRF/DNS-rebinding case. See scanners/capture_proxy/egress.py (the block conditions operate on the resolved IP).

  • **NEVER build a replay/fuzz target from unvalidated LLM output and send it

straight out.** The replay path is a new egress path; it must pass the same EgressPolicy guard as captured traffic, or the agent can be steered into an internal pivot. Args must not reach the wire un-guarded.

  • NEVER remove a block condition to "make replay work". Each condition is

individually toggleable via EgressPolicy (surfaced in settings); loosen it there, per-condition, not by deleting the check.

  • ALWAYS keep capture and ingest off the scan's critical path. Capture writes

an append-only spool; a separate worker tails it into Postgres (scanners/capture_proxy/ingest_worker.py). That decoupling is deliberate - capture must never block or slow the scan it observes.


The capture pipeline

StageFileNote
interceptcapture_addon.pymitmproxy addon; request/response hooks
egress guardegress.pyresolved-IP denylist + EgressPolicy toggles; the SSRF backstop
ingestingest_worker.pytails the spool -> Postgres; off the scan path

Commands

bash
docker compose --profile tools build capture-proxy # image rebuild (Dockerfile change)
./redamon.sh test unit # capture_proxy section

Resources

All versions