
Auditoria de segurança de rede local com EOL, CVE, identidade de dispositivos e relatórios HTML.
Auditoria de segurança de rede para humanos — com a potência do nmap, feito para todos.
Site: sunsetscan.com
O SunsetScan é uma ferramenta de auditoria de segurança de rede local para donos de redes domésticas e equipes de TI que desejam a profundidade do nmap sem aprender a sintaxe do nmap. Aponte-a para a sua rede e ela encontra todos os dispositivos ativos, identifica o software em execução, verifica bancos de dados de vulnerabilidades conhecidas e registros de fim de vida, testa interfaces web em busca de vulnerabilidades comuns, opcionalmente realiza uma auditoria de credenciais padrão de fábrica segura contra bloqueio e produz um relatório HTML limpo com explicações em linguagem simples e etapas numeradas para corrigir cada achado. Ela é totalmente somente leitura e não destrutiva — nada na sua rede é jamais modificado.
Por que Linux? O SunsetScan depende de sockets brutos (varredura ARP, captura passiva de pacotes), APIs específicas do Linux (
/proc,ip route) e verificações de privilégio (os.geteuid()) que não estão disponíveis no Windows nativo. O WSL2 fornece um kernel Linux completo e é o caminho recomendado para usuários de Windows.
O SunsetScan acompanha um instalador que cuida das ferramentas do sistema (nmap, masscan, git, python3-venv), cria um ambiente virtual Python local ao projeto e instala todas as dependências Python dentro dele. Você nunca será solicitado a fazer pip install de nada como root — isso é importante em Debian/Pi OS modernos, veja Por que um venv? abaixo.
Debian, Ubuntu, Raspberry Pi OS (Bookworm e mais recentes), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Recomendado para 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 de uma linha
Clona o repositório em `~/sunsetscan` e executa o instalador:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
Quer em outro lugar? Defina INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Uma nota sobre `curl | bash`**: é conveniente, mas significa executar um script que você não leu. Se preferir inspecionar antes, use a opção 3 ou 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
(Substitua o gerenciador de pacotes da sua distribuição por `apt` — `dnf`, `pacman`, `zypper` ou `brew`. O pacote avahi é `avahi-tools` no Fedora/RHEL, `avahi` no Arch, `avahi-utils` no openSUSE e não é necessário no macOS.)
### Após a instalação — primeira execução```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
O launcher ./sunsetscan ativa automaticamente o venv — você nunca precisa de source venv/bin/activate. Use sudo para scans que precisam de raw sockets, mas execute --setup, --download e --update-cache como seu usuário normal para que os arquivos de cache permaneçam graváveis a partir da TUI.
Reexecutar ./install.sh é seguro e idempotente — ele detecta componentes existentes e os reutiliza.
Distribuições modernas baseadas em Debian (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) incluem a aplicação do PEP 668. Isso faz com que pip install falhe quando executado como root contra o Python do sistema:```
error: externally-managed-environment
× This environment is externally managed
Duas das dependências do SunsetScan (`pysnmp` v6 em particular) precisam de versões mais recentes do que as fornecidas pelos repositórios apt, portanto uma instalação apenas via apt não é possível. A solução do instalador é a padrão: instalar ferramentas do sistema (nmap, masscan, libpcap, avahi-utils) via apt e colocar as dependências Python do SunsetScan em um diretório `./venv` local ao projeto. Nada no nível do sistema é alterado, então o PEP 668 não se aplica, e desinstalar o SunsetScan é apenas `rm -rf ~/sunsetscan`.
### Opcional: manter o SunsetScan em execução em segundo plano
Uma avaliação completa de uma sub-rede /24 em um Raspberry Pi pode levar de 10 a 30 minutos. Use `tmux` ou `screen` para que a varredura sobreviva a uma desconexão 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
### Desinstalação```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
O Windows não é suportado diretamente (o SunsetScan precisa de raw sockets, /proc e os.geteuid), mas o WSL2 funciona bem:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Reinicie, abra o **Ubuntu** no menu Iniciar e siga a instalação padrão acima. O WSL2 usa um adaptador de rede virtual — informe sua sub-rede real com `--target` se a detecção automática escolher a errada.
---
## Requisitos
| Requisito | Mínimo | Observações |
|---|---|---|
| **Python** | 3.9+ | 3.12 recomendado |
| **nmap** | Qualquer versão recente | Deve estar no PATH do sistema |
| **SO** | Linux (nativo ou WSL2) | Veja [Suporte à Plataforma](#platform-support) |
| **masscan** | Qualquer | Opcional — descoberta de portas mais rápida |
| **avahi-utils** | Qualquer | Opcional — fornece `avahi-browse`, usado para descoberta mDNS confiável de dispositivos Apple / Bonjour / Sleep-Proxy. Recorre ao `zeroconf` do Python se ausente. |
| **git** | Qualquer | Opcional — usado para `--setup` e `--update` |
| **Privilégios** | Usuário padrão | Root/sudo necessário para perfis FULL, STEALTH, SMB, detecção ARP e captura passiva |
---
## Início 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
O SunsetScan executa 12 módulos de verificação de segurança durante uma avaliação completa:
hardware-eol-home, enquanto os perfis de escritório, empresarial, industrial,
provedor de serviços e completo estão disponíveis para varreduras mais amplas.--setup, --update-cache e --download. As varreduras funcionam sem qualquer conexão com a internet, desde que os caches estejam preenchidos.--identify pula as verificações de segurançaO SunsetScan inclui módulos de dados para download e perfis de EOL de hardware que ampliam as capacidades de detecção:
O banco de dados de ciclo de vida de hardware agora está dividido em perfis inteligentes para download:
hardware-eol-home é a instalação padrão, enquanto hardware-eol-full fornece
cobertura completa. A build canônica completa atualmente contém 64.245 registros
em 122 fornecedores, mas usuários domésticos só precisam do perfil doméstico menor.
### Detecção de Dispositivos Rogue
- Salve um snapshot da sua rede como uma linha de base confiável
- Futuros escaneamentos sinalizam automaticamente endereços MAC desconhecidos que não estão na linha de base
- Detecta dispositivos conhecidos em endereços IP inesperados
### Pontuação de Risco
Cada dispositivo recebe uma pontuação de risco (0-100) com base na gravidade e na quantidade de achados:
| Pontuação | Faixa |
|---|---|
| 0-10 | Risco Mínimo |
| 11-30 | Risco Baixo |
| 31-60 | Risco Médio |
| 61-80 | Risco Alto |
| 81-100 | Risco Crítico |
### Relatórios
- **Relatório HTML profissional** — painel de gravidade, seções por host, cartões de achados com explicações em linguagem simples, recomendações priorizadas
- **Exportação JSON** — saída estruturada legível por máquina
- Os relatórios são totalmente autossuficientes — um único arquivo HTML, sem dependências externas
- Perfis restritos, como o SMB, ainda mantêm os hosts descobertos visíveis no relatório,
mesmo quando não há portas de serviço correspondentes abertas
- Verificações em nível de rede, como DNS, UPnP e notas de tempo de execução do escaneamento são separadas
dos achados por dispositivo; as pontuações de risco dos dispositivos são exibidas apenas para hosts reais
- Todos os achados são codificados por cor: Crítico, Alto, Médio, Baixo, Info
### Histórico de Escaneamentos e Diffing
- Cada escaneamento é salvo automaticamente como um snapshot JSON compactado com gzip
- Veja escaneamentos anteriores com `--history`
- Compare quaisquer dois escaneamentos com `--diff` para ver novos hosts, portas fechadas, achados novos/resolvidos
- Compare com um escaneamento de N dias atrás com `--diff --since N`
- O histórico é mantido por 90 dias por padrão
### Interface do Usuário
- **Modo interativo** guiado (`-i`) — menus multinível para escaneamento, análise, exportação, módulos
- **Menu estilo antigo** — é iniciado quando executado sem argumentos
- Modo CLI direto — scriptável e amigável para automação
- Saída de terminal rica em cores com barras de progresso, spinners e painéis de resumo
---
## Todas as Flags de CLI
| Flag | Descrição | Root |
|---|---|---|
| `--target TARGET` | IP, faixa CIDR, hostname ou intervalo para escanear | Não |
| `--profile PROFILE` | Perfil de escaneamento: QUICK, FULL, STEALTH, PING, IOT, SMB (padrão: QUICK) | Varia |
| `-i`, `--interactive` | Iniciar o modo interativo guiado | Não |
| `--full-assessment` | Avaliação completa + exportação automática em HTML; a auditoria de credenciais permanece opcional | Não |
| `--identify` | Executar apenas a identificação de dispositivos (pular verificações de segurança) | Não |
| `--nse` | Habilitar o Nmap Scripting Engine para detecção aprimorada | Não |
| `--check-defaults` | Aceitar a auditoria de credenciais padrão de fábrica segura contra bloqueios (somente dispositivos próprios) | Não |
| `--save-baseline` | Salvar o escaneamento como linha de base confiável de dispositivos para detecção de rogue | Não |
| `--setup` | Assistente de configuração inicial (dependências + download de cache) | Não |
| `--update-cache` | Atualizar manualmente os caches de dados de CVE e EOL | Não |
| `--cache-status` | Mostrar a idade do cache e as contagens de entradas e sair | Não |
| `--modules` | Mostrar o status de todos os módulos de dados baixáveis | Não |
| `--download MODULE` | Baixar um módulo de dados (ou "all") | Não |
| `--db SIZE` | Tamanho do banco de dados EOL para `--setup`: mini, normal, large (padrão: normal) | Não |
| `--history` | Mostrar a tabela de histórico de escaneamentos e sair | Não |
| `--diff` | Fazer diff dos dois últimos escaneamentos salvos e sair | Não |
| `--since DAYS` | Com `--diff`: comparar com um escaneamento de pelo menos N dias | Não |
| `--check-version` | Verificar se há uma versão mais recente do SunsetScan no GitHub | Não |
| `--update` | Baixar o código mais recente do GitHub e reinstalar as dependências | Não |
| `--verbose` | Habilitar registro de depuração | Não |
| `--no-color` | Desabilitar a saída colorida (útil para arquivos de log) | Não |
| `--quiet` | Suprimir barras de progresso (os achados ainda são exibidos) | Não |
| `--safe-mode` | Forçar um escaneamento mais suave: nmap limitado, uso menor de masscan, menos workers, pular sondas pesadas | Não |
| `--no-safe-mode` | Desabilitar o modo seguro automático | Não |
| `--version` | Mostrar o número da versão e sair | Não |
---
## Perfis de Escaneamento
| Perfil | flags do nmap | Velocidade | Root | Melhor para |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | Não | Encontrar dispositivos ativos rapidamente |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | Não | Primeira olhada em uma rede (com detecção leve de versão) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | Sim | Análise aprofundada de hosts específicos |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | Sim | Escaneamento de baixo ruído |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | Não | Câmeras, roteadores, 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 | Sim | Compartilhamentos Windows, verificação de EternalBlue |
> **Dica:** FULL e STEALTH voltam automaticamente para flags não root quando executados sem sudo. A detecção de SO ficará indisponível, mas o escaneamento de portas e a detecção de serviços ainda funcionam.
### Segurança da Auditoria de Senhas Padrão
O teste de senhas padrão nunca é habilitado automaticamente. No modo CLI, adicione
`--check-defaults`; no modo guiado `-i`, escolha a auditoria de senhas padrão quando
solicitado. O SunsetScan então aplica uma política conservadora:
- sem spraying genérico de usuário/senha por padrão
- apenas testa credenciais que correspondem ao fornecedor e modelo/família detectados
- ignora dispositivos com padrões exclusivos de etiqueta/PIN, como muitas impressoras HP
- limita as tentativas a 2 por host e 1 por serviço por padrão
- aguarda 2 segundos entre tentativas com credenciais
- para imediatamente se um dispositivo retornar sinais de bloqueio ou limitação de taxa
O banco de dados integrado é intencionalmente pequeno e baseado em fontes. Módulos
grandes de credenciais baixados são mantidos como dados de referência, mas a auditoria
segura não os utiliza, a menos que `Settings.auth_allow_module_credentials` seja explicitamente
habilitado por um desenvolvedor.
### Modo Seguro e Execuções de Validação
O modo seguro é recomendado automaticamente em hosts de baixo consumo, hosts que parecem
dispositivos Pi-hole/gateway e em egresso de Wi-Fi. Ele também pode ser forçado com:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
No modo seguro SunsetScan:
-iPara testes de regressão assistidos por root em todos os modos, use o coletor de validação:```bash sudo bash scripts/sudo_network_validation.sh
Por padrão, testa `192.168.1.0/24` em PING, QUICK, SMB, STEALTH e
FULL, copia os relatórios HTML gerados para o diretório de validação,
e grava um arquivo compactado em `reports/`. Relatórios, logs,
pcaps e arquivos são ignorados pelo git e não devem ser commitados.
Substituições úteis:```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
O SunsetScan nunca chama APIs externas durante uma varredura. Todos os dados são lidos de arquivos de cache locais em data/cache/.
Os scans funcionam normalmente com cache desatualizada ou ausente — você só pode ter dados de CVE desatualizados.
---
## Detecção de Dispositivos 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
| Descoberta | Severidade | Significado |
|---|---|---|
| Dispositivo desconhecido detectado | Médio | MAC não está na linha de base — dispositivo novo ou não autorizado |
| IP do dispositivo alterado |
Nota: A linha de base exige root/sudo para detecção de endereço MAC via nmap.
Cada --full-assessment gera um relatório HTML autossuficiente com:
Os relatórios abrem em qualquer navegador sem exigir internet.
SunsetScan identifica automaticamente dispositivos de rede combinando evidências de 14 fontes diferentes. Cada fonte contribui com um fornecedor, modelo, versão ou tipo de dispositivo com uma pontuação de confiança. O algoritmo de fusão soma fontes concordantes (com bônus para concordância de múltiplas fontes) e penaliza evidências conflitantes.
Para ver o que está na sua rede sem executar verificações de segurança:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
This runs a port scan with banner grabbing and prints a device
identification table. No security analysis, no report — just a fast
inventory.
### 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 |
Os resultados de identificação aparecem em:
- Tabela de inventário de dispositivos no terminal (durante a varredura e via `--identify`)
- Cartões de topologia do relatório HTML e seção de inventário de dispositivos
- Seção `device_identities` da exportação JSON
- Opção de menu [8] Inventário de Dispositivos no modo interativo
---
## Níveis de Severidade
| Nível | Cor | Faixa CVSS | O que significa | Quando agir |
|---|---|---|---|---|
| **CRÍTICO** | Vermelho | >= 9.0 | Credenciais padrão, CVE explorável, SSL 2.0 | Hoje |
| **ALTO** | Laranja | 7.0-8.9 | Telnet/FTP aberto, certificado expirado, TLS 1.0, software em fim de vida (EOL) | Esta semana |
| **MÉDIO** | Amarelo | 4.0-6.9 | Certificado autoassinado, exposição UPnP, dispositivo não autorizado, HSTS ausente | Agendar correção |
| **BAIXO** | Azul | < 4.0 | EOL próximo, X-Frame-Options ausente, IP do dispositivo alterado | Acompanhar e planejar |
| **INFO** | Cinza | - | Dispositivo identificado, detalhes do certificado, verificação de DNS aprovada | Nenhuma ação |
---
## Estrutura do Projeto```
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 não encontrado```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Permissão negada / detecção de SO não está funcionando**
Os perfis FULL, STEALTH e SMB exigem privilégios elevados. Sem root, esses perfis automaticamente recorrem a flags de não-root (detecção de SO e varredura SYN desabilitadas, mas a varredura de portas/versões ainda funciona).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 sugere rede errada (172.x.x.x)
No WSL2, o SunsetScan detecta o adaptador virtual e recorre a 192.168.1.0/24. Se a sua rede doméstica usa uma sub-rede diferente, especifique-a com --target:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Avisos de cache no início da verificação**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Os scans funcionam bem com dados desatualizados. Execute --update-cache para atualizar.
Permissão negada ao baixar módulos
Se o download de módulos falhar com Permission denied: .../data/cache/..., o
cache provavelmente foi criado com sudo. Corrija a propriedade uma vez e depois execute a configuração
e os downloads de módulos como seu usuário normal:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**Verificações SNMP não funcionando**
SunsetScan suporta tanto pysnmp v4 (síncrono) quanto v7 (assíncrono). Se você vir erros de importação, atualize o pysnmp:```bash
pip install --upgrade pysnmp
O SunsetScan é uma ferramenta de auditoria de segurança destinada a ser usada em redes e dispositivos que você possui ou para os quais tem permissão explícita por escrito para testar.
Executar varreduras de rede em sistemas que você não possui ou para os quais não tem autorização para testar pode ser ilegal independentemente da intenção. Os autores não aceitam nenhuma responsabilidade por uso indevido.
O SunsetScan é totalmente não destrutivo e somente leitura. Ele não explora vulnerabilidades, envia payloads nem modifica qualquer configuração em nenhum dispositivo varrido. O teste de credenciais --check-defaults é opcional, limitado, atrasado, orientado ao modelo exato e é interrompido ao detectar sinais de bloqueio/limite de taxa; não é um recurso de força bruta.
O repositório e o código do aplicativo SunsetScan são licenciados sob a Licença MIT — Copyright 2024 Contribuidores do SunsetScan.
Apenas os artefatos do banco de dados EOL de hardware do SunsetScan em data/hardware_eol/ são licenciados separadamente: Este banco de dados é licenciado sob a Licença Internacional Creative Commons Atribuição-NãoComercial 4.0 (CC BY-NC 4.0). Veja data/hardware_eol/LICENSE.md.
| Plataforma | Nível de Suporte | Observações |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch, etc.) | Suporte total | Melhor experiência — todos os recursos funcionam nativamente |
| WSL2 (Subsistema Windows para Linux) | Suporte total | Forma recomendada de executar em máquinas Windows |
| macOS | Parcial | A varredura principal funciona; alguns recursos (ARP, captura passiva) podem exigir configuração adicional |
| Windows (CMD/PowerShell nativos) | Não suportado | Faltam sockets brutos, os.geteuid(), /proc, ip route e termios — use WSL2 |
| Flag | Efeito |
|---|
| (sem flags) | Instalação padrão: pacotes do sistema + venv + dependências Python + autoteste |
--force | Remove e reconstrói o venv do zero (use após atualizar o Python) |
--symlink | Também instala /usr/local/bin/sunsetscan para que você possa executar sunsetscan de qualquer lugar |
--no-system | Ignora a etapa apt/dnf/etc (use se as ferramentas do sistema já estiverem instaladas) |
--help | Mostra todas as opções |
| Verificador | O que ele encontra |
|---|
| SSL/TLS | Certificados expirados/autoassinados, cifras fracas, TLS 1.0/1.1, SSL 2.0/3.0, chaves RSA pequenas |
| SSH | Troca de chaves fraca, cifras/MACs fracos, SSHv1, chaves de host pequenas, análise bruta de KEXINIT |
| SMB | SMBv1, EternalBlue (MS17-010), compartilhamentos anônimos, assinatura SMB desabilitada, divulgação de NTLM |
| FTP | Login anônimo, credenciais em texto claro, STARTTLS ausente |
| SNMP | Community strings padrão (public/private), SNMPv1, extração de sysDescr |
| Web | Cabeçalhos de segurança ausentes, formulários de login via HTTP, listagem de diretórios, painéis de administração expostos |
| DNS | Detecção de sequestro de DNS (compara com Cloudflare 1.1.1.1) |
| UPnP | Descoberta SSDP, exposição de mapeamento de portas WAN em roteadores |
| mDNS | Descoberta de dispositivos Zeroconf/Bonjour, encontra hosts que escapam de varreduras de portas |
| ARP | Detecção de spoofing ARP, rastreamento de mudanças de endereço MAC (requer root) |
| Credenciais padrão | Auditoria opcional de padrões de fábrica usando correspondências exatas de dispositivo/modelo, tentativas limitadas e atrasos |
| Protocolos inseguros | Telnet, FTP, TFTP, rsh, rlogin, rexec sinalizados por gravidade |
| Módulo | Fonte | O que adiciona |
|---|
credentials-mini | danielmiessler/SecLists | 50 principais credenciais padrão (dados de referência para download; não usados pela auditoria segura, a menos que explicitamente habilitados nas configurações) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | 2.860+ credenciais específicas de fornecedores (dados de referência para download; não usados pela auditoria segura, a menos que explicitamente habilitados nas configurações) |
wappalyzer-mini | enthec/webappanalyzer | 500 principais tecnologias web (padrão) |
wappalyzer-full | enthec/webappanalyzer | Todas as 7.515 tecnologias web |
ja3-signatures | salesforce/ja3 | Banco de dados de fingerprints TLS |
snmp-community | danielmiessler/SecLists | Community strings SNMP estendidas |
camera-credentials | many-passwords/many-passwords | Padrões de câmeras IP/DVR/NVR (dados de referência para download; não usados pela auditoria segura, a menos que explicitamente habilitados nas configurações) |
mac-oui | IEEE Standards Association | Banco de dados de fornecedores por prefixo MAC (padrão) |
hardware-eol-home | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico/SOHO (padrão; licença do banco de dados: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico e de pequenos escritórios |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, de escritório e empresarial/campus/datacenter |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, de escritório e industrial/OT |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Perfil de ciclo de vida/EOL de hardware doméstico, de escritório, empresarial e de provedor de serviços |
hardware-eol-full | NoCoderRandom/sunsetscan | Perfil completo de ciclo de vida/EOL de hardware smart-pack |
hardware-eol | NoCoderRandom/sunsetscan | Módulo legado de compatibilidade de ciclo de vida/EOL de hardware com divisão 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 |
| Arquivo | Conteúdo | Intervalo de atualização |
|---|
data/cache/cve_cache.json | Dados de CVE por produto:versão | A cada 7 dias |
data/cache/*.json | Datas de EOL para mais de 150 produtos, armazenadas por produto | A cada 30 dias |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json além de records/*.json | Banco de dados de ciclo de vida/EOL de hardware | A cada 30 dias |
data/cache/hardware_eol/manifest.json, indexes/*.json e records/<pack>/*.json | Perfis de ciclo de vida/EOL de hardware em smart-packs | A cada 30 dias |
data/cache/cache_meta.json | Registros de data/hora das últimas atualizações | Automático |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| Baixo |
| MAC conhecido em um IP diferente (normalmente DHCP normal) |
| Dispositivo visto anteriormente offline | Info | Dispositivo da linha de base não está respondendo |