Skip to content
Jennifer Torres edited this page Oct 18, 2025 · 1 revision

SCANYX - Documentación Completa

📖 Guía Exhaustiva y Cheatsheet Completo


Índice

  1. Parámetros Completos
  2. Perfiles de Escaneo
  3. Workflows
  4. Gestión de Sesiones
  5. Modos de Reanudación
  6. Gestión Avanzada de Hosts
  7. Archivos de Salida
  8. Modo Wizard
  9. Troubleshooting

1. Parámetros Completos

1.1 Tabla Maestra de Parámetros

Parámetro Tipo Por Defecto Descripción
ENTRADA DE HOSTS (uno requerido)
-Hosts String[] - Array de hosts directo (IPs, CIDR, hostnames). Combinable con -HostFile.
-HostFile String - Archivo con hosts a escanear (IPs, CIDR, hostnames). Un host por línea.
TIPOS DE ESCANEO (mutuamente excluyentes)
-ScanType String - Tipo de escaneo: tcp-100, tcp-1000, tcp-full, udp-common, udp-1000, udp-full. Mutuamente excluyente con -Workflow.
-Workflow String - Nombre del workflow a ejecutar (full-discovery). Mutuamente excluyente con -ScanType.
PARÁMETROS DEL WORKFLOW
-WorkflowCondition String always Condición global para pasos de workflow: always, previous_success, previous_has_results.
ARCHIVOS DE CONFIGURACIÓN
-ConfigFile String nmap-profiles-workflows.json Archivo de configuración con perfiles y workflows personalizados.
ACTIVOS EXCLUIDOS
-ExcludeHosts String[] - Array de hosts a excluir (IPs, CIDR, hostnames). Combinable con -ExcludeFile.
-ExcludeFile String - Archivo con hosts a excluir del escaneo. Soporta IPs, CIDR, hostnames.
ACTIVOS SENSIBLES
-SensitiveHosts String[] - Array de hosts sensibles (IPs, CIDR, hostnames). Combinable con -SensitiveFile.
-SensitiveFile String - Archivo con hosts sensibles (timing/scripts personalizados). Soporta IPs, CIDR, hostnames.
-SensitiveTiming String T2 Timing de Nmap para hosts sensibles: T0 (paranoid), T1 (sneaky), T2 (polite), T3 (normal), T4 (aggressive).
-SensitiveScripts String default NSE scripts para hosts sensibles: default, vuln, none, default+vuln.
RENDIMIENTO
-MaxConcurrent Int 5 Hosts escaneados simultáneamente. Rango: 1-50.
-MaxRetries Int 1 Reintentos para hosts fallidos. Rango: 0-10.
-RetryDelay Int 60 Segundos entre reintentos. Rango: 0-3600.
CARPETA DE SALIDA
-OutputDir String nmap Directorio de salida para resultados. Crea estructura: networks/, hosts/, .sessions/.
CONFIGURACIÓN
-OverwriteMode String Ask Comportamiento con archivos existentes: Skip (saltar), Overwrite (sobrescribir), Ask (preguntar).
-ResolveHostnames Switch - Resuelve hostnames a IPs para matching de exclusiones. Puede ser lento para listas grandes.
-VerboseMode Switch - Muestra comandos nmap completos y salida en tiempo real. Útil para debugging.
-Wizard Switch - Modo interactivo: configuración guiada paso a paso (10 pasos). Ideal para principiantes.
-Unprivileged Switch - Modo sin privilegios. Convierte automáticamente -sS a -sT. Requiere cuando no hay acceso raw sockets.
GESTIÓN DE SESIONES
-SessionName String Auto-generado Nombre personalizado para la sesión. Formato: 3-50 caracteres alfanuméricos + guiones/guiones bajos.
-ListSessions Switch - Lista todas las sesiones disponibles con estado y progreso. Sale después de listar.
-ResumeSession String - Reanuda sesión específica por nombre. Requiere combinarse con un modo de reanudación.
GESTIÓN DE ESTADO (mutuamente excluyentes)
-Resume Switch - Continúa solo hosts pendientes. Salta completados y fallidos.
-ResumeRetryFailed Switch - Continúa hosts pendientes + reintenta fallidos. Salta completados.
-ResumeRetryDead Switch - Continúa pendientes + reintenta fallidos + reescanea muertos (hosts sin puertos).
-RetryFailed Switch - Solo reintenta hosts fallidos. Salta pendientes y completados.
-RetryDead Switch - Solo reescanea hosts muertos (completados sin puertos abiertos). Salta pendientes, fallidos y vivos.
-Force Switch - Ignora estado previo e inicia desde cero. Archiva archivos de estado antiguos.

1.2 Validaciones y Rangos

Parámetro Validación Valores Permitidos
-ScanType Debe existir en config tcp-100, tcp-1000, tcp-full, udp-common, udp-1000, udp-full, custom
-Workflow Debe existir en config full-discovery, custom
-WorkflowCondition ValidateSet always, previous_success, previous_has_results
-SensitiveTiming ValidateSet T1, T2, T3, T4
-SensitiveScripts ValidateSet default, vuln, none, default+vuln
-MaxConcurrent ValidateRange 1-50
-MaxRetries ValidateRange 0-10
-RetryDelay ValidateRange 0-3600
-OverwriteMode ValidateSet Skip, Overwrite, Ask
-SessionName Regex 3-50 caracteres: ^[a-zA-Z0-9_-]{3,50}$

2. Perfiles de Escaneo

2.1 Tabla Detallada

