Skip to content
Back to skills

Propuestas

ASecurity

Los proyectos generados por Savia con infraestructura propia (servidores, contenedores, VMs) no tienen ningún mecanismo de reconocimiento de red para verificar qué superficie de ataque exponen a nivel de puertos y servicios:

  • 50 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
developmentrustgosqlterraformtestinggitsecurity

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned September 27, 2026

npx -y skills add gonzalezpazmonica/savia --skill propuestas --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Propuestas?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Propuestas
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gonzalezpazmonica-propuestas-c5d6d652/badge)](https://www.skillsdirectory.com/skills/gonzalezpazmonica-propuestas-c5d6d652)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: SE-246
title: "Network recon skill — nmap/RustScan + httpx + Masscan para proyectos con infraestructura propia"
status: IMPLEMENTED
priority: P2
effort: M (12h — S1 3h + S2 4h + S3 5h)
origin: Análisis defensivo hackingtool-plugin (AKCodez, 2026-06-28)
author: Savia
related:
  - SE-243 (attack-surface-mapping — dominios/OSINT, previo al recon de red)
  - SE-245 (dynamic-web-security-testing — testing de endpoints descubiertos)
  - pentesting skill (usa network recon como Fase 1)
  - security-attacker agent
proposed_at: "2026-06-28"
resolved_at: "2026-07-02"
implementation_pr: "#890"
era: 237
tools_from_hackingtool:
  - nmap
  - RustScan
  - httpx
  - Masscan
---

# SE-246 — Network recon skill

## Problema

Los proyectos generados por Savia con infraestructura propia (servidores, contenedores,
VMs) no tienen ningún mecanismo de reconocimiento de red para verificar qué superficie
de ataque exponen a nivel de puertos y servicios:

- Un servidor puede tener puertos administrativos abiertos (SSH, MySQL, PostgreSQL)
  accesibles desde internet por misconfiguration del firewall
- Los manifiestos de infraestructura del `infrastructure-agent` pueden generar
  configuraciones que exponen más puertos de los necesarios
- El `terraform-developer` puede generar security groups con reglas de ingress permisivas
  que Trivy (SE-241) detecta en el código pero que luego no se verifican contra la
  infraestructura real desplegada
- httpx permite verificar qué URLs responden en los hosts que SE-243 descubre, pero
  SE-243 no hace verificación de red directa

No existe un skill de reconocimiento de red para verificar la postura de seguridad
de la infraestructura de los proyectos que Savia gestiona.

## Tesis

Un skill `network-recon` que ejecuta reconocimiento de red controlado sobre rangos de
IPs o hosts del propio proyecto: RustScan/Masscan para descubrimiento rápido de puertos,
nmap para fingerprinting de servicios, y httpx para verificación de servicios HTTP/HTTPS.
Actúa sobre infraestructura propia con autorización, alimenta al `pentesting` skill.

## Herramientas

| Herramienta | Qué hace | Modo de uso en Savia | Offline |
|---|---|---|---|
| nmap | Port scanning + service fingerprinting + OS detection | `nmap -sV -sC --top-ports 1000 -oJ <output> <target>` | Sí (binario local) |
| RustScan | Port scanning ultra-rápido (3000 ports/sec); pasa resultados a nmap | `rustscan -a <target> -- -sV -sC` | Sí (binario local) |
| Masscan | Scanning masivo de rangos de red amplios | `masscan <range> -p 80,443,22,3306 --rate 1000 -oJ <output>` | Sí (binario local) |
| httpx | Verifica servicios HTTP/HTTPS activos en lista de hosts/IPs | `httpx -l hosts.txt -json -o httpx.json -status-code -title -tech-detect` | Sí (Go binary local) |

**Elección por escenario**:
- Target único (1-10 hosts): RustScan → nmap (rápido + detallado)
- Rango de IPs amplio: Masscan → nmap sólo en puertos abiertos
- Verificación HTTP: httpx siempre, sobre output de RustScan/Masscan

## Diseño

### Principio fundamental

NUNCA escanear IPs de terceros sin autorización explícita.
Gate de autorización idéntico al de SE-243 y SE-245.

### Integración en pipeline Savia

```
Fase: Post-deploy verification | Pre-pentest recon | Auditoría periódica
Trigger: /network-recon <target> | pentesting skill Fase 1 | post-deploy
```

### Gate de autorización

Fichero `output/security/authorization-{target}.txt` con scope (hostname o descripción
del rango), fecha y firma. Sin este fichero, el script aborta. El target se referencia
por hostname o alias — nunca se almacena el rango IP en ficheros versionados.

### Script principal: `scripts/security/network-recon.sh`

- Parámetro: `--target <hostname|alias>` (alias resuelto desde config local git-ignorada)
- Parámetro: `--mode quick|standard|full` (default: standard)
- Modo quick: RustScan top-1000 puertos (< 2 min para un host)
- Modo standard: RustScan + nmap -sV top-1000 (< 5 min)
- Modo full: Masscan all-ports + nmap -sV -sC en puertos abiertos (puede tardar > 30 min)
- Parámetro: `--http-check` activa httpx sobre hosts con puertos web abiertos
- Rate limiting: `--rate <n>` (default: 1000 pps — conservador para no saturar)

La resolución del target a IP se hace en runtime desde configuración local git-ignorada
(`.claude/rules/pm-config.local.md`). Las IPs nunca se hardcodean en scripts versionados.

### Output

```
output/security/network-recon-{alias}-YYYYMMDD/
  ports-open.txt          # lista de host:puerto abiertos (sin IPs en el nombre)
  services.json           # servicios identificados por nmap
  http-services.json      # URLs HTTP/HTTPS activas (httpx)
  summary.md              # resumen: X hosts, Y puertos, Z servicios críticos
```

**Servicios críticos**: alertas si se detectan puertos de base de datos o administración
accesibles desde interfaces de red no esperadas. Los puertos específicos se configuran
en `.savia-critical-ports.txt` (no hardcodeados en el script).

### Integración con pentesting skill

El `pentesting` skill usa `network-recon.sh` en Fase 1 (reconocimiento). El output
`services.json` alimenta directamente la Fase 2 (enumeración de servicios).

### Rate limiting conservador

Para prevenir DoS accidental en la propia infraestructura:
- Masscan: `--rate 1000` por defecto, máximo configurable 10000
- nmap: `-T3` (normal) por defecto; sin `-T5` (agresivo)
- RustScan: `--batch-size 2500` por defecto

## Slices

**S1 — RustScan + nmap (modo standard) (3h)**
- `scripts/security/network-recon.sh` modo standard
- Gate de autorización
- Output `ports-open.txt` + `services.json`
- BATS tests contra localhost con puertos conocidos

**S2 — Masscan (modo full) + httpx (4h)**
- Modo full con Masscan
- httpx para detección de servicios HTTP
- Rate limiting configurable
- `.savia-critical-ports.txt` configurable

**S3 — Skill + integración pentesting + alertas de servicios críticos (5h)**
- `.opencode/skills/network-recon/SKILL.md`
- Comando `/network-recon [target-alias]`
- Alertas de servicios críticos
- Integración con pentesting skill (export services.json)
- Documentación de rate limiting y riesgo de DoS

## Criterios de aceptación

- [ ] El script aborta sin `authorization-{target}.txt`
- [ ] RustScan + nmap descubren puertos abiertos en localhost (los activos en el momento)
- [ ] httpx detecta servicios HTTP activos en lista de hosts provista
- [ ] Alerta generada cuando un puerto crítico está abierto en interfaz inesperada
- [ ] Rate Masscan limitado a 1000 pps por defecto (verificable en logs)
- [ ] nmap usa `-T3` por defecto
- [ ] Report en `output/security/network-recon-*/` con estructura documentada
- [ ] `output/security/` verificado en .gitignore antes de escribir
- [ ] Skill invocable con `/network-recon staging-server`
- [ ] Modo quick completa en < 2 minutos para un único host

## Qué NO incluye

- Explotación de servicios descubiertos — sólo reconocimiento y fingerprinting
- Escaneo de IPs de terceros sin autorización
- NSE scripts de nmap agresivos (brute force, exploit) — sólo `-sV -sC`
- Monitorización continua de puertos — extensión futura
- Reconocimiento de subdominios o OSINT — eso es SE-243
- Testing de vulnerabilidades en servicios descubiertos — eso es SE-245

Files in this skill

  • INDEX.md60.9 KB
  • LOG.md14.9 KB
  • ROADMAP-CURRENT.md1.7 KB
  • ROADMAP-UNIFIED-20260418.md11.4 KB
  • ROADMAP-UNIFIED-20260827.md10.4 KB
  • ROADMAP.md25.5 KB
  • SAVIA-SUPERPOWERS-ROADMAP.md3.5 KB
  • SE-028-oumi-integration.md7.2 KB
  • SE-029-rate-distortion-context.md10 KB
  • SE-030-graphrag-quality-gates.md6.3 KB
  • SE-031-query-library-nl.md5 KB
  • SE-032-reranker-layer.md8.7 KB
  • SE-033-topic-cluster.md2.4 KB
  • SE-034-workflow-node-typing.md1.8 KB
  • SE-035-mutation-testing-skill.md5.1 KB
  • SE-036-specs-frontmatter-migration.md4.2 KB
  • SE-037-hook-latency-audit.md4 KB
  • SE-038-agent-size-audit.md5.8 KB
  • SE-039-test-auditor-global-sweep.md5.6 KB
  • SE-040-agent-degradation-canary.md6.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…