
Auditoría de seguridad de red local con EOL, CVE, identidad de dispositivos e informes HTML
Auditoría de seguridad de red para humanos — impulsado por nmap, hecho para todos.
Sitio web: sunsetscan.com
SunsetScan es una herramienta de auditoría de seguridad de red local para propietarios de redes domésticas y personal de TI que quieren la profundidad de nmap sin aprender la sintaxis de nmap. Apúntala a tu red y encontrará todos los dispositivos activos, identificará el software en ejecución, lo contrastará con bases de datos de vulnerabilidades conocidas y registros de fin de vida útil, sondeará interfaces web en busca de debilidades comunes, opcionalmente realizará una auditoría de credenciales predeterminadas de fábrica segura contra bloqueos, y producirá un informe HTML limpio con explicaciones en lenguaje sencillo y pasos numerados para corregir cada hallazgo. Es completamente de solo lectura y no destructivo — nada en tu red se modifica jamás.
¿Por qué Linux? SunsetScan depende de raw sockets (escaneo ARP, captura pasiva de paquetes), API específicas de Linux (
/proc,ip route) y comprobaciones de privilegios (os.geteuid()) que no están disponibles en Windows nativo. WSL2 proporciona un kernel Linux completo y es la ruta recomendada para usuarios de Windows.
SunsetScan incluye un instalador que se encarga de las herramientas del sistema (nmap, masscan, git, python3-venv), crea un entorno virtual de Python local al proyecto e instala todas las dependencias de Python en su interior. Nunca se te pedirá que ejecutes pip install como root — eso es importante en Debian/Pi OS modernos; consulta ¿Por qué un venv? más abajo.
Debian, Ubuntu, Raspberry Pi OS (Bookworm y versiones posteriores), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Recomendado para Debian, Ubuntu, Raspberry Pi OS, Linux Mint y Pop!_OS:```bash curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb curl -LO https://github.com/NoCoderRandom/sunsetscan/releases/download/v2.1.0/sunsetscan_2.1.0-1_all.deb.sha256 sha256sum -c sunsetscan_2.1.0-1_all.deb.sha256 sudo apt install ./sunsetscan_2.1.0-1_all.deb sunsetscan --version
#### 2. Bootstrap de una línea
Clona el repositorio en `~/sunsetscan` y ejecuta el instalador:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
¿Lo quieres en otro lugar? Establece INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Una nota sobre `curl | bash`**: es cómodo, pero significa ejecutar un script que no has leído. Si prefieres inspeccionarlo primero, usa la opción 3 o la 4.
#### 3. Clonar e instalar```bash
git clone https://github.com/NoCoderRandom/sunsetscan.git
cd sunsetscan
./install.sh
sudo apt install -y nmap masscan git python3 python3-venv python3-pip libpcap-dev build-essential avahi-utils git clone https://github.com/NoCoderRandom/sunsetscan.git && cd sunsetscan python3 -m venv venv && ./venv/bin/pip install -r requirements.txt ./sunsetscan --version
(Sustituye el gestor de paquetes de tu distribución por `apt` — `dnf`, `pacman`, `zypper` o `brew`. El paquete avahi es `avahi-tools` en Fedora/RHEL, `avahi` en Arch, `avahi-utils` en openSUSE, y no es necesario en macOS.)
### Después de instalar — primera ejecución```bash
./sunsetscan --setup # download EOL/CVE/credential databases (once)
sudo ./sunsetscan --instant # ARP-only inventory of your local subnet
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
The ./sunsetscan launcher auto-activates the venv — you don't need to source venv/bin/activate ever. Use sudo for scans that need raw sockets, but run --setup, --download, and --update-cache as your normal user so cache files stay writable from the TUI.
Re-running ./install.sh is safe and idempotent — it detects existing components and reuses them.
Modern Debian-based distributions (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) ship with PEP 668 enforcement. This makes pip install fail when run as root against the system Python:```
error: externally-managed-environment
× This environment is externally managed
Dos de las dependencias de SunsetScan (`pysnmp` v6 en particular) necesitan versiones más nuevas que las que incluyen los repositorios de apt, por lo que una instalación solo con apt no es posible. La solución del instalador es la estándar: instalar las herramientas del sistema (nmap, masscan, libpcap, avahi-utils) mediante apt, y colocar las dependencias Python de SunsetScan en un directorio local del proyecto `./venv`. No se toca nada a nivel de sistema, por lo que PEP 668 no aplica, y desinstalar SunsetScan es simplemente `rm -rf ~/sunsetscan`.
### Opcional: mantener SunsetScan ejecutándose en segundo plano
Una evaluación completa de una subred /24 en una Raspberry Pi puede tardar entre 10 y 30 minutos. Usa `tmux` o `screen` para que el escaneo sobreviva a una desconexión SSH:```bash
sudo apt install -y tmux
tmux new -s sunsetscan
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
# Ctrl+B then D to detach. "tmux attach -t sunsetscan" to come back later.
cd ~/sunsetscan git pull ./install.sh # idempotent — picks up any new dependencies
### Desinstalación```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
Windows no se admite directamente (SunsetScan necesita sockets sin procesar, /proc y os.geteuid), pero WSL2 funciona bien:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Reinicia, abre **Ubuntu** desde el menú Inicio y sigue la instalación estándar anterior. WSL2 usa un adaptador de red virtual — pasa tu subred real con `--target` si la detección automática elige la incorrecta.
---
## Requisitos
| Requisito | Mínimo | Notas |
|---|---|---|
| **Python** | 3.9+ | 3.12 recomendado |
| **nmap** | Cualquier versión reciente | Debe estar en el PATH del sistema |
| **SO** | Linux (nativo o WSL2) | Ver [Soporte de plataformas](#platform-support) |
| **masscan** | Cualquiera | Opcional — descubrimiento de puertos más rápido |
| **avahi-utils** | Cualquiera | Opcional — proporciona `avahi-browse`, utilizado para descubrimiento mDNS fiable de dispositivos Apple / Bonjour / Sleep-Proxy. Si no está presente, recurre a python `zeroconf`. |
| **git** | Cualquiera | Opcional — utilizado para `--setup` y `--update` |
| **Privilegios** | Usuario estándar | Se necesita root/sudo para los perfiles FULL, STEALTH, SMB, detección ARP y captura pasiva |
---
## Inicio Rápido```bash
# Interactive mode (recommended for first-time users)
sudo python3 sunsetscan.py -i
# Full security assessment with HTML report
sudo python3 sunsetscan.py --full-assessment --target 192.168.1.0/24
# Quick scan of your network
python3 sunsetscan.py --target 192.168.1.0/24
# IoT device scan (cameras, routers, smart devices)
python3 sunsetscan.py --target 192.168.1.0/24 --profile IOT
# Quick device inventory (no security checks)
python3 sunsetscan.py --identify --target 192.168.1.0/24
# Download all data modules for extended detection
python3 sunsetscan.py --download all
SunsetScan ejecuta 12 módulos de comprobación de seguridad durante una evaluación completa:
hardware-eol-home, mientras que los perfiles de oficina, empresa, industria,
proveedor de servicios y completo están disponibles para escaneos más amplios.--setup, --update-cache y --download. Los escaneos funcionan sin conexión a internet siempre que las cachés estén pobladas.--identify omite las comprobaciones de seguridadSunsetScan incluye módulos de datos descargables y perfiles de EOL de hardware que amplían las capacidades de detección:
La base de datos de ciclo de vida de hardware ahora está dividida en perfiles inteligentes descargables:
hardware-eol-home es la instalación predeterminada, mientras que hardware-eol-full proporciona
cobertura completa. La compilación canónica completa actualmente contiene 64,245 registros
en 122 proveedores, pero los usuarios domésticos solo necesitan el perfil doméstico más pequeño.
### Detección de dispositivos no autorizados
- Guarda una instantánea de tu red como línea base de confianza
- Los escaneos futuros marcan automáticamente las direcciones MAC desconocidas que no estén en la línea base
- Detecta dispositivos conocidos en direcciones IP inesperadas
### Puntuación de riesgo
Cada dispositivo recibe una puntuación de riesgo (0-100) basada en la gravedad y el número de hallazgos:
| Puntuación | Banda |
|---|---|
| 0-10 | Riesgo mínimo |
| 11-30 | Riesgo bajo |
| 31-60 | Riesgo medio |
| 61-80 | Riesgo alto |
| 81-100 | Riesgo crítico |
### Informes
- **Informe HTML profesional** — panel de severidad, secciones por host, tarjetas de hallazgos con explicaciones en lenguaje sencillo, recomendaciones priorizadas
- **Exportación JSON** — salida estructurada legible por máquina
- Los informes son completamente autocontenidos — un solo archivo HTML, sin dependencias externas
- Los perfiles específicos como SMB mantienen visibles en el informe los hosts descubiertos
incluso cuando no hay puertos de servicio coincidentes abiertos
- Las comprobaciones a nivel de red, como DNS, UPnP y las notas de tiempo de ejecución del escaneo, se separan
de los hallazgos por dispositivo; las puntuaciones de riesgo de los dispositivos solo se muestran para hosts reales
- Todos los hallazgos codificados por colores: Crítico, Alto, Medio, Bajo, Info
### Historial de escaneos y comparación de diferencias
- Cada escaneo se guarda automáticamente como una instantánea JSON comprimida con gzip
- Consulta escaneos anteriores con `--history`
- Compara dos escaneos cualesquiera con `--diff` para ver hosts nuevos, puertos cerrados y hallazgos nuevos/resueltos
- Compara con un escaneo de hace N días con `--diff --since N`
- El historial se conserva durante 90 días por defecto
### Interfaz de usuario
- **Modo interactivo** guiado (`-i`) — menús de varios niveles para escaneo, análisis, exportación y módulos
- **Menú de estilo antiguo** — se inicia al ejecutar sin argumentos
- Modo CLI directo — apto para scripts y automatización
- Salida de terminal en color avanzada con barras de progreso, indicadores de actividad y paneles de resumen
---
## Todas las opciones de CLI
| Opción | Descripción | Root |
|---|---|---|
| `--target TARGET` | IP, rango CIDR, nombre de host o rango a escanear | No |
| `--profile PROFILE` | Perfil de escaneo: QUICK, FULL, STEALTH, PING, IOT, SMB (por defecto: QUICK) | Varía |
| `-i`, `--interactive` | Inicia el modo interactivo guiado | No |
| `--full-assessment` | Evaluación completa + exportación automática a HTML; la auditoría de credenciales sigue siendo opt-in | No |
| `--identify` | Ejecuta solo la identificación de dispositivos (omite las comprobaciones de seguridad) | No |
| `--nse` | Habilita el motor de scripting de Nmap para una detección mejorada | No |
| `--check-defaults` | Activa la auditoría de credenciales predeterminadas de fábrica a prueba de bloqueos (solo dispositivos propios) | No |
| `--save-baseline` | Guarda el escaneo como línea base de dispositivos de confianza para la detección de dispositivos no autorizados | No |
| `--setup` | Asistente de configuración inicial (dependencias + descarga de caché) | No |
| `--update-cache` | Actualiza manualmente las cachés de datos CVE y EOL | No |
| `--cache-status` | Muestra la antigüedad de la caché y el número de entradas, y sale | No |
| `--modules` | Muestra el estado de todos los módulos de datos descargables | No |
| `--download MODULE` | Descarga un módulo de datos (o "all") | No |
| `--db SIZE` | Tamaño de la base de datos EOL para `--setup`: mini, normal, large (por defecto: normal) | No |
| `--history` | Muestra la tabla del historial de escaneos y sale | No |
| `--diff` | Compara los dos últimos escaneos guardados y sale | No |
| `--since DAYS` | Con `--diff`: compara con un escaneo de al menos N días de antigüedad | No |
| `--check-version` | Comprueba si hay una versión más reciente de SunsetScan en GitHub | No |
| `--update` | Obtiene el código más reciente de GitHub y reinstala las dependencias | No |
| `--verbose` | Habilita el registro de depuración | No |
| `--no-color` | Desactiva la salida en color (útil para archivos de registro) | No |
| `--quiet` | Suprime las barras de progreso (los hallazgos se siguen mostrando) | No |
| `--safe-mode` | Fuerza un escaneo más suave: nmap con límites, menor uso de masscan, menos workers, omite sondas pesadas | No |
| `--no-safe-mode` | Desactiva el modo seguro automático | No |
| `--version` | Muestra el número de versión y sale | No |
---
## Perfiles de escaneo
| Perfil | Opciones de nmap | Velocidad | Root | Ideal para |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | No | Encontrar dispositivos activos rápidamente |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | No | Primera inspección de una red (con detección ligera de versiones) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | Sí | Análisis profundo de hosts específicos |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | Sí | Escaneo de bajo ruido |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | No | Cámaras, routers, dispositivos inteligentes |
| **SMB** | `-T4 -sV -p 135,139,445,137,138 --script smb-security-mode,smb2-security-mode,smb-vuln-ms17-010 --open` | 1-3 min | Sí | Recursos compartidos de Windows, comprobación de EternalBlue |
> **Consejo:** FULL y STEALTH recurren automáticamente a opciones que no requieren root cuando se ejecutan sin sudo. La detección del sistema operativo no estará disponible, pero el escaneo de puertos y la detección de servicios seguirán funcionando.
### Seguridad de la auditoría de contraseñas predeterminadas
Las pruebas de contraseñas predeterminadas nunca se habilitan automáticamente. En modo CLI, añade
`--check-defaults`; en el modo guiado `-i`, elige la auditoría de contraseñas predeterminadas cuando se te
solicite. SunsetScan aplica entonces una política conservadora:
- sin rociado genérico de nombres de usuario/contraseñas por defecto
- solo prueba credenciales que coinciden con el fabricante y el modelo/familia detectados
- omite dispositivos con valores predeterminados de etiqueta/PIN únicos, como muchas impresoras HP
- limita los intentos a 2 por host y 1 por servicio por defecto
- espera 2 segundos entre intentos con credenciales
- se detiene de inmediato si un dispositivo devuelve señales de bloqueo o de límite de tasa
La base de datos integrada es intencionadamente pequeña y está respaldada por fuentes. Los módulos
grandes de credenciales descargados se conservan como datos de referencia, pero la auditoría segura
no los utiliza a menos que `Settings.auth_allow_module_credentials` esté explícitamente
habilitado por un desarrollador.
### Modo seguro y ejecuciones de validación
El modo seguro se recomienda automáticamente en hosts de bajo consumo, hosts que parecen
dispositivos Pi-hole/pasarela y en la salida Wi-Fi. También se puede forzar con:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
En modo seguro, SunsetScan:
-iPara las pruebas de regresión asistidas por root en todos los modos, usa el recopilador de validación:```bash sudo bash scripts/sudo_network_validation.sh
Por defecto prueba `192.168.1.0/24` en PING, QUICK, SMB, STEALTH y
FULL, copia los informes HTML generados al directorio de validación
y escribe un archivo comprimido en `reports/`. Los informes, registros,
pcaps y archivos son ignorados por git y no deben enviarse al repositorio.
Overrides útiles:```bash
sudo SUNSETSCAN_TARGETS="192.168.1.0/24" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_PROFILES="PING QUICK FULL" bash scripts/sudo_network_validation.sh
sudo SUNSETSCAN_COMMAND_TIMEOUT=1200 bash scripts/sudo_network_validation.sh
SunsetScan nunca llama a APIs externas durante un escaneo. Todos los datos se leen de archivos de caché locales en data/cache/.
Los escaneos funcionan normalmente con caché obsoleta o ausente — solo que podrías tener datos CVE desactualizados.
---
## Detección de dispositivos no autorizados```bash
# Step 1: Save baseline when all known devices are present
sudo python3 sunsetscan.py --target 192.168.1.0/24 --save-baseline
# Step 2: Future scans automatically compare against baseline
sudo python3 sunsetscan.py --target 192.168.1.0/24
| Finding | Severity | Meaning |
|---|---|---|
| Dispositivo desconocido detectado | Medio | MAC no está en la línea base — dispositivo nuevo o no autorizado |
| IP del dispositivo cambiada | Bajo |
Nota: La línea base requiere root/sudo para la detección de direcciones MAC mediante nmap.
Cada --full-assessment produce un informe HTML autónomo con:
Los informes se abren en cualquier navegador sin necesidad de internet.
SunsetScan identifica automáticamente los dispositivos de red combinando evidencia de 14 fuentes diferentes. Cada fuente aporta un fabricante, modelo, versión o tipo de dispositivo con una puntuación de confianza. El algoritmo de fusión suma las fuentes que coinciden (con bonificaciones por acuerdo entre múltiples fuentes) y penaliza la evidencia conflictiva.
Para ver qué hay en tu red sin ejecutar comprobaciones de seguridad:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
Esto ejecuta un escaneo de puertos con captura de banners e imprime una tabla
de identificación de dispositivos. Sin análisis de seguridad, sin informe, solo
un inventario rápido.
### Fuentes de Evidencia
| Fuente | Qué lee | Confianza |
|--------|--------------|------------|
| MAC OUI | Prefijo de proveedor IEEE de la dirección MAC | 0.40-0.45 |
| nmap OS | Estimación de la huella del sistema operativo | varía |
| HTTP fingerprint | Tipo de dispositivo, modelo y firmware desde la interfaz web | 0.50+ |
| HTTP headers | Cabeceras de respuesta Server, X-Powered-By | 0.20-0.50 |
| TLS certificate | Campos CN, emisor y organización | 0.35 |
| SSH banner | Cadena de identificación del demonio SSH | 0.10-0.70 |
| UPnP | Fabricante SSDP, modelo, tipo de dispositivo | 0.75 |
| SNMP sysDescr | Descripción del sistema desde la MIB SNMP | 0.85 |
| Wappalyzer | Cadenas CPE y categorías de tecnología | 0.30-0.45 |
| mDNS/Zeroconf | Anuncios de tipo de servicio | 0.55 |
| JA3S | Base de datos de huellas del protocolo de enlace TLS | 0.50 |
| FTP banner | Identificación del software del servidor FTP | 0.25-0.35 |
| Port heuristics | Patrones de combinación de puertos abiertos | 0.10-0.70 |
| nmap services | Campos de producto y versión del servicio | 0.45 |
Los resultados de identificación aparecen en:
- Tabla de inventario de dispositivos en terminal (durante el escaneo y mediante `--identify`)
- Tarjetas de topología del informe HTML y sección de inventario de dispositivos
- Sección `device_identities` de la exportación JSON
- Opción [8] Inventario de dispositivos del menú del modo interactivo
---
## Niveles de Severidad
| Nivel | Color | Rango CVSS | Qué significa | Cuándo actuar |
|---|---|---|---|---|
| **CRÍTICO** | Rojo | >= 9.0 | Credenciales por defecto, CVE explotable, SSL 2.0 | Hoy |
| **ALTO** | Naranja | 7.0-8.9 | Telnet/FTP abiertos, certificado caducado, TLS 1.0, software EOL | Esta semana |
| **MEDIO** | Amarillo | 4.0-6.9 | Certificado autofirmado, exposición UPnP, dispositivo no autorizado, falta HSTS | Programar corrección |
| **BAJO** | Azul | < 4.0 | EOL próximo, falta X-Frame-Options, IP del dispositivo cambiada | Hacer seguimiento y planificar |
| **INFO** | Gris | - | Dispositivo identificado, detalles del certificado, comprobación DNS superada | Sin acción |
---
## Estructura del Proyecto```
sunsetscan/
├── sunsetscan.py # Entry point — CLI, scan pipeline, setup wizard
├── requirements.txt # Python dependencies
├── install.sh # Automated installer for Linux/macOS
├── install.bat # Automated installer for Windows (basic)
├── README.md # This file
│
├── config/
│ └── settings.py # All constants, timeouts, scan profiles, menu options
│
├── core/
│ ├── scanner.py # nmap wrapper (ScanResult, HostInfo, PortInfo)
│ ├── port_scanner.py # Masscan pipeline + PortScanOrchestrator
│ ├── banner_grabber.py # Concurrent raw socket banner grabbing
│ ├── http_fingerprinter.py # HTTP device/firmware fingerprinting
│ ├── nse_scanner.py # Nmap Scripting Engine integration
│ ├── auth_tester.py # Default credential testing (HTTP, device-specific)
│ ├── input_parser.py # Flexible target format parsing
│ ├── network_utils.py # Subnet detection, IP helpers, WSL detection
│ ├── findings.py # Finding dataclass, Severity enum, FindingRegistry
│ ├── risk_scorer.py # Per-device risk scoring (0-100)
│ ├── cache_manager.py # Unified CVE + EOL cache (data/cache/)
│ ├── cve_checker.py # CVE lookup + CVECacheBuilder (OSV.dev)
│ ├── ssl_checker.py # TLS certificate, cipher suite, JA3S fingerprinting
│ ├── ssh_checker.py # SSH version, algorithms, KEXINIT analysis
│ ├── smb_checker.py # SMBv1, EternalBlue, shares, NTLM disclosure
│ ├── ftp_checker.py # Anonymous FTP, STARTTLS
│ ├── snmp_checker.py # SNMP community strings, sysDescr (pysnmp v4+v7)
│ ├── web_checker.py # HTTP headers, admin panels, Wappalyzer
│ ├── dns_checker.py # DNS hijack and rebinding detection
│ ├── upnp_checker.py # SSDP discovery, UPnP risk assessment
│ ├── mdns_checker.py # mDNS/Zeroconf device discovery
│ ├── arp_checker.py # ARP spoofing detection
│ ├── device_identifier.py # 14-source device identification engine
│ ├── identity_fusion.py # Multi-source identity fusion and scoring
│ ├── oui_lookup.py # IEEE OUI MAC vendor resolution
│ ├── device_map.py # Persistent MAC→identity mapping
│ ├── passive_sniffer.py # Background mDNS/SSDP/DHCP packet capture
│ ├── packet_parsers.py # Protocol-specific packet parsing
│ ├── instant_scan.py # ARP sweep + passive capture quick scan
│ ├── hybrid_scanner.py # Passive+active scan orchestrator
│ ├── baseline.py # Rogue device baseline comparison
│ ├── hardware_eol.py # Downloaded hardware lifecycle database lookup
│ ├── scan_history.py # Scan snapshot persistence and diffing
│ ├── module_manager.py # Downloadable data module system
│ └── update_manager.py # Version check and self-update
│
├── eol/
│ ├── checker.py # EOL API queries and version comparison
│ ├── cache.py # Per-product JSON cache
│ └── product_map.py # 150+ software name -> lifecycle cache slug mappings
│
├── ui/
│ ├── menu.py # Old-style numbered menu (no-args mode)
│ ├── display.py # Rich terminal tables, progress bars, banners
│ ├── export.py # JSON and HTML report generation
│ ├── interactive_controller.py # Interactive mode (-i) with multi-level menus
│ └── templates/
│ └── report.html.j2 # Jinja2 HTML report template
│
└── data/
├── default_credentials.json # Factory-default credentials database
├── device_map.json # Persistent MAC→identity map
├── baseline.json # Saved device baseline (--save-baseline)
├── cache/
│ ├── cve_cache.json # CVE data keyed by product:version
│ ├── <product>.json # EOL data keyed by product slug
│ ├── hardware_eol/ # Downloaded hardware lifecycle database
│ └── cache_meta.json # Cache update timestamps
├── history/ # Gzip scan snapshots (auto-saved)
└── modules/ # Downloaded data modules
nmap no encontrado```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Permiso denegado / la detección del sistema operativo no funciona**
Los perfiles FULL, STEALTH y SMB requieren privilegios elevados. Sin root, estos perfiles pasan automáticamente a las opciones sin root (la detección del sistema operativo y el escaneo SYN quedan desactivados, pero el escaneo de puertos/versiones sigue funcionando).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 sugiere una red incorrecta (172.x.x.x)
En WSL2, SunsetScan detecta el adaptador virtual y recurre a 192.168.1.0/24. Si tu red doméstica usa una subred diferente, especifícala con --target:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Advertencias de caché al inicio del escaneo**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Los escaneos funcionan bien con datos obsoletos. Ejecuta --update-cache para actualizar.
Permiso denegado al descargar módulos
Si las descargas de módulos fallan con Permission denied: .../data/cache/..., la
caché probablemente fue creada con sudo. Corrige la propiedad una vez y luego ejecuta
la configuración y las descargas de módulos como tu usuario normal:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**Las comprobaciones SNMP no funcionan**
SunsetScan admite tanto pysnmp v4 (síncrono) como v7 (asíncrono). Si ves errores de importación, actualiza pysnmp:```bash
pip install --upgrade pysnmp
SunsetScan es una herramienta de auditoría de seguridad diseñada para usarse en redes y dispositivos que posees o para los que tienes permiso explícito por escrito para probar.
Ejecutar escaneos de red contra sistemas que no posees o para los que no tienes autorización de prueba puede ser ilegal, independientemente de la intención. Los autores no aceptan ninguna responsabilidad por el mal uso.
SunsetScan es completamente no destructivo y de solo lectura. No explota vulnerabilidades, entrega cargas útiles ni modifica ninguna configuración en ningún dispositivo escaneado. La prueba de credenciales --check-defaults es opcional, limitada, retardada, orientada al modelo exacto y se detiene ante señales de bloqueo/límite de velocidad; no es una función de fuerza bruta.
El repositorio SunsetScan y el código de la aplicación están licenciados bajo la Licencia MIT — Copyright 2024 Colaboradores de SunsetScan.
Solo los artefactos de la base de datos EOL de hardware de SunsetScan en data/hardware_eol/ están licenciados por separado: esta base de datos está licenciada bajo la Licencia Internacional Creative Commons Atribución-NoComercial 4.0 (CC BY-NC 4.0). Consulta data/hardware_eol/LICENSE.md.
| Plataforma | Nivel de soporte | Notas |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch, etc.) | Soporte completo | Mejor experiencia: todas las funciones funcionan de forma nativa |
| WSL2 (Subsistema de Windows para Linux) | Soporte completo | Forma recomendada de ejecutarlo en máquinas Windows |
| macOS | Parcial | El escaneo básico funciona; algunas funciones (ARP, captura pasiva) pueden requerir configuración adicional |
| Windows (CMD/PowerShell nativo) | No compatible | Faltan raw sockets, os.geteuid(), /proc, ip route y termios — usa WSL2 en su lugar |
| Flag | Effect |
|---|
| (no flags) | Default install: system packages + venv + Python deps + self-test |
--force | Delete and rebuild the venv from scratch (use after upgrading Python) |
--symlink | Also install /usr/local/bin/sunsetscan so you can run sunsetscan from anywhere |
--no-system | Skip the apt/dnf/etc step (use if your system tools are already installed) |
--help | Show all options |
| Comprobador | Qué encuentra |
|---|
| SSL/TLS | Certificados caducados/firmados por uno mismo, cifrados débiles, TLS 1.0/1.1, SSL 2.0/3.0, claves RSA pequeñas |
| SSH | Intercambio de claves débil, cifrados/MAC débiles, SSHv1, claves de host pequeñas, análisis de KEXINIT sin procesar |
| SMB | SMBv1, EternalBlue (MS17-010), recursos compartidos anónimos, firma SMB deshabilitada, divulgación de NTLM |
| FTP | Inicio de sesión anónimo, credenciales en texto claro, STARTTLS ausente |
| SNMP | Cadenas de comunidad predeterminadas (public/private), SNMPv1, extracción de sysDescr |
| Web | Cabeceras de seguridad faltantes, formularios de inicio de sesión sobre HTTP, listado de directorios, paneles de administración expuestos |
| DNS | Detección de secuestro de DNS (compara contra Cloudflare 1.1.1.1) |
| UPnP | Descubrimiento SSDP, exposición de asignación de puertos WAN en routers |
| mDNS | Descubrimiento de dispositivos Zeroconf/Bonjour, encuentra hosts que evaden los escaneos de puertos |
| ARP | Detección de suplantación ARP, seguimiento de cambios de dirección MAC (requiere root) |
| Credenciales predeterminadas | Auditoría opt-in de valores predeterminados de fábrica mediante coincidencias exactas de dispositivo/modelo, intentos limitados y demoras |
| Protocolos inseguros | Telnet, FTP, TFTP, rsh, rlogin, rexec marcados por severidad |
| Módulo | Fuente | Qué añade |
|---|
credentials-mini | danielmiessler/SecLists | Top 50 de credenciales predeterminadas (datos de referencia descargables; no utilizados por la auditoría segura a menos que se habiliten explícitamente en la configuración) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | 2860+ credenciales específicas de proveedores (datos de referencia descargables; no utilizados por la auditoría segura a menos que se habiliten explícitamente en la configuración) |
wappalyzer-mini | enthec/webappanalyzer | Top 500 de tecnologías web (predeterminado) |
wappalyzer-full | enthec/webappanalyzer | Todas las 7515 tecnologías web |
ja3-signatures | salesforce/ja3 | Base de datos de huellas TLS |
snmp-community | danielmiessler/SecLists | Cadenas de comunidad SNMP extendidas |
camera-credentials | many-passwords/many-passwords | Valores predeterminados de cámaras IP/DVR/NVR (datos de referencia descargables; no utilizados por la auditoría segura a menos que se habiliten explícitamente en la configuración) |
mac-oui | IEEE Standards Association | Base de datos de proveedores de prefijos MAC (predeterminado) |
hardware-eol-home | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico/SOHO (predeterminado; licencia de la base de datos: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico y de pequeña oficina |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, oficina y empresa/campus/datacenter |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, oficina e industrial/OT |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, oficina, empresa y proveedor de servicios |
hardware-eol-full | NoCoderRandom/sunsetscan | Perfil completo de ciclo de vida/EOL de hardware smart-pack |
hardware-eol | NoCoderRandom/sunsetscan | Módulo heredado de compatibilidad de ciclo de vida/EOL de hardware con división completa |
| sunsetscan --modules # Show module status | ||
| sunsetscan --download all # Download all modules, using the full hardware EOL smart profile | ||
| sunsetscan --download ja3-signatures # Download one data module | ||
| sunsetscan --download hardware-eol-home # Download a smaller hardware EOL profile | ||
| sunsetscan --download hardware-eol-full # Download every hardware EOL smart pack |
| Archivo | Contenido | Intervalo de actualización |
|---|
data/cache/cve_cache.json | Datos de CVE indexados por producto:versión | Cada 7 días |
data/cache/*.json | Fechas de EOL para más de 150 productos, almacenadas por producto | Cada 30 días |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json más records/*.json | Base de datos de ciclo de vida/EOL de hardware | Cada 30 días |
data/cache/hardware_eol/manifest.json, indexes/*.json, y records/<pack>/*.json | Perfiles de ciclo de vida/EOL de hardware de smart-pack | Cada 30 días |
data/cache/cache_meta.json | Marcas de tiempo de las últimas actualizaciones | Automático |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| MAC conocida en una IP diferente (normalmente DHCP normal) |
| Dispositivo visto anteriormente sin conexión | Info | El dispositivo de la línea base no responde |