v0.9 · production Three-sensor fleet · live

HoneyLens Sensor — What It Is and Where It Is

A hybrid intelligence sensor that combines kernel-level eBPF packet capture, 43+ protocol honeypots, dual AI analysis (local Ollama on a GPU box + cloud Claude / OpenAI), Suricata IDS pre-filtering, and automated threat intelligence publishing. Every connection is captured, classified, profiled, and — if interesting enough — published as a threat advisory with zero human intervention.

eBPF 43+ honeypots JA4+ AI advisory pipeline Suricata pre-filter CVE coverage
Sensors live
3
sensor1 + sensor2 + sensor3
Protocol honeypots
43+
IT, ICS/OT, K8s, FortiGate, PAN-OS, NGINX
Classifier rules
621
543 built-in + 76 AI-promoted
Suricata rules
49K+
ET Open + HoneyLens local 9026300-9026429
JA4+ database
276K
fingerprints
Licence
AGPL-3.0
open-core + JA4+ plugin

What It Does

Each sensor combines four layers of detection, designed so that any one layer failing doesn’t leave us blind:

  1. eBPF kernel capture. A BPF program attached to the network interface classifies every TCP / UDP segment in kernel space. Phase 0.5 (2026-05-22) added per-port payload dissection — up to 4 096 bytes of application-layer payload copied into the event record on 11 monitored ports (FTP, SMTP/submission, the four PAN-OS captive-portal ports, Redis, Tomcat alt-HTTP, NGINX Rift on 8443).
  2. Protocol honeypots. 43+ modular services emulate everything from SSH and HTTP to Modbus, S7comm, OPC UA, FortiGate SSL-VPN, Palo Alto PAN-OS management (WebUI + GlobalProtect + XML API + SSH CLI + captive portal), Kubernetes API with honeytokens, an OWASP LLM Top 10 chat honeypot, and a CVE-2026-42945-vulnerable nginx. Each one is a separate systemd service running as the sensor user, with memory + CPU caps.
  3. Suricata IDS pre-filter. 49 000+ Emerging Threats Open rules plus a local HoneyLens range (9026300-9026429) for CVE-specific structural signatures we’ve written for our own hunts (PAN-OS CVE-2026-0300 today; NGINX Rift CVE-2026-42945 added 2026-05-24). Known classifications bypass the AI pipeline — 90-95% cost savings on triage.
  4. Dual AI analysis pipeline. Local Ollama (deepseek-r1 / qwen2.5 on an RTX 3060 GPU box) for triage; cloud Claude (Sonnet + Opus) or OpenAI (gpt-4.1-mini + gpt-5-mini) for deep analysis. Per-model cost tracking, daily / monthly spending caps, automatic deobfuscation + IOC extraction + novelty scoring. Hunting IPs override the Suricata skip so we keep getting fresh narrative on actors we care about.

Where It’s Deployed

Three sensors run in production. The fleet is intentionally small — this is a research project, not SaaS — but each one is on a different network topology, so attacker traffic patterns differ meaningfully:

Sensor Network Role
sensor1 Lab LAN, behind NAT + firewall Development — new honeypots and Suricata rules land here first
sensor2 Hosted VPS, public IPv4 directly exposed Production canary — takes the full public-internet scanner load; most novel actor traffic
sensor3 Corporate-style network, DNAT'd from a public IP Production — mostly targeted-scanner traffic, plus ICS/OT VLAN visibility

Hostnames, IPs, and ASNs are deliberately anonymised in the blog; the underlying data lives in the operator-side attacker_profiles, sensor_events, and attack_patterns tables on each sensor.

Recent Milestones

What’s Next

The 47 ideas backlog drives the roadmap. The current top-of-queue items, in priority order:

The codebase is at 192.168.0.100:3000/HoneyLens/HoneyLens (Gitea, lab-internal) and mirrored to GitHub on release. The blog you’re reading is itself part of the sensor stack — publishing/blog_publisher.py runs on each sensor and pushes new threat-actor advisories here automatically.