Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
nerva — 빠른 서비스 핑거프린팅 CLI (170개 이상의 프로토콜 지원: TCP/UDP/SCTP) - Praetorian 제작 | Kitploit
도구/GitHubGitHub/praetorian-inc/nerva
ReconnaissanceIoT SecurityNetwork MappingPort ScanningSCADA/ICS SecurityInformation GatheringMisconfiguration
GitHubpraetorian-inc/nerva

nerva

빠른 서비스 핑거프린팅 CLI (170개 이상의 프로토콜 지원: TCP/UDP/SCTP) - Praetorian 제작

저장소 보기
322386420시간 59분 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
<img width="2976" height="1440" alt="Nerva - 네트워크 정찰을 위한 빠른 서비스 핑거프린팅 CLI로 170개 이상의 프로토콜 지원" src="https://assets.kitploit.com/production/public/readmes/12252/3a0b59e2929fa8fdc41aafe4cb8649e3e85f0ba5f9df8128f7f3f952d70b0018.webp" />
<h1 align="center">
  Nerva
  <br>
  <sub>Nerva: 빠른 서비스 핑거프린팅 CLI</sub>
</h1>

<p align="center">
<a href="https://github.com/praetorian-inc/nerva/releases"><img src="https://img.shields.io/github/v/release/praetorian-inc/nerva?style=flat-square" alt="Release"></a>
<a href="https://github.com/praetorian-inc/nerva/actions"><img src="https://img.shields.io/github/actions/workflow/status/praetorian-inc/nerva/ci.yml?style=flat-square" alt="Build Status"></a>
<a href="https://goreportcard.com/report/github.com/praetorian-inc/nerva"><img src="https://goreportcard.com/badge/github.com/praetorian-inc/nerva?style=flat-square" alt="Go Report Card"></a>
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square" alt="License"></a>
<a href="https://github.com/praetorian-inc/nerva/stargazers"><img src="https://img.shields.io/github/stars/praetorian-inc/nerva?style=flat-square" alt="Stars"></a>
</p>

<p align="center">
  <a href="#features">기능</a> •
  <a href="#installation">설치</a> •
  <a href="#quick-start">빠른 시작</a> •
  <a href="#usage">사용법</a> •
  <a href="#supported-protocols">프로토콜</a> •
  <a href="#library-usage">라이브러리</a> •
  <a href="#use-cases">사용 사례</a> •
  <a href="#troubleshooting">문제 해결</a>
</p>

> **Go로 작성된 고성능 서비스 핑거프린팅.** TCP, UDP, SCTP 전송을 통해 170개 이상의 네트워크 프로토콜을 식별하고 풍부한 메타데이터를 추출합니다.