Perfil Puertos Velocidad Timing Scripts Timeout Uso Recomendado
tcp-100 Top 100 TCP ⚡⚡⚡ Muy rápido T4 default, vuln 10m Reconocimiento rápido inicial
tcp-1000 Top 1000 TCP ⚡⚡⚡ Rápido T4 default, vuln 60m Escaneo estándar de redes
tcp-full 65535 TCP ⚡ Lento T4 default, vuln 60m Escaneo exhaustivo TCP
udp-common UDP comunes ⚡⚡ Medio T4 sV, A 60m Servicios UDP estándar
udp-1000 Top 1000 UDP ⚡ Lento T4 sV, A 60m Escaneo UDP completo
udp-full 65535 UDP 🐢 Muy lento T4 sV, A 60m Escaneo exhaustivo UDP

2.2 Comandos Nmap Completos

tcp-100

nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 10m --top-ports 100
  • Descripción: Escaneo rápido de los 100 puertos TCP más comunes
  • Tiempo estimado: 2-5 minutos por host
  • Ideal para: Reconocimiento inicial, redes grandes

tcp-1000

nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 60m --top-ports 1000
  • Descripción: Escaneo estándar de los 1000 puertos TCP más comunes
  • Tiempo estimado: 5-15 minutos por host
  • Ideal para: Escaneo estándar de infraestructura

tcp-full

nmap -v -T4 -Pn -open -sS --script=default,vuln -A --host-timeout 60m -p-
  • Descripción: Escaneo completo de todos los 65535 puertos TCP
  • Tiempo estimado: 30-60 minutos por host
  • Ideal para: Auditorías exhaustivas, pentesting

udp-common

nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m -p '53,67,69,11,123,137,161,500,514,520,563'
  • Descripción: Puertos UDP más comunes (DNS, DHCP, SNMP, NTP, etc.)
  • Tiempo estimado: 10-20 minutos por host
  • Ideal para: Descubrimiento de servicios UDP críticos

udp-1000

nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m
  • Descripción: Top 1000 puertos UDP
  • Tiempo estimado: 60+ minutos por host
  • Ideal para: Auditoría UDP completa

udp-full

nmap -v -T4 -Pn -sU -sV -A --host-timeout 60m -p-
  • Descripción: Todos los 65535 puertos UDP
  • Tiempo estimado: 4-8 horas por host
  • Ideal para: Auditorías de seguridad exhaustivas

2.3 Flags Comunes Explicados

Flag Descripción
-v Verbose mode (output detallado)
-T4 Timing aggressive (más rápido, más agresivo)
-Pn No ping (asume host activo, evita bloqueos de firewall)
-open Solo muestra puertos abiertos
-sS SYN scan (stealth, requiere privilegios)
-sU UDP scan
-sV Version detection (detecta versiones de servicios)
-A OS detection + version detection + script scanning + traceroute
--script=default,vuln Ejecuta scripts de detección y vulnerabilidades
--host-timeout Timeout máximo por host
-p- Todos los puertos (1-65535)
--top-ports Solo los N puertos más comunes

3. Workflows

3.1 ¿Qué son los Workflows?

Los workflows permiten encadenar múltiples perfiles de escaneo secuencialmente sobre los mismos hosts. Cada paso (step) puede tener condiciones que determinan si se ejecuta o no.

Ventajas:

  • Escaneo progresivo: rápido → profundo
  • Optimización de tiempo: solo profundiza en hosts exitosos
  • Automatización completa: un solo comando para múltiples fases

3.2 Workflow: full-discovery

Estructura:

Step 1: tcp-1000 (reconocimiento rápido)
   ↓ (condition: always)
Step 2: tcp-full (escaneo profundo)
   ↓ (condition: previous_success)
Step 3: udp-common (servicios UDP)
   ↓ (condition: previous_success)

Configuración en nmap-profiles-workflows.json:

{
  "workflows": {
    "full-discovery": {
      "name": "Full Discovery Workflow",
      "description": "Complete host discovery: quick TCP → full TCP → common UDP",
      "steps": [
        {
          "profile": "tcp-1000",
          "description": "Quick TCP port discovery",
          "condition": "always"
        },
        {
          "profile": "tcp-full",
          "description": "Full TCP port scan",
          "condition": "previous_success"
        },
        {
          "profile": "udp-common",
          "description": "Common UDP ports",
          "condition": "previous_success"
        }
      ]
    }
  }
}

Uso:

scanyx -HostFile hosts.txt -Workflow full-discovery -MaxConcurrent 5

3.3 Condiciones de Ejecución

Condición Descripción Cuándo Usar
always Siempre ejecuta el paso, independiente del resultado anterior Primer paso o pasos obligatorios
previous_success Solo si el paso anterior completó sin errores Escaneos profundos que dependen de éxito previo
previous_has_results Solo si el paso anterior encontró puertos abiertos Optimización: solo profundiza en hosts vivos

Forzar condiciones globalmente:

# Ejecutar todos los pasos siempre (ignora condiciones)
scanyx -HostFile hosts.txt -Workflow full-discovery -WorkflowCondition always

3.4 Estructura de Salida de Workflows

nmap/
└── workflows/
    └── full-discovery/
        ├── step-1-tcp-1000/
        │   ├── networks/
        │   │   └── 192.168.1.0-24/
        │   │       ├── 192.168.1.10_tcp-1000.nmap
        │   │       ├── 192.168.1.10_tcp-1000.xml
        │   │       └── ...
        │   └── hosts/
        ├── step-2-tcp-full/
        │   ├── networks/
        │   └── hosts/
        └── step-3-udp-common/
            ├── networks/
            └── hosts/

