
Sicherheitsaudit für lokale Netzwerke mit EOL, CVE, Geräteidentität und HTML-Berichten
Netzwerk-Sicherheitsaudit für Menschen – unterstützt von nmap, für alle gemacht.
Website: sunsetscan.com
SunsetScan ist ein Sicherheits-Audit-Tool für lokale Netzwerke, entwickelt für Heimnetzwerk-Besitzer und IT-Mitarbeiter, die die Tiefe von nmap nutzen möchten, ohne die nmap-Syntax zu lernen. Richten Sie es auf Ihr Netzwerk, und es findet jedes aktive Gerät, identifiziert laufende Software, gleicht sie mit bekannten Schwachstellendatenbanken und End-of-Life-Informationen ab, testet Weboberflächen auf häufige Schwachstellen, führt optional einen sperrensicheren Audit von Werkseinstellungs-Zugangsdaten durch und erstellt einen übersichtlichen HTML-Bericht mit einfachen Erklärungen und nummerierten Schritten zur Behebung jedes Befunds. Es ist vollständig schreibgeschützt und nicht destruktiv – an Ihrem Netzwerk wird nie etwas verändert.
Warum Linux? SunsetScan nutzt Raw-Sockets (ARP-Scanning, passiven Paketempfang), Linux-spezifische APIs (
/proc,ip route) und Privilegienprüfungen (os.geteuid()), die in nativem Windows nicht verfügbar sind. WSL2 bietet einen vollständigen Linux-Kernel und ist der empfohlene Weg für Windows-Benutzer.
SunsetScan wird mit einem Installationsprogramm geliefert, das sich um Systemwerkzeuge (nmap, masscan, git, python3-venv) kümmert, eine projektlokale Python-Programmumgebung (venv) erstellt und alle Python-Abhängigkeiten darin installiert. Sie werden nie aufgefordert, etwas als Root per pip install zu installieren – das ist wichtig auf modernen Debian/Pi-OS-Systemen, siehe Warum ein venv? unten.
Debian, Ubuntu, Raspberry Pi OS (Bookworm und neuer), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Empfohlen für Debian, Ubuntu, Raspberry Pi OS, Linux Mint und 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. Einzeiler-Bootstrap
Klont das Repository nach `~/sunsetscan` und führt den Installer aus:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
Möchtest du es woanders haben? Setze INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Ein Hinweis zu `curl | bash`**: es ist praktisch, aber es bedeutet, ein Skript auszuführen, das man nicht gelesen hat. Wenn du es dir lieber erst ansehen möchtest, verwende Option 3 oder 4.
#### 3. Klonen und installieren```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
(Ersetzen Sie den Paketmanager Ihrer Distribution für `apt` — `dnf`, `pacman`, `zypper` oder `brew`. Das avahi-Paket heißt `avahi-tools` auf Fedora/RHEL, `avahi` auf Arch, `avahi-utils` auf openSUSE und wird auf macOS nicht benötigt.)
### Nach der Installation — erster Start```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
Der ./sunsetscan-Launcher aktiviert die venv automatisch – du musst source venv/bin/activate nie selbst ausführen. Verwende sudo für Scans, die Raw-Sockets benötigen, führe aber --setup, --download und --update-cache als normaler Benutzer aus, damit die Cache-Dateien aus der TUI heraus beschreibbar bleiben.
Das erneute Ausführen von ./install.sh ist sicher und idempotent – es erkennt vorhandene Komponenten und nutzt sie erneut.
Moderne Debian-basierte Distributionen (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) verfügen über die PEP 668-Durchsetzung. Dadurch schlägt pip install fehl, wenn es als root gegen das System-Python ausgeführt wird:```
error: externally-managed-environment
× This environment is externally managed
Zwei von SunsetScans Abhängigkeiten (insbesondere `pysnmp` v6) benötigen neuere Versionen, als die apt-Repositorien mitliefern, daher ist eine reine apt-Installation nicht möglich. Die Lösung des Installationsprogramms ist die übliche: Systemwerkzeuge (nmap, masscan, libpcap, avahi-utils) per apt installieren und SunsetScans Python-Abhängigkeiten in ein projektlokales `./venv`-Verzeichnis legen. Systemweit wird nichts verändert, also greift PEP 668 nicht, und die Deinstallation von SunsetScan ist einfach `rm -rf ~/sunsetscan`.
### Optional: SunsetScan im Hintergrund laufen lassen
Eine vollständige Untersuchung eines /24-Subnetzes auf einem Raspberry Pi kann 10–30 Minuten dauern. Verwenden Sie `tmux` oder `screen`, damit der Scan einen SSH-Verbindungsabbruch übersteht:```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
### Deinstallation```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
Windows wird nicht direkt unterstützt (SunsetScan benötigt Raw-Sockets, /proc und os.geteuid), aber WSL2 funktioniert einwandfrei:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Restart, open **Ubuntu** from the Start menu, then follow the standard install above. WSL2 uses a virtual network adapter — pass your real subnet with `--target` if auto-detection picks the wrong one.
---
## Requirements
| Requirement | Minimum | Notes |
|---|---|---|
| **Python** | 3.9+ | 3.12 recommended |
| **nmap** | Any recent | Must be on system PATH |
| **OS** | Linux (native or WSL2) | See [Platform Support](#platform-support) |
| **masscan** | Any | Optional — faster port discovery |
| **avahi-utils** | Any | Optional — provides `avahi-browse`, used for reliable mDNS discovery of Apple / Bonjour / Sleep-Proxy devices. Falls back to python `zeroconf` if absent. |
| **git** | Any | Optional — used for `--setup` and `--update` |
| **Privileges** | Standard user | Root/sudo needed for FULL, STEALTH, SMB profiles, ARP detection, and passive capture |
---
## Quick Start```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 führt während einer vollständigen Bewertung 12 Sicherheitsprüfmodule aus:
hardware-eol-home, während Büro-, Enterprise-, Industrie-, Service-Provider- und Vollprofile für umfassendere Scans verfügbar sind.--setup, --update-cache und --download kontaktiert. Scans funktionieren ohne Internetverbindung, solange die Caches befüllt sind.--identify-Flag überspringt SicherheitsprüfungenSunsetScan enthält herunterladbare Datenmodule und Hardware-EOL-Profile, die die Erkennungsfähigkeiten erweitern:
Die Hardware-Lebenszyklusdatenbank ist nun in intelligente herunterladbare Profile aufgeteilt: hardware-eol-home ist die Standardinstallation, während hardware-eol-full vollständige Abdeckung bietet. Der vollständige kanonische Build enthält derzeit 64.245 Datensätze von 122 Herstellern, aber Privatanwender benötigen nur das kleinere Home-Profil.
### Erkennung fremder Geräte
- Speichern Sie einen Schnappschuss Ihres Netzwerks als vertrauenswürdige Baseline
- Zukünftige Scans markieren automatisch unbekannte MAC-Adressen, die nicht in der Baseline enthalten sind
- Erkennt bekannte Geräte auf unerwarteten IP-Adressen
### Risikobewertung
Jedes Gerät erhält eine Risikobewertung (0–100) basierend auf Schweregrad und Anzahl der Befunde:
| Score | Einstufung |
|---|---|
| 0-10 | Minimales Risiko |
| 11-30 | Geringes Risiko |
| 31-60 | Mittleres Risiko |
| 61-80 | Hohes Risiko |
| 81-100 | Kritisches Risiko |
### Berichte
- **Professioneller HTML-Bericht** – Schweregrad-Dashboard, Abschnitte pro Host, Befundkarten mit allgemeinverständlichen Erklärungen, priorisierte Empfehlungen
- **JSON-Export** – maschinenlesbare, strukturierte Ausgabe
- Berichte sind vollständig in sich geschlossen – eine HTML-Datei, keine externen Abhängigkeiten
- Auch schmale Profile wie SMB halten entdeckte Hosts im Bericht sichtbar,
selbst wenn keine passenden Service-Ports offen sind
- Netzwerkebenen-Prüfungen wie DNS, UPnP und Notizen zur Scan-Laufzeit sind
von den gerätespezifischen Befunden getrennt; Geräte-Risikobewertungen werden nur für tatsächliche Hosts angezeigt
- Alle Befunde farbcodiert: Kritisch, Hoch, Mittel, Niedrig, Info
### Scan-Verlauf und Diffing
- Jeder Scan wird automatisch als gzip-komprimierter JSON-Schnappschuss gespeichert
- Frühere Scans mit `--history` anzeigen
- Beliebige zwei Scans mit `--diff` vergleichen, um neue Hosts, geschlossene Ports und neue/behobene Befunde zu sehen
- Mit `--diff --since N` mit einem Scan von vor N Tagen vergleichen
- Verlauf wird standardmäßig 90 Tage aufbewahrt
### Benutzeroberfläche
- Geführter **interaktiver Modus** (`-i`) – mehrstufige Menüs für Scannen, Analyse, Export, Module
- **Menü im alten Stil** – startet, wenn ohne Argumente ausgeführt wird
- Direkter CLI-Modus – skriptbar und automatisierungsfreundlich
- Umfangreiche farbige Terminalausgabe mit Fortschrittsbalken, Spinnern und Zusammenfassungsfeldern
---
## Alle CLI-Flags
| Flag | Beschreibung | Root |
|---|---|---|
| `--target TARGET` | IP, CIDR-Bereich, Hostname oder Bereich zum Scannen | Nein |
| `--profile PROFILE` | Scan-Profil: QUICK, FULL, STEALTH, PING, IOT, SMB (Standard: QUICK) | Variiert |
| `-i`, `--interactive` | Geführten interaktiven Modus starten | Nein |
| `--full-assessment` | Vollständige Bewertung + automatischer HTML-Export; Credential-Audit bleibt Opt-in | Nein |
| `--identify` | Nur Geräteidentifizierung ausführen (Sicherheitsprüfungen überspringen) | Nein |
| `--nse` | Nmap Scripting Engine für erweiterte Erkennung aktivieren | Nein |
| `--check-defaults` | Opt-in zu einem sperrsicheren Audit der Werksstandard-Anmeldedaten (nur eigene Geräte) | Nein |
| `--save-baseline` | Scan als vertrauenswürdige Geräte-Baseline für die Erkennung fremder Geräte speichern | Nein |
| `--setup` | Erstmaliger Setup-Assistent (Abhängigkeiten + Cache-Download) | Nein |
| `--update-cache` | CVE- und EOL-Datencaches manuell aktualisieren | Nein |
| `--cache-status` | Cache-Alter und Anzahl der Einträge anzeigen, dann beenden | Nein |
| `--modules` | Status aller herunterladbaren Datenmodule anzeigen | Nein |
| `--download MODULE` | Ein Datenmodul herunterladen (oder „all“) | Nein |
| `--db SIZE` | EOL-Datenbankgröße für `--setup`: mini, normal, large (Standard: normal) | Nein |
| `--history` | Tabelle des Scan-Verlaufs anzeigen und beenden | Nein |
| `--diff` | Die letzten beiden gespeicherten Scans diffen und beenden | Nein |
| `--since DAYS` | Mit `--diff`: mit einem mindestens N Tage alten Scan vergleichen | Nein |
| `--check-version` | Nach einer neueren SunsetScan-Version auf GitHub suchen | Nein |
| `--update` | Neuesten Code von GitHub ziehen und Anforderungen neu installieren | Nein |
| `--verbose` | Debug-Logging aktivieren | Nein |
| `--no-color` | Farbausgabe deaktivieren (nützlich für Logdateien) | Nein |
| `--quiet` | Fortschrittsbalken unterdrücken (Befunde werden weiterhin angezeigt) | Nein |
| `--safe-mode` | Sanfteres Scannen erzwingen: begrenztes nmap, geringere masscan-Nutzung, weniger Worker, schwere Sonden überspringen | Nein |
| `--no-safe-mode` | Automatischen Safe Mode deaktivieren | Nein |
| `--version` | Versionsnummer anzeigen und beenden | Nein |
---
## Scan-Profile
| Profil | nmap-Flags | Geschwindigkeit | Root | Am besten geeignet für |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | Nein | Aktive Geräte schnell finden |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1-3 min | Nein | Erster Blick auf ein Netzwerk (mit leichter Versionserkennung) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5-15 min | Ja | Tiefgehende Analyse bestimmter Hosts |
| **STEALTH** | `-sS -T2 -sV` | 10-30 min | Ja | Rauscharmes Scannen |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1-3 min | Nein | Kameras, Router, Smart Devices |
| **SMB** | `-T4 -sV -p 135,139,445,137,138 --script smb-security-mode,smb2-security-mode,smb-vuln-ms17-010 --open` | 1-3 min | Ja | Windows-Freigaben, EternalBlue-Prüfung |
> **Tipp:** FULL und STEALTH wechseln automatisch auf Nicht-Root-Flags, wenn sie ohne sudo ausgeführt werden. Die Betriebssystemerkennung ist dann nicht verfügbar, aber Portscanning und Diensterkennung funktionieren weiterhin.
### Sicherheit beim Standardpasswort-Audit
Das Testen von Standardpasswörtern wird niemals automatisch aktiviert. Im CLI-Modus
fügen Sie `--check-defaults` hinzu; im geführten `-i`-Modus wählen Sie das
Standardpasswort-Audit, wenn Sie dazu aufgefordert werden. SunsetScan wendet
dann eine konservative Richtlinie an:
- kein generisches Username/Passwort-Spraying standardmäßig
- testet nur Anmeldedaten, die zum erkannten Hersteller und Modell/Familie passen
- überspringt Geräte mit einzigartigen Label-/PIN-Standardwerten, wie viele HP-Drucker
- begrenzt Versuche standardmäßig auf 2 pro Host und 1 pro Dienst
- wartet 2 Sekunden zwischen Versuchen mit Anmeldedaten
- bricht sofort ab, wenn ein Gerät Sperr- oder Rate-Limit-Signale zurückgibt
Die integrierte Datenbank ist bewusst klein und quellenbasiert. Heruntergeladene
große Credential-Module werden als Referenzdaten aufbewahrt, aber das sichere
Audit verwendet sie nicht, sofern `Settings.auth_allow_module_credentials`
nicht ausdrücklich von einem Entwickler aktiviert wird.
### Safe Mode und Validierungsläufe
Der Safe Mode wird automatisch für leistungsschwache Hosts, Hosts, die wie
Pi-hole/Gateway-Geräte aussehen, und für Wi-Fi-Egress empfohlen. Er kann auch
erzwungen werden mit:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
Im sicheren Modus von SunsetScan:
-i-Modus anFür root-unterstützte Regressionstests über alle Modi hinweg verwenden Sie den Validierungs-Collector:```bash sudo bash scripts/sudo_network_validation.sh
Standardmäßig testet es `192.168.1.0/24` über PING, QUICK, SMB, STEALTH und
FULL, kopiert generierte HTML-Berichte in das Validierungsverzeichnis
und schreibt ein komprimiertes Archiv unter `reports/`. Berichte, Protokolle,
Pcaps und Archive werden von git ignoriert und sollten nicht eingecheckt werden.
Nützliche Überschreibungen:```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 ruft während eines Scans niemals externe APIs auf. Alle Daten werden aus lokalen Cache-Dateien in data/cache/ gelesen.
Scans funktionieren normal mit veraltetem oder fehlendem Cache — du hast möglicherweise nur veraltete CVE-Daten.
---
## Erkennung nicht autorisierter Geräte```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
| Befund | Schweregrad | Bedeutung |
|---|---|---|
| Unbekanntes Gerät erkannt | Mittel | MAC nicht in der Baseline – neues oder unbefugtes Gerät |
| Geräte-IP geändert | Niedrig | Bekannte MAC auf einer anderen IP (normalerweise normales DHCP) |
Hinweis: Für die MAC-Adresserkennung per nmap sind Root-/Sudo-Rechte erforderlich.
Jeder --full-assessment erzeugt einen eigenständigen HTML-Bericht mit:
Berichte öffnen sich in jedem Browser, ohne dass Internet erforderlich ist.
SunsetScan identifiziert Netzwerkgeräte automatisch, indem es Erkenntnisse aus 14 verschiedenen Quellen kombiniert. Jede Quelle liefert einen Hersteller, ein Modell, eine Version oder einen Gerätetyp mit einem Konfidenzwert. Der Fusionsalgorithmus summiert übereinstimmende Quellen (mit Boni für Mehrquellen-Übereinstimmung) und bestraft widersprüchliche Erkenntnisse.
Um zu sehen, was sich in Ihrem Netzwerk befindet, ohne Sicherheitsprüfungen auszuführen:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
Dies führt einen Portscan mit Banner-Grabbing durch und gibt eine Tabelle
zur Geräteidentifikation aus. Keine Sicherheitsanalyse, kein Bericht –
nur ein schnelles Inventar.
### Beweisquellen
| Quelle | Was wird gelesen | Konfidenz |
|--------|--------------|------------|
| MAC OUI | IEEE-Vendor-Präfix aus der MAC-Adresse | 0.40-0.45 |
| nmap OS | OS-Fingerprint-Schätzung | variiert |
| HTTP fingerprint | Gerätetyp, Modell, Firmware aus der Weboberfläche | 0.50+ |
| HTTP headers | Server- und X-Powered-By-Antwortheader | 0.20-0.50 |
| TLS certificate | CN-, Aussteller- und Organisationsfelder | 0.35 |
| SSH banner | SSH-Daemon-Identifikationszeichenfolge | 0.10-0.70 |
| UPnP | SSDP-Hersteller, -Modell, -Gerätetyp | 0.75 |
| SNMP sysDescr | Systembeschreibung aus der SNMP-MIB | 0.85 |
| Wappalyzer | CPE-Zeichenfolgen und Technologiekategorien | 0.30-0.45 |
| mDNS/Zeroconf | Dienstetyp-Ankündigungen | 0.55 |
| JA3S | TLS-Handshake-Fingerprint-Datenbank | 0.50 |
| FTP banner | FTP-Server-Softwareidentifizierung | 0.25-0.35 |
| Port heuristics | Muster von offenen Portkombinationen | 0.10-0.70 |
| nmap services | Service-Produkt- und Versionsfelder | 0.45 |
Identifikationsergebnisse erscheinen in:
- Geräteinventartabelle im Terminal (während des Scans und über `--identify`)
- Topologie-Karten des HTML-Berichts und Geräteinventar-Abschnitt
- Abschnitt `device_identities` im JSON-Export
- Menüoption [8] Device Inventory im interaktiven Modus
---
## Schweregrade
| Stufe | Farbe | CVSS-Bereich | Bedeutung | Wann handeln |
|---|---|---|---|---|
| **KRITISCH** | Rot | >= 9.0 | Standard-Zugangsdaten, ausnutzbare CVE, SSL 2.0 | Heute |
| **HOCH** | Orange | 7.0-8.9 | Telnet/FTP offen, abgelaufenes Zertifikat, TLS 1.0, EOL-Software | Diese Woche |
| **MITTEL** | Gelb | 4.0-6.9 | Selbstsigniertes Zertifikat, UPnP-Exposition, nicht autorisiertes Gerät, fehlendes HSTS | Behebung planen |
| **NIEDRIG** | Blau | < 4.0 | EOL steht bevor, fehlendes X-Frame-Options, Geräte-IP geändert | Verfolgen und planen |
| **INFO** | Grau | - | Gerät identifiziert, Zertifikatsdetails, DNS-Check bestanden | Keine Aktion |
---
## Projektstruktur```
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 nicht gefunden```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Zugriff verweigert / OS-Erkennung funktioniert nicht**
FULL-, STEALTH- und SMB-Profile erfordern erhöhte Rechte. Ohne Root fallen diese Profile automatisch auf Non-Root-Flags zurück (OS-Erkennung und SYN-Scan deaktiviert, aber Port-/Versions-Scan funktioniert weiterhin).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 schlägt falsches Netzwerk vor (172.x.x.x)
Unter WSL2 erkennt SunsetScan den virtuellen Adapter und fällt auf 192.168.1.0/24 zurück. Wenn Ihr Heimnetzwerk ein anderes Subnetz verwendet, geben Sie es mit --target an:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Cache-Warnungen beim Scanstart**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Scans funktionieren mit veralteten Daten problemlos. Führen Sie --update-cache aus, um zu aktualisieren.
Zugriff verweigert beim Herunterladen von Modulen
Wenn Modul-Downloads mit Permission denied: .../data/cache/... fehlschlagen, wurde der Cache wahrscheinlich mit sudo erstellt. Korrigieren Sie den Besitz einmalig und führen Sie dann Setup und Modul-Downloads als Ihr normaler Benutzer aus:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**SNMP-Checks funktionieren nicht**
SunsetScan unterstützt sowohl pysnmp v4 (synchron) als auch v7 (asynchron). Wenn du Importfehler siehst, aktualisiere pysnmp:```bash
pip install --upgrade pysnmp
SunsetScan ist ein Sicherheitsaudit-Tool, das für den Einsatz in Netzwerken und auf Geräten vorgesehen ist, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zum Testen hast.
Das Ausführen von Netzwerkscans gegen Systeme, die dir nicht gehören oder für die du keine Genehmigung zum Testen hast, kann unabhängig von der Absicht illegal sein. Die Autoren übernehmen keine Haftung für Missbrauch.
SunsetScan ist vollständig nicht-destruktiv und schreibgeschützt. Es nutzt keine Schwachstellen aus, liefert keine Payloads aus und ändert keine Konfiguration auf gescannten Geräten. Das Testen von Anmeldedaten über --check-defaults ist opt-in, begrenzt, verzögert, auf exakte Modelle ausgerichtet und stoppt bei Lockout-/Rate-Limit-Signalen; es ist keine Brute-Force-Funktion.
Das SunsetScan-Repository und der Anwendungscode sind unter der MIT-Lizenz lizenziert — Copyright 2024 SunsetScan Contributors.
Nur die SunsetScan-Hardware-EOL-Datenbankartefakte unter data/hardware_eol/ sind separat lizenziert: Diese Datenbank ist unter der Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0) lizenziert. Siehe data/hardware_eol/LICENSE.md.
| Plattform | Unterstützungsgrad | Hinweise |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch usw.) | Volle Unterstützung | Beste Erfahrung – alle Funktionen arbeiten nativ |
| WSL2 (Windows-Subsystem für Linux) | Volle Unterstützung | Empfohlener Weg für die Ausführung auf Windows-Rechnern |
| macOS | Teilweise | Kern-Scanning funktioniert; einige Funktionen (ARP, passives Erfassen) erfordern möglicherweise zusätzliche Einrichtung |
| Windows (natives CMD/PowerShell) | Nicht unterstützt | Fehlende Raw-Sockets, os.geteuid(), /proc, ip route und termios – nutzen Sie stattdessen WSL2 |
| Flag | Effekt |
|---|
| (keine Flags) | Standardinstallation: Systempakete + venv + Python-Abhängigkeiten + Selbsttest |
--force | venv löschen und von Grund auf neu aufbauen (nach einem Python-Upgrade verwenden) |
--symlink | Installiert zusätzlich /usr/local/bin/sunsetscan, sodass du sunsetscan von überall aus ausführen kannst |
--no-system | Überspringt den apt/dnf/etc-Schritt (verwenden, wenn deine Systemwerkzeuge bereits installiert sind) |
--help | Alle Optionen anzeigen |
| Prüfer | Was er findet |
|---|
| SSL/TLS | Abgelaufene/selbstsignierte Zertifikate, schwache Cipher, TLS 1.0/1.1, SSL 2.0/3.0, kleine RSA-Schlüssel |
| SSH | Schwacher Schlüsselaustausch, schwache Cipher/MACs, SSHv1, kleine Host-Schlüssel, rohe KEXINIT-Analyse |
| SMB | SMBv1, EternalBlue (MS17-010), anonyme Freigaben, SMB-Signierung deaktiviert, NTLM-Offenlegung |
| FTP | Anonymer Login, Klartext-Zugangsdaten, fehlendes STARTTLS |
| SNMP | Standard-Community-Strings (public/private), SNMPv1, sysDescr-Extraktion |
| Web | Fehlende Sicherheitsheader, Login-Formulare über HTTP, Directory Listing, exponierte Admin-Panels |
| DNS | DNS-Hijacking-Erkennung (Vergleich mit Cloudflare 1.1.1.1) |
| UPnP | SSDP-Erkennung, exponierte WAN-Portweiterleitungen auf Routern |
| mDNS | Zeroconf-/Bonjour-Geräteerkennung, findet Hosts, die Port-Scans ausweichen |
| ARP | ARP-Spoofing-Erkennung, Verfolgung von MAC-Adressänderungen (erfordert Root) |
| Standard-Zugangsdaten | Opt-in-Werksstandard-Audit mit exakten Geräte-/Modellübereinstimmungen, begrenzten Versuchen und Verzögerungen |
| Unsichere Protokolle | Telnet, FTP, TFTP, rsh, rlogin, rexec nach Schweregrad gekennzeichnet |
| Modul | Quelle | Was es hinzufügt |
|---|
credentials-mini | danielmiessler/SecLists | Top 50 Standard-Zugangsdaten (herunterladbare Referenzdaten; werden vom sicheren Audit nicht verwendet, sofern nicht explizit in den Einstellungen aktiviert) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | 2860+ herstellerspezifische Zugangsdaten (herunterladbare Referenzdaten; werden vom sicheren Audit nicht verwendet, sofern nicht explizit in den Einstellungen aktiviert) |
wappalyzer-mini | enthec/webappanalyzer | Top 500 Web-Technologien (Standard) |
wappalyzer-full | enthec/webappanalyzer | Alle 7515 Web-Technologien |
ja3-signatures | salesforce/ja3 | TLS-Fingerprint-Datenbank |
snmp-community | danielmiessler/SecLists | Erweiterte SNMP-Community-Strings |
camera-credentials | many-passwords/many-passwords | IP-Kamera-/DVR-/NVR-Standardwerte (herunterladbare Referenzdaten; werden vom sicheren Audit nicht verwendet, sofern nicht explizit in den Einstellungen aktiviert) |
mac-oui | IEEE Standards Association | MAC-Präfix-Herstellerdatenbank (Standard) |
hardware-eol-home | NoCoderRandom/sunsetscan | Home-/SOHO-Hardware-Lebenszyklus-/EOL-Profil (Standard; Datenbanklizenz: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Home plus Small-Office-Hardware-Lebenszyklus-/EOL-Profil |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Home-, Office- und Enterprise-/Campus-/Rechenzentrums-Hardware-Lebenszyklus-/EOL-Profil |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Home-, Office- und Industrie-/OT-Hardware-Lebenszyklus-/EOL-Profil |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Home-, Office-, Enterprise- und Service-Provider-Hardware-Lebenszyklus-/EOL-Profil |
hardware-eol-full | NoCoderRandom/sunsetscan | Vollständiges Smart-Pack-Hardware-Lebenszyklus-/EOL-Profil |
hardware-eol | NoCoderRandom/sunsetscan | Legacy-Vollsplit-Hardware-Lebenszyklus-/EOL-Kompatibilitätsmodul |
| 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 |
| Datei | Inhalt | Aktualisierungsintervall |
|---|
data/cache/cve_cache.json | CVE-Daten, sortiert nach Produkt:Version | Alle 7 Tage |
data/cache/*.json | EOL-Daten für 150+ Produkte, pro Produkt gespeichert | Alle 30 Tage |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json sowie records/*.json | Hardware-Lebenszyklus-/EOL-Datenbank | Alle 30 Tage |
data/cache/hardware_eol/manifest.json, indexes/*.json und records/<pack>/*.json | Smart-Pack-Hardware-Lebenszyklus-/EOL-Profile | Alle 30 Tage |
data/cache/cache_meta.json | Zeitstempel der letzten Aktualisierungen | Automatisch |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| Zuvor gesehenes Gerät offline | Info | Baseline-Gerät antwortet nicht |