
Аудит безопасности локальной сети с поддержкой EOL, CVE, идентификации устройств и HTML-отчётов
Сетевой аудит безопасности для людей — на основе nmap, создан для всех.
Веб-сайт: sunsetscan.com
SunsetScan — это инструмент аудита безопасности локальной сети для владельцев домашних сетей и ИТ-специалистов, которые хотят получить возможности nmap без изучения синтаксиса nmap. Направьте его на вашу сеть, и он найдет каждое активное устройство, определит работающее программное обеспечение, проверит по известным базам уязвимостей и записям о прекращении поддержки, протестирует веб-интерфейсы на распространенные уязвимости, при необходимости выполнит безопасный аудит учетных данных по умолчанию (без блокировки) и создаст чистый HTML-отчет с объяснениями на простом английском и пронумерованными шагами для устранения каждой проблемы. Он полностью предназначен только для чтения и не является разрушительным — ничего в вашей сети никогда не изменяется.
Почему Linux? SunsetScan использует raw-сокеты (ARP-сканирование, пассивный захват пакетов), специфичные для Linux API (
/proc,ip route) и проверки привилегий (os.geteuid()), которые недоступны в нативном Windows. WSL2 предоставляет полноценное ядро Linux и является рекомендуемым путем для пользователей Windows.
SunsetScan поставляется с установщиком, который заботится о системных инструментах (nmap, masscan, git, python3-venv), создает локальную виртуальную среду Python для проекта и устанавливает все зависимости Python внутри нее. Вас никогда не попросят выполнить pip install от root — это важно на современных Debian/Pi OS, см. Зачем нужна venv? ниже.
Debian, Ubuntu, Raspberry Pi OS (Bookworm и новее), Linux Mint, Pop!_OS.
Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.
Рекомендуется для Debian, Ubuntu, Raspberry Pi OS, Linux Mint и 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. Однострочная начальная загрузка
Клонирует репозиторий в `~/sunsetscan` и запускает установщик:```bash
curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
Хотите установить в другое место? Задайте INSTALL_DIR:```bash
INSTALL_DIR=/opt/sunsetscan curl -fsSL https://raw.githubusercontent.com/NoCoderRandom/sunsetscan/main/bootstrap.sh | bash
> **Примечание о `curl | bash`**: это удобно, но означает выполнение скрипта, который вы не прочитали. Если вы предпочитаете сначала проверить, используйте вариант 3 или 4.
#### 3. Клонирование и установка```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
(Замените `apt` на менеджер пакетов вашего дистрибутива — `dnf`, `pacman`, `zypper` или `brew`. Пакет avahi: на Fedora/RHEL это `avahi-tools`, на Arch — `avahi`, на openSUSE — `avahi-utils`, а на macOS он не нужен.)
### После установки — первый запуск```bash
./sunsetscan --setup # download EOL/CVE/credential databases (once)
sudo ./sunsetscan --instant # ARP-only inventory of your local subnet
sudo ./sunsetscan --full-assessment --target 192.168.1.0/24
The ./sunsetscan launcher auto-activates the venv — you don't need to source venv/bin/activate ever. Use sudo for scans that need raw sockets, but run --setup, --download, and --update-cache as your normal user so cache files stay writable from the TUI.
Повторный запуск ./install.sh безопасен и идемпотентен — он обнаруживает существующие компоненты и повторно использует их.
Современные дистрибутивы на основе Debian (Debian Bookworm, Raspberry Pi OS Bookworm, Ubuntu 23.04+) поддерживают PEP 668. Это заставляет pip install завершаться ошибкой при запуске с правами root для системного Python:```
error: externally-managed-environment
× This environment is externally managed
Две зависимости SunsetScan (в частности, `pysnmp` v6) требуют более новых версий, чем те, что поставляются в репозиториях apt, поэтому чистая установка через apt невозможна. Решение установщика стандартное: установить системные инструменты (nmap, masscan, libpcap, avahi-utils) через apt, а зависимости Python для SunsetScan поместить в локальную для проекта директорию `./venv`. Никакие системные компоненты не затрагиваются, поэтому PEP 668 не применяется, а удаление SunsetScan сводится к `rm -rf ~/sunsetscan`.
### Опционально: оставить SunsetScan работающим в фоновом режиме
Полная оценка подсети /24 на Raspberry Pi может занять 10–30 минут. Используйте `tmux` или `screen`, чтобы сканирование не прервалось при отключении 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
### Удаление```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan # only if you used --symlink
Windows не поддерживается напрямую (SunsetScan требует raw sockets, /proc и os.geteuid), но WSL2 работает отлично:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
Перезапустите, откройте **Ubuntu** из меню «Пуск», затем следуйте стандартной установке выше. WSL2 использует виртуальный сетевой адаптер — передайте вашу реальную подсеть с помощью `--target`, если автодетекция выберет не ту.
---
## Требования
| Требование | Минимум | Примечания |
|---|---|---|
| **Python** | 3.9+ | рекомендуется 3.12 |
| **nmap** | Любая свежая | Должна быть в системном PATH |
| **ОС** | Linux (нативный или WSL2) | См. [Поддержка платформ](#platform-support) |
| **masscan** | Любая | Опционально — более быстрое обнаружение портов |
| **avahi-utils** | Любая | Опционально — предоставляет `avahi-browse`, используется для надежного обнаружения устройств Apple / Bonjour / Sleep-Proxy через mDNS. При отсутствии использует python `zeroconf` вместо этого. |
| **git** | Любая | Опционально — используется для `--setup` и `--update` |
| **Привилегии** | Обычный пользователь | Root/sudo необходимы для профилей FULL, STEALTH, SMB, ARP-обнаружения и пассивного захвата |
---
## Быстрый старт```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 запускает 12 модулей проверки безопасности при полной оценке:
hardware-eol-home, в то время как для более широких сканирований доступны офисные, корпоративные, промышленные, сервис-провайдеров и полные профили.--setup, --update-cache и --download. Сканирования работают без подключения к интернету при условии заполненных кэшей.--identify пропускает проверки безопасностиSunsetScan включает загружаемые модули данных и профили EOL оборудования, расширяющие возможности обнаружения:
База данных жизненного цикла оборудования теперь разделена на умные загружаемые профили:
hardware-eol-home устанавливается по умолчанию, а hardware-eol-full обеспечивает полное покрытие.
Полная каноническая сборка в настоящее время содержит 64 245 записей по 122 вендорам, но домашним пользователям требуется только меньший домашний профиль.
### Обнаружение неавторизованных устройств
- Сохраните снимок вашей сети как доверенный базовый профиль
- Будущие сканирования автоматически помечают неизвестные MAC-адреса, отсутствующие в базовом профиле
- Обнаруживает известные устройства на неожиданных IP-адресах
### Оценка риска
Каждое устройство получает оценку риска (0–100) на основе серьёзности и количества обнаруженных проблем:
| Оценка | Уровень |
|---|---|
| 0–10 | Минимальный риск |
| 11–30 | Низкий риск |
| 31–60 | Средний риск |
| 61–80 | Высокий риск |
| 81–100 | Критический риск |
### Отчёты
- **Профессиональный HTML-отчёт** — панель серьёзности, секции по каждому хосту, карточки с проблемами с пояснениями на простом английском, расставленные по приоритетам рекомендации
- **Экспорт в JSON** — машиночитаемый структурированный вывод
- Отчёты полностью самодостаточны — один HTML-файл, без внешних зависимостей
- Узкие профили, такие как SMB, сохраняют найденные хосты в отчёте, даже если соответствующие порты служб не открыты
- Проверки сетевого уровня, такие как DNS, UPnP и примечания о времени выполнения сканирования, отделены от обнаружений по каждому устройству; оценки риска устройств отображаются только для реальных хостов
- Все обнаружения имеют цветовую маркировку: Критический, Высокий, Средний, Низкий, Информационный
### История сканирования и сравнение
- Каждое сканирование автоматически сохраняется как gzip-сжатый JSON-снимок
- Просмотр прошлых сканирований с помощью `--history`
- Сравнение любых двух сканирований с помощью `--diff` для выявления новых хостов, закрытых портов, новых/решённых проблем
- Сравнение со сканированием N дней назад с помощью `--diff --since N`
- История хранится 90 дней по умолчанию
### Пользовательский интерфейс
- **Интерактивный режим с подсказками** (`-i`) — многоуровневые меню для сканирования, анализа, экспорта, модулей
- **Меню старого стиля** — запускается при вызове без аргументов
- Прямой режим CLI — пригодный для скриптов и автоматизации
- Богатый цветной терминальный вывод с индикаторами прогресса, спиннерами и сводными панелями
---
## Все флаги CLI
| Флаг | Описание | Root |
|---|---|---|
| `--target TARGET` | IP-адрес, диапазон CIDR, имя хоста или диапазон для сканирования | Нет |
| `--profile PROFILE` | Профиль сканирования: QUICK, FULL, STEALTH, PING, IOT, SMB (по умолч.: QUICK) | Зависит |
| `-i`, `--interactive` | Запустить интерактивный режим с подсказками | Нет |
| `--full-assessment` | Полная оценка + автоэкспорт HTML; проверка учётных данных остаётся добровольной | Нет |
| `--identify` | Запустить только идентификацию устройств (пропустить проверки безопасности) | Нет |
| `--nse` | Включить скриптовый движок Nmap для улучшенного обнаружения | Нет |
| `--check-defaults` | Добровольное участие в безопасной проверке заводских учётных данных (только собственные устройства) | Нет |
| `--save-baseline` | Сохранить сканирование как доверенный базовый профиль устройств для обнаружения неавторизованных | Нет |
| `--setup` | Мастер первоначальной настройки (зависимости + загрузка кэша) | Нет |
| `--update-cache` | Вручную обновить кэши данных CVE и EOL | Нет |
| `--cache-status` | Показать возраст кэша и количество записей, затем выйти | Нет |
| `--modules` | Показать статус всех загружаемых модулей данных | Нет |
| `--download MODULE` | Загрузить модуль данных (или «all») | Нет |
| `--db SIZE` | Размер базы данных EOL для `--setup`: mini, normal, large (по умолч.: normal) | Нет |
| `--history` | Показать таблицу истории сканирований и выйти | Нет |
| `--diff` | Сравнить два последних сохранённых сканирования и выйти | Нет |
| `--since DAYS` | С `--diff`: сравнить со сканированием возрастом не менее N дней | Нет |
| `--check-version` | Проверить наличие новой версии SunsetScan на GitHub | Нет |
| `--update` | Загрузить последний код с GitHub и переустановить зависимости | Нет |
| `--verbose` | Включить отладку логирования | Нет |
| `--no-color` | Отключить цветной вывод (полезно для файлов журнала) | Нет |
| `--quiet` | Подавить индикаторы прогресса (обнаружения по-прежнему отображаются) | Нет |
| `--safe-mode` | Принудительно включить щадящее сканирование: ограниченный nmap, сниженное использование masscan, меньше рабочих процессов, пропуск тяжёлых зондов | Нет |
| `--no-safe-mode` | Отключить автоматический безопасный режим | Нет |
| `--version` | Показать номер версии и выйти | Нет |
---
## Профили сканирования
| Профиль | Флаги nmap | Скорость | Root | Лучше всего подходит для |
|---|---|---|---|---|
| **PING** | `-sn` | ~30 с | Нет | Быстрого поиска активных устройств |
| **QUICK** | `-T4 -F -sV --version-intensity 2` | 1–3 мин | Нет | Первого взгляда на сеть (с лёгким определением версий) |
| **FULL** | `-T4 -A -sV -O --osscan-guess` | 5–15 мин | Да | Глубокого анализа конкретных хостов |
| **STEALTH** | `-sS -T2 -sV` | 10–30 мин | Да | Малошумного сканирования |
| **IOT** | `-T4 -sV -p 23,80,443,8080,8443,554,1900,5000,5001,7547,49152 --open` | 1–3 мин | Нет | Камер, маршрутизаторов, умных устройств |
| **SMB** | `-T4 -sV -p 135,139,445,137,138 --script smb-security-mode,smb2-security-mode,smb-vuln-ms17-010 --open` | 1–3 мин | Да | Общих папок Windows, проверки EternalBlue |
> **Совет:** FULL и STEALTH автоматически переходят на флаги, не требующие прав root, при запуске без sudo. Определение ОС будет недоступно, но сканирование портов и обнаружение служб всё ещё работают.
### Безопасность проверки заводских паролей
Проверка заводских паролей никогда не включается автоматически. В режиме CLI добавьте `--check-defaults`; в интерактивном режиме `-i` выберите проверку заводских паролей при запросе. SunsetScan затем применяет консервативную политику:
- нет массовой проверки общих имён пользователей/паролей по умолчанию
- тестируются только учётные данные, соответствующие обнаруженному производителю и модели/семейству
- пропускаются устройства с уникальными метками/PIN по умолчанию, например, многие принтеры HP
- количество попыток ограничено: не более 2 на хост и 1 на службу по умолчанию
- между попытками с учётными данными выдерживается пауза в 2 секунды
- немедленно останавливается, если устройство возвращает сигналы блокировки или ограничения скорости
Встроенная база данных намеренно мала и основана на источниках. Загруженные крупные модули учётных данных сохраняются как справочные, но безопасная проверка не использует их, если `Settings.auth_allow_module_credentials` явно не включён разработчиком.
### Безопасный режим и проверочные запуски
Автоматический безопасный режим рекомендуется на маломощных хостах, хостах, напоминающих Pi-hole/шлюзы, а также при выходе через Wi-Fi. Также может быть принудительно включён с помощью:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
В безопасном режиме SunsetScan:
-iДля регрессионного тестирования с правами root во всех режимах используйте сборщик валидации:```bash sudo bash scripts/sudo_network_validation.sh
По умолчанию он тестирует `192.168.1.0/24` через PING, QUICK, SMB, STEALTH и FULL, копирует сгенерированные HTML-отчеты в каталог проверки и записывает сжатый архив в `reports/`. Отчеты, журналы, pcap-файлы и архивы игнорируются git и не должны быть зафиксированы.
Полезные переопределения:```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 никогда не обращается к внешним API во время сканирования. Все данные считываются из локальных файлов кэша в data/cache/.
Сканирование работает нормально с устаревшим или отсутствующим кэшем — у вас могут быть устаревшие данные CVE.
---
## Обнаружение мошеннических устройств```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
| Обнаружение | Серьезность | Значение |
|---|---|---|
| Обнаружено неизвестное устройство | Средняя | MAC не в базовом наборе — новое или неавторизованное устройство |
| IP устройства изменился | Низкая |
Примечание: Базовый набор требует root/sudo для обнаружения MAC-адресов через nmap.
Каждый --full-assessment создает автономный HTML-отчет со следующими элементами:
Отчеты открываются в любом браузере без необходимости подключения к интернету.
SunsetScan автоматически идентифицирует сетевые устройства, объединяя данные из 14 различных источников. Каждый источник предоставляет производителя, модель, версию или тип устройства с оценкой достоверности. Алгоритм слияния суммирует совпадающие источники (с бонусами за согласование нескольких источников) и вычитает за противоречивые данные.
Чтобы увидеть, что находится в вашей сети без запуска проверок безопасности:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
Это запускает сканирование портов с захватом баннеров и выводит таблицу идентификации устройств. Никакого анализа безопасности, никаких отчетов — просто быстрая инвентаризация.
### Источники доказательств
| Источник | Что читает | Уверенность |
|--------|--------------|------------|
| MAC OUI | Префикс вендора IEEE из MAC-адреса | 0.40-0.45 |
| nmap OS | Предположение отпечатка ОС | varies |
| HTTP fingerprint | Тип устройства, модель, прошивка из веб-интерфейса | 0.50+ |
| HTTP заголовки | Заголовки ответов Server, X-Powered-By | 0.20-0.50 |
| TLS сертификат | Поля CN, issuer, organization | 0.35 |
| SSH баннер | Строка идентификации демона SSH | 0.10-0.70 |
| UPnP | Производитель SSDP, модель, тип устройства | 0.75 |
| SNMP sysDescr | Системное описание из MIB SNMP | 0.85 |
| Wappalyzer | CPE-строки и категории технологий | 0.30-0.45 |
| mDNS/Zeroconf | Объявления типов служб | 0.55 |
| JA3S | База данных отпечатков рукопожатия TLS | 0.50 |
| FTP баннер | Идентификация программного обеспечения FTP-сервера | 0.25-0.35 |
| Портовая эвристика | Шаблоны комбинаций открытых портов | 0.10-0.70 |
| nmap services | Поля продукта и версии службы | 0.45 |
Результаты идентификации отображаются в:
- Таблица инвентаризации устройств в терминале (во время сканирования и через `--identify`)
- Карточки топологии в HTML-отчете и раздел инвентаризации устройств
- Раздел `device_identities` в JSON-экспорте
- Пункт меню интерактивного режима [8] Инвентаризация устройств
---
## Уровни серьезности
| Уровень | Цвет | Диапазон CVSS | Значение | Когда действовать |
|---|---|---|---|---|
| **КРИТИЧЕСКИЙ** | Красный | >= 9.0 | Учетные данные по умолчанию, эксплуатируемая CVE, SSL 2.0 | Сегодня |
| **ВЫСОКИЙ** | Оранжевый | 7.0-8.9 | Открыты Telnet/FTP, просрочен сертификат, TLS 1.0, устаревшее ПО | На этой неделе |
| **СРЕДНИЙ** | Жёлтый | 4.0-6.9 | Самоподписанный сертификат, открыт UPnP, подозрительное устройство, отсутствует HSTS | Запланировать исправление |
| **НИЗКИЙ** | Синий | < 4.0 | Приближение окончания поддержки, отсутствует X-Frame-Options, изменён IP устройства | Отслеживать и планировать |
| **ИНФОРМАЦИОННЫЙ** | Серый | - | Устройство идентифицировано, детали сертификата, проверка DNS пройдена | Без действий |
---
## Структура проекта```
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 не найден```bash
sudo apt install nmap
sudo dnf install nmap
sudo pacman -S nmap
brew install nmap
**Отказано в доступе / OS detection не работает**
FULL, STEALTH и SMB профили требуют повышенных привилегий. Без root эти профили автоматически переходят на non-root флаги (OS detection и SYN scan отключены, но сканирование портов/версий все еще работает).```bash
# For full capabilities:
sudo python3 sunsetscan.py --target 192.168.1.0/24 --profile FULL
WSL2 предлагает неправильную сеть (172.x.x.x)
В WSL2 SunsetScan обнаруживает виртуальный адаптер и возвращается к 192.168.1.0/24. Если ваша домашняя сеть использует другую подсеть, укажите её с помощью --target:```bash
python3 sunsetscan.py --target 192.168.0.0/24
**Предупреждения о кэше при запуске сканирования**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache
Сканирование отлично работает с устаревшими данными. Запустите --update-cache, чтобы обновить.
Отказано в доступе при загрузке модулей
Если загрузка модулей завершается ошибкой Permission denied: .../data/cache/..., вероятно, кэш был создан с помощью sudo. Исправьте права владения один раз, затем запустите настройку и загрузку модулей от имени вашего обычного пользователя:```bash
cd ~/sunsetscan
sudo chown -R "$USER:$USER" data/cache
./sunsetscan --download all
**Проверки SNMP не работают**
SunsetScan поддерживает как pysnmp v4 (синхронный), так и v7 (асинхронный). Если вы видите ошибки импорта, обновите pysnmp:```bash
pip install --upgrade pysnmp
SunsetScan — это инструмент аудита безопасности, предназначенный для использования в сетях и на устройствах, которыми вы владеете или на тестирование которых имеете явное письменное разрешение.
Запуск сетевого сканирования систем, которыми вы не владеете или на тестирование которых у вас нет разрешения, может быть незаконным независимо от намерений. Авторы не несут ответственности за неправомерное использование.
SunsetScan полностью неразрушающий и доступен только для чтения. Он не эксплуатирует уязвимости, не доставляет полезные нагрузки и не изменяет никакие конфигурации на любом сканируемом устройстве. Тестирование учётных данных --check-defaults является добровольным, ограниченным, отложенным, ориентированным на точные модели и останавливается при сигналах блокировки/ограничения скорости; это не функция перебора.
Репозиторий SunsetScan и код приложения лицензированы в соответствии с лицензией MIT — Copyright 2024 SunsetScan Contributors.
Только артефакты базы данных окончания срока службы оборудования SunsetScan в data/hardware_eol/ лицензированы отдельно: эта база данных лицензирована в соответствии с Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0). См. data/hardware_eol/LICENSE.md.
| Платформа | Уровень поддержки | Примечания |
|---|
| Linux (Debian, Ubuntu, Fedora, Arch и др.) | Полная поддержка | Лучший опыт — все функции работают нативно |
| WSL2 (Подсистема Windows для Linux) | Полная поддержка | Рекомендуемый способ запуска на Windows |
| macOS | Частичная | Основное сканирование работает; некоторые функции (ARP, пассивный захват) могут потребовать дополнительной настройки |
| Windows (нативный CMD/PowerShell) | Не поддерживается | Отсутствуют raw-сокеты, os.geteuid(), /proc, ip route и termios — используйте WSL2 |
| Flag | Эффект |
|---|
| (без флагов) | Установка по умолчанию: системные пакеты + venv + зависимости Python + самопроверка |
--force | Удалить и пересоздать venv с нуля (используйте после обновления Python) |
--symlink | Также установить /usr/local/bin/sunsetscan, чтобы можно было запускать sunsetscan откуда угодно |
--no-system | Пропустить шаг с apt/dnf и т.д. (используйте, если системные инструменты уже установлены) |
--help | Показать все опции |
| Checker | Что обнаруживает |
|---|
| SSL/TLS | Просроченные/самоподписанные сертификаты, слабые шифры, TLS 1.0/1.1, SSL 2.0/3.0, маленькие RSA-ключи |
| SSH | Слабый обмен ключами, слабые шифры/MAC, SSHv1, маленькие ключи хоста, анализ сырых KEXINIT |
| SMB | SMBv1, EternalBlue (MS17-010), анонимные общие папки, отключена подпись SMB, раскрытие NTLM |
| FTP | Анонимный вход, открытые учётные данные, отсутствие STARTTLS |
| SNMP | Стандартные community-строки (public/private), SNMPv1, извлечение sysDescr |
| Web | Отсутствие заголовков безопасности, формы входа через HTTP, листинг каталогов, раскрытые панели администратора |
| DNS | Обнаружение подмены DNS (сравнение с Cloudflare 1.1.1.1) |
| UPnP | Обнаружение SSDP, раскрытие WAN-порт-маппинга на маршрутизаторах |
| mDNS | Обнаружение устройств Zeroconf/Bonjour, находит хосты, избегающие сканирования портов |
| ARP | Обнаружение ARP-спуфинга, отслеживание изменений MAC-адресов (требуются права root) |
| Default credentials | Выборочный аудит заводских учётных данных с точным сопоставлением устройства/модели, ограниченными попытками и задержками |
| Insecure protocols | Telnet, FTP, TFTP, rsh, rlogin, rexec помечены по степени серьёзности |
| Модуль | Источник | Что добавляет |
|---|
credentials-mini | danielmiessler/SecLists | Топ-50 стандартных учётных данных (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках) |
credentials-full | ihebski/DefaultCreds-cheat-sheet | Более 2860 вендор-специфичных учётных данных (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках) |
wappalyzer-mini | enthec/webappanalyzer | Топ-500 веб-технологий (по умолчанию) |
wappalyzer-full | enthec/webappanalyzer | Все 7515 веб-технологий |
ja3-signatures | salesforce/ja3 | База данных TLS-отпечатков |
snmp-community | danielmiessler/SecLists | Расширенные community-строки SNMP |
camera-credentials | many-passwords/many-passwords | Стандартные учётные данные IP-камер/DVR/NVR (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках) |
mac-oui | IEEE Standards Association | База данных вендоров по MAC-префиксам (по умолчанию) |
hardware-eol-home | NoCoderRandom/sunsetscan | Профиль жизненного цикла/EOL для домашнего/малого офиса (по умолчанию; лицензия базы данных: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | Профиль жизненного цикла/EOL для дома и малого офиса |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | Профиль жизненного цикла/EOL для дома, офиса и предприятия/кампуса/ЦОД |
hardware-eol-industrial | NoCoderRandom/sunsetscan | Профиль жизненного цикла/EOL для дома, офиса и промышленного/OT-оборудования |
hardware-eol-service-provider | NoCoderRandom/sunsetscan | Профиль жизненного цикла/EOL для дома, офиса, предприятия и поставщиков услуг |
hardware-eol-full | NoCoderRandom/sunsetscan | Полный профиль жизненного цикла/EOL с умными пакетами |
hardware-eol | NoCoderRandom/sunsetscan | Устаревший полный модуль совместимости жизненного цикла/EOL оборудования |
| 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 |
| Файл | Содержимое | Интервал обновления |
|---|
data/cache/cve_cache.json | Данные CVE с ключом product:version | Каждые 7 дней |
data/cache/*.json | Даты EOL для 150+ продуктов, хранятся для каждого продукта | Каждые 30 дней |
data/cache/hardware_eol/sunsetscan_hardware_eol_index.json плюс records/*.json | База данных жизненного цикла/EOL оборудования | Каждые 30 дней |
data/cache/hardware_eol/manifest.json, indexes/*.json и records/<pack>/*.json | Профили жизненного цикла/EOL оборудования Smart-pack | Каждые 30 дней |
data/cache/cache_meta.json | Временные метки последних обновлений | Автоматически |
| sunsetscan --cache-status # See current cache state | ||
| sunsetscan --update-cache # Refresh stale caches |
| Известный MAC на другом IP (обычно нормальный DHCP) |
| Ранее виденное устройство не в сети | Информация | Базовое устройство не отвечает |