3.5 Crear Workflows Personalizados

Ejemplo: workflow-fast-recon

{
  "workflows": {
    "fast-recon": {
      "name": "Fast Reconnaissance",
      "description": "Quick TCP-100 → TCP-1000 if hosts alive",
      "steps": [
        {
          "profile": "tcp-100",
          "description": "Ultra-fast initial scan",
          "condition": "always"
        },
        {
          "profile": "tcp-1000",
          "description": "Standard scan on alive hosts",
          "condition": "previous_has_results"
        }
      ]
    }
  }
}

Uso:

scanyx -HostFile targets.txt -Workflow fast-recon -MaxConcurrent 20

4. Gestión de Sesiones

4.1 ¿Qué son las Sesiones?

Las sesiones permiten crear, nombrar, listar y reanudar escaneos con identificadores personalizados. Cada sesión tiene su propia carpeta con estado, logs y resultados.

Ventajas:

  • Organización por proyecto/cliente
  • Múltiples escaneos simultáneos
  • Reanudación por nombre fácil de recordar
  • Historial completo de escaneos

4.2 Crear Sesión con Nombre

# Sesión de pentesting
scanyx `
    -HostFile targets.txt `
    -ScanType tcp-1000 `
    -SessionName "pentest-cliente-2025"

# Workflow con nombre descriptivo
scanyx `
    -HostFile networks.txt `
    -Workflow full-discovery `
    -SessionName "infrastructure-audit-Q4" `
    -MaxConcurrent 10

# Escaneo programado (nombre dinámico)
scanyx `
    -HostFile monitored.txt `
    -ScanType tcp-1000 `
    -SessionName "weekly-scan-$(Get-Date -Format 'yyyy-MM-dd')"

4.3 Listar Sesiones

# Listar todas las sesiones
scanyx -ListSessions

# Listar sesiones en directorio específico
scanyx -ListSessions -OutputDir "C:\Scans\Project1"

Salida ejemplo:

Available Sessions in: nmap/

┌─────────────────────────────────────────────────────────────────────┐
│ Session: pentest-cliente-2025                                       │
├─────────────────────────────────────────────────────────────────────┤
│ Type       : tcp-1000                                               │
│ Status     : in_progress                                            │
│ Progress   : 350/1000 (35.0%) | Success: 340 | Failed: 10          │
│ Started    : 2025-10-18 14:30:00                                   │
│ Elapsed    : 2h 45m                                                │
│ State File : .sessions/pentest-cliente-2025/scan-state.json        │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────────┐
│ Session: weekly-scan-2025-10-18                                     │
├─────────────────────────────────────────────────────────────────────┤
│ Type       : Workflow: full-discovery                               │
│ Status     : completed                                              │
│ Progress   : 500/500 (100.0%) | Success: 485 | Failed: 15          │
│ Started    : 2025-10-18 02:00:00                                   │
│ Duration   : 12h 34m                                               │
│ State File : .sessions/weekly-scan-2025-10-18/scan-state.json      │
└─────────────────────────────────────────────────────────────────────┘

Total: 2 session(s) found

4.4 Reanudar Sesión por Nombre

# Reanudar solo hosts pendientes
scanyx -ResumeSession "pentest-cliente-2025" -OutputDir "C:\Scans\Project1" -Resume

# Reanudar y reintentar fallidos
scanyx -ResumeSession "pentest-cliente-2025"  -OutputDir "C:\Scans\Project1" -ResumeRetryFailed

# Solo reintentar hosts fallidos de una sesión
scanyx -ResumeSession "infrastructure-audit-Q4"  -OutputDir "C:\Scans\Project1" -RetryFailed

# Reanudar con parámetros modificados
scanyx `
    -ResumeSession "pentest-cliente-2025" `
    -OutputDir "C:\Scans\Project1" `
    -Resume `
    -MaxConcurrent 20  # Aumentar concurrencia

4.5 Estructura de Archivos de Sesión

nmap/
├── .sessions/
│   ├── pentest-cliente-2025/
│   │   ├── scan-state.json         # Estado de cada host
│   │   ├── scan.log                # Log completo
│   │   ├── scan-errors.log         # Solo errores
│   │   └── scan-results.json       # Resultados estructurados
│   └── weekly-scan-2025-10-18/
│       └── ...
├── networks/                        # Resultados compartidos
│   └── 192.168.1.0-24/
│       └── ...
└── hosts/                           # Resultados compartidos
    └── ...

4.6 Requisitos de Nombres de Sesión

Formato válido: 3-50 caracteres alfanuméricos + guiones/guiones bajos

Ejemplos válidos:

"pentest-cliente-2025"
"weekly_scan_october"
"infrastructure-audit-phase1"
"internal-network-sweep"
"vuln-assessment-2025-Q4"

Ejemplos inválidos:

"ab"                           # Muy corto (<3 caracteres)
"sesión con espacios"          # Contiene espacios
"scan/network"                 # Contiene /
"nombre-demasiado-largo-que-excede-el-limite-de-cincuenta-caracteres"  # >50 caracteres

4.7 Casos de Uso

Proyectos de Pentesting

# Fase 1: Reconocimiento
scanyx -HostFile external.txt -ScanType tcp-1000 -SessionName "client-pentest-phase1"

# Fase 2: Escaneo profundo (días después)
scanyx -HostFile discovered.txt -Workflow full-discovery -SessionName "client-pentest-phase2"

