Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
sunsetscan — 利用EOL、CVE、设备身份和HTML报告进行本地网络安全审计 | Kitploit
工具/GitHubGitHub/nocoderrandom/sunsetscan
侦察漏洞扫描器物联网安全密码攻击配置审计信息收集网络安全
GitHubnocoderrandom/sunsetscan

sunsetscan

利用EOL、CVE、设备身份和HTML报告进行本地网络安全审计

查看仓库
32个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

SunsetScan

面向人类的网络安全审计工具 — 基于 nmap 构建,人人可用。

[Version] Python 3.9+ Platform License: MIT Hardware DB License: CC BY-NC 4.0 Requires: nmap CVE data: OSV.dev

网站:sunsetscan.com


SunsetScan 是一款本地网络安全审计工具,专为家庭网络所有者与 IT 人员设计,让你不必学习 nmap 语法就能享受其深层扫描能力。只需指向你的网络,它就能发现所有活跃设备、识别运行的软件指纹、对照已知漏洞数据库与生命周期终止记录进行核查、探测 Web 接口的常见弱点、可选地执行锁定安全型的出厂默认凭据审计,并生成一份包含通俗易懂的解释与修复每项发现的分步编号说明的干净 HTML 报告。该工具完全只读且无破坏性——绝不会修改你网络上的任何内容。


平台支持

为什么推荐 Linux? SunsetScan 依赖原始套接字(ARP 扫描、被动数据包捕获)、Linux 专用 API(/proc、ip route)以及权限检查(os.geteuid()),这些在原生 Windows 上均不可用。WSL2 提供了完整的 Linux 内核,是 Windows 用户的推荐运行途径。


安装

SunsetScan 附带一个安装程序,它会负责处理系统工具(nmap、masscan、git、python3-venv),创建一个项目本地的 Python 虚拟环境,并将所有 Python 依赖安装到该环境中。你永远不需要以 root 身份执行 pip install——这在使用现代 Debian/Pi OS 时非常重要,详见下方的为什么要用 venv?。

第一级平台(经过全面测试)

Debian、Ubuntu、Raspberry Pi OS(Bookworm 及更新版本)、Linux Mint、Pop!_OS。

第二级平台(尽力支持,使用相同脚本)

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

./sunsetscan 启动器会自动激活虚拟环境 — 你永远不需要手动执行 source venv/bin/activate。对于需要原始套接字的扫描,使用 sudo,但请以普通用户身份运行 --setup、--download 和 --update-cache,以便 TUI 中的缓存文件保持可写。

安装程序标志

重新运行 ./install.sh 是安全的且幂等的 — 它会检测现有组件并重复利用它们。

为什么使用虚拟环境?

现代基于 Debian 的发行版(Debian Bookworm、Raspberry Pi OS Bookworm、Ubuntu 23.04+)内置了 PEP 668 强制机制。这使得以 root 身份针对系统 Python 运行 pip install 会失败:``` error: externally-managed-environment × This environment is externally managed

root@kitploit:~
Two of SunsetScan's dependencies (`pysnmp` v6 in particular) need newer versions than the apt repositories ship, so a pure-apt install isn't possible. The installer's solution is the standard one: install system tools (nmap, masscan, libpcap, avahi-utils) via apt, and put SunsetScan's Python dependencies in a project-local `./venv` directory. Nothing system-wide is touched, so PEP 668 doesn't apply, and uninstalling SunsetScan is just `rm -rf ~/sunsetscan`.

### 可选:让 SunsetScan 在后台持续运行

在 Raspberry Pi 上对 /24 子网进行全面评估可能需要 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

在 Windows 上使用 WSL2

Windows 不直接支持(SunsetScan 需要原始套接字、/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 中 |
| **OS** | Linux(原生或 WSL2) | 请参阅 [平台支持](#platform-support) |
| **masscan** | 任意版本 | 可选 — 更快的端口发现 |
| **avahi-utils** | 任意版本 | 可选 — 提供 `avahi-browse`,用于可靠地发现 Apple / Bonjour / Sleep-Proxy 设备的 mDNS。若不存在,则回退到 Python 的 `zeroconf`。 |
| **git** | 任意版本 | 可选 — 用于 `--setup` 和 `--update` |
| **权限** | 普通用户 | FULL、STEALTH、SMB 配置文件、ARP 检测和被动捕获需要 root/sudo |

---

## 快速开始```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 中的每个地址
  • 对所有开放端口进行并发 Banner 抓取(50 线程池)
  • 操作系统指纹识别,附带置信度百分比
  • NSE(Nmap 脚本引擎)集成,用于增强设备检测
  • HTTP 指纹识别,识别路由器、摄像头、NAS 设备、打印机和 IoT 设备
  • 自动 root 权限回退:FULL/STEALTH 配置文件在没有 sudo 运行时优雅降级
  • 安全模式适用于低功耗主机、Wi-Fi、WSL/NAT 和验证运行:限制工作线程,跳过广泛的全部端口 masscan 扫描,限制 nmap 端口集,并对每个命令设置扫描超时
  • 并行安全分析——所有每主机检查(SSL、SSH、FTP、SMB、SNMP、Web)跨主机并发运行,并在每个主机内使用线程池
  • 第 7 阶段安全分析在 10 秒内完成,无论网络规模大小
  • 扫描前就绪检查——如果 nmap 缺失、CVE/EOL 数据库为空或默认模块未安装,则发出警告。每次扫描前运行,不阻止扫描。

