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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Spip-Go — Spip network sensor written in Go | Kitploit
도구/GitHubGitHub/honeylabshq/spip-go
Defensive ToolsIndicator of Compromise (IOC) ManagementPacket Sniffing & AnalysisReconnaissanceInformation GatheringNetwork SecurityThreat IntelligenceIntrusion DetectionIncident ResponseLog Analysis
GitHubhoneylabshq/spip-go

Spip-Go

Spip network sensor written in Go

저장소 보기
71293일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
요청한 언어로 콘텐츠를 사용할 수 없습니다. 영어 버전을 표시합니다.

Spip - Network Honeypot Sensor

Spip is a low-interaction network honeypot sensor for Linux, written in Go. It accepts TCP connections on any port the host redirects to it, plain or TLS, answers just enough to make a client send its next message, and writes each exchange as one JSON record with ECS field names, ready for a SIEM or data lake. Optional UDP capture records datagrams and never answers them.

HoneyLabs runs Spip to collect the data published on honeylabs.net.

Quick Start

Prerequisites:

  • Linux. The agent uses Linux socket options and does not build for other systems.
  • Go 1.27 or later
  • iptables and root access to install the redirect rules
  1. Build the agent
git clone https://github.com/honeylabshq/Spip-Go.git
cd Spip-Go
go build -o spip-agent ./cmd/spip-agent

To set the version reported in observer.version and agent.version (default dev), add -ldflags "-X main.version=v1.2.3".

  1. (Optional) Use the interactive setup helper
sudo ./scripts/initial_setup.sh

See Initial setup helper below.

  1. Create or edit config.toml Minimal config.toml:
name = "spip-agent"
ip = "0.0.0.0"
port = 8080

Optional configuration keys:

  • cert_path / key_path: enable TLS if both are set. Relative paths resolve against the directory of the config file.
  • log_file: append records to this file instead of stdout. See Log output below.
  • [loom]: also ship records over HTTP. See Loom below.
  • read_timeout_seconds / write_timeout_seconds: idle read timeout and write timeout per connection.
  • rate_limit_per_second / rate_limit_burst: rate limit on new TCP connections, shared by all sources. A connection over the limit is closed unread.
  • community_id_seed: optional 16-bit seed for Community ID v1 flow hashing (omit or 0 for the default).
  • capture_client_hello: set false to leave out tls.client.hello_hex. See Fingerprinting.
  • ignore_sources: addresses or networks whose connections and datagrams are closed or discarded before anything is read, so they are never logged, fingerprinted or shipped. Bare addresses and CIDR, IPv4 or IPv6: ignore_sources = ["192.0.2.10", "198.51.100.0/24", "2001:db8::/32"]. A honeypot on a rented host gets polled by that host's own monitoring, and counting those scrapes distorts port rankings and scanner counts. An entry that does not parse stops the agent from starting, because a typo here would silently record traffic you believe is dropped. Drops are counted per source and reported in the log every hour and at shutdown.
  • udp_enabled and the udp_* keys: see UDP capture.

If these runtime tuning fields are omitted or set to 0, Spip applies the following defaults:

  • read_timeout_seconds: 30
  • write_timeout_seconds: 10
  • rate_limit_per_second: 20
  • rate_limit_burst: 50000
  1. Redirect incoming TCP to the agent (example, excluding SSH)
sudo iptables -t nat -F
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
sudo iptables -t nat -A PREROUTING -p tcp -j REDIRECT --to-port 8080

The first command flushes the whole nat table. Leave it out on a host that has NAT rules of its own. The same two rules with ip6tables cover IPv6. Spip reads each connection's original destination from the kernel's connection tracking and records it as destination.ip and destination.port.

  1. Run the agent
./spip-agent -config config.toml

-config is the only flag and defaults to config.toml in the working directory. SIGINT or SIGTERM stops the listener, waits up to 15 seconds for open connections and writes any pending Loom batch to the spool, giving it 5 seconds to send; the rest is sent at the next start.

Responses

Spip picks a responder by the original destination port. Each one says only enough to make the client send its next message: credentials, a command or a mail envelope.

PortsResponse
23, 2323Telnet option negotiation and a login: prompt, then Password:, then Login incorrect and close
21, 990FTP greeting, a password request after the first line, then 530 Login incorrect. and close
25, 465, 587SMTP greeting, 250 replies to the first three lines, 354 to the fourth, then close. Nothing is relayed and no outbound connection is made.
110, 995POP3 greeting, +OK after the first line, -ERR invalid login after the second, then close
143, 993IMAP greeting, then * BAD Login failed and close
6379, 6380, or any payload that looks like a Redis command+PONG to PING, +OK to everything else
any other portHTTP/1.1 200 OK with the client's IP address as the body for an HTTP request, the bare IP address for anything else

A client that sends SSH-2.0 without a key exchange message gets the banner SSH-2.0-spip, and Spip waits up to 2 seconds for the key exchange so it can compute the client fingerprint.

The telnet, FTP, SMTP, POP3 and IMAP greetings are sent on connect. With TLS enabled, Spip first reads one byte to tell TLS from plain text, so those greetings only go out after the client has sent something.

Log output

Spip writes ECS logs to a single local destination and can also send the same records to a Loom server:

DestinationConfigBehaviour
Locallog_fileOmitted or empty: stdout. Set to a path: records are appended to that file. Always on.
Loom[loom] with enabled = trueOptional. The same records are batched and POSTed to your Loom ingest URL in addition to the local output.

The local output also carries the agent's own log lines, such as hourly drop counts and warnings, as {"timestamp": <unix seconds>, "level": "INFO", "message": "...", "target": "...", "record_type": "log"}. Only connection records go to Loom. Startup messages go to stderr.

Log format

Spip writes each record as a single line of JSON with ECS field names, using only what it can derive from the connection itself (no ASN or geo enrichment). A connection that sends several messages produces one record per message, all with the same event.id. Fields include:

  • @timestamp: RFC 3339 time of the record, in whole seconds
  • event.id: per-connection session identifier; event.sequence: the record's position in the session, starting at 1
  • event.duration: nanoseconds since the connection opened
  • event.module, event.dataset (spip.tcp or spip.udp), event.kind, event.category, event.type: let a SIEM select Spip's records
  • observer.vendor, observer.product, observer.type, observer.version, agent.type, agent.version
  • observer.hostname, observer.id and host.name: the agent name from config
  • source.ip, source.port, destination.ip, destination.port
  • source.bytes, destination.bytes, network.bytes: bytes received and sent in the session so far
  • network.transport (tcp or udp) and network.protocol (tls, dns, netbios or quic) where known
  • http.request.method, http.request.headers, http.request.body.content, http.request.body.bytes, url.path, url.domain, url.port: when the payload is an HTTP request
  • user_agent.original: when available
  • event.summary: the payload as text, for payloads that are not HTTP requests
  • event.original_payload_hex: the raw payload in hex, always kept
  • Fingerprinting adds network.community_id, tls.client.*, ssh.client.hash.hassh and http.request.hash.akin when they apply.
도구 다운로드