Nerva는 열린 네트워크 포트에서 실행 중인 서비스를 신속하게 탐지하고 식별합니다. [Naabu](https://github.com/projectdiscovery/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](https://github.com/praetorian-inc/nerva/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
```

<!-- BEGIN generated: cli-subcommands -->

<!-- END generated: cli-subcommands -->

<!-- BEGIN generated: cli-aliases -->
전체 레퍼런스 — `--help`에서 숨겨진 항목을 포함한 모든 하위 명령, 별칭 및 플래그 — 는 [docs/CLI.md](https://github.com/praetorian-inc/nerva/blob/main/docs/CLI.md)에 생성됩니다.
<!-- END generated: cli-aliases -->

## 사용법

```
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 스캐닝**:

```sh
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 서버가 인증되지 않은 연결을 허용함 |
| `dotnet-remoting-http-exposed` | High | .NET Remoting HTTP 채널 노출 (역직렬화 위험) |
| `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 추론 서버 |
| Weaviate | AI용 벡터 데이터베이스 |
| ChromaDB | 벡터 데이터베이스 |

#### 데이터베이스 및 데이터 스토어 (12)

| 모듈 | 설명 |
|--------|-------------|
| ArangoDB | 멀티 모델 데이터베이스 |
| CockroachDB | 분산 SQL 데이터베이스 |
| CouchDB | Apache 문서 데이터베이스 |
| Elasticsearch | 검색 및 분석 엔진 |
| etcd | 분산 키-값 저장소 |
| Milvus | 벡터 데이터베이스 |
| MinIO | S3 호환 객체 스토리지 |
| Pinecone | 벡터 데이터베이스 |
| Redis Commander | Redis 웹 관리 UI |
| TiDB | 분산 SQL 데이터베이스 |
| YugabyteDB | 분산 SQL 데이터베이스 |
| Qdrant | 벡터 데이터베이스 |

#### DevOps 및 인프라 (14)

| 모듈 | 설명 |
|--------|-------------|
| Artifactory | JFrog 아티팩트 저장소 |
| Consul | HashiCorp 서비스 메시 |
| Docker Registry | 컨테이너 이미지 레지스트리 |
| Gitea | 자체 호스팅 Git 서비스 |
| Grafana | 관측 가능성 플랫폼 |
| Harbor | 컨테이너 레지스트리 |
| Jaeger | 분산 트레이싱 |
| Jenkins | CI/CD 자동화 |
| Kubernetes | 컨테이너 오케스트레이션 API |
| Portainer | Docker 관리 UI |
| Prometheus | 모니터링 시스템 |
| Swagger/OpenAPI | API 문서화 |
| TeamCity | CI/CD 서버 |
| Vault | HashiCorp 시크릿 관리 |

#### 웹 서버 및 프레임워크 (10)

| 모듈 | 설명 |
|--------|-------------|
| Apache HTTPD | Apache HTTP 서버 |
| Express.js | Node.js 웹 프레임워크 |
| GoAhead | 임베디드 웹 서버 |
| Gotenberg | PDF 생성 서비스 |
| Guacamole | Apache 원격 데스크톱 게이트웨이 |
| SOAP | 웹 서비스 |
| Tengine | Alibaba 웹 서버 |
| Tomcat | Apache Tomcat |
| WordPress | CMS 플랫폼 |
| UPnP | 범용 플러그 앤 플레이 |

#### 엔터프라이즈 및 비즈니스 (8)

| 모듈 | 설명 |
|--------|-------------|
| AEM | Adobe Experience Manager |
| Dynamics 365 | Microsoft Dynamics 365 / Power Apps |
| Oracle Service Cloud | Oracle CRM 플랫폼 |
| SAP NetWeaver | SAP 엔터프라이즈 플랫폼 |
| Splunk | 로그 관리 플랫폼 |
| VMware Horizon | 가상 데스크톱 인프라 |
| QNAP QTS | NAS 관리 |
| Exchange | Microsoft Exchange Server |

#### 홈 및 IoT (2)

| 모듈 | 설명 |
|--------|-------------|
| Home Assistant | 홈 자동화 플랫폼 |
| UniFi/EdgeOS | Ubiquiti 네트워크 장치 |

#### 기타 (3)

| 모듈 | 설명 |
|--------|-------------|
| .NET Remoting HTTP | Microsoft .NET Remoting HTTP 채널 |
| Go pprof | Go 프로파일링 엔드포인트 |
| NATS | 메시지 브로커 |

### 데이터베이스 (20)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| PostgreSQL | TCP | 5432 |
| MySQL | TCP | 3306 |
| MSSQL | TCP | 1433 |
| Oracle | TCP | 1521 |
| MongoDB | TCP | 27017 |
| Redis | TCP/TLS | 6379, 6380 |
| Cassandra | TCP | 9042 |
| InfluxDB | TCP | 8086 |
| Neo4j | TCP/TLS | 7687 |
| DB2 | TCP | 446, 50000 |
| Sybase | TCP | 5000 |
| Firebird | TCP | 3050 |
| Memcached | TCP | 11211 |
| ZooKeeper | TCP | 2181 |
| Milvus | TCP | 19530, 9091 |
| CouchDB | HTTP | 5984 |
| Elasticsearch | HTTP | 9200 |
| ArangoDB | HTTP | 8529 |
| ChromaDB | HTTP | 8000 |
| Pinecone | HTTP | 443 |

### 원격 접속 (6)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| SSH | TCP | 22, 2222 |
| RDP | TCP/TLS | 3389 |
| Telnet | TCP | 23 |
| VNC | TCP | 5900 |
| AnyDesk | TCP | 7070 |
| TeamViewer | TCP | 5938 |

### 웹 및 API (2)

| 프로토콜 | 전송 | 비고 |
|----------|-----------|-------|
| HTTP/HTTPS | TCP | HTTP/2, Wappalyzer를 통한 기술 탐지 |
| Kubernetes | TCP | API 서버 탐지 |

### 메시징 및 큐 (10)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| Kafka | TCP/TLS | 9092, 9093 |
| MQTT 3/5 | TCP/TLS | 1883, 8883 |
| AMQP | TCP/TLS | 5672, 5671 |
| ActiveMQ | TCP/TLS | 61616, 61617 |
| NATS | TCP/TLS | 4222, 6222 |
| Pulsar | TCP/TLS | 6650, 6651 |
| SMTP | TCP/TLS | 25, 465, 587 |
| POP3 | TCP/TLS | 110, 995 |
| IMAP | TCP/TLS | 143, 993 |
| SMPP | TCP | 2775, 2776 |

### 파일 및 디렉터리 서비스 (7)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| FTP | TCP | 21 |
| SMB | TCP | 445 |
| NFS | TCP/UDP | 2049 |
| Rsync | TCP | 873 |
| TFTP | UDP | 69 |
| SVN | TCP | 3690 |
| LDAP | TCP/TLS | 389, 636 |

### 네트워크 서비스 (11)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| DNS | TCP/UDP | 53 |
| DHCP | UDP | 67, 68 |
| NTP | UDP | 123 |
| SNMP | UDP | 161 |
| NetBIOS-NS | UDP | 137 |
| STUN | UDP | 3478 |
| OpenVPN | UDP | 1194 |
| IPsec | UDP | 500 |
| IPMI | UDP | 623 |
| CoAP | UDP | 5683 |
| Echo | TCP/UDP | 7 |

### 산업 제어 시스템 (18)

| 프로토콜 | 전송 | 기본 포트 | 비고 |
|----------|-----------|---------------|-------|
| Modbus | TCP | 502 | SCADA/PLC |
| S7comm | TCP | 102 | Siemens PLC |
| EtherNet/IP | TCP | 44818 | Rockwell/Allen-Bradley |
| PROFINET | TCP | 34962-34964 | Siemens 산업용 |
| BACnet | UDP | 47808 | 빌딩 자동화 |
| OPC UA | TCP | 4840 | 산업 상호운용성 |
| OMRON FINS | TCP/UDP | 9600 | OMRON PLC |
| MELSEC-Q | TCP | 5006, 5007 | Mitsubishi PLC |
| KNXnet/IP | UDP | 3671 | 빌딩 자동화 |
| IEC 104 | TCP | 2404 | 전력망 SCADA |
| DNP3 | TCP | 20000 | 전력망 SCADA |
| Codesys | TCP | 1200, 2455 | PLC 런타임 |
| Fox | TCP | 1911 | Tridium Niagara |
| PC WORX | TCP | 1962 | Phoenix Contact |
| ProConOS | TCP | 20547 | PLC 런타임 |
| HART-IP | TCP | 5094 | 공정 자동화 |
| EtherCAT | UDP | 34980 | 모션 제어 |
| Crimson v3 | TCP | 789 | Red Lion HMI |
| PCOM | TCP | 20256 | Unitronics PLC |
| GE SRTP | TCP | 18245 | GE PLC |
| ATG | TCP | 10001 | 탱크 게이지 |

### 통신 및 VoIP (17)

| 프로토콜 | 전송 | 기본 포트 | 비고 |
|----------|-----------|---------------|-------|
| Diameter | TCP/SCTP | 3868 | LTE/5G AAA |
| M3UA | SCTP | 2905 | SS7 over IP |
| M2UA | SCTP | 2904 | MTP2 User Adaptation |
| M2PA | SCTP | 3565 | MTP2 Peer Adaptation |
| SGsAP | SCTP | 29118 | 회선 교환 폴백 |
| X2AP | SCTP | 36422 | LTE eNodeB 간 |
| IUA | SCTP | 9900 | ISDN over IP |
| SIP | TCP/UDP/TLS | 5060, 5061 | VoIP 시그널링 |
| MEGACO/H.248 | UDP | 2944, 2945 | 미디어 게이트웨이 |
| MGCP | UDP | 2427, 2727 | 미디어 게이트웨이 |
| H.323 | TCP | 1720 | 화상 회의 |
| SCCP/Skinny | TCP | 2000, 2443 | Cisco IP 폰 |
| IAX2 | UDP | 4569 | Asterisk 프로토콜 |
| GTP-C | UDP | 2123 | GPRS 제어 |
| GTP-U | UDP | 2152 | GPRS 사용자 평면 |
| GTP' | UDP | 3386 | GPRS 과금 |
| PFCP | UDP | 8805 | 5G 사용자 평면 |

### VPN 및 보안 (11)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| SSH | TCP | 22, 2222 |
| OpenVPN | UDP | 1194 |
| WireGuard | UDP | 51820 |
| IPsec/IKEv2 | UDP | 500, 4500 |
| L2TP | UDP | 1701 |
| SSTP | TCP | 443 |
| GlobalProtect | HTTP | 443 |
| AnyConnect | HTTP | 443 |
| FortiGate | HTTP | 443 |
| STUN/TURN | UDP | 3478, 5349 |
| Kerberos | TCP | 88 |

### 원격 접속 및 관리 (10)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| RDP | TCP/TLS | 3389 |
| VNC | TCP | 5900 |
| Telnet | TCP | 23 |
| WinRM | HTTP | 5985, 5986 |
| IPMI | UDP | 623 |
| SNMP | UDP | 161 |
| Zabbix Agent | TCP | 10050 |
| NRPE | TCP/TLS | 5666 |
| Docker | TCP/TLS | 2375, 2376 |
| X11 | TCP | 6000-6063 |

### 개발자 도구 (8)

| 프로토콜 | 전송 | 기본 포트 |
|----------|-----------|---------------|
| HTTP/HTTPS | TCP | 80, 443, 8080, 8443 |
| Java RMI | TCP | 1099 |
| JDWP | TCP | 5005 |
| RTSP | TCP | 554 |
| Linux RPC | TCP | 111 |
| JetDirect | TCP | 9100 |
| CUPS/IPP | TCP | 631 |
| SonarQube | TCP | 9000 |

## 라이브러리 사용법

Go 애플리케이션에 Nerva를 임포트하세요:

```go
package main

import (
    "context"
    "fmt"
    "log"
    "net/netip"
    "time"

    "github.com/praetorian-inc/nerva/pkg/plugins"
    "github.com/praetorian-inc/nerva/pkg/scan"
)

func main() {
    // Configure scan
    config := scan.Config{
        DefaultTimeout: 2 * time.Second,
        FastMode:       false,
        UDP:            false,
        Proxy:          "socks5://127.0.0.1:1080", // optional
        ProxyAuth:      "username:password",       // optional
        DNSOrder:       "p",                       // resolver strategy
    }

    // Create target
    ip, _ := netip.ParseAddr("93.184.216.34")
    target := plugins.Target{
        Address: netip.AddrPortFrom(ip, 22),
        Host:    "example.com",
    }

    // Run scan
    results, err := scan.ScanTargets(context.Background(), []plugins.Target{target}, config)
    if err != nil {
        log.Fatal(err)
    }

    // Process results
    for _, result := range results {
        fmt.Printf("%s:%d - %s (%s)\n",
            result.Host, result.Port,
            result.Protocol, result.Transport)
    }
}
```

See [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/main/examples/service-fingerprinting-example.go) for a complete working example.

## 사용 사례

### 침투 테스트

정찰 중에 발견된 서비스를 신속하게 핑거프린팅하여 잠재적인 공격 벡터를 식별합니다.

### 자산 검색 파이프라인

대규모 자산 인벤토리를 위해 Naabu 또는 Masscan과 결합합니다:

```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'
```

### CI/CD 보안 스캐닝

배포 파이프라인에 통합하여 예상된 서비스만 노출되는지 검증합니다.

### 버그 바운티 정찰

범위 대상 전반의 서비스를 신속하게 열거하여 흥미로운 엔드포인트를 찾습니다.

### 통신 네트워크 분석

SCTP 전송(Linux)을 사용하여 LTE/5G 네트워크의 Diameter 노드를 핑거프린팅합니다:

```sh
nerva -t mme.telecom.local:3868 -S --json
```

## 아키텍처

```mermaid
graph LR
    A[host:port input] --> B[Target Parser]
    B --> C[Scan Engine]
    C --> D{Transport}
    D -->|TCP| E[TCP Plugins]
    D -->|UDP| F[UDP Plugins]
    D -->|SCTP| G[SCTP Plugins]
    E --> H[Service Detection]
    F --> H
    G --> H
    H --> I[Metadata Extraction]
    I --> J[JSON/CSV/Text Output]
```

## Nerva를 사용하는 이유

### Nmap과의 비교

- **더 스마트한 기본값**: Nerva는 포트 번호를 기반으로 가장 가능성 높은 프로토콜을 먼저 확인합니다
- **구조화된 출력**: 손쉬운 파싱과 파이프라인 통합을 위한 네이티브 JSON/CSV 지원
- **집중성**: 서비스 핑거프린팅 전용 — 탐색에는 전용 포트 스캐너와 함께 사용하세요

### zgrab2와의 비교

- **자동 감지**: 프로토콜을 미리 지정할 필요가 없습니다
- **더 간단한 사용법**: `nerva -t host:port` vs `echo host | zgrab2 http -p port`

## 문제 해결

### 출력 없음

**원인**: 포트가 닫혀 있거나 지원되는 서비스가 감지되지 않았습니다.

**해결 방법**: 포트가 열려 있는지 확인하세요:

```sh
nc -zv example.com 80
```

### 타임아웃 오류

**원인**: 기본 2초 타임아웃이 느린 서비스에 비해 너무 짧음.

**해결 방법**: 타임아웃 증가:

```sh
nerva -t example.com:80 -w 5000  # 5 seconds
```

### UDP 서비스가 감지되지 않음

**원인**: 기본적으로 UDP 스캔이 비활성화되어 있음.

**해결 방법**: `-U` 플래그로 활성화:

```sh
nerva -t example.com:53 -U
```

Nerva UDP 스캔은 연결된 데이터그램 소켓을 사용하며 root 권한이 필요하지 않습니다.

### SCTP가 작동하지 않음

**원인**: SCTP는 Linux에서만 지원됩니다.

**해결 방법**: Linux 시스템 또는 컨테이너에서 실행하세요:

```sh
docker run --rm nerva -t telecom:3868 -S
```

## 용어

- **Service**: 포트에서 실행되는 네트워크 서비스 (SSH, HTTP, PostgreSQL 등)
- **Fingerprinting**: 서비스 유형, 버전 및 구성을 감지하고 식별하는 것
- **Plugin**: 프로토콜별 감지 모듈
- **Fast Mode**: 각 프로토콜의 기본 포트만 스캔 (80/20 최적화)
- **Transport**: 네트워크 계층 프로토콜 (TCP, UDP 또는 SCTP)

## 지원

Nerva가 유용하다고 생각되시면, 스타를 눌러주시면 감사하겠습니다:

[![GitHub stars](https://img.shields.io/github/stars/praetorian-inc/nerva?style=social)](https://github.com/praetorian-inc/nerva)

## 기여

기여를 환영합니다! 가이드라인은 [CONTRIBUTING.md](https://github.com/praetorian-inc/nerva/blob/main/CONTRIBUTING.md)를 참조하세요.

## 라이선스

Apache 2.0 — 자세한 내용은 [LICENSE](https://github.com/praetorian-inc/nerva/blob/main/LICENSE)를 참조하세요.

## 감사의 글

Nerva는 원래 Praetorian의 2022년 인턴 클래스에 의해 개발된 [fingerprintx](https://github.com/praetorian-inc/fingerprintx)의 유지 관리되는 포크입니다:

* [Soham Roy](https://github.com/praetorian-sohamroy)
* [Jue Huang](https://github.com/jue-huang)
* [Henry Jung](https://github.com/henryjung64)
* [Tristan Wiesepape](https://github.com/qwetboy10)
* [Joseph Henry](https://github.com/jwhenry28)
* [Noah Tutt](https://github.com/noahtutt)
* [Nathan Sportsman](https://github.com/nsportsman)
도구 다운로드