安全检测

SunsetScan 在全面评估期间运行 12 个安全检测器模块:

漏洞情报

  • CVE 关联——使用 OSV.dev 将检测到的服务版本映射到已知 CVE
  • 软件 EOL 检查——本地缓存的 150+ 软件产品的生命周期数据
  • 硬件生命周期检查——扩展的 SunsetScan 硬件 EOL 数据库,包含 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 提供完整覆盖。完整规范构建目前包含 122 个供应商的 64,245 条记录,但家庭用户只需较小的家庭配置文件。

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` 比较任意两次扫描,查看新增主机、关闭端口、新增/已解决的发现项
- 使用 `--diff --since N` 与 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` | `--setup` 的 EOL 数据库大小:mini、normal、large(默认:normal) | 否 |
| `--history` | 显示扫描历史表格并退出 | 否 |
| `--diff` | 差异对比最近两次保存的扫描并退出 | 否 |
| `--since DAYS` | 与 `--diff` 结合:与至少 N 天前的扫描进行比较 | 否 |
| `--check-version` | 检查 GitHub 上更新的 SunsetScan 版本 | 否 |
| `--update` | 从 GitHub 拉取最新代码并重新安装依赖 | 否 |
| `--verbose` | 启用调试日志 | 否 |
| `--no-color` | 禁用彩色输出(适用于日志文件) | 否 |
| `--quiet` | 抑制进度条(仍显示发现项) | 否 |
| `--safe-mode` | 强制更温和的扫描:限制 nmap、降低 masscan 使用、更少 worker、跳过重探测 | 否 |
| `--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 检查 |

> **提示:** 未使用 sudo 运行时,FULL 和 STEALTH 会自动回退到非 root 标志。操作系统检测将不可用,但端口扫描和服务检测仍然有效。

### 默认密码审计安全

默认密码测试永远不会自动启用。在 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变更低已知MAC在不同IP上(通常为正常DHCP)
之前见过的设备离线信息基线设备未响应

注意: 基线需要通过nmap进行MAC地址检测,需要root/sudo权限。


HTML报告

每次 --full-assessment 都会生成一个自包含的HTML报告,包含:

  • 严重性仪表盘 — 徽章计数(Critical/High/Medium/Low/Info)、颜色条、摘要统计
  • 风险评分 — 每个设备0-100评分,带风险等级标签
  • 所有发现表格 — 所有主机的每个发现,按严重性排序
  • 每个主机部分 — 每个设备的可折叠部分,包含发现卡片、开放端口表格、EOL状态
  • 发现卡片 — 严重性徽章、标题、“发现了什么”、“这意味着什么”(通俗英语)、“该做什么”(编号步骤)、证据、CVE ID
  • 建议 — 按优先级排列的操作列表

报告可在任何浏览器中打开,无需互联网。


设备识别

SunsetScan通过结合来自14个不同来源的证据自动识别网络设备。每个来源贡献一个供应商、型号、版本或设备类型,并附带一个置信度分数。融合算法对同意的来源进行求和(对多源一致给予加分),并对冲突的证据进行扣分。

快速资产清单

要查看网络上的内容而不运行安全检查:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24

root@kitploit:~
这会执行端口扫描并抓取横幅,打印设备识别表。无需安全分析,无需报告——仅快速盘点。

### 证据来源

| 来源 | 读取内容 | 置信度 |
|--------|--------------|------------|
| MAC OUI | 来自 MAC 地址的 IEEE 厂商前缀 | 0.40-0.45 |
| nmap OS | OS 指纹猜测 | 不固定 |
| HTTP 指纹 | 来自 Web UI 的设备类型、型号、固件 | 0.50+ |
| HTTP 头 | Server、X-Powered-By 响应头 | 0.20-0.50 |
| TLS 证书 | CN、颁发者、组织字段 | 0.35 |
| SSH 横幅 | SSH 守护进程识别字符串 | 0.10-0.70 |
| UPnP | SSDP 制造商、型号、设备类型 | 0.75 |
| SNMP sysDescr | 来自 SNMP MIB 的系统描述 | 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 服务 | 服务产品和版本字段 | 0.45 |

识别结果出现在:
- 终端设备清单表(扫描期间及通过 `--identify`)
- HTML 报告拓扑卡及设备清单部分
- JSON 导出中的 `device_identities` 部分
- 交互模式菜单选项 [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:~
**权限被拒绝 / 操作系统检测无法工作**

FULL、STEALTH 和 SMB 配置文件需要提升的权限。没有 root 权限,这些配置文件会自动回退到非 root 标志(禁用操作系统检测和 SYN 扫描,但端口/版本扫描仍然有效)。```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

Scans work fine with stale data. Run --update-cache to refresh.

下载模块时权限被拒绝