# Listar todas las fases
scanyx -ListSessions | Select-String "client-pentest"

Escaneos Programados

# Script con fecha de forma dinámica
$sessionName = "daily-scan-$(Get-Date -Format 'yyyy-MM-dd')"
scanyx -HostFile monitored-hosts.txt -ScanType tcp-1000 -SessionName $sessionName -OutputDir "C:\Scans\Project1"

# Ver histórico de escaneos diarios
scanyx -ListSessions | Select-String "daily-scan"

5. Modos de Reanudación

5.1 Tabla de Decisión - ¿Qué Modo Usar?

Situación Modo Qué hace Cuándo usar
Escaneo interrumpido (Ctrl+C) -Resume Continúa solo hosts pendientes. Salta completados y fallidos. Interrumpiste el escaneo y quieres continuar
Escaneo con errores de red -ResumeRetryFailed Continúa pendientes + reintenta fallidos. Salta completados. Hubo errores temporales (timeouts, red inestable)
Verificar hosts "muertos" -RetryDead Solo reescanea hosts sin puertos abiertos. Salta pendientes, fallidos y vivos. Sospechas falsos negativos en hosts "muertos"
Completar escaneo fallido -ResumeRetryDead Continúa pendientes + reintenta fallidos + reescanea muertos. Quieres completar todo + verificar muertos
Solo arreglar errores previos -RetryFailed Solo reintenta hosts fallidos. Salta pendientes y completados. Solo quieres arreglar hosts con errores
Empezar desde cero -Force Ignora todo el estado previo. Archiva estado antiguo. Quieres reiniciar completamente el escaneo

5.2 Estados de Host

Estado Descripción Cómo llega a este estado
Pending Host en cola, no escaneado todavía Estado inicial al comenzar escaneo
Completed Host escaneado exitosamente Nmap completó sin errores (puede o no tener puertos abiertos)
Failed Host con error de escaneo Timeout, host unreachable, error de nmap
Dead/No ports Host escaneado, pero sin puertos abiertos Nmap completó, pero no encontró puertos abiertos

5.3 Modo: -Resume

Qué hace:

  • ✅ Escanea hosts pendientes
  • Salta hosts completados
  • Salta hosts fallidos

Cuándo usar:

  • Interrumpiste el escaneo (Ctrl+C)
  • Quieres continuar solo con lo que falta

Ejemplo:

# Escaneo original (interrumpido)
scanyx -HostFile hosts.txt -ScanType tcp-1000
# [Ctrl+C después de escanear 50 de 200 hosts]

# Continuar desde donde se quedó
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Resume
# Escanea los 150 hosts restantes

5.4 Modo: -ResumeRetryFailed

Qué hace:

  • ✅ Escanea hosts pendientes
  • Reintenta hosts fallidos
  • Salta hosts completados exitosamente

Cuándo usar:

  • Hubo errores temporales (red inestable, timeouts)
  • Quieres reintentar los que fallaron + continuar pendientes

Ejemplo:

# Escaneo con errores de red
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado final: 150 completados, 30 fallidos (timeouts), 20 pendientes

# Continuar y reintentar fallidos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -ResumeRetryFailed
# Escanea: 20 pendientes + 30 fallidos = 50 hosts

5.5 Modo: -ResumeRetryDead

Qué hace:

  • ✅ Escanea hosts pendientes
  • Reintenta hosts fallidos
  • Reescanea hosts muertos (sin puertos abiertos)
  • Salta hosts completados con puertos abiertos

Cuándo usar:

  • Quieres completar todo Y verificar hosts "muertos"
  • Sospechas falsos negativos (firewalls, timing)

Ejemplo:

# Escaneo inicial
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 150 vivos, 30 muertos (sin puertos), 10 fallidos, 10 pendientes

# Completar + verificar muertos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -ResumeRetryDead
# Escanea: 10 pendientes + 10 fallidos + 30 muertos = 50 hosts

5.6 Modo: -RetryFailed

Qué hace:

  • Solo reintenta hosts fallidos
  • Salta hosts pendientes
  • Salta hosts completados

Cuándo usar:

  • Solo quieres arreglar hosts que fallaron
  • No te importan los pendientes

Ejemplo:

# Escaneo completo con algunos errores
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 180 completados, 20 fallidos

# Solo reintentar los 20 fallidos
scanyx -HostFile hosts.txt -ScanType tcp-1000 -RetryFailed
# Escanea: solo los 20 fallidos

5.7 Modo: -RetryDead

Qué hace:

  • Solo reescanea hosts muertos (sin puertos)
  • Salta hosts pendientes
  • Salta hosts fallidos
  • Salta hosts vivos (con puertos)

Cuándo usar:

  • Quieres verificar si los hosts "muertos" son falsos negativos
  • Usar timing más lento o diferentes parámetros

Ejemplo:

# Escaneo rápido inicial
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Estado: 150 vivos, 50 muertos

# Verificar hosts "muertos" con timing lento
scanyx -HostFile hosts.txt -ScanType tcp-full -RetryDead
# Escanea: solo los 50 muertos (con tcp-full para ser exhaustivo)

5.8 Modo: -Force

Qué hace:

  • Ignora completamente el estado previo
  • Archiva archivos de estado antiguos
  • Inicia escaneo desde cero

Cuándo usar:

  • Quieres empezar de nuevo
  • Cambios significativos en la red
  • Escaneo anterior obsoleto

Ejemplo:

# Escaneo anterior (hace 1 mes)
scanyx -HostFile hosts.txt -ScanType tcp-1000

