Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/nocoderrandom/sunsetscan
ReconnaissanceVulnerability ScannersIoT SecurityPassword AttacksConfiguration AuditingInformation GatheringNetwork Security
GitHubnocoderrandom/sunsetscan

sunsetscan

로컬 네트워크 보안 감사: EOL, CVE, 장치 식별 및 HTML 보고서 지원

저장소 보기
32개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
sunsetscan — 로컬 네트워크 보안 감사: EOL, CVE, 장치 식별 및 HTML 보고서 지원 | Kitploit
웹사이트

SunsetScan

Network security auditing for humans — powered by nmap, built for everyone.

[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의 깊이를 원하지만 nmap 구문을 배우고 싶지 않은 사람들을 위한 것입니다. 네트워크를 지정하면 모든 활성 장치를 찾고, 실행 중인 소프트웨어를 식별하고, 알려진 취약점 데이터베이스 및 지원 종료 기록과 대조하고, 웹 인터페이스의 일반적인 약점을 검사하고, 선택적으로 잠금 방지 기본 자격 증명 감사를 수행하며, 각 발견 사항을 수정하기 위한 일반 언어 설명과 번호가 매겨진 단계가 포함된 깔끔한 HTML 보고서를 생성합니다. 완전히 읽기 전용이며 비파괴적입니다 — 네트워크의 어떤 것도 수정되지 않습니다.


플랫폼 지원

왜 Linux인가? SunsetScan은 네이티브 Windows에서 사용할 수 없는 raw 소켓(ARP 스캔, 수동 패킷 캡처), Linux 전용 API(/proc, ip route), 권한 확인(os.geteuid())에 의존합니다. WSL2는 완전한 Linux 커널을 제공하며 Windows 사용자에게 권장되는 경로입니다.


설치

SunsetScan에는 시스템 도구(nmap, masscan, git, python3-venv)를 처리하고 프로젝트 로컬 Python 가상 환경을 만든 다음 그 안에 모든 Python 종속성을 설치하는 설치 프로그램이 포함되어 있습니다. root로 pip install을 요청받는 일은 절대 없습니다 — 이는 최신 Debian/Pi OS에서 중요합니다. 아래 Why a 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 실행기는 venv를 자동으로 활성화하므로 source venv/bin/activate를 실행할 필요가 전혀 없습니다. raw 소켓이 필요한 스캔에는 sudo를 사용하되, --setup, --download, --update-cache는 일반 사용자로 실행하여 캐시 파일이 TUI에서 계속 쓰기 가능하도록 유지하세요.

설치 플래그

./install.sh를 다시 실행해도 안전하며 멱등적입니다. 기존 구성 요소를 감지하여 재사용합니다.

왜 venv인가?

최신 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

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분이 걸릴 수 있습니다. SSH 연결이 끊겨도 스캔이 유지되도록 `tmux` 또는 `screen`을 사용하세요:```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은 raw 소켓, /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

기능

네트워크 검색

  • 빠른 핑 스윕을 통해 모든 활성 호스트 검색
  • 호스트 이름 확인 및 공급업체/제조업체 조회로 MAC 주소 감지
  • 유연한 대상 입력: CIDR, 와일드카드, IP 범위, 쉼표로 구분된 목록 또는 호스트 이름
  • 대규모 네트워크에서 더 빠른 포트 검색을 위한 선택적 masscan 통합
  • 하이브리드 스캐닝: 수동적 백그라운드 캡처(mDNS/SSDP/DHCP)와 능동적 스캐닝 결합

포트 및 서비스 스캐닝

  • 6가지 스캔 프로필: QUICK, FULL, STEALTH, PING, IOT, SMB
  • 전체 평가에서는 먼저 활성 호스트를 검색한 후, 대상 CIDR의 모든 주소를 무작정 스캔하는 대신 검색된 호스트만 서비스 스캔합니다
  • 모든 열린 포트에서 동시 배너 그래빙(50스레드 풀)
  • 신뢰도 백분율을 포함한 OS 핑거프린팅
  • 향상된 장치 감지를 위한 NSE(Nmap Scripting Engine) 통합
  • 라우터, 카메라, NAS 장치, 프린터 및 IoT 식별을 위한 HTTP 핑거프린팅
  • 자동 루트 권한 폴백: sudo 없이 실행 시 FULL/STEALTH 프로필이 정상적으로 축소됩니다
  • 저전력 호스트, 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 서비스 필드를 호스트별 통합 장치 ID로 융합합니다
  • 신뢰도 점수로 공급업체, 모델, 펌웨어 버전 및 장치 유형 식별 (여러 소스가 확인 시 일치 보너스)
  • 이름 정규화를 위한 130개 이상의 공급업체 별칭 지원
  • 결과는 터미널 테이블 및 HTML 보고서 장치 인벤토리에 표시됩니다
  • 빠른 자산 인벤토리 모드: --identify 플래그는 보안 검사를 건너뜁니다
  • 스캔 간 지속적인 MAC-대-장치 ID 매핑

모듈형 데이터 시스템

SunsetScan에는 감지 기능을 확장하는 다운로드 가능한 데이터 모듈과 하드웨어 EOL 프로필이 포함되어 있습니다:

하드웨어 수명 주기 데이터베이스는 이제 스마트 다운로드 가능 프로필로 분할되었습니다: hardware-eol-home이 기본 설치이며, hardware-eol-full은 전체 범위를 제공합니다. 전체 표준 빌드에는 현재 122개 공급업체에 걸쳐 64,245개의 레코드가 포함되어 있지만, 홈 사용자는 더 작은 홈 프로필만 있으면 됩니다.

root@kitploit:~
### 불량 장치 탐지
- 신뢰할 수 있는 기준선(baseline)으로 네트워크 스냅샷 저장
- 이후 스캔에서 기준선에 없는 알 수 없는 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 플래그

| 플래그 | 설명 | 루트 |
|---|---|---|
| `--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` | 마지막 두 저장 스캔을 비교하고 종료 | 아니요 |
| `--since DAYS` | `--diff`와 함께: 최소 N일 된 스캔과 비교 | 아니요 |
| `--check-version` | GitHub에서 최신 SunsetScan 릴리스 확인 | 아니요 |
| `--update` | GitHub에서 최신 코드를 가져와 요구 사항 재설치 | 아니요 |
| `--verbose` | 디버그 로깅 활성화 | 아니요 |
| `--no-color` | 색상 출력 비활성화 (로그 파일에 유용) | 아니요 |
| `--quiet` | 진행률 표시줄 숨기기 (발견 항목은 계속 표시) | 아니요 |
| `--safe-mode` | 보다 온화한 스캔 강제: 제한된 nmap, 낮은 masscan 사용, 더 적은 워커, 무거운 프로브 건너뜀 | 아니요 |
| `--no-safe-mode` | 자동 안전 모드 비활성화 | 아니요 |
| `--version` | 버전 번호를 표시하고 종료 | 아니요 |

---

## 스캔 프로필

| 프로필 | nmap 플래그 | 속도 | 루트 | 최적 용도 |
|---|---|---|---|---|
| **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는 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

안전 모드에서 SunsetScan:

  • 활성 호스트를 먼저 발견하고 전체 평가 중에는 해당 호스트만 스캔합니다.
  • CLI, 기존 메뉴, 안내형 -i 모드에서 동일한 안전 스캐너 동작을 적용합니다.
  • 광범위 스캔에서 OS 핑거프린팅을 제거합니다.
  • 광범위 STEALTH/FULL 스캔을 빠른/상위 포트 제한으로 제한합니다.
  • 광범위 프로파일에서 전체 포트 masscan 스윕을 건너뜁니다.
  • 작업자 수를 낮추고 무거운 TLS 프로브를 건너뜁니다.
  • 하나의 프로파일이 무한정 지연되지 않도록 nmap별 타임아웃을 적용합니다.

모든 모드에서 루트 지원 회귀 테스트를 위해 검증 수집기를 사용하세요:```bash sudo bash scripts/sudo_network_validation.sh

root@kitploit:~
기본적으로 PING, QUICK, SMB, STEALTH, FULL에 걸쳐 `192.168.1.0/24`를 테스트하고,
생성된 HTML 보고서를 validation 디렉터리로 복사한 다음, `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
발견 항목심각도의미
알 수 없는 장치 감지MediumMAC이 기준선에 없음 — 신규 또는 승인되지 않은 장치
장치 IP 변경Low알려진 MAC이 다른 IP에 있음(일반적으로 정상적인 DHCP)
이전에 확인된 장치 오프라인Info기준선 장치가 응답하지 않음

참고: 기준선 설정은 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 fingerprint | 웹 UI에서 얻은 장치 유형, 모델, 펌웨어 | 0.50+ |
| HTTP headers | Server, X-Powered-By 응답 헤더 | 0.20-0.50 |
| TLS certificate | CN, 발급자, 조직 필드 | 0.35 |
| SSH banner | 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 banner | FTP 서버 소프트웨어 식별 | 0.25-0.35 |
| Port heuristics | 열린 포트 조합 패턴 | 0.10-0.70 |
| nmap services | 서비스 제품 및 버전 필드 | 0.45 |

식별 결과는 다음에 표시됩니다:
- 터미널 장치 인벤토리 테이블(스캔 중 및 `--identify` 사용 시)
- HTML 보고서 토폴로지 카드 및 장치 인벤토리 섹션
- JSON 내보내기 `device_identities` 섹션
- 대화형 모드 메뉴 옵션 [8] Device Inventory

---

## 심각도 수준

| 수준 | 색상 | 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

Debian/Ubuntu

sudo apt install nmap

Fedora

sudo dnf install nmap

Arch

sudo pacman -S nmap

macOS

brew install nmap

root@kitploit:~
**권한 거부 / 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

root@kitploit:~
**스캔 시작 시 캐시 경고**```
WARNING: CVE data is 12 days old — run: python sunsetscan.py --update-cache

스캔은 오래된 데이터로도 정상적으로 작동합니다. 새로 고치려면 --update-cache를 실행하세요.

모듈 다운로드 중 권한 거부

모듈 다운로드가 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(비동기식)을 모두 지원합니다. import 오류가 표시되면 pysnmp를 업데이트하세요:```bash
pip install --upgrade pysnmp

면책 조항 — 승인된 사용에 한함

SunsetScan은 귀하가 소유하거나 테스트에 대한 명시적 서면 승인을 받은 네트워크 및 장치에서 사용하도록 설계된 보안 감사 도구입니다.

소유하지 않았거나 테스트 승인을 받지 않은 시스템에 대해 네트워크 스캔을 실행하는 것은 의도와 관계없이 불법일 수 있습니다. 저자들은 오용에 대해 어떠한 책임도 지지 않습니다.

SunsetScan은 전적으로 비파괴적이며 읽기 전용입니다. 취약점을 악용하거나, 페이로드를 전달하거나, 스캔된 장치의 구성을 수정하지 않습니다. --check-defaults 자격 증명 테스트는 옵트인 방식이며, 범위가 제한되고, 지연이 적용되며, 정확한 모델을 대상으로 하고, 잠금/속도 제한 신호에서 중지됩니다. 이는 무차별 대입(brute-force) 기능이 아닙니다.


라이선스

SunsetScan 저장소 및 애플리케이션 코드는 MIT 라이선스에 따라 사용이 허가됩니다 — Copyright 2024 SunsetScan Contributors.

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 — 웹 기술 탐지
  • salesforce/ja3 — TLS 핑거프린팅
  • many-passwords — 카메라/DVR 자격 증명
도구 다운로드
플랫폼지원 수준비고
Linux (Debian, Ubuntu, Fedora, Arch 등)완전 지원최고의 경험 — 모든 기능이 기본적으로 동작합니다
WSL2 (Linux용 Windows 하위 시스템)완전 지원Windows 기기에서 실행할 때 권장되는 방법입니다
macOS부분 지원핵심 스캔은 동작합니다. 일부 기능(ARP, 수동 캡처)은 추가 설정이 필요할 수 있습니다
Windows (네이티브 CMD/PowerShell)지원되지 않음raw 소켓, os.geteuid(), /proc, ip route, termios가 없습니다 — 대신 WSL2를 사용하세요
플래그효과
(플래그 없음)기본 설치: 시스템 패키지 + venv + Python 종속성 + 자체 테스트
--forcevenv를 처음부터 삭제하고 다시 구축합니다 (Python 업그레이드 후 사용)
--symlink/usr/local/bin/sunsetscan도 설치하여 어디서나 sunsetscan을 실행할 수 있게 합니다
--no-systemapt/dnf 등 단계를 건너뜁니다 (시스템 도구가 이미 설치된 경우 사용)
--help모든 옵션 표시
검사기발견 항목
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기본 커뮤니티 문자열(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개 웹 기술(기본값)
wappalyzer-fullenthec/webappanalyzer전체 7515개 웹 기술
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.jsonproduct: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