Plantillas de control operacional
Estas plantillas implementan el control continuo. Son esquemas de trabajo, no formularios que deban completarse con texto genérico. Las claves se mantienen en inglés para que los archivos sean consistentes entre herramientas. Los valores narrativos se escriben en el idioma de trabajo. Añade campos cuando una operación necesite más precisión y conserva identificadores estables entre notas, outputs y evidencias.
Estructura del encargo
Sección titulada «Estructura del encargo»ENGAGEMENT_ID/├── 00-control/│ ├── scope.md│ ├── decisions.md│ ├── coverage.yaml│ └── cleanup.yaml├── 10-assets/├── 20-activity/├── 30-raw-output/├── 40-evidence/├── 50-deliverables/└── 90-temporary/30-raw-output conserva resultados originales. 40-evidence contiene selecciones saneadas y vinculadas a una afirmación. 90-temporary tiene una política de eliminación explícita. Los secretos viven fuera de esta estructura en el almacén aprobado.
- asset_id: asset-001 first_seen: 2026-07-28T10:02:11+02:00 observed_from: position-external addresses: - 192.0.2.10 names: - mail.example.test role_hypotheses: - mail-gateway ownership: in-scope interfaces: - transport: tcp port: 25 state: open evidence: evidence-001 notes: ''Hipótesis
Sección titulada «Hipótesis»- hypothesis_id: hyp-014 statement: El servicio SMTP permite relay sin autenticar hacia destinatarios externos. asset_ids: - asset-001 supporting_evidence: - evidence-011 contradicting_evidence: [] assumptions: - El dominio del destinatario es externo a la política de relay. discriminating_test: Probar RCPT TO con un destinatario externo controlado sin enviar DATA. expected_change: Se registra una transacción SMTP que termina con RSET y QUIT. state: testing owner: operator-01 next_action: action-031La hipótesis describe una capacidad concreta. No uses «SMTP vulnerable» porque no define condición, identidad, destinatario ni efecto.
Cobertura
Sección titulada «Cobertura»- coverage_id: coverage-smtp-001 asset_id: asset-001 position: position-external surface: smtp depth: banner: complete ehlo: complete starttls: complete auth: unauthenticated-only relay: controlled-recipient-only user-enumeration: blocked-by-policy time_window: start: 2026-07-28T10:02:11+02:00 end: 2026-07-28T10:18:42+02:00 limitations: - No authenticated mailbox was provided. evidence: - evidence-001 - evidence-011Credencial
Sección titulada «Credencial»Guarda el secreto en una bóveda y referencia su entrada:
- credential_id: credential-007 identity: DOMAIN.LOCAL/USERNAME secret_type: password secret_reference: vault://ENGAGEMENT_ID/credential-007 source: provided first_seen: 2026-07-28T09:00:00+02:00 validation: - service: smtp-submission asset_id: asset-001 result: accepted checked_at: 2026-07-28T10:20:00+02:00 lockout_context: unknown owner: operator-01Sesión y pivote
Sección titulada «Sesión y pivote»sessions: - session_id: session-003 created_at: 2026-07-28T11:04:20+02:00 source: workstation-01 destination: asset-024 mechanism: ssh identity: USERNAME privilege: unprivileged dependencies: - credential-009 health_check: ssh-controlmaster-check cleanup_id: cleanup-018pivots: - pivot_id: pivot-002 source_session: session-003 mechanism: ssh-dynamic-forward local_bind: 127.0.0.1:1080 reachable_scope: - 10.20.30.0/24 dns_path: remote process_reference: activity-092 health_check: controlled-http-endpoint cleanup_id: cleanup-019Infraestructura
Sección titulada «Infraestructura»- infra_id: infra-redirector-01 function: https-redirector provider_reference: provider-resource-redacted public_addresses: - 192.0.2.40 domains: - edge.example.test certificate_reference: certificate-003 upstream: infra-teamserver-01 allowed_paths: - /health - /api/v1/ logging_destination: logs/redirector-01 health_check: health-redirector-01 rotation_condition: certificate-or-address-exposure teardown_id: cleanup-041Evidencia y actividad
Sección titulada «Evidencia y actividad»- activity_id: activity-092 started_at: 2026-07-28T11:06:00+02:00 operator: operator-01 source_position: session-003 asset_ids: - asset-031 hypothesis_id: hyp-028 action: Abrir un listener SOCKS local a través de la sesión SSH existente. command_reference: transcript-20260728-01 raw_output: 30-raw-output/activity-092.txt result: success interpretation: El listener local existe. Aún falta validar la conectividad de extremo a extremo. evidence: - evidence-044 next_action: activity-093- evidence_id: evidence-044 claim: La ruta SOCKS alcanzó el endpoint HTTP controlado desde la red remota. captured_at: 2026-07-28T11:07:14+02:00 source: 30-raw-output/activity-093.txt sanitized_copy: 40-evidence/evidence-044.txt sha256: SHA256_REDACTED collector: operator-01Decisión y limpieza
Sección titulada «Decisión y limpieza»decisions: - decision_id: decision-012 decided_at: 2026-07-28T11:30:00+02:00 context: Las pruebas repetidas de autenticación alcanzaron el umbral de bloqueo acordado. options: - continue - pause - switch-to-provided-account decision: pause authority: lead-01 communication: update-20260728-03cleanup: - cleanup_id: cleanup-019 asset_id: asset-024 change: Reenvío dinámico SSH en el puerto local 1080. previous_state: No existía un listener en 127.0.0.1:1080. reversal: Terminar el proceso SSH que mantiene el listener. verification: Confirmar que no quedan listeners ni configuraciones de proxy dependientes. state: pending owner: operator-01Reglas de uso
Sección titulada «Reglas de uso»- Los timestamps incluyen offset.
- Los placeholders nunca se sustituyen por datos de otro encargo para «poner un ejemplo».
- Los outputs originales no se editan. El saneamiento produce otro artefacto y conserva el hash del original.
- Un rechazo de autenticación no invalida una credencial en otros servicios.
- Una sesión cerrada conserva su registro y cambia de estado.
- Una tarea de limpieza solo termina cuando se ha verificado el estado posterior.
- La revisión del equipo busca entradas sin responsable, evidencia o siguiente acción.