Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
sunsetscan — Аудит безопасности локальной сети с поддержкой EOL, CVE, идентификации устройств и HTML-отчётов | Kitploit
Инструменты/GitHubGitHub/nocoderrandom/sunsetscan
РазведкаСканеры уязвимостейБезопасность IoTАтаки на ПаролиАудит конфигурацииСбор информацииСетевая безопасность
GitHubnocoderrandom/sunsetscan

sunsetscan

Аудит безопасности локальной сети с поддержкой EOL, CVE, идентификации устройств и HTML-отчётов

Репозиторий
32 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

SunsetScan

Сетевой аудит безопасности для людей — на основе nmap, создан для всех.

[Версия] Python 3.9+ Платформа Лицензия: MIT Лицензия аппаратной БД: CC BY-NC 4.0 Требуется: nmap Данные CVE: OSV.dev

Веб-сайт: 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? ниже.

Платформы Tier-1 (полностью протестированы)

Debian, Ubuntu, Raspberry Pi OS (Bookworm и новее), Linux Mint, Pop!_OS.

Платформы Tier-2 (по возможности, тот же скрипт)

Fedora, RHEL, CentOS, Rocky, Alma, Arch, Manjaro, openSUSE, macOS.

Четыре способа установки — выберите один

1. Пакет для Debian/Ubuntu

Рекомендуется для 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

root@kitploit:~
#### 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

root@kitploit:~
> **Примечание о `curl | bash`**: это удобно, но означает выполнение скрипта, который вы не прочитали. Если вы предпочитаете сначала проверить, используйте вариант 3 или 4.

#### 3. Клонирование и установка```bash
git clone https://github.com/NoCoderRandom/sunsetscan.git
cd sunsetscan
./install.sh

4. Ручная установка (полный контроль, четыре команды)```bash

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

root@kitploit:~
(Замените `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.

Installer flags

Повторный запуск ./install.sh безопасен и идемпотентен — он обнаруживает существующие компоненты и повторно использует их.

Зачем venv?

Современные дистрибутивы на основе 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

root@kitploit:~
Две зависимости 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.

Обновление SunsetScan```bash

cd ~/sunsetscan git pull ./install.sh # idempotent — picks up any new dependencies

root@kitploit:~
### Удаление```bash
rm -rf ~/sunsetscan
sudo rm -f /usr/local/bin/sunsetscan    # only if you used --symlink

WSL2 on Windows

