
人間のためのネットワークセキュリティ監査 — nmap を基盤に、誰でも使えるように。
Website: sunsetscan.com
SunsetScan は、家庭ネットワークの管理者や IT スタッフを対象としたローカルネットワークセキュリティ監査ツールです。nmap の深みを活かしながら、nmap の構文を覚える必要はありません。ネットワークを指定すると、アクティブなデバイスをすべて検出し、実行中のソフトウェアをフィンガープリントし、既知の脆弱性データベースやサポート終了情報と照合し、Web インターフェースの一般的な脆弱性を調査し、必要に応じてロックアウト耐性のある工場出荷時デフォルト認証情報の監査を実行し、平易な英語の説明と各発見事項を修正するための番号付き手順を含む、きれいな HTML レポートを生成します。完全に読み取り専用で非破壊的 — ネットワーク上のどのデバイスも変更されることはありません。
なぜ Linux なのか? SunsetScan は、raw ソケット (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。
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 ランチャーは自動的に venv を有効化するため、source venv/bin/activate を実行する必要は一切ありません。raw ソケットを必要とするスキャンでは sudo を使用しますが、--setup、--download、--update-cache は通常ユーザーとして実行し、キャッシュファイルが TUI から書き込み可能な状態を維持します。
./install.sh の再実行は安全で冪等性があります — 既存のコンポーネントを検出して再利用します。
最近の Debian ベースのディストリビューション (Debian Bookworm、Raspberry Pi OS Bookworm、Ubuntu 23.04+) には PEP 668 の強制が実装されています。これにより、システム Python に対して root として pip install を実行すると 失敗 します。```
error: externally-managed-environment
× This environment is externally managed
SunsetScanの依存関係(特に`pysnmp` v6)のうち2つは、aptリポジトリが提供するバージョンよりも新しいバージョンを必要とするため、aptのみでのインストールはできません。インストーラの解決策は標準的なものです:システムツール(nmap、masscan、libpcap、avahi-utils)はaptでインストールし、SunsetScanのPython依存関係はプロジェクトローカルの`./venv`ディレクトリに配置します。システム全体には何も触れないため、PEP 668は適用されず、SunsetScanのアンインストールは`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.
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 ソケット、/proc、os.geteuid を必要とします)が、WSL2 では問題なく動作します:```powershell
wsl --install -d Ubuntu # in PowerShell, as Administrator
再起動して、スタートメニューから **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
SunsetScanはフルアセスメント中に12のセキュリティチェッカーモジュールを実行します:
hardware-eol-homeデフォルトプロファイルを使用し、オフィス、エンタープライズ、産業、サービスプロバイダー、フルプロファイルはより広範囲なスキャンで利用可能です。--setup、--update-cache、--downloadでのみ接続されます。キャッシュが存在する限り、スキャンはインターネット接続なしでも動作します。--identifyフラグでセキュリティチェックをスキップSunsetScanには、検出機能を拡張するダウンロード可能なデータモジュールとハードウェアEOLプロファイルが含まれています:
ハードウェアライフサイクルデータベースはスマートなダウンロード可能プロファイルに分割されました: hardware-eol-homeがデフォルトインストールで、hardware-eol-fullが完全なカバレッジを提供します。フルカノニカルビルドには現在122ベンダーにわたる64,245レコードが含まれていますが、ホームユーザーは小さなホームプロファイルのみが必要です。
### 不正デバイス検出
- ネットワークのスナップショットを信頼できるベースラインとして保存
- 以降のスキャンでベースラインにない未知のMACアドレスを自動的にフラグ付け
- 予期しないIPアドレス上にある既知のデバイスを検出
### リスクスコアリング
各デバイスは、発見された項目の重大度と数に基づいてリスクスコア(0-100)を受け取ります:
| スコア | バンド |
|---|---|
| 0-10 | 最小リスク |
| 11-30 | 低リスク |
| 31-60 | 中リスク |
| 61-80 | 高リスク |
| 81-100 | 致命的リスク |
### レポート機能
- **プロフェッショナルなHTMLレポート** — 重大度ダッシュボード、ホストごとのセクション、平易な英語による説明付きの発見カード、優先順位付けされた推奨事項
- **JSONエクスポート** — 機械可読な構造化出力
- レポートは完全に自己完結型 — 1つのHTMLファイルで、外部依存関係なし
- SMBなどの狭いプロファイルでも、一致するサービスポートが開いていない場合でも、発見されたホストはレポートに表示されます
- DNS、UPnP、スキャン実行時間メモなどのネットワークレベルチェックは、デバイスごとの発見から分離されます。デバイスのリスクスコアは実際のホストに対してのみ表示されます
- すべての発見は色分け: Critical (致命的)、High (高)、Medium (中)、Low (低)、Info (情報)
### スキャン履歴と差分表示
- すべてのスキャンはgzip圧縮されたJSONスナップショットとして自動保存されます
- `--history` で過去のスキャンを表示
- `--diff` で任意の2つのスキャンを比較し、新しいホスト、閉じたポート、新規/解決済みの発見を確認
- `--diff --since N` でN日前のスキャンと比較
- 履歴はデフォルトで90日間保持
### ユーザーインターフェース
- ガイド付き**インタラクティブモード** (`-i`) — スキャン、分析、エクスポート、モジュールのための多階層メニュー
- **旧式メニュー** — 引数なしで実行すると起動
- 直接CLIモード — スクリプト化および自動化に適しています
- プログレスバー、スピナー、サマリーパネルを備えたリッチなカラー端末出力
---
## All CLI Flags
| Flag | Description | Root |
|---|---|---|
| `--target TARGET` | スキャンするIP、CIDR範囲、ホスト名、または範囲 | いいえ |
| `--profile PROFILE` | スキャンプロファイル: QUICK, FULL, STEALTH, PING, IOT, SMB (デフォルト: QUICK) | 異なる |
| `-i`, `--interactive` | ガイド付きインタラクティブモードを起動 | いいえ |
| `--full-assessment` | 完全な評価 + 自動HTMLエクスポート; 認証情報監査はオプトインのまま | いいえ |
| `--identify` | デバイス識別のみ実行(セキュリティチェックをスキップ) | いいえ |
| `--nse` | 拡張検出のためにNmap Scripting Engineを有効化 | いいえ |
| `--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` | 最後に保存された2つのスキャンの差分を表示して終了 | いいえ |
| `--since DAYS` | `--diff`と併用: 少なくともN日前のスキャンと比較 | いいえ |
| `--check-version` | GitHub上の新しいSunsetScanリリースを確認 | いいえ |
| `--update` | GitHubから最新コードを取得し、依存関係を再インストール | いいえ |
| `--verbose` | デバッグログを有効化 | いいえ |
| `--no-color` | カラー出力を無効化(ログファイルに便利) | いいえ |
| `--quiet` | プログレスバーを抑制(発見は引き続き表示) | いいえ |
| `--safe-mode` | より穏やかなスキャンを強制: nmapの範囲制限、masscanの使用量低減、ワーカー数削減、重量プローブスキップ | いいえ |
| `--no-safe-mode` | 自動セーフモードを無効化 | いいえ |
| `--version` | バージョン番号を表示して終了 | いいえ |
---
## Scan Profiles
| プロファイル | nmapフラグ | 速度 | ルート | 最適な用途 |
|---|---|---|---|---|
| **PING** | `-sn` | ~30s | いいえ | アクティブなデバイスを迅速に発見 |
| **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は、sudoなしで実行すると自動的に非ルートフラグにフォールバックします。OS検出は利用できなくなりますが、ポートスキャンとサービス検出は引き続き機能します。
### デフォルトパスワード監査の安全性
デフォルトパスワードのテストは自動的に有効になりません。CLIモードでは `--check-defaults` を追加し、ガイド付き `-i` モードでは、プロンプトが表示されたらデフォルトパスワード監査を選択します。SunsetScanはその後、控えめなポリシーを適用します:
- デフォルトでは一般的なユーザー名/パスワードのスプレー攻撃は行いません
- 検出されたベンダーとモデル/ファミリに一致する資格情報のみをテストします
- 多くのHPプリンタのような独自のラベル/PINデフォルトを持つデバイスはスキップします
- デフォルトではホストあたり最大2回、サービスあたり1回の試行に制限
- 資格情報を伴う試行の間に2秒待機
- デバイスがロックアウトまたはレート制限シグナルを返した場合、即座に停止
組み込みデータベースは意図的に小さく、ソースに基づいています。ダウンロードされた大規模な資格情報モジュールは参照データとして保持されますが、開発者が `Settings.auth_allow_module_credentials` を明示的に有効にしない限り、安全な監査ではそれらを使用しません。
### セーフモードと検証実行
セーフモードは、低電力ホスト、Pi-hole/ゲートウェイアプライアンスのように見えるホスト、およびWi-Fi egressで自動的に推奨されます。また、以下の方法で強制することもできます:```bash
python3 sunsetscan.py --full-assessment --target 192.168.1.0/24 --safe-mode
In safe mode SunsetScan:
-i モードと同じ安全なスキャナー動作を適用しますFor root-assisted regression testing across all modes, use the validation collector:```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変更 | 低 | 既知のMACが異なるIPにある(通常は正常なDHCP) |
| 以前に確認したデバイスがオフライン | 情報 | ベースラインデバイスが応答しない |
注意: ベースラインでは、nmapによるMACアドレス検出にroot/sudoが必要です。
すべての --full-assessment は、自己完結型のHTMLレポートを生成します。内容は以下のとおりです。
レポートはインターネット接続不要で任意のブラウザで開けます。
SunsetScanは、14の異なるソースからの証拠を組み合わせてネットワークデバイスを自動的に識別します。各ソースは、ベンダー、モデル、バージョン、またはデバイスタイプを信頼度スコアとともに提供します。融合アルゴリズムは、一致するソースを合計し(複数ソースの一致に対するボーナスあり)、矛盾する証拠にペナルティを課します。
セキュリティチェックを実行せずにネットワーク上のデバイスを確認するには:```bash python3 sunsetscan.py --identify --target 192.168.1.0/24
これはポートスキャンを実行し、バナーグラブを行い、デバイス識別テーブルを表示します。セキュリティ分析もレポートもなく、高速なインベントリ取得だけです。
### エビデンスソース
| ソース | 読み取る内容 | 信頼度 |
|--------|--------------|------------|
| 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 services | サービスの製品とバージョンフィールド | 0.45 |
識別結果は以下に表示されます:
- 端末デバイスインベントリテーブル(スキャン中および `--identify` 経由)
- HTMLレポートのトポロジーカードとデバイスインベントリセクション
- JSONエクスポートの `device_identities` セクション
- 対話モードのメニューオプション [8] デバイスインベントリ
---
## 深刻度レベル
| レベル | 色 | CVSS範囲 | 意味 | 対応時期 |
|---|---|---|---|---|
| **CRITICAL** | 赤 | >= 9.0 | デフォルト認証情報、悪用可能なCVE、SSL 2.0 | 今日中 |
| **HIGH** | オレンジ | 7.0-8.9 | Telnet/FTP開放、証明書期限切れ、TLS 1.0、EOLソフトウェア | 今週中 |
| **MEDIUM** | 黄 | 4.0-6.9 | 自己署名証明書、UPnP露出、不正デバイス、HSTS欠如 | 修正予定を計画 |
| **LOW** | 青 | < 4.0 | EOL接近、X-Frame-Options欠如、デバイスIP変更 | 追跡と計画 |
| **INFO** | グレー | - | デバイス識別済み、証明書詳細、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検出が機能していません**
FULL、STEALTH、SMBプロファイルは昇格された特権を必要とします。root権限がない場合、これらのプロファイルは自動的に非rootフラグにフォールバックします(OS検出と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
**スキャン開始時のキャッシュ警告**```
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 while downloading modules
If module downloads fail with Permission denied: .../data/cache/..., the
cache was probably created by sudo. Fix the ownership once, then run setup
and module downloads as your normal user:
スキャンは古いデータでも正常に動作します。--update-cache を実行して更新してください。
モジュールのダウンロード中にPermission deniedエラー
モジュールのダウンロードが 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。
data/hardware_eol/以下のSunsetScanハードウェア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 Subsystem for Linux) | 完全サポート | Windows マシンで実行する場合の推奨方法 |
| macOS | 部分サポート | コアスキャンは動作しますが、一部の機能 (ARP、パッシブキャプチャ) は追加の設定が必要な場合があります |
| Windows (ネイティブ CMD/PowerShell) | 非サポート | raw ソケット、os.geteuid()、/proc、ip route、termios がないため — 代わりに WSL2 を使用してください |
| フラグ | 効果 |
|---|
| (フラグなし) | デフォルトインストール: システムパッケージ + venv + Python依存関係 + セルフテスト |
--force | venv を削除して最初から再構築します (Python アップグレード後に使用) |
--symlink | さらに /usr/local/bin/sunsetscan をインストールし、どこからでも sunsetscan を実行できるようにします |
--no-system | apt/dnf/etc のステップをスキップします (システムツールが既にインストールされている場合に使用) |
--help | すべてのオプションを表示 |
| チェッカー | 検出内容 |
|---|
| 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 | デフォルトコミュニティ文字列 (public/private)、SNMPv1、sysDescr抽出 |
| Web | セキュリティヘッダーの欠如、HTTP上のログインフォーム、ディレクトリリスティング、露出した管理パネル |
| DNS | DNSハイジャック検出 (Cloudflare 1.1.1.1と比較) |
| UPnP | SSDP検出、ルーター上のWANポートマッピング露出 |
| mDNS | Zeroconf/Bonjourデバイス検出、ポートスキャンを回避するホストを発見 |
| ARP | ARPスプーフィング検出、MACアドレス変更追跡 (ルート権限が必要) |
| 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 | 拡張SNMPコミュニティ文字列 |
camera-credentials | many-passwords/many-passwords | IPカメラ/DVR/NVRのデフォルト(ダウンロード可能な参照データ。設定で明示的に有効にしない限り、安全監査では使用されません) |
mac-oui | IEEE Standards Association | MACプレフィックスベンダーデータベース(デフォルト) |
hardware-eol-home | NoCoderRandom/sunsetscan | ホーム/SOHOハードウェアライフサイクル/EOLプロファイル(デフォルト。データベースライセンス: CC BY-NC 4.0) |
hardware-eol-office | NoCoderRandom/sunsetscan | ホームプラス小規模オフィスのハードウェアライフサイクル/EOLプロファイル |
hardware-eol-enterprise | NoCoderRandom/sunsetscan | ホーム、オフィス、エンタープライズ/キャンパス/データセンターのハードウェアライフサイクル/EOLプロファイル |
hardware-eol-industrial | NoCoderRandom/sunsetscan | ホーム、オフィス、産業用/OTのハードウェアライフサイクル/EOLプロファイル |
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データ | 7日ごと |
data/cache/*.json | 150以上の製品の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 |