# Empezar desde cero (ignora escaneo anterior)
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Force
# Archiva: scan-state.json → scan-state.json.backup-20251018-143000
# Escanea: todos los hosts desde cero

5.9 Ejemplos Completos

Escenario 1: Escaneo Interrumpido

# Día 1: Escaneo inicial (interrumpido)
scanyx -HostFile 500-hosts.txt -ScanType tcp-1000 -SessionName "pentest-phase1"
# [Interrumpido después de 200 hosts]

# Día 2: Continuar
scanyx -ResumeSession "pentest-phase1" -Resume
# Completa los 300 hosts restantes

Escenario 2: Red Inestable

# Escaneo con errores de red
scanyx -HostFile hosts.txt -ScanType tcp-full -MaxRetries 3 -SessionName "audit-2025"
# Estado final: 150 OK, 30 failed, 20 pending

# Reintentar todo lo que faltó
scanyx -ResumeSession "audit-2025" -ResumeRetryFailed
# Escanea: 30 failed + 20 pending

Escenario 3: Verificar Falsos Negativos

# Escaneo rápido
scanyx -HostFile hosts.txt -ScanType tcp-100 -SessionName "quick-scan"
# Estado: 100 vivos, 100 muertos

# Verificar "muertos" con escaneo exhaustivo
scanyx -ResumeSession "quick-scan" -ScanType tcp-full -RetryDead
# Solo reescanea los 100 "muertos" con tcp-full

6. Gestión Avanzada de Hosts

6.1 Expansión Automática de CIDR

SCANYX expande automáticamente notación CIDR a IPs individuales, excluyendo network address y broadcast.

Tabla de Expansión:

CIDR Hosts Generados Rango IPs Totales
192.168.1.10/32 1 192.168.1.10 1
192.168.1.0/30 2 .1-.2 2
192.168.1.0/29 6 .1-.6 6
192.168.1.0/28 14 .1-.14 14
192.168.1.0/27 30 .1-.30 30
192.168.1.0/26 62 .1-.62 62
192.168.1.0/25 126 .1-.126 126
192.168.1.0/24 254 .1-.254 254
192.168.0.0/23 510 192.168.0.1-.254 + 192.168.1.1-.254 510
192.168.0.0/22 1,022 192.168.0-3.1-.254 1,022
10.0.0.0/16 65,534 10.0.0.1 - 10.0.255.254 65,534
172.16.0.0/12 1,048,574 172.16.0.1 - 172.31.255.254 1,048,574

Advertencias:

  • CIDR >5000 hosts: muestra warning pero continúa
  • CIDR muy grandes (>/16): considera dividir en subredes

6.2 Resolución de Hostnames (-ResolveHostnames)

Sin -ResolveHostnames:

  • Solo coincidencia exacta de strings
  • Si excluded.txt tiene server.local, pero hosts.txt tiene 192.168.1.50, NO se excluye

Con -ResolveHostnames:

  • Resuelve hostnames a IPs usando DNS
  • Si server.local192.168.1.50, ambas formas se excluyen correctamente

Ejemplo:

# hosts.txt
192.168.1.50

# excluded.txt
server.local  # Resuelve a 192.168.1.50

# Sin resolución: 192.168.1.50 SE ESCANEA (no coincide string)
scanyx -HostFile hosts.txt -ExcludeFile excluded.txt -ScanType tcp-1000

# Con resolución: 192.168.1.50 NO SE ESCANEA (coincide IP)
scanyx -HostFile hosts.txt -ExcludeFile excluded.txt -ResolveHostnames -ScanType tcp-1000

Advertencia:

  • Puede ser lento para listas grandes (hace lookup DNS por cada hostname)
  • Usa solo si necesitas matching de hostname ↔ IP

6.3 Detección de Conflictos

SCANYX detecta automáticamente conflictos entre listas:

Conflicto 1: Host en Excluded Y Sensitive

WARNING: CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
BEHAVIOR: Exclusion wins. Host will NOT be scanned.

Comportamiento: La exclusión gana, el host NO se escanea.

Solución: Revisar y corregir los archivos.

6.4 Ejemplo Práctico Completo

Escenario: Red Corporativa (762 hosts)

networks.txt (762 hosts tras expansión):

# Red principal
192.168.1.0/24    # 254 hosts

# Red secundaria
192.168.2.0/24    # 254 hosts

# Red DMZ
10.0.0.0/24       # 254 hosts

excluded.txt (19 hosts):

# Gateways
192.168.1.1
192.168.2.1
10.0.0.1

# Servidores críticos
192.168.1.10
192.168.1.20

# Rango de impresoras (14 hosts)
192.168.2.240/28

sensitive.txt (16 hosts):

# Servidores de producción
192.168.1.10
192.168.1.20

# Dispositivos de red (14 hosts)
192.168.2.0/28

Comando:

scanyx `
    -HostFile networks.txt `
    -SensitiveFile sensitive.txt `
    -ExcludeFile excluded.txt `
    -ScanType tcp-1000 `
    -SensitiveTiming T2 `
    -MaxConcurrent 10 `
    -SessionName "corporate-audit-2025"

Resultado del procesamiento:

  • Total después de expansión: 762 hosts
  • Excluidos: 19 hosts
  • Hosts sensibles: 16 hosts → escaneo con -T2 --script=default
  • Hosts normales: 727 hosts → escaneo con -T4 --script=default,vuln
  • Total a escanear: 743 hosts

Salida esperada:

[INFO] Total hosts after CIDR expansion: 762
[INFO] Excluded hosts: 19
[INFO] Sensitive hosts: 16
[INFO] Normal hosts: 727
[INFO] Total hosts to scan: 743

[WARNING] CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
[WARNING] BEHAVIOR: Exclusion wins. Host will NOT be scanned.

7. Archivos de Salida

7.1 Estructura de Directorios

nmap/                                    # OutputDir (configurable con -OutputDir)
├── .sessions/                           # Sesiones (estado, logs)
│   ├── pentest-cliente-2025/
│   │   ├── scan-state.json              # Estado de cada host
│   │   ├── scan.log                     # Log completo
│   │   ├── scan-errors.log              # Solo errores
│   │   └── scan-results.json            # Resultados estructurados
│   └── weekly-scan-2025-10-18/
│       └── ...
├── networks/                            # Resultados de hosts desde CIDR
│   ├── 192.168.1.0-24/
│   │   ├── 192.168.1.10_tcp-1000.nmap   # Resultado formato normal
│   │   ├── 192.168.1.10_tcp-1000.xml    # XML parseable
│   │   ├── 192.168.1.10_tcp-1000.gnmap  # Grep-friendly
│   │   ├── 192.168.1.10_tcp-1000.stdout # Salida estándar nmap
│   │   └── 192.168.1.10_tcp-1000.stderr # Errores nmap
│   └── 10.0.0.0-16/
│       └── ...
├── hosts/                               # Resultados de hosts individuales
│   ├── 192.168.2.100/
│   │   └── ...
│   └── server.example.com/
│       └── ...
└── workflows/                           # Resultados de workflows
    └── full-discovery/
        ├── step-1-tcp-1000/
        │   ├── networks/
        │   └── hosts/
        ├── step-2-tcp-full/
        └── step-3-udp-common/

7.2 Logs

scan.log (con colores)

[2025-10-18 14:30:00] [INFO] Scan started: 192.168.1.10 | tcp-1000
[2025-10-18 14:35:47] [SUCCESS] Scan completed: 192.168.1.10 | tcp-1000 | Duration: 5m 47s | Ports: 15
[2025-10-18 14:36:00] [INFO] Scan started: 192.168.1.11 | tcp-1000
[2025-10-18 14:41:00] [ERROR] Scan failed: 192.168.1.11 | tcp-1000 | Host timeout (60m exceeded)
[2025-10-18 14:42:00] [WARNING] Retrying: 192.168.1.11 | tcp-1000 | Attempt 2/3

scan-errors.log

Solo entradas [ERROR] y [WARNING] para troubleshooting rápido:

[2025-10-18 14:41:00] [ERROR] Scan failed: 192.168.1.11 | tcp-1000 | Host timeout (60m exceeded)
[2025-10-18 14:55:30] [ERROR] Scan failed: 192.168.1.15 | tcp-1000 | Host unreachable
[2025-10-18 15:10:15] [WARNING] CONFLICT: 192.168.1.99 is in both sensitive and excluded lists

7.3 Archivos de Estado y Resultados

scan-state.json

Estado de cada host para reanudación:

{
  "session_id": "pentest-cliente-2025",
  "scan_type": "tcp-1000",
  "workflow": null,
  "started": "2025-10-18T14:30:00",
  "hosts": {
    "192.168.1.10": {
      "status": "completed",
      "attempts": 1,
      "scan_file": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.nmap",
      "has_open_ports": true,
      "open_ports_count": 15,
      "last_scan": "2025-10-18T14:35:47",
      "duration_seconds": 347,
      "is_sensitive": false
    },
    "192.168.1.11": {
      "status": "failed",
      "attempts": 3,
      "error": "Host timeout (60m exceeded)",
      "last_scan": "2025-10-18T14:55:30",
      "is_sensitive": false
    },
    "192.168.1.12": {
      "status": "pending",
      "attempts": 0,
      "is_sensitive": true
    }
  },
  "summary": {
    "total": 200,
    "completed": 150,
    "failed": 30,
    "pending": 20,
    "alive": 140,
    "dead": 10
  }
}

scan-results.json

Resultados estructurados para post-procesamiento:

{
  "scan_session": "pentest-cliente-2025",
  "scan_type": "tcp-1000",
  "started": "2025-10-18T14:30:00",
  "completed": "2025-10-18T18:45:30",
  "duration_total_seconds": 15330,
  "scans": [
    {
      "host": "192.168.1.10",
      "status": "completed",
      "duration_seconds": 347,
      "attempts": 1,
      "has_open_ports": true,
      "open_ports_count": 15,
      "is_sensitive": false,
      "scan_files": {
        "nmap": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.nmap",
        "xml": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.xml",
        "gnmap": "nmap/networks/192.168.1.0-24/192.168.1.10_tcp-1000.gnmap"
      }
    }
  ]
}

7.4 Formatos de Salida Nmap

Para cada host escaneado, SCANYX genera 5 archivos:

Archivo Descripción Uso
.nmap Formato normal (legible humano) Revisión manual
.xml XML estructurado Parsing automático, XNP, otras herramientas
.gnmap Grepable Scripts bash/PowerShell, búsquedas rápidas
.stdout Salida estándar completa Debugging, logs completos
.stderr Errores de nmap Troubleshooting

Ejemplo:

192.168.1.10_tcp-1000.nmap   # Lectura humana
192.168.1.10_tcp-1000.xml    # Parsing automático
192.168.1.10_tcp-1000.gnmap  # Scripts
192.168.1.10_tcp-1000.stdout # Debugging
192.168.1.10_tcp-1000.stderr # Errores

8. Modo Wizard

8.1 ¿Qué es el Modo Wizard?

Modo interactivo paso a paso que guía la configuración completa del escaneo mediante 10 pasos secuenciales con validación automática.

Ideal para:

  • Usuarios nuevos
  • Configuraciones complejas
  • Validar parámetros antes de ejecutar
  • Aprender las opciones disponibles

8.2 Cómo Usar

scanyx -Wizard

8.3 Flujo del Wizard (10 Pasos)

Paso 1: Tipo de Escaneo

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 1/10: Scan Type
═══════════════════════════════════════════════════════════

Select scan type:
  [1] Single Scan Profile (tcp-1000, tcp-full, etc.)
  [2] Workflow (chain multiple profiles)

Your choice [1-2]:

Paso 2: Selección de Perfil/Workflow

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 2/10: Profile Selection
═══════════════════════════════════════════════════════════

Available scan profiles:
  [1] tcp-100   - Top 100 TCP (very fast)
  [2] tcp-1000  - Top 1000 TCP (fast, recommended)
  [3] tcp-full  - All 65535 TCP ports (slow)
  [4] udp-common - Common UDP ports
  [5] udp-1000  - Top 1000 UDP
  [6] udp-full  - All 65535 UDP ports (very slow)

Select profile [1-6]:

Paso 3: Hosts Input

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 3/10: Hosts Input
═══════════════════════════════════════════════════════════

How do you want to specify hosts?
  [1] File (recommended for large lists)
  [2] Direct input (comma-separated)

Your choice [1-2]:

Paso 4: Session Name

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 4/10: Session Name
═══════════════════════════════════════════════════════════

Enter session name (3-50 alphanumeric + hyphens/underscores)
Leave empty for auto-generated name

Session name:

Paso 5: Exclusions

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 5/10: Exclusions
═══════════════════════════════════════════════════════════

Do you want to exclude any hosts? [y/N]:

Paso 6: Sensitive Hosts

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 6/10: Sensitive Hosts
═══════════════════════════════════════════════════════════

Do you have sensitive hosts (production, critical)? [y/N]:

If yes:
  Timing: [T0] Paranoid | [T1] Sneaky | [T2] Polite (default)
  Scripts: [default] | [vuln] | [none] | [default+vuln]

Paso 7: Performance

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 7/10: Performance
═══════════════════════════════════════════════════════════

Max concurrent scans [1-50] (default: 5):
Max retries [0-10] (default: 1):
Retry delay in seconds [0-3600] (default: 60):

Paso 8: Output

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 8/10: Output Settings
═══════════════════════════════════════════════════════════

Output directory (default: nmap):
Overwrite mode:
  [1] Ask (default)
  [2] Skip existing
  [3] Overwrite all

Enable verbose mode? [y/N]:

Paso 9: Advanced Options

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 9/10: Advanced Options
═══════════════════════════════════════════════════════════

Unprivileged mode (no admin required)? [y/N]:
Custom config file (default: nmap-profiles-workflows.json):

Paso 10: Summary & Confirmation

═══════════════════════════════════════════════════════════
  SCANYX Wizard - Step 10/10: Summary
═══════════════════════════════════════════════════════════

Configuration Summary:
  Scan Type      : tcp-1000
  Hosts          : File (hosts.txt) - 254 hosts
  Session Name   : pentest-cliente-2025
  Exclusions     : 5 hosts
  Sensitive      : 10 hosts (T2, default scripts)
  Max Concurrent : 10
  Max Retries    : 3
  Output Dir     : nmap/
  Overwrite Mode : Skip
  Verbose        : Yes

Generated Command:
────────────────────────────────────────────────────────────
scanyx `
    -HostFile "hosts.txt" `
    -ExcludeFile "excluded.txt" `
    -SensitiveFile "production.txt" `
    -SensitiveTiming T2 `
    -SensitiveScripts default `
    -ScanType tcp-1000 `
    -SessionName "pentest-cliente-2025" `
    -MaxConcurrent 10 `
    -MaxRetries 3 `
    -OverwriteMode Skip `
    -VerboseMode