Windows не поддерживается напрямую (SunsetScan требует raw sockets, /proc и os.geteuid), но WSL2 работает отлично:```powershell wsl --install -d Ubuntu # in PowerShell, as Administrator

root@kitploit:~
Перезапустите, откройте **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

Возможности

Обнаружение сети

  • Обнаруживает все активные хосты с помощью быстрого ping-сканирования
  • Разрешает имена хостов и определяет MAC-адреса с поиском производителя/вендора
  • Гибкий ввод целей: CIDR, маска, диапазон IP, разделенные запятыми или имя хоста
  • Опциональная интеграция masscan для более быстрого обнаружения портов в больших сетях
  • Гибридное сканирование: пассивный захват в фоне (mDNS/SSDP/DHCP) в сочетании с активным сканированием

Сканирование портов и служб

  • Шесть профилей сканирования: QUICK, FULL, STEALTH, PING, IOT, SMB
  • Полные оценки сначала обнаруживают активные хосты, затем сканируют службы только на обнаруженных хостах, а не слепо проверяют каждый адрес в целевом CIDR
  • Одновременный захват баннеров на всех открытых портах (пул из 50 потоков)
  • Определение ОС с процентом достоверности
  • Интеграция NSE (Nmap Scripting Engine) для улучшенного обнаружения устройств
  • HTTP-фотопечать для идентификации маршрутизаторов, камер, NAS-устройств, принтеров и IoT
  • Автоматический откат при недостаточных привилегиях: профили FULL/STEALTH корректно понижают возможности при запуске без sudo
  • Безопасный режим для устройств с низким энергопотреблением, Wi-Fi, WSL/NAT и проверочных запусков: ограничивает количество рабочих процессов, пропускает широкие all-port masscan-сканирования, ограничивает наборы портов nmap и применяет таймауты на каждую команду сканирования
  • Параллельный анализ безопасности — все проверки на хост (SSL, SSH, FTP, SMB, SNMP, Web) выполняются одновременно на всех хостах и внутри каждого хоста с использованием пулов потоков
  • Фаза 7 анализа безопасности завершается менее чем за 10 секунд независимо от размера сети
  • Предварительная проверка готовности к сканированию — предупреждает, если nmap отсутствует, базы CVE/EOL пусты или не установлены стандартные модули. Выполняется перед каждым сканированием, не блокирует сканирование.

Проверки безопасности

SunsetScan запускает 12 модулей проверки безопасности при полной оценке:

Интеллект уязвимостей

  • Корреляция CVE — сопоставляет обнаруженные версии служб с известными CVE с помощью OSV.dev
  • Проверка окончания срока поддержки ПО — локальные кэшированные данные о жизненном цикле для более чем 150 программных продуктов
  • Проверка жизненного цикла оборудования — расширенная база данных EOL оборудования SunsetScan с 64 245 записями о жизненном цикле, 51 452 сводками по моделям и 122 представленными вендорами. Отмечает маршрутизаторы, коммутаторы, NAS, камеры, принтеры, точки доступа, промышленное/OT-оборудование и оборудование поставщиков услуг с подтверждённым неподдерживаемым статусом или сигналами жизненного цикла от вендора, требующими проверки.
  • Умные профили EOL оборудования — домашние пользователи получают меньший профиль по умолчанию hardware-eol-home, в то время как для более широких сканирований доступны офисные, корпоративные, промышленные, сервис-провайдеров и полные профили.
  • JA3S TLS-отпечатки — идентифицирует серверное ПО по сигнатурам TLS-рукопожатия
  • Полностью офлайн во время сканирования — во время сканирования не выполняются внешние вызовы API. Источники программного EOL, CVE и модулей GitHub запрашиваются только с помощью --setup, --update-cache и --download. Сканирования работают без подключения к интернету при условии заполненных кэшей.
  • Еженедельное обновление CVE, ежемесячное обновление EOL — управляется вами

Идентификация устройств

  • 14 извлекателей доказательств объединяют MAC OUI, nmap OS, HTTP-отпечатки, сертификаты TLS, SSH-баннеры, UPnP, SNMP sysDescr, Wappalyzer, mDNS, JA3S TLS-отпечатки, FTP-баннеры, эвристику портов и поля служб nmap в единую идентификацию устройства для каждого хоста
  • Определяет вендора, модель, версию прошивки и тип устройства с оценкой достоверности (бонусы за согласованность, когда несколько источников подтверждают)
  • Поддерживает более 130 синонимов вендоров для нормализации имён
  • Результаты отображаются в таблице терминала и отчёте HTML-инвентаризации устройств
  • Быстрый режим инвентаризации активов: флаг --identify пропускает проверки безопасности
  • Постоянное сопоставление MAC-адресов с идентификацией при повторных сканированиях

Модульная система данных

SunsetScan включает загружаемые модули данных и профили EOL оборудования, расширяющие возможности обнаружения:

База данных жизненного цикла оборудования теперь разделена на умные загружаемые профили: hardware-eol-home устанавливается по умолчанию, а hardware-eol-full обеспечивает полное покрытие. Полная каноническая сборка в настоящее время содержит 64 245 записей по 122 вендорам, но домашним пользователям требуется только меньший домашний профиль.

root@kitploit:~
### Обнаружение неавторизованных устройств
- Сохраните снимок вашей сети как доверенный базовый профиль
- Будущие сканирования автоматически помечают неизвестные 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:

  • сначала обнаруживает активные хосты и сканирует только их при полной оценке
  • применяет то же безопасное поведение сканера из CLI, старого меню и направленного режима -i
  • удаляет определение ОС из широких сканирований
  • ограничивает широкие STEALTH/FULL сканирования быстрыми/топ-портами
  • пропускает массовые сканирования Masscan всех портов для широких профилей
  • снижает количество рабочих потоков и пропускает тяжелые TLS-зонды
  • применяет таймаут на nmap, чтобы один профиль не мог зависнуть бесконечно

Для регрессионного тестирования с правами root во всех режимах используйте сборщик валидации:```bash sudo bash scripts/sudo_network_validation.sh

