
Audit di sicurezza della rete locale con EOL, CVE, identità dei dispositivi e report HTML.
Auditing di sicurezza di rete per esseri umani — basato su nmap, pensato per tutti.
Sito web: sunsetscan.com
SunsetScan è uno strumento di auditing della sicurezza per reti locali, pensato per proprietari di reti domestiche e personale IT che vogliono la profondità di nmap senza doverne imparare la sintassi. Punta il tool verso la tua rete e lui troverà ogni dispositivo attivo, identificherà il software in esecuzione, lo confronterà con database di vulnerabilità note e registri di fine supporto, sonderà le interfacce web per individuare debolezze comuni, eseguirà opzionalmente un audit delle credenziali predefinite di fabbrica che non blocca l'account, e produrrà un report HTML pulito con spiegazioni in linguaggio semplice e passaggi numerati per risolvere ogni risultato. È interamente in sola lettura e non distruttivo — nulla sulla tua rete viene mai modificato.
Perché Linux? SunsetScan si basa su raw socket (scansione ARP, cattura passiva dei pacchetti), API specifiche di Linux (
/proc,ip route) e controlli dei privilegi (os.geteuid()) che non sono disponibili su Windows nativo. WSL2 fornisce un kernel Linux completo ed è il percorso consigliato per gli utenti Windows.
SunsetScan include un programma di installazione che si occupa degli strumenti di sistema (nmap, masscan, git, python3-venv), crea un ambiente virtuale Python locale al progetto e installa al suo interno tutte le dipendenze Python. Non ti verrà mai chiesto di eseguire pip install come root — questo è importante sulle moderne Debian/Pi OS, vedi Perché una venv? più sotto.
Debian, Ubuntu, Raspberry Pi OS (Bookworm e successive), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Consigliato per Debian, Ubuntu, Raspberry Pi OS, Linux Mint e 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 in una riga
Clona il repository in `~/sunsetscan` ed esegue l'installer:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
Vuoi installarlo altrove? Imposta INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Nota su `curl | bash`**: è comodo, ma significa eseguire uno script che non hai letto. Se preferisci ispezionarlo prima, usa l'opzione 3 o 4.
#### 3. Clona e installa```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
(Sostituisci il gestore pacchetti della tua distribuzione a `apt` — `dnf`, `pacman`, `zypper` o `brew`. Il pacchetto avahi è `avahi-tools` su Fedora/RHEL, `avahi` su Arch, `avahi-utils` su openSUSE e non è necessario su macOS.)
### Dopo l'installazione — prima esecuzione```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
Il launcher ./sunsetscan attiva automaticamente il venv — non devi mai fare source venv/bin/activate. Usa sudo per le scansioni che richiedono socket raw, ma esegui --setup, --download e --update-cache come utente normale, così i file di cache restano scrivibili dalla TUI.
Rieseguire ./install.sh è sicuro e idempotente — rileva i componenti esistenti e li riutilizza.
Le distribuzioni moderne basate su Debian (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) includono l'applicazione di PEP 668. Questo fa sì che pip install fallisca quando viene eseguito come root contro il Python di sistema:```
error: externally-managed-environment
× This environment is externally managed
Due delle dipendenze di SunsetScan (in particolare `pysnmp` v6) richiedono versioni più recenti di quelle fornite dai repository apt, quindi un'installazione puramente via apt non è possibile. La soluzione dell'installer è quella standard: installare gli strumenti di sistema (nmap, masscan, libpcap, avahi-utils) tramite apt e inserire le dipendenze Python di SunsetScan in una directory `./venv` locale al progetto. Non viene toccato nulla a livello di sistema, quindi PEP 668 non si applica, e la disinstallazione di SunsetScan è semplicemente `rm -rf ~/sunsetscan`.
### Opzionale: tieni SunsetScan in esecuzione in background
Una valutazione completa di una sottorete /24 su un Raspberry Pi può richiedere 10–30 minuti. Usa `tmux` o `screen` affinché la scansione sopravviva a una disconnessione 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
### Disinstallazione```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
Windows non è direttamente supportato (SunsetScan necessita di raw sockets, /proc, e os.geteuid), ma WSL2 funziona bene:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Riavvia, apri **Ubuntu** dal menu Start, quindi segui l'installazione standard sopra indicata. WSL2 utilizza un adattatore di rete virtuale — passa la tua subnet reale con `--target` se l'auto-rilevamento sceglie quella sbagliata.
---
## Requisiti
| Requisito | Minimo | Note |
|---|---|---|
| **Python** | 3.9+ | 3.12 consigliato |
| **nmap** | Qualsiasi recente | Deve essere nel PATH di sistema |
| **SO** | Linux (nativo o WSL2) | Vedi [Supporto piattaforma](#platform-support) |
| **masscan** | Qualsiasi | Opzionale — rilevamento porte più veloce |
| **avahi-utils** | Qualsiasi | Opzionale — fornisce `avahi-browse`, usato per il rilevamento mDNS affidabile di dispositivi Apple / Bonjour / Sleep-Proxy. Se assente, ripiega su `zeroconf` di python. |
| **git** | Qualsiasi | Opzionale — usato per `--setup` e `--update` |
| **Privilegi** | Utente standard | Root/sudo necessario per i profili FULL, STEALTH, SMB, rilevamento ARP e cattura passiva |
---
## Avvio rapido```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 esegue 12 moduli di controllo di sicurezza durante una valutazione completa:
hardware-eol-home, mentre i profili office, enterprise, industrial,
service-provider e full sono disponibili per scansioni più ampie.--setup, --update-cache e --download. Le scansioni funzionano senza alcuna connessione Internet purché le cache siano popolate.--identify salta i controlli di sicurezzaSunsetScan include moduli di dati scaricabili e profili EOL hardware che estendono le capacità di rilevamento:
Il database del ciclo di vita dell'hardware è ora suddiviso in profili intelligenti scaricabili:
hardware-eol-home è l'installazione predefinita, mentre hardware-eol-full fornisce
una copertura completa. La build canonica completa contiene attualmente 64.245 record
su 122 vendor, ma gli utenti domestici necessitano solo del profilo home più piccolo.
### Rilevamento dispositivi rogue
- Salva uno snapshot della tua rete come baseline affidabile
- Le scansioni future contrassegnano automaticamente gli indirizzi MAC sconosciuti non presenti nella baseline
- Rileva dispositivi noti su indirizzi IP inattesi
### Punteggio di rischio
Ogni dispositivo riceve un punteggio di rischio (0-100) basato sulla gravità e sul numero dei riscontri:
| Punteggio | Fascia |
|---|---|
| 0-10 | Rischio minimo |
| 11-30 | Rischio basso |
| 31-60 | Rischio medio |
| 61-80 | Rischio alto |
| 81-100 | Rischio critico |
### Reportistica
- **Report HTML professionale** — dashboard della gravità, sezioni per host, schede dei riscontri con spiegazioni in linguaggio semplice, raccomandazioni prioritarie
- **Esportazione JSON** — output strutturato leggibile da macchina
- I report sono completamente autonomi — un singolo file HTML, nessuna dipendenza esterna
- Profili ristretti come SMB mantengono comunque visibili nel report gli host scoperti anche quando nessuna porta di servizio corrispondente è aperta
- Le verifiche a livello di rete come DNS, UPnP e le note di runtime della scansione sono separate dai riscontri per dispositivo; i punteggi di rischio dei dispositivi sono mostrati solo per gli host reali
- Tutti i riscontri sono codificati a colori: Critico, Alto, Medio, Basso, Info
### Cronologia delle scansioni e diffing
- Ogni scansione viene salvata automaticamente come snapshot JSON compresso con gzip
- Visualizza le scansioni passate con `--history`
- Confronta due scansioni qualsiasi con `--diff` per vedere nuovi host, porte chiuse, riscontri nuovi/risolti
- Confronta con una scansione di N giorni fa con `--diff --since N`
- La cronologia viene conservata per 90 giorni per impostazione predefinita
### Interfaccia utente
- **Modalità interattiva** guidata (`-i`) — menu multilivello per scansione, analisi, esportazione, moduli
- **Menu in stile classico** — si avvia quando viene eseguito senza argomenti
- Modalità CLI diretta — scriptabile e adatta all'automazione
- Output di terminale ricco a colori con barre di avanzamento, spinner e pannelli di riepilogo
---
## Tutti i flag della CLI
| Flag | Descrizione | Root |
|---|---|---|
| `--target TARGET` | IP, intervallo CIDR, hostname o intervallo da scansionare | No |
| `--profile PROFILE` | Profilo di scansione: QUICK, FULL, STEALTH, PING, IOT, SMB (predefinito: QUICK) | Varia |
| `-i`, `--interactive` | Avvia la modalità interattiva guidata | No |
| `--full-assessment` | Valutazione completa + esportazione HTML automatica; l'audit delle credenziali rimane opzionale | No |
| `--identify` | Esegui solo l'identificazione dei dispositivi (salta i controlli di sicurezza) | No |
| `--nse` | Abilita Nmap Scripting Engine per un rilevamento potenziato | No |
| `--check-defaults` | Adesione all'audit delle credenziali predefinite di fabbrica sicuro contro i lockout (solo dispositivi di proprietà) | No |
| `--save-baseline` | Salva la scansione come baseline affidabile dei dispositivi per il rilevamento rogue | No |
| `--setup` | Procedura guidata di configurazione iniziale (dipendenze + download della cache) | No |
| `--update-cache` | Aggiorna manualmente le cache dei dati CVE e EOL | No |
| `--cache-status` | Mostra l'età della cache e il numero di voci, quindi esci | No |
| `--modules` | Mostra lo stato di tutti i moduli dati scaricabili | No |
| `--download MODULE` | Scarica un modulo dati (o "all") | No |
| `--db SIZE` | Dimensione del database EOL per `--setup`: mini, normal, large (predefinito: normal) | No |
| `--history` | Mostra la tabella della cronologia delle scansioni ed esci | No |
| `--diff` | Confronta le ultime due scansioni salvate ed esci | No |
| `--since DAYS` | Con `--diff`: confronta con una scansione di almeno N giorni fa | No |
| `--check-version` | Verifica la presenza di una release più recente di SunsetScan su GitHub | No |
| `--update` | Recupera l'ultimo codice da GitHub e reinstalla i requisiti | No |
| `--verbose` | Abilita la registrazione di debug | No |
| `--no-color` | Disabilita l'output a colori (utile per i file di log) | No |
| `--quiet` | Disattiva le barre di avanzamento (i riscontri vengono comunque mostrati) | No |
| `--safe-mode` | Forza una scansione più delicata: nmap limitato, uso ridotto di masscan, meno worker, salta le sonde pesanti | No |
| `--no-safe-mode` | Disabilita la modalità sicura automatica | No |
| `--version` | Mostra il numero di versione ed esci | No |
---
## Profili di scansione
| Profilo | flag nmap | Velocità | Root | Ideale per |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | No | Trovare rapidamente i dispositivi attivi |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | No | Primo sguardo a una rete (con rilevamento leggero della versione) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | Sì | Analisi approfondita di host specifici |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | Sì | Scansione a basso rumore |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | No | Telecamere, router, dispositivi smart |
| **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ì | Condivisioni Windows, controllo EternalBlue |
> **Suggerimento:** FULL e STEALTH ricadono automaticamente su flag non-root quando vengono eseguiti senza sudo. Il rilevamento del sistema operativo non sarà disponibile, ma la scansione delle porte e il rilevamento dei servizi funzionano comunque.
### Sicurezza dell'audit delle password predefinite
Il test delle password predefinite non viene mai abilitato automaticamente. Nella modalità CLI, aggiungi `--check-defaults`; nella modalità guidata `-i`, scegli l'audit delle password predefinite quando richiesto. SunsetScan applica quindi una policy conservativa:
- nessun credential spraying generico di username/password per impostazione predefinita
- testa solo le credenziali che corrispondono al vendor e al modello/famiglia rilevati
- salta i dispositivi con default di etichetta/PIN unici, come molte stampanti HP
- limita i tentativi a 2 per host e 1 per servizio per impostazione predefinita
- attende 2 secondi tra i tentativi che usano credenziali
- si ferma immediatamente se un dispositivo restituisce segnali di lockout o di rate limiting
Il database integrato è volutamente piccolo e basato su fonti. I grandi moduli di credenziali scaricati vengono conservati come dati di riferimento, ma l'audit sicuro non li utilizza a meno che `Settings.auth_allow_module_credentials` non sia esplicitamente abilitato da uno sviluppatore.
### Modalità sicura e run di validazione
La modalità sicura viene automaticamente consigliata su host a basso consumo, host che sembrano appliance Pi-hole/gateway e su egress Wi-Fi. Può anche essere forzata con:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
In modalità sicura SunsetScan:
-iPer il test di regressione assistito da root su tutte le modalità, usa il collector di validazione:```bash sudo bash scripts/sudo_network_validation.sh
Di default testa `192.168.1.0/24` su PING, QUICK, SMB, STEALTH e
FULL, copia i report HTML generati nella directory di
validazione e scrive un archivio compresso in `reports/`. Report, log,
pcap e archivi sono ignorati da git e non dovrebbero essere committati.
Override utili:```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 non chiama mai API esterne durante una scansione. Tutti i dati vengono letti dai file di cache locali in data/cache/.
Le scansioni funzionano normalmente anche con cache obsoleta o mancante — potresti semplicemente avere dati CVE obsoleti.
---
## Rilevamento dispositivi rogue```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
| Rilevamento | Gravità | Significato |
|---|---|---|
| Dispositivo sconosciuto rilevato | Medium | MAC non presente nella baseline — dispositivo nuovo o non autorizzato |
| IP del dispositivo cambiato | Low |
Nota: La baseline richiede root/sudo per il rilevamento dell'indirizzo MAC tramite nmap.
Ogni --full-assessment produce un report HTML autonomo con:
I report si aprono in qualsiasi browser senza bisogno di internet.
SunsetScan identifica automaticamente i dispositivi di rete combinando le prove provenienti da 14 diverse fonti. Ogni fonte contribuisce con un vendor, un modello, una versione o un tipo di dispositivo con un punteggio di confidenza. L'algoritmo di fusione somma le fonti concordanti (con bonus per l'accordo multi-fonte) e penalizza le prove contrastanti.
Per vedere cosa c'è sulla tua rete senza eseguire controlli di sicurezza:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
Esegue una scansione delle porte con banner grabbing e stampa una tabella di identificazione dei dispositivi. Nessuna analisi di sicurezza, nessun report — solo un inventario rapido.
### Evidence Sources
| Source | What it reads | Confidence |
|--------|--------------|------------|
| MAC OUI | IEEE vendor prefix from MAC address | 0.40-0.45 |
| nmap OS | OS fingerprint guess | varies |
| HTTP fingerprint | Device type, model, firmware from web UI | 0.50+ |
| HTTP headers | Server, X-Powered-By response headers | 0.20-0.50 |
| TLS certificate | CN, issuer, organization fields | 0.35 |
| SSH banner | SSH daemon identification string | 0.10-0.70 |
| UPnP | SSDP manufacturer, model, device type | 0.75 |
| SNMP sysDescr | System description from SNMP MIB | 0.85 |
| Wappalyzer | CPE strings and technology categories | 0.30-0.45 |
| mDNS/Zeroconf | Service type advertisements | 0.55 |
| JA3S | TLS handshake fingerprint database | 0.50 |
| FTP banner | FTP server software identification | 0.25-0.35 |
| Port heuristics | Open port combination patterns | 0.10-0.70 |
| nmap services | Service product and version fields | 0.45 |
I risultati dell'identificazione compaiono in:
- Tabella dell'inventario dei dispositivi nel terminale (durante la scansione e tramite `--identify`)
- Schede della topologia del report HTML e sezione inventario dispositivi
- Sezione `device_identities` dell'export JSON
- Opzione [8] Device Inventory nel menu della modalità interattiva
---
## Livelli di gravità
| Level | Colore | Intervallo CVSS | Cosa significa | Quando agire |
|---|---|---|---|---|
| **CRITICAL** | Rosso | >= 9.0 | Credenziali predefinite, CVE sfruttabile, SSL 2.0 | Oggi |
| **HIGH** | Arancione | 7.0-8.9 | Telnet/FTP aperti, certificato scaduto, TLS 1.0, software EOL | Questa settimana |
| **MEDIUM** | Giallo | 4.0-6.9 | Certificato autofirmato, esposizione UPnP, dispositivo rogue, HSTS mancante | Pianificare la correzione |
| **LOW** | Blu | < 4.0 | Avvicinamento a EOL, X-Frame-Options mancante, IP del dispositivo cambiato | Monitorare e pianificare |
| **INFO** | Grigio | - | Dispositivo identificato, dettagli del certificato, controllo DNS superato | Nessuna azione |
---
## Struttura del progetto```
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 non trovato```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Permesso negato / rilevamento del sistema operativo non funzionante**
I profili FULL, STEALTH e SMB richiedono privilegi elevati. Senza root, questi profili ripiegano automaticamente su flag non-root (rilevamento del sistema operativo e scansione SYN disabilitati, ma la scansione di porte/versioni funziona ancora).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 suggerisce una rete errata (172.x.x.x)
Su WSL2, SunsetScan rileva l'adattatore virtuale e ripiega su 192.168.1.0/24. Se la tua rete domestica usa una sottorete diversa, specificala con --target:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Avvisi di cache all'avvio della scansione**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Scans work fine with stale data. Run --update-cache to refresh.
Permesso negato durante il download dei moduli
Se il download dei moduli fallisce con Permission denied: .../data/cache/..., la
cache è stata probabilmente creata con sudo. Correggi la proprietà una volta, poi esegui il setup
e i download dei moduli come utente normale:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**I controlli SNMP non funzionano**
SunsetScan supporta sia pysnmp v4 (sincrono) che v7 (asincrono). Se vedi errori di importazione, aggiorna pysnmp:```bash
pip install --upgrade pysnmp
SunsetScan è uno strumento di audit di sicurezza pensato per l'uso su reti e dispositivi di tua proprietà o per i quali disponi di esplicita autorizzazione scritta al test.
Eseguire scansioni di rete contro sistemi che non possiedi o per i quali non sei autorizzato a testare può essere illegale a prescindere dalle intenzioni. Gli autori non si assumono alcuna responsabilità per un uso improprio.
SunsetScan è completamente non distruttivo e di sola lettura. Non sfrutta vulnerabilità, non consegna payload e non modifica alcuna configurazione sui dispositivi scansionati. Il test delle credenziali con --check-defaults è opt-in, limitato, ritardato, orientato al modello esatto e si ferma in presenza di segnali di blocco/rate-limit; non è una funzionalità di forza bruta.
Il repository SunsetScan e il codice dell'applicazione sono concessi in licenza sotto la MIT License — Copyright 2024 SunsetScan Contributors.
Solo gli artefatti del database EOL hardware di SunsetScan presenti in data/hardware_eol/ sono concessi in licenza separatamente: questo database è concesso in licenza sotto la Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0). Vedi data/hardware_eol/LICENSE.md.
| Piattaforma | Livello di supporto | Note |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch, ecc.) | Supporto completo | Esperienza migliore — tutte le funzionalità funzionano nativamente |
| WSL2 (Windows Subsystem for Linux) | Supporto completo | Modalità consigliata per eseguirlo su macchine Windows |
| macOS | Parziale | La scansione di base funziona; alcune funzionalità (ARP, cattura passiva) potrebbero richiedere configurazione aggiuntiva |
| Windows (CMD/PowerShell nativo) | Non supportato | Mancano i raw socket, os.geteuid(), /proc, ip route e termios — usa WSL2 |
| Flag | Effetto |
|---|
| (nessun flag) | Installazione predefinita: pacchetti di sistema + venv + dipendenze Python + self-test |
--force | Elimina e ricostruisce il venv da zero (da usare dopo l'aggiornamento di Python) |
--symlink | Installa anche /usr/local/bin/sunsetscan così puoi eseguire sunsetscan da qualsiasi posizione |
--no-system | Salta il passaggio apt/dnf/ecc. (da usare se i tuoi strumenti di sistema sono già installati) |
--help | Mostra tutte le opzioni |
| Checker | Cosa rileva |
|---|
| SSL/TLS | Certificati scaduti/auto-firmati, cifrari deboli, TLS 1.0/1.1, SSL 2.0/3.0, chiavi RSA piccole |
| SSH | Scambio di chiavi debole, cifrari/MAC deboli, SSHv1, chiavi host piccole, analisi grezza KEXINIT |
| SMB | SMBv1, EternalBlue (MS17-010), condivisioni anonime, firma SMB disabilitata, divulgazione NTLM |
| FTP | Login anonimo, credenziali in chiaro, STARTTLS mancante |
| SNMP | Stringhe community predefinite (public/private), SNMPv1, estrazione sysDescr |
| Web | Header di sicurezza mancanti, moduli di login su HTTP, elenco directory, pannelli di amministrazione esposti |
| DNS | Rilevamento di dirottamento DNS (confronto con Cloudflare 1.1.1.1) |
| UPnP | Scoperta SSDP, esposizione del port-mapping WAN sui router |
| mDNS | Scoperta dispositivi Zeroconf/Bonjour, trova host che sfuggono alle scansioni delle porte |
| ARP | Rilevamento di spoofing ARP, tracciamento dei cambi di indirizzo MAC (richiede root) |
| Credenziali predefinite | Audit opzionale delle impostazioni di fabbrica predefinite utilizzando corrispondenze esatte dispositivo/modello, tentativi limitati e ritardi |
| Protocolli non sicuri | Telnet, FTP, TFTP, rsh, rlogin, rexec segnalati per gravità |
| Modulo | Sorgente | Cosa aggiunge |
|---|
credentials-mini | danielmiessler/SecLists | Top 50 credenziali predefinite (dati di riferimento scaricabili; non utilizzati dall'audit sicuro se non esplicitamente abilitati nelle impostazioni) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | Oltre 2860 credenziali specifiche per vendor (dati di riferimento scaricabili; non utilizzati dall'audit sicuro se non esplicitamente abilitati nelle impostazioni) |
wappalyzer-mini | enthec/webappanalyzer | Top 500 tecnologie web (predefinito) |
wappalyzer-full | enthec/webappanalyzer | Tutte le 7515 tecnologie web |
ja3-signatures | salesforce/ja3 | Database di impronte digitali TLS |
snmp-community | danielmiessler/SecLists | Stringhe community SNMP estese |
camera-credentials | many-passwords/many-passwords | Predefiniti di telecamere IP/DVR/NVR (dati di riferimento scaricabili; non utilizzati dall'audit sicuro se non esplicitamente abilitati nelle impostazioni) |
mac-oui | IEEE Standards Association | Database vendor dei prefissi MAC (predefinito) |
hardware-eol-home | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware Home/SOHO (predefinito; licenza database: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware Home più piccolo ufficio |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware Home, office ed enterprise/campus/datacenter |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware Home, office e industriale/OT |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware Home, office, enterprise e service-provider |
hardware-eol-full | NoCoderRandom/sunsetscan | Profilo ciclo di vita/EOL hardware smart-pack completo |
hardware-eol | NoCoderRandom/sunsetscan | Modulo di compatibilità legacy per il ciclo di vita/EOL hardware completo suddiviso |
| 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 |
| File | Contenuti | Intervallo di aggiornamento |
|---|
data/cache/cve_cache.json | Dati CVE indicizzati per prodotto:versione | Ogni 7 giorni |
data/cache/*.json | Date EOL per 150+ prodotti, memorizzate per prodotto | Ogni 30 giorni |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json più records/*.json | Database del ciclo di vita/EOL dell'hardware | Ogni 30 giorni |
data/cache/hardware_eol/manifest.json, indexes/*.json, e records/<pack>/*.json | Profili del ciclo di vita/EOL dell'hardware Smart-pack | Ogni 30 giorni |
data/cache/cache_meta.json | Timestamp degli ultimi aggiornamenti | Automatico |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| MAC noto su un IP diverso (di solito normale DHCP) |
| Dispositivo visto in precedenza offline | Info | Dispositivo della baseline che non risponde |