────────────────────────────────────────────────────────────

Execute scan now? [Y/n]:

8.4 Validación Automática

El wizard valida automáticamente:

  • ✅ Archivos existen antes de usar
  • ✅ Nombres de sesión válidos (regex)
  • ✅ Rangos numéricos (1-50, 0-10, etc.)
  • ✅ Valores de ValidateSet
  • ✅ Perfiles/workflows existen en config

Ejemplo de validación:

Session name: sesión con espacios
❌ ERROR: Invalid session name. Use 3-50 alphanumeric + hyphens/underscores.

Session name: pentest-cliente-2025
✅ Valid session name

9. Troubleshooting

9.1 FAQ - Problemas Comunes

❓ Cancelar y Reiniciar Escaneo

Problema: Quiero cancelar el escaneo actual y empezar de nuevo.

Solución:

# 1. Cancelar escaneo en ejecución
Ctrl+C  # Limpieza automática de jobs

# 2. Reiniciar desde cero (ignora estado previo)
scanyx -HostFile hosts.txt -ScanType tcp-1000 -Force

❓ Errores de Permisos (Windows)

Problema:

ERROR: Nmap failed: You requested a scan type which requires raw socket access

Causa: Los escaneos SYN (-sS) requieren privilegios de administrador.

Soluciones:

Opción 1: Ejecutar como Administrador

  1. Click derecho en PowerShell
  2. "Ejecutar como administrador"
  3. Volver a ejecutar scanyx

