Show HN: RedHands – MCP for multi-stage offensive security tools Developer Yasin D. C. released RedHands, an open-source Model Context Protocol (MCP) server written in Go with zero external dependencies that chains multi-stage offensive security tools for authorized security assessments. RedHands supports stdio, SSE and WebSocket transports and ships install profiles — minimal (nmap, subfinder, httpx, nuclei), web, network, ad, k8s, uefi, telecom, aegis, sbom, recon and all — plus structured parsing, report generation, a plugin system, rate limiting, caching and audit logging. The release verifies install archives against published SHA256SUMS and is configured as an MCP server in Claude Code, Cursor and VS Code. MCP server for authorized security assessments Built in Go with zero external dependencies. Multi-transport stdio/SSE/WebSocket , tool chaining, structured parsing, report generation, plugin system, rate limiting, caching, and audit logging. go install github.com/yasindce1998/redhands/cmd/redhands@latest curl -fsSL https://raw.githubusercontent.com/yasindce1998/redhands/main/scripts/install.sh | bash This verifies a release archive against its published SHA256SUMS and prints MCP configuration instructions. Older releases without checksums must be built from source. To install security tools, use a reviewed checkout containing the dependency lock: git clone https://github.com/yasindce1998/redhands.git && cd redhands sudo ./scripts/install-tools.sh --profile web git clone https://github.com/yasindce1998/redhands.git && cd redhands make build sudo make install Install security tool dependencies pick a profile sudo make install-tools PROFILE=minimal nmap, nuclei, httpx, subfinder sudo make install-tools PROFILE=web web assessment tools sudo make install-tools PROFILE=network network/infrastructure tools sudo make install-tools PROFILE=ad Active Directory tools sudo make install-tools PROFILE=k8s Kubernetes offensive tools sudo make install-tools PROFILE=uefi UEFI bootkit simulation sudo make install-tools PROFILE=telecom StaticZero telecom research Linux only sudo make install-tools PROFILE=aegis Aegis-Shadow eBPF research Linux only sudo make install-tools PROFILE=sbom SBOM + vulnerability scanning syft, grype sudo make install-tools PROFILE=recon deep reconnaissance tools sudo make install-tools PROFILE=all everything Check what's installed make check-deps git clone https://github.com/yasindce1998/redhands.git; cd redhands go build -o bin\redhands.exe .\cmd\redhands Install tool dependencies .\scripts\install-tools.ps1 -Profile web .\scripts\install-tools.ps1 -Check show what's installed/missing Add to your MCP client config: Claude Code ~/.claude/claude desktop config.json , Cursor .cursor/mcp.json , VS Code .vscode/mcp.json : { "mcpServers": { "redhands": { "command": "redhands" } } } stdio default, for MCP clients redhands SSE transport local CLI or remote use with TLS/auth REDHANDS TRANSPORT=sse redhands loopback only; see secure remote setup below WebSocket transport REDHANDS TRANSPORT=ws redhands loopback only Docker selected tools pre-installed docker compose run --rm -i redhands | Profile | Tools Included | Use Case | |---|---|---| | minimal | nmap, subfinder, httpx, nuclei | Quick recon and scanning | | web | nmap, recon set subfinder, amass, dig, waybackurls, gau, arjun , web set httpx, katana, nikto, whatweb, testssl.sh , ffuf, gobuster, feroxbuster, masscan, rustscan, nuclei, sqlmap | Web application testing | | network | nmap, masscan, rustscan, tshark, chisel, ligolo | Network/infrastructure | | ad | nmap, impacket, certipy, crackmapexec, hashcat, john | Active Directory attacks | | k8s | nmap, kubedagger-client, kubedagger-operator, kubedagger-server | Kubernetes offensive eBPF | | uefi | barzakh-adversary, barzakh-scanner, barzakh-server | UEFI bootkit adversary simulation | | telecom | staticzero-defense, staticzero-offense, modem-firmware, sdr-bridge | Telecom security research eBPF, Linux only | | aegis | aegis-shadow-defense, aegis-shadow-offense, aegis-c2 | Linux eBPF security research Aegis-Shadow | | sbom | syft, grype | SBOM generation and vulnerability scanning | | recon | recon set subfinder, amass, dig, waybackurls, gau, arjun + web set httpx, katana, nikto, whatweb, testssl.sh | Deep reconnaissance | | all | Everything | Full offensive toolkit | Profiles describe desired dependencies, not a guarantee every dependency is available on every OS. RustScan, testssl.sh, and CrackMapExec currently need manual installation; KubeDagger client is Linux-only. Installers report missing tools rather than downloading unverified replacements. See dependency maintenance https://github.com/yasindce1998/RedHands/blob/main/docs/dependencies.md . make build produces redhands , redhands-cli , and redhands-creds in bin/ . The CLI uses the same authenticated SSE transport as MCP clients: Terminal 1 REDHANDS TRANSPORT=sse ./bin/redhands Terminal 2 ./bin/redhands-cli tools ./bin/redhands-cli targets add 192.0.2.1 lab-host ./bin/redhands-cli status For HTTPS, set REDHANDS URL=https://your-server:8443 , REDHANDS API KEY , and REDHANDS CLIENT CA=/path/to/ca.pem . For mTLS, also set REDHANDS CLIENT CERT and REDHANDS CLIENT KEY . The CLI rejects untrusted certificates, redirects, and non-loopback plain HTTP. REDHANDS CLIENT TIMEOUT sets its total deadline default 6m . Tool failures return a nonzero exit status; calls are never retried automatically. - Go 1.26.11+ for building from source; if using Go 1.27, use 1.27.4+ - Security tools on PATH installed via scripts above, Docker, or manually 294 tools are registered across 36 toolsets. A default startup serves 287 of them: the two credstore tools additionally require REDHANDS CREDSTORE KEY , and the five GoPhish phishing tools additionally require REDHANDS GOPHISH environment variables. | Tool | Description | |---|---| | nmap port scan | TCP/UDP port scanning SYN, connect, UDP | | nmap service detect | Service and version detection -sV | | nmap os detect | OS fingerprinting -O | | nmap vuln scan | NSE vulnerability scripts | | Tool | Description | |---|---| | subfinder enum | Subdomain enumeration from passive sources | | amass enum | Network mapping and ASN discovery OWASP Amass | | dns lookup | DNS record queries via dig A, AAAA, MX, NS, TXT, etc. | | waybackurls | Fetch archived URLs from the Wayback Machine | | gau urls | Fetch URLs from AlienVault OTX, Wayback, CommonCrawl, URLScan | | arjun discover | HTTP parameter discovery hidden GET/POST params | | Tool | Description | |---|---| | httpx probe | HTTP service probing with tech detection | | katana crawl | Next-gen web crawler JS crawling, headless | | nikto scan | Web server vulnerability scanner | | whatweb fingerprint | Web technology fingerprinting | | testssl scan | TLS/SSL encryption testing | | Tool | Description | |---|---| | ffuf fuzz | Web fuzzing dirs, params, vhosts | | gobuster dir | Directory/file brute-forcing | | feroxbuster scan | Recursive content discovery forced browsing | | Tool | Description | |---|---| | masscan scan | Internet-scale port scanning 10M pps | | rustscan scan | Modern fast port scanner all 65535 ports in seconds | | Tool | Description | |---|---| | sqlmap scan | Automatic SQL injection detection and exploitation | | Tool | Description | |---|---| | nuclei scan | Template-based vulnerability scanning | Kerberos interaction toolkit — for Windows engagement hosts running RedHands with an operator-compiled Rubeus.exe allowlisted as rubeus GhostPack ships no compiled releases by design; Linux execution is not possible — the tool P/Invokes Windows LSA APIs . | Tool | Description | |---|---| | rubeus kerberoast | | | rubeus asktgt | | | rubeus asreproast | | | rubeus harvest | | | rubeus dump | | | rubeus describe | Decode and describe a base64 ticket | | Tool | Description | |---|---| | impacket secretsdump | Dump SAM/LSA/NTDS.dit secrets | | impacket psexec | PsExec-style remote execution | | impacket wmiexec | WMI-based remote execution | | impacket smbclient | SMB client operations | | impacket dcomexec | DCOM remote execution | | impacket get tgt | Request Kerberos TGT | | impacket get st | Request service ticket Kerberoast/delegation | | impacket ntlmrelay | NTLM relay attack | | Tool | Description | |---|---| | sliver generate | Generate implant mTLS, HTTP/S, DNS, WireGuard | | sliver listeners | Manage C2 listeners | | sliver sessions | List/interact with sessions | | sliver beacons | List/interact with beacons | | sliver execute | Execute commands on implant | | sliver upload | Upload files to implant | | sliver download | Download files from implant | | sliver pivot | Pivot setup and management | | sliver portfwd | Port forwarding through implant | | Tool | Description | |---|---| | chisel server | Start Chisel reverse tunnel endpoint | | chisel client | Chisel client forward/reverse/SOCKS | | ligolo start | Start Ligolo-ng proxy server | | ligolo route | Add routes through Ligolo tunnel | | ligolo listener | Manage Ligolo listeners on agent | | Tool | Description | |---|---| | hashcat crack | Crack hashes dictionary, rules, masks | | hashcat benchmark | Benchmark hash types | | hashcat show | Show cracked from potfile | | john crack | Crack passwords with John the Ripper | | john show | Show cracked passwords | | john formats | List supported hash formats graceful degradation on core john builds | | hydra attack | | | Tool | Description | |---|---| | cme smb | SMB enumeration/exec/pass-the-hash | | cme winrm | WinRM execution | | cme ldap | LDAP enumeration | | cme mssql | MSSQL queries/execution | | cme ssh | SSH credential spray/exec | | Tool | Description | |---|---| | certipy find | Find AD CS templates and CAs | | certipy req | Request certificates | | certipy auth | Authenticate via PKINIT | | certipy shadow | Shadow credentials attack | | certipy forge | Golden certificate forgery | | certipy relay | NTLM relay to AD CS | | Tool | Description | |---|---| | tshark capture | Capture packets interface, filter, duration | | tshark read | Read pcap with display filter | | tshark stats | Protocol statistics | | tshark extract | Extract fields from captures | | tshark follow | Follow TCP/UDP/HTTP streams | | Tool | Description | |---|---| | 69 tools | eBPF-powered Kubernetes offensive toolkit, including managed C2-server lifecycle kubedagger server — see tools/kubedagger/ | | Tool | Description | |---|---| | barzakh list | List available UEFI bootkit payload types 134 payloads | | barzakh generate | Generate a UEFI bootkit payload for adversary simulation x86-64, aarch64, riscv64, power64, armv7 | | barzakh corpus | Generate full test corpus of malicious/clean firmware pairs | | barzakh scan | Scan firmware images with 138 specialized bootkit detectors exit 1 = detection, reported as a finding | | barzakh validate | Validate detector coverage TPR/FPR against a corpus | | barzakh scenario | List/show/run multi-stage ATT&CK-mapped attack chains 6 bundled | | barzakh robustness | Mutation-based detector evasion benchmark | | barzakh detectors | List/describe the 138 detectors | | barzakh baseline | Create/show firmware baselines | | barzakh intel | Query IOC feeds, MISP, ATT&CK, STIX intel | | barzakh server start | Start the Barzakh REST scanner server as a managed background daemon X-API-Key auth, SQLite history | | barzakh server stop | Stop a managed Barzakh server | | barzakh server status | Status of managed Barzakh servers | | barzakh inject | | | barzakh esp build | | | barzakh qemu | Boot firmware in an emulated QEMU/OVMF environment run config / memory dump | | barzakh range | Boot QEMU/OVMF/swTPM cyber-range suites with assert-on-detection exit 1 = failed assertions, surfaced as a result | | barzakh fuzz | Protocol-aware firmware fuzzing dhcpv6/bmp/capsule/httpboot/tcg/hii | | barzakh history | Query the SQLite scan history list/show/diff/trends | | barzakh kb | Manage the firmware knowledge base add/list/search/export/import | | barzakh ml | Train/evaluate the ML anomaly models | | barzakh manifest validate | Validate detectors against a labeled corpus manifest with train/validation/test splits | | barzakh info | Scanner build/version, detector, architecture, and format metadata | | barzakh report | Generate report files json/html/markdown/sarif/csv/ecs/cef/leef from scan results | Wraps StaticZero, an eBPF telecom security research framework 2G–5G, satellite, baseband firmware . Authorized lab use only. Warning telecom offense start launches the telecom interception research loader features F89–F172: IMSI targeting, GTP/SS7/Diameter interception, RF and satellite domains . Intercepting telecommunications is illegal without authorization in most jurisdictions — including in labs in some . Use only in an isolated lab environment with equipment you own, and only where you hold explicit permission. The tool is approval-gated and requires root. | Tool | Description | |---|---| | telecom doctor | Read-only StaticZero defense engine preflight platform/kernel/BPF checks | | telecom firmware analyze | Static vulnerability analysis of modem/baseband firmware images | | telecom firmware extract | Extract firmware components with manifest | | telecom firmware diff | Diff two firmware images | | telecom firmware nv dump | Extract NV items carrier/band/security config | | telecom firmware patch | | | telecom firmware monitor | Monitor a modem device protocol stream diag/at/qmi/mbim; bounded by the execution timeout | | telecom sdr scan | Receive-only LTE cell scan via SDR | | telecom sdr capture | Receive-only IQ capture via SDR | | telecom sdr inject | | | telecom sdr relay | | | telecom sdr selftest | | | telecom threats | Correlated threats from a running defense engine | | telecom alerts | Raw alerts from a running defense engine | | telecom stats | Engine runtime statistics | | telecom defense start | Start the StaticZero defense engine as a managed background daemon JSON alerts stream to a file | | telecom defense stop | Stop a managed defense engine daemon | | telecom defense status | Status of managed defense engine daemons | | telecom offense start | | | telecom offense stop | Stop a managed offense loader daemon | | telecom offense status | Status of managed offense loader daemons | | telecom correlator start | Start the protocol correlator as a managed daemon JSON-lines event ingest on loopback | | telecom correlator stop | Stop a managed correlator daemon | | telecom correlator status | Status of managed correlator daemons | StaticZero binaries ship as checksum-verified release assets v0.5.0, Linux only, eBPF embedded and install via the telecom profile: sudo make install-tools PROFILE=telecom . Wraps Aegis-Shadow, a Linux eBPF security research platform educational, VM-only . The analysis tools never execute binaries; aegis offense plan renders the manual lab command with risk notes without executing it. The defense engine and the offense rootkit loader can each be started as a managed background daemon approval-gated . DANGER aegis offense start launches the eBPF rootkit loader — process hiding, credential harvesting, log tampering, anti-forensics, and covert C2, running at kernel level with root. Two capabilities are destructive by design : deadman switch scorched-earth wipe triggered on tamper or timeout — the VM may become unrecoverable and wipe bytecode erases the loaded eBPF bytecode from memory, defeating live forensics . Both are opt-in, emit loud warnings in every result, and expect a disposable, snapshotted lab VM . Data loss from these flags is expected behavior, not a bug. | Tool | Description | |---|---| | aegis alerts parse | Parse/filter NDJSON alert files from the defense engine | | aegis alerts tail | Tail the last N alerts from an alert file | | aegis modules list | Reference catalog of defense modules and offense features | | aegis defense config read | Read/validate a defense engine hot-reload config | | aegis defense config write | Write a defense engine config threshold, window | | aegis offense plan | Dry-run planner: validate offense feature flags and render the exact manual command line with risk notes | | aegis defense start | Start the Aegis-Shadow defense engine as a managed background daemon NDJSON alerts stream to a file; requires root | | aegis defense stop | Stop a managed defense engine daemon | | aegis defense status | Status of managed defense engine daemons | | aegis offense start | ☠️ Launch the Aegis-Shadow eBPF rootkit loader as a managed daemon destructive deadman switch / wipe bytecode are opt-in with warnings; disposable VM only | | aegis offense stop | Stop a managed offense loader daemon | | aegis offense status | Status of managed offense loader daemons | | aegis c2 send | ☠️ Send a command to a running rootkit over its encrypted C2 channel hide/unhide pid, obfuscate file, exfil, kill-switch; fire-and-forget; requires the aegis-c2 CLI from Aegis-Shadow ≥ v0.2.0 | ExploitDB search and CVE enrichment — the connective tissue from scanner findings to Metasploit: nuclei finding → CVE → public exploits → msf module run . Requires the searchsploit binary + on-disk database distro exploitdb package — manual install, not checksum-pinnable . | Tool | Description | |---|---| | searchsploit search | Search ExploitDB by keyword JSON results | | searchsploit cve | Map a CVE ID to public exploits EDB-IDs, paths | | searchsploit edb | Look up an EDB-ID exploit file path + copy hint | | cve enrich | Extract CVEs from scanner output text, map to exploits, and suggest Metasploit modules EDB .rb paths → msf module run candidates | Generic embedded firmware analysis with binwalk v2 — completes the firmware story alongside UEFI Barzakh and baseband modem-firmware . Requires binwalk v2, Python — distro/pip manual install; do not use the v3 Rust rewrite, different CLI . | Tool | Description | |---|---| | firmware scan | Signature scan with a structured JSON summary signatures → record rules | | firmware extract | | | firmware entropy | Entropy analysis encrypted/compressed region detection | SBOM generation and vulnerability scanning with Anchore syft + grype — checksum-pinned releases, installed by the sbom profile. | Tool | Description | |---|---| | sbom generate | Generate an SBOM syft-json, CycloneDX, SPDX from an image, directory, or file | | vuln scan image | Vulnerability-scan an image or SBOM with grype exit-2-on-findings surfaced as a result with a severity summary | | vuln scan sbom | Scan an existing SBOM file with grype | Wraps Metasploit Framework msfvenom + msfconsole . Console tools generate validated .rc resource files from structured parameters — never msfconsole -x — so console-command injection is structurally impossible. Metasploit is not checksum-pinnable no stable release binaries ; install it manually apt install metasploit-framework on Kali/Parrot and the allowlist discovers msfconsole / msfvenom on PATH. msfconsole startup takes 10–60s; runs are bounded by REDHANDS TIMEOUT . | Tool | Description | |---|---| | msf payload generate | | | msf payload list | List payloads, encoders, formats, platforms, or architectures | | msf module info | Show module documentation exploit/auxiliary/post/payload/encoder/nop | | msf module run | | | msf resource run | .rc resource file arbitrary console commands; approval-gated | | Tool | Description | |---|---| | redhands health | Server health check and binary dependency status | RedHands supports four transport modes: | Transport | Use Case | Config | |---|---|---| | stdio default | Local use with Claude Code, Cursor, VS Code | REDHANDS TRANSPORT=stdio | | HTTP Streamable | Modern MCP 2026-07-28 clients: stateless single-endpoint JSON-RPC | REDHANDS TRANSPORT=http REDHANDS HTTP ADDR , default 127.0.0.1:8082 ; REDHANDS HTTP PATH , default /mcp | | SSE | Legacy HTTP clients deprecated-era transport | REDHANDS TRANSPORT=sse loopback by default | | WebSocket | Real-time bidirectional custom transport | REDHANDS TRANSPORT=ws loopback by default | The HTTP transport implements the modern spec: POST-only /mcp endpoint, required MCP-Protocol-Version / Mcp-Method and Mcp-Name for tools/call headers validated against the body, 405 for GET/DELETE, 404 + -32601 for unknown methods, 202 for notifications, and per-request meta protocol version validation -32022 with the supported list . Legacy clients that open with initialize are served by the dual-era handshake on every transport. Non-loopback listeners require authentication and TLS . | Mode | Config | Description | |---|---|---| | none default | REDHANDS AUTH=none | No authentication | | API key | REDHANDS AUTH=apikey + REDHANDS API KEY=