root@kitploit:~
По умолчанию он тестирует `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/.

root@kitploit:~
Сканирование работает нормально с устаревшим или отсутствующим кэшем — у вас могут быть устаревшие данные 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.


HTML-отчет

Каждый --full-assessment создает автономный HTML-отчет со следующими элементами:

  • Панель серьезности — количество значков (Critical/High/Medium/Low/Info), цветовая полоса, сводная статистика
  • Оценки риска — оценка 0–100 для каждого устройства с меткой категории риска
  • Таблица всех находок — каждая находка по всем хостам, отсортированная по серьезности
  • Разделы по хостам — сворачиваемый раздел для каждого устройства с карточками находок, таблицей открытых портов, статусом EOL
  • Карточки находок — значок серьезности, заголовок, "Что было найдено", "Что это значит" (простым языком), "Что делать" (нумерованные шаги), доказательства, идентификаторы CVE
  • Рекомендации — приоритизированный список действий

Отчеты открываются в любом браузере без необходимости подключения к интернету.


Идентификация устройств

SunsetScan автоматически идентифицирует сетевые устройства, объединяя данные из 14 различных источников. Каждый источник предоставляет производителя, модель, версию или тип устройства с оценкой достоверности. Алгоритм слияния суммирует совпадающие источники (с бонусами за согласование нескольких источников) и вычитает за противоречивые данные.

Быстрая инвентаризация активов

Чтобы увидеть, что находится в вашей сети без запуска проверок безопасности:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24

root@kitploit:~
Это запускает сканирование портов с захватом баннеров и выводит таблицу идентификации устройств. Никакого анализа безопасности, никаких отчетов — просто быстрая инвентаризация.

### Источники доказательств

| Источник | Что читает | Уверенность |
|--------|--------------|------------|
| 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

Debian/Ubuntu

sudo apt install nmap

Fedora

sudo dnf install nmap

Arch

sudo pacman -S nmap

macOS

brew install nmap

root@kitploit:~
**Отказано в доступе / 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

root@kitploit:~
**Предупреждения о кэше при запуске сканирования**```
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

root@kitploit:~
**Проверки 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.


Благодарности

  • nmap — движок сканирования
  • python-nmap — интерфейс nmap на Python
  • OSV.dev — база данных уязвимостей
  • Rich — форматирование терминала
  • Jinja2 — шаблонизация HTML-отчётов
  • cryptography — проверка TLS-сертификатов
  • scapy — захват сырых пакетов и ARP-сканирование
  • danielmiessler/SecLists — списки учётных данных и SNMP
  • ihebski/DefaultCreds-cheat-sheet — учётные данные производителей
  • enthec/webappanalyzer — обнаружение веб-технологий
  • salesforce/ja3 — TLS-отпечатки
  • many-passwords — учётные данные камер/DVR
Скачать инструмент
ПлатформаУровень поддержкиПримечания
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
SMBSMBv1, 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 protocolsTelnet, FTP, TFTP, rsh, rlogin, rexec помечены по степени серьёзности
МодульИсточникЧто добавляет
credentials-minidanielmiessler/SecListsТоп-50 стандартных учётных данных (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках)
credentials-fullihebski/DefaultCreds-cheat-sheetБолее 2860 вендор-специфичных учётных данных (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках)
wappalyzer-minienthec/webappanalyzerТоп-500 веб-технологий (по умолчанию)
wappalyzer-fullenthec/webappanalyzerВсе 7515 веб-технологий
ja3-signaturessalesforce/ja3База данных TLS-отпечатков
snmp-communitydanielmiessler/SecListsРасширенные community-строки SNMP
camera-credentialsmany-passwords/many-passwordsСтандартные учётные данные IP-камер/DVR/NVR (загружаемые справочные данные; не используются безопасным аудитом, если явно не включено в настройках)
mac-ouiIEEE Standards AssociationБаза данных вендоров по MAC-префиксам (по умолчанию)
hardware-eol-homeNoCoderRandom/sunsetscanПрофиль жизненного цикла/EOL для домашнего/малого офиса (по умолчанию; лицензия базы данных: CC BY-NC 4.0)
hardware-eol-officeNoCoderRandom/sunsetscanПрофиль жизненного цикла/EOL для дома и малого офиса
hardware-eol-enterpriseNoCoderRandom/sunsetscanПрофиль жизненного цикла/EOL для дома, офиса и предприятия/кампуса/ЦОД
hardware-eol-industrialNoCoderRandom/sunsetscanПрофиль жизненного цикла/EOL для дома, офиса и промышленного/OT-оборудования
hardware-eol-service-providerNoCoderRandom/sunsetscanПрофиль жизненного цикла/EOL для дома, офиса, предприятия и поставщиков услуг
hardware-eol-fullNoCoderRandom/sunsetscanПолный профиль жизненного цикла/EOL с умными пакетами
hardware-eolNoCoderRandom/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)
Ранее виденное устройство не в сетиИнформацияБазовое устройство не отвечает