Opción 2: Modo Unprivileged (sin admin)

scanyx -HostFile hosts.txt -ScanType tcp-1000 -Unprivileged
  • Convierte automáticamente -sS a -sT (TCP connect scan)
  • No requiere privilegios
  • Ligeramente más lento y detectable

❓ Archivos de Salida No Se Crean

Problema: No veo archivos .nmap, .xml, .gnmap después del escaneo.

Diagnóstico:

# 1. Verificar permisos de escritura
Test-Path -Path ".\nmap" -PathType Container

# 2. Ejecutar en modo verbose para ver comandos nmap
scanyx -HostFile hosts.txt -ScanType tcp-1000 -VerboseMode

# 3. Revisar archivos stderr
Get-Content nmap/hosts/*/*.stderr
Get-Content nmap/networks/*/*.stderr

# 4. Verificar logs de errores
Get-Content nmap/.sessions/*/scan-errors.log

Posibles causas:

  • Permisos de escritura en directorio
  • Nmap no genera salida (host filtrado, timeout)
  • Ruta incorrecta a OutputDir

❓ Conflicto: Host en Excluded Y Sensitive

Problema:

WARNING: CONFLICT: 192.168.1.10 is in both sensitive and excluded lists.
BEHAVIOR: Exclusion wins. Host will NOT be scanned.

Explicación: El host aparece en ambas listas.

Comportamiento: La exclusión gana, el host NO se escanea.

Solución:

  1. Revisar excluded.txt y sensitive.txt
  2. Eliminar el host de una de las listas
  3. Volver a ejecutar

❓ Cuándo Usar -Unprivileged

Situaciones:

1. Windows sin Privilegios de Admin

scanyx -HostFile hosts.txt -ScanType tcp-1000 -Unprivileged

2. Dispositivos de Red con Raw Sockets Deshabilitados

scanyx -HostFile hosts.txt -ScanType tcp-full -Unprivileged

3. Entornos Restrictivos (VDI, Kiosks)

scanyx -Hosts "target.local" -ScanType tcp-1000 -Unprivileged

Limitaciones:

  • -sS se convierte automáticamente a -sT
  • TCP connect scan es más lento
  • Más detectable (completa 3-way handshake)
  • No funciona para scans que requieren raw packets (ACK scan, etc.)

❓ Hosts Marcados como "Dead" que Están Vivos

Problema: Hosts conocidos como activos aparecen como "dead" (sin puertos).

Causas:

  • Firewalls bloqueando puertos
  • Timing muy agresivo (T4)
  • Timeout muy corto
  • Host lento en responder

Soluciones:

1. Usar -RetryDead con Timing Más Lento

# Escaneo original (rápido, T4)
scanyx -HostFile hosts.txt -ScanType tcp-1000
# Algunos hosts marcados como "dead"

# Reescanear "muertos" con timing lento
scanyx -HostFile hosts.txt -ScanType tcp-full -RetryDead
# Modifica manualmente el perfil a T2 en nmap-profiles-workflows.json

2. Usar Hosts Sensibles

# Marcar hosts lentos como sensibles
scanyx `
    -HostFile hosts.txt `
    -SensitiveHosts "slow-host1","slow-host2" `
    -SensitiveTiming T1 `
    -ScanType tcp-1000

3. Aumentar Host Timeout

// Editar nmap-profiles-workflows.json
{
  "profiles": {
    "tcp-1000-slow": {
      "command": "nmap -v -T2 -Pn -sS --script=default,vuln -A --host-timeout 120m --top-ports 1000"
    }
  }
}

❓ Escaneo Muy Lento

Problema: El escaneo tarda horas más de lo esperado.

Diagnóstico:

# Ver comandos nmap ejecutándose
scanyx -HostFile hosts.txt -ScanType tcp-1000 -VerboseMode

# Revisar progreso en tiempo real
Get-Content nmap/.sessions/*/scan.log -Tail 20 -Wait

Optimizaciones:

1. Aumentar Concurrencia

# De 5 hosts concurrentes (default) a 20
scanyx -HostFile hosts.txt -ScanType tcp-1000 -MaxConcurrent 20

2. Usar Perfil Más Rápido

# tcp-100 en lugar de tcp-1000
scanyx -HostFile hosts.txt -ScanType tcp-100

3. Reducir Timeout

// Editar nmap-profiles-workflows.json
"tcp-1000": {
  "command": "nmap ... --host-timeout 30m"  // De 60m a 30m
}

4. Dividir Escaneo

# Dividir hosts.txt en 4 partes
scanyx -HostFile hosts-part1.txt -ScanType tcp-1000 -SessionName "scan-part1"
scanyx -HostFile hosts-part2.txt -ScanType tcp-1000 -SessionName "scan-part2"
scanyx -HostFile hosts-part3.txt -ScanType tcp-1000 -SessionName "scan-part3"
scanyx -HostFile hosts-part4.txt -ScanType tcp-1000 -SessionName "scan-part4"

❓ Error: "Profile not found"

Problema:

ERROR: Scan profile 'tcp-custom' not found in configuration

Causa: El perfil no existe en nmap-profiles-workflows.json.

Solución:

# 1. Verificar perfiles disponibles
Get-Content nmap-profiles-workflows.json | ConvertFrom-Json | Select-Object -ExpandProperty profiles | Get-Member -MemberType NoteProperty

# 2. Agregar perfil personalizado
notepad nmap-profiles-workflows.json

# 3. Volver a ejecutar
scanyx -HostFile hosts.txt -ScanType tcp-custom

Clone this wiki locally