如果模块下载失败,并出现 Permission denied: .../data/cache/... 错误,则缓存可能由 sudo 创建。请先修复所有权问题,然后以普通用户身份运行 setup 并下载模块:```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 许可证授权——版权 © 2024 SunsetScan 贡献者。

仅 data/hardware_eol/ 下的 SunsetScan 硬件 EOL 数据库工件另行许可:该数据库采用知识共享署名-非商业性使用 4.0 国际许可协议(CC BY-NC 4.0)授权。详见 data/hardware_eol/LICENSE.md。


致谢

  • nmap — 扫描引擎
  • python-nmap — Python nmap 接口
  • OSV.dev — 漏洞数据库
  • Rich — 终端格式化
  • Jinja2 — HTML 报告模板
  • cryptography — TLS 证书检查
  • scapy — 原始数据包捕获与 ARP 扫描
  • danielmiessler/SecLists — 凭据与 SNMP 列表
  • ihebski/DefaultCreds-cheat-sheet — 供应商默认凭据
  • enthec/webappanalyzer — Web 技术检测
  • salesforce/ja3 — TLS 指纹识别
  • many-passwords — 摄像头/DVR 凭据
下载工具
平台支持级别备注
Linux (Debian, Ubuntu, Fedora, Arch 等)完全支持最佳体验——所有功能原生运行
WSL2 (适用于 Linux 的 Windows 子系统)完全支持在 Windows 机器上运行的首选方式
macOS部分支持核心扫描可用;部分功能(ARP、被动捕获)可能需要额外设置
Windows (原生 CMD/PowerShell)不支持缺少原始套接字、os.geteuid()、/proc、ip route 和 termios ——请改用 WSL2
标志效果
(无标志)默认安装:系统包 + 虚拟环境 + Python 依赖 + 自检
--force从零开始删除并重建虚拟环境(升级 Python 后使用)
--symlink同时在 /usr/local/bin/sunsetscan 创建符号链接,以便你从任何位置运行 sunsetscan
--no-system跳过 apt/dnf 等步骤(如果系统工具已安装则使用)
--help显示所有选项
检测器检测内容
SSL/TLS过期/自签名证书、弱密码套件、TLS 1.0/1.1、SSL 2.0/3.0、小 RSA 密钥
SSH弱密钥交换、弱密码/MAC、SSHv1、小主机密钥、原始 KEXINIT 分析
SMBSMBv1、永恒之蓝(MS17-010)、匿名共享、SMB 签名禁用、NTLM 泄露
FTP匿名登录、明文凭据、缺少 STARTTLS
SNMP默认社区字符串(public/private)、SNMPv1、sysDescr 提取
Web缺少安全标头、HTTP 登录表单、目录列表、暴露的管理面板
DNSDNS 劫持检测(与 Cloudflare 1.1.1.1 对比)
UPnPSSDP 发现、路由器 WAN 端口映射暴露
mDNSZeroconf/Bonjour 设备发现,找到逃避端口扫描的主机
ARPARP 欺骗检测、MAC 地址更改跟踪(需要 root 权限)
默认凭据选择性加入的出厂默认审计,使用精确设备/型号匹配、限制尝试次数和延迟
不安全协议Telnet、FTP、TFTP、rsh、rlogin、rexec 按严重性标记
模块来源添加内容
credentials-minidanielmiessler/SecLists前 50 个默认凭据(可下载参考数据;除非在设置中明确启用,否则安全审计不使用)
credentials-fullihebski/DefaultCreds-cheat-sheet2860+ 个供应商特定凭据(可下载参考数据;除非在设置中明确启用,否则安全审计不使用)
wappalyzer-minienthec/webappanalyzer前 500 个 Web 技术(默认)
wappalyzer-fullenthec/webappanalyzer所有 7515 个 Web 技术
ja3-signaturessalesforce/ja3TLS 指纹数据库
snmp-communitydanielmiessler/SecLists扩展的 SNMP 社区字符串
camera-credentialsmany-passwords/many-passwordsIP 摄像头/DVR/NVR 默认凭据(可下载参考数据;除非在设置中明确启用,否则安全审计不使用)
mac-ouiIEEE Standards AssociationMAC 前缀供应商数据库(默认)
hardware-eol-homeNoCoderRandom/sunsetscan家庭/SOHO 硬件生命周期/EOL 配置文件(默认;数据库许可证:CC BY-NC 4.0)
hardware-eol-officeNoCoderRandom/sunsetscan家庭加小型办公室硬件生命周期/EOL 配置文件
hardware-eol-enterpriseNoCoderRandom/sunsetscan家庭、办公室和企业/园区/数据中心硬件生命周期/EOL 配置文件
hardware-eol-industrialNoCoderRandom/sunsetscan家庭、办公室和工业/OT 硬件生命周期/EOL 配置文件
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以 product:version 为键的 CVE 数据每 7 天
data/cache/*.json150 多种产品的 EOL 日期,按产品存储每 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 配置文件每 30 天
data/cache/cache_meta.json上次更新时间戳自动
sunsetscan --cache-status # See current cache state
sunsetscan --update-cache # Refresh stale caches