
nerva v1.57.0
빠른 서비스 핑거프린팅 CLI (170개 이상의 프로토콜 지원: TCP/UDP/SCTP) - Praetorian 제작
Nerva
Nerva: 빠른 서비스 핑거프린팅 CLI
기능 • 설치 • 빠른 시작 • 사용법 • 프로토콜 • 라이브러리 • 사용 사례 • 문제 해결
Go로 작성된 고성능 서비스 핑거프린팅. TCP, UDP, SCTP 전송을 통해 170개 이상의 네트워크 프로토콜을 식별하고 풍부한 메타데이터를 추출합니다.
Nerva는 열린 네트워크 포트에서 실행 중인 서비스를 신속하게 탐지하고 식별합니다. Naabu와 같은 포트 스캐너와 함께 사용하여 발견된 서비스를 핑거프린팅하거나, 보안 파이프라인에 통합하여 자동화된 정찰을 수행할 수 있습니다.
기능
- 170개 이상의 프로토콜 플러그인 — 데이터베이스, 원격 접속, 웹 서비스, 메시징, 산업용, 통신 프로토콜
- 76개의 HTTP 핑거프린터 — 방화벽, 데이터베이스, AI/LLM 서버 등을 포함한 웹 기술 탐지
- 보안 설정 오류 탐지 — 인증되지 않은 API 및 평문 프로토콜과 같은 일반적인 보안 문제 식별 (
--misconfigs) - 다중 전송 지원 — TCP(기본값), UDP(
--udp), SCTP(--sctp, Linux 전용) - 프록시 지원 — 구성 가능한 DNS 확인을 통해 SOCKS5 또는 HTTP 프록시를 통해 스캔 트래픽을 투명하게 라우팅
- 풍부한 메타데이터 — 각 서비스에서 버전, 구성 및 보안 관련 세부 정보 추출
- 빠른 모드 — 신속한 정찰을 위해 기본 포트만 스캔 (
--fast) - 유연한 출력 — JSON, CSV 또는 사람이 읽을 수 있는 형식
- 파이프라인 친화적 — Naabu, Nmap 또는
host:port를 출력하는 모든 도구에서 파이프 가능 - Go 라이브러리 — Go 애플리케이션에 직접 가져오기 가능
설치
릴리스
Releases 페이지에서 미리 빌드된 바이너리를 다운로드하세요.
GitHub에서```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### 소스에서```sh
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
Docker```sh
git clone https://github.com/praetorian-inc/nerva.git cd nerva docker build -t nerva . docker run --rm nerva -h docker run --rm nerva -t example.com:80 --json
## 빠른 시작
단일 대상 지문 채취:```sh
nerva -t example.com:22
# ssh://example.com:22
자세한 JSON 메타데이터 가져오기:```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
포트 스캐너로부터 파이프:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
전체 레퍼런스 — --help에서 숨겨진 항목을 포함한 모든 하위 명령, 별칭 및 플래그 — 는 docs/CLI.md에 생성됩니다.
사용법```
nerva [flags]
TARGET SPECIFICATION: Requires host:port or ip:port format. Assumes ports are open.
EXAMPLES: nerva -t example.com:80 nerva -t example.com:80,example.com:443 nerva -l targets.txt nerva --json -t example.com:80 cat targets.txt | nerva
### 예시
**다중 대상:**```sh
nerva -t example.com:22,example.com:80,example.com:443
파일에서:```sh nerva -l targets.txt --json -o results.json
**UDP 스캐닝** (root 권한이 필요할 수 있음):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
SCTP 스캐닝 (Linux 전용):```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**빠른 모드** (기본 포트만):```sh
nerva -l large-target-list.txt --fast --json
원격 DNS 확인을 사용한 프록시 라우팅:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### 보안 설정 오류 탐지
Nerva는 `--misconfigs` 옵션을 활성화하면 일반적인 보안 설정 오류를 식별할 수 있습니다:```sh
nerva -t example.com:2375 --misconfigs --json
탐지된 잘못된 구성:
| Finding ID | Severity | Description |
|---|---|---|
docker-unauth-api | Critical | 인증 없이 접근 가능한 Docker API |
x11-unauth-access | Critical | X11 서버가 인증되지 않은 연결을 허용함 |
smb-signing-not-required | Medium | SMB 서명이 요구되지 않음 (릴레이 공격 위험) |
telnet-cleartext | Medium | Telnet이 자격 증명을 평문으로 전송함 |
vnc-detected | Medium | VNC 탐지됨 (종종 취약한 인증 사용) |
ssh-password-auth | Medium | 서버가 비밀번호 인증을 허용함 |
ssh-weak-cipher | Low | 서버가 취약한 암호( RC4, 3DES, Blowfish)를 제공함 |
ssh-weak-kex | Low | 서버가 취약한 키 교환 알고리즘을 제공함 |
ssh-weak-mac | Low | 서버가 취약한 MAC 알고리즘을 제공함 |
ftp-cleartext | Low | FTP가 자격 증명을 평문으로 전송함 |
잘못된 구성이 포함된 출력 예시:```json { "host": "example.com", "port": 2375, "protocol": "docker", "anonymous_access": true, "security_findings": [ { "id": "docker-unauth-api", "severity": "critical", "description": "Docker API accessible without authentication", "evidence": "Successfully queried /version endpoint without credentials" } ] }
### 프록시 지원
Nerva는 구성 가능한 DNS 확인을 통해 SOCKS5 및 HTTP 프록시를 경유하여 스캔 트래픽을 라우팅하는 것을 지원합니다.
**지원되는 프록시 스킴:**
- `socks5://` - 로컬 DNS 확인을 사용하는 SOCKS5 프록시
- `socks5h://` - 프록시 측 DNS 확인을 사용하는 SOCKS5 프록시 (항상)
- `http://` - HTTP CONNECT 프록시
- `https://` - HTTPS CONNECT 프록시
**프록시 인증:**```sh
# Inline authentication (URL format)
nerva -t example.com:80 --proxy socks5://username:[email protected]:1080
# Separate authentication flag
nerva -t example.com:80 --proxy socks5://127.0.0.1:1080 --proxy-auth username:password
DNS 확인 전략 (--dns-order):
| 옵션 | 전략 | 사용 사례 |
|---|---|---|
l | 로컬만 | 표준 로컬 DNS (기본값) |
p | 프록시만 | 프록시 측 DNS 확인 강제 |
lp | 로컬, 프록시로 폴백 | 로컬 먼저 시도, 실패 시 프록시 사용 |
pl | 프록시, 로컬로 폴백 | 프록시 먼저 시도, 실패 시 로컬 사용 |
참고: socks5h:// 스킴은 프록시 측 DNS를 자동으로 강제합니다 (--dns-order p와 동일)
Tor 스캔 예시:```sh
Scan .onion services through Tor (SOCKS5 proxy on port 9050)
nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050
**프록시를 통한 UDP:**```sh
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp
⚠️ UDP 제한 사항: SOCKS5를 통한 UDP는 지원이 제한적입니다. 모든 SOCKS5 서버가 UDP 연결을 지원하는 것은 아닙니다. 로컬 UDP 폴백이 발생할 수 있습니다.
속도 제한을 통한 병렬 스캔:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
**정상 종료** (Ctrl+C는 부분 결과를 반환합니다):```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed
지원 프로토콜
TCP, UDP, SCTP 전반에 걸친 170개 이상의 서비스 탐지 플러그인:
HTTP 핑거프린트 모듈 (66)
카테고리별로 구성된 웹 서비스 기술 탐지:
방화벽 및 네트워크 보안 (12)
| 모듈 | 설명 |
|---|---|
| Checkpoint | Check Point Security Gateway |
| Cisco ASA/FTD | Cisco 방화벽/VPN 어플라이언스 |
| FortiGate | Fortinet 방화벽/VPN |
| GlobalProtect | Palo Alto Networks VPN |
| Juniper | Juniper SRX 방화벽 |
| OPNsense | OPNsense 방화벽 |
| pfSense | pfSense 방화벽 |
| SonicWall | SonicWall 방화벽 |
| AnyConnect | Cisco AnyConnect SSL VPN |
| Cisco Expressway | Cisco 협업 게이트웨이 |
| BigIP | F5 BIG-IP 로드 밸런서 |
| WinRM | Windows 원격 관리 |
AI/LLM 및 머신러닝 (6)
| 모듈 | 설명 |
|---|---|
| Ollama | 자체 호스팅 LLM 추론 서버 |
| LocalAI | 자체 호스팅 LLM 추론 (OpenAI 호환) |
| Open WebUI | LLM 웹 인터페이스 (ChatGPT 스타일) |
| Triton | NVIDIA Triton Inference Server |
| Weaviate | AI용 벡터 데이터베이스 |
| ChromaDB | 벡터 데이터베이스 |