MIRAGE — Deception Infrastructure · Drawing Set Issued for research — not for construction
Sheet A-01 // General Arrangement

Mirage

Construction documents for a server that does not exist. MIRAGE is a production SSH honeypot deployed on a publicly routable address. Attackers connect to what reads as a careless Ubuntu host — every credential pair, timing signal, and client fingerprint is captured and structured into open, citable threat intelligence.

nothing in this building is load-bearing →
100,000+
Sessions captured
750+
Unique source IPs
1
Sensor live · Frankfurt
Live
Continuous capture
figures updated daily from live sensor — last update shown below

General notes

Read before entering

MIRAGE accepts SSH logins a real server would refuse. Behind the prompt there is no machine — only an emulated shell inside an isolated sandbox. No command ever reaches real hardware, and the system never scans, probes, or retaliates.

Every session is recorded in full — auth attempts, SSH client banner, timing in milliseconds, and working directory — to PostgreSQL. A secured REST API makes the dataset queryable in real time. A daily-updated public dashboard publishes aggregate statistics without exposing any infrastructure details.

The primary research contribution is a measurement study of automated SSH scanning behaviour: session-count clustering as a botnet detection primitive, the one-credential-per-session architecture that defeats standard rate limiting, and dedicated credential wordlists targeting blockchain validator infrastructure.

Drawn, built, and operated by two undergraduates as ongoing research. Deviations from these notes are documented in the repository, not hidden.


Sheet A-02

Plan — deception surface

Floor plan · one sensor scale: none — the structure is fictional
ENTRY PORT 22 GATEHOUSE SSHD EMULATOR (GO) SHELL ENGINE FAKE FILESYSTEM (GO) nothing here is real API LAYER REST API → CLOUDFLARE (KEY-AUTHENTICATED) RECORDS VAULT POSTGRESQL CLASSIFICATION LAB PYTORCH EXPORT DOCK STIX 2.1 TO PUBLIC RELEASE, MONTHLY attacker entry contained here 1 2 3 4 5 N HATCHED WALLS: FACADE ONLY — NO INTERIOR EXISTS
1 CONNECT sensors expose port 22; any credential is logged, no session is granted real access 2 ENGAGE a hardcoded shell serves realistic output; nothing touches a real system 3 RECORD full sessions — credentials, timing, banners — persisted to PostgreSQL 4 CLASSIFY sessions enriched with attacker classification and MITRE ATT&CK technique mapping — trained Transformer classifier in development 5 PUBLISH per-session STIX 2.1 bundles generated with MITRE ATT&CK technique mapping — available via REST API on request

Details & specifications

What the occupants leave behind

Detail A — observed session typetypical automated credential probe
14:02:11 connect  SSH-2.0-Go
14:02:11 auth     root:345gs5662d34
14:02:11 outcome  clean_disconnect
          duration 220ms
          commands 0

the large majority of sessions
match this pattern: bot-driven,
one credential, immediate exit.
a smaller share now reach the
shell and interact with it.
Spec 03 — live export format — per sessionmirage-YYYY-MM.stix.json
{
  "type": "indicator",
  "spec_version": "2.1",
  "id": "indicator--<uuid>",
  "pattern": "[network-traffic:
    dst_port = 22]",
  "labels": ["<attacker_class>"],
  "x_mirage_sessions": <count>,
  "x_mirage_first_seen":
      "<timestamp>"
}

STIX 2.1 bundles are generated per session by the enrichment pipeline and exposed via GET /api/sessions/{id}/report. Each bundle carries the attacker indicator, mapped ATT&CK techniques as attack-pattern objects, and relationship edges back to the sensor identity. Anonymised monthly releases are planned once the dataset reaches 90-day depth.


Tolerances

Known deviations

Single node, single geography. Frankfurt is a major peering hub — results may overrepresent European-routed traffic. The observation window is too short to characterise seasonal or campaign-level periodicity. The sensor now speaks an opt-in PROXY protocol v1 on ingest, so a future multi-node deployment behind a shared relay can still attribute sessions to their real client IP rather than the relay's — not yet exercised, since today's node is directly exposed with no relay in front of it.

Early sessions were all credential-stuffing with no shell interaction — a real gap in the sensor at the time, since it accepted any credential and couldn't be distinguished from a working login. The sensor now runs a seeded weak-credential allowlist and a simulated interactive shell, and attacker sessions do execute commands and trigger planted bait files (fake credentials, SSH keys) against it.

The emulated shell originally had no pipes or output redirection — real recon one-liners chaining `| grep` or `> file` would dead-end on the first unimplemented operator. It now parses `|` pipelines (with `grep`/`head`/`tail`/`wc` reading the piped input) and `>`/`>>`/`<` redirects, writing into a per-session filesystem overlay so one attacker's writes never leak into another's session.

ML pipeline is live. MITRE ATT&CK techniques are mapped per session and all sessions are enriched with attacker classification. Current labels are produced by an interpretable weak-label fallback — a trained classifier checkpoint is in development and will replace these once deployed.


Sheet A-03

Field observations

Top credential pairsby attempt count
CredentialCount
loading…
SSH client bannersby session count
BannerCount
loading…
Coordinated campaignssame credential + client + 5-min window, 3+ source IPs
IPsCredentialClientWindow (UTC)
loading…
Activity by hourUTC, all-time

Bill of materials

As built

ItemComponentFunctionStatus
01GoSSH emulator, session capture, fake shell→ LIVE
02PostgreSQLSession persistence and credential storage→ LIVE
03REST APIQueryable threat intelligence endpoints→ LIVE
04PyTorchSession classification (weak-label heuristic); trained embedder implemented, awaiting deployment→ LIVE
05STIX 2.1Structured intelligence export→ LIVE
06Prometheus + GrafanaSensor health and operational metrics→ LIVE

Revisions & access

Issue record

RevItemDescriptionStatus
A Source code Run your own sensor, read the emulator, open issues. → ISSUED
B Dataset 100,000+ sessions with attacker classification, MITRE ATT&CK mapping, and STIX 2.1 bundles, plus a per-command commands.jsonl export (command text, response, exit code) for LLM training. Dataset updated weekly. → ISSUED
C Collaborate Researchers, Honeynet folks, anyone who wants a sensor in a new region or wants to discuss the findings.
OPEN
D REST API Live queryable threat intelligence. GET /api/stats, GET /api/sessions, GET /api/sessions/{id}/report with full STIX 2.1 bundle, GET /api/export/commands for paginated per-command bulk export. Key-authenticated. → ISSUED
ProjectMIRAGE — DECEPTION INFRASTRUCTURE
Drawing no.A-01 · REV 2.2
ScaleNTS
Date2026-07
Drawn / checkedvinayaktyagi10 · Vangax
General conditionDEFENSIVE RESEARCH ONLY — NOT FOR OFFENSIVE USE
LicenseMIT // 2026