DEV Community

qyleron-dev
qyleron-dev

Posted on

Echidra: I built a honeypot that tells you what kind of attacker you're looking at, not just what happened

Most honeypots log what happened. Echidra tells you what kind of attacker you're looking at.

It simulates SSH, HTTP, FTP, and Telnet services with a believable Linux persona, then runs every session through a deterministic classifier — actor type, risk score, MITRE ATT&CK technique, intent — before it hits your dashboard. Nothing attackers type ever touches the real host.

Here's the part that actually mattered, and why I made the calls I did.

The part that actually solved my original problem

Every session gets run through a classifier when it ends. It's rule-based right now, not ML — a set of YAML rules that map session features to an actor type, a risk score, a MITRE ATT&CK technique, and a guess at intent. So instead of opening a log file, I open a dashboard and see which sessions were credential-stuffing bots, which were somebody manually poking around, and which looked like they were trying to establish persistence.

A rule looks roughly like this — you're matching on session features (commands run, timing, protocol) and mapping them straight to a classification:

- id: credential_stuffing_bot
 match:
   protocol: ssh
   auth_attempts: ">5"
   session_duration_seconds: "<3"
   commands_run: 0
 classify:
   actor_type: automated_bot
   risk_score: 40
   mitre_technique: T1110  # Brute Force
   intent: credential_access
Enter fullscreen mode Exit fullscreen mode

Nothing fancy — no model, no training data. Just enough structure that when a session comes in with five failed logins in under three seconds and zero commands, I don't have to open a log file to know it's a script, not a person. The rules I've hand-tuned so far already sort out the obvious bots from sessions where someone is actually looking around, checking whoami, poking at /etc/passwd — the ones worth a closer look.

Setup

pip install -e .
echidra init
echidra start
Enter fullscreen mode Exit fullscreen mode

That's it — runs the listeners and the dashboard together. If you don't have Postgres configured it just logs to

logs/sessions.jsonl
Enter fullscreen mode Exit fullscreen mode

and still works fine, Postgres just gets you the full dashboard history.

Things I'd still call rough

The classifier rules are hand-tuned, not learned, so they're only as good as what I've seen hit my own honeypot so far. If you run one of your own I'd like to know what patterns you're seeing that this doesn't catch — new attacker behavior means new rules, and right now that loop is entirely manual.

Repo's here if you want to look at the rule engine or just run it:

GitHub logo Qyleron / EchidraOSS

Open-source deceptive honeypot & attacker-behavior classifier — SSH/HTTP/FTP/Telnet decoys with MITRE ATT&CK-tagged threat intelligence and a live dashboard.

Echidra — Multi-Protocol Honeypot & Attacker Behavior Classifier

image

License: AGPL v3 Python 3.11+

Echidra is an open-source deceptive honeypot and threat-intelligence platform that simulates attacker-facing SSH, HTTP, FTP, and Telnet services, captures real attacker behavior, classifies it against MITRE ATT&CK techniques, and surfaces the result in a web dashboard — without ever executing real commands or exposing real data.

Docs & full setup guide · Console guide


What Is Echidra?

Echidra pretends to be a Linux server. Attackers connect over SSH-style TCP HTTP, FTP, or Telnet and see a believable, persona-driven system: real-looking banners, users, files, running processes, and (for the shell) an interactive fake command set. Nothing they type touches the real host or filesystem.

Every completed session is logged, classified (actor type, risk, MITRE ATT&CK technique, intent), geolocated, and stored in PostgreSQL — or logs/sessions.jsonl if PostgreSQL isn't configured — for review in the dashboard.

Features

  • Honeypot listeners — SSH-style fake shell, HTTP…

Top comments (0)