HONEYPOT REPORT // 2026-08-11 – 2026-08-15
2026-08-11 – 2026-08-15 — SSH, Telnet + Web Honeypot Report
SSH and telnet volume by day
The shell sensor was restored on 2026-08-11; the first day is partial.
Executive summary
Two changes landed at the start of this period. The shell sensor came back after a six-day outage, and the web panel began answering config-file probes with plausible content instead of 404s. The second change produced the period's central finding within ninety-two seconds of the first request.
.env file containing an AWS key. At 18:20 UTC the same address used that key against Amazon Bedrock, calling Converse — the API for invoking a chat model. Not GetCallerIdentity, not S3 enumeration. It went straight for LLM inference.That is not credential validation. It is credential monetisation: stolen model access is resold or used to run inference on someone else's account. The pipeline treats an AWS key as a product with one specific use, and it tests for that use first.
The scraper is worth as much attention as the outcome. In fifty-eight seconds it made 283 requests while rotating through ten forged user-agents, all impersonating AI companies' crawlers: OAI-SearchBot, PerplexityBot, Amazonbot, Amzn-SearchBot, Google-Extended, and Cohere. Requests for /.aws/credentials and /proc/self/environ arrived under the banner of a search indexer. The disguise is chosen to match the theft: a bot harvesting keys for model access dresses as the crawlers that would plausibly be reading the whole internet.
Twenty-seven token alerts followed over five days, from three unrelated consumers — the Go client above, a Windows Boto3 installation, and a Python aiohttp script calling ListAttachedUserPolicies. Different tooling, different platforms, staggered over days. One planted credential entered circulation and was picked up repeatedly by parties who never touched the sensor that issued it.
On the shell side, the restored sensor immediately captured what six days of silence had cost. 985 payload retrievals produced 42 unique samples spanning eleven CPU architectures. The coordinated brute-force quota pattern first seen in July persists unchanged: eight addresses at exactly 773 sessions each.
Notable sessions — web
decoys taken: /.env, /.env.local, /.env.production, /.env.development, /api/.env, /backend/.env, /app/.env, /config.json, /.aws/credentials
forged user-agents: 10 distinct, impersonating OAI-SearchBot, PerplexityBot, Amazonbot, Amzn-SearchBot, Google-Extended, Cohere
token used: 2026-08-11 18:20 UTC
api call: bedrock:Converse — LLM inference, not enumeration
elapsed: 92 seconds from key delivery to use
note: never contacted the sensor; the credential reached it by another route
api call: iam:ListAttachedUserPolicies
assessment: assessing what the key can reach — a different objective from the first consumer
user-agent: Mozilla/5.0 (compatible; cohere-ai/1.0; +https://cohere.com)
note: a legitimate training crawler has no reason to request /.aws/credentials, or to re-fetch the same paths hourly
Notable sessions — SSH and telnet
sshd, uploaded fourteen times in July and never executed, was run for the first time. Static analysis follows below.sha256: 94f2e4d8d4436874785cd14e6e6d403507b8750852f7f2040352069a75da4c00
size: 30.3 MB, Go 1.18, x86-64, links libpam and libc
repeats: 11:07, 12:06, 12:23, 12:39, 12:43, 13:47, 15:08, 17:13, 17:56, 18:15, 18:34, 18:51, 19:19, 19:41
payload: Mirai variant, five architectures, written to
dvrHelperassessment: loader reports the fetch; C2 immediately probes the fetching address
write test: /dev/shm, /tmp, /var/tmp, /home, /root — touch, chmod +x, remove
marker check:
ls -la /var/run/gcc.pidnote: checking whether the host is already owned before spending a payload on it
client: SSH-2.0-Go
note: 195.178.110.228 repeats the same sorted walk; 110.38.194.125 and 110.36.78.197 share a different list in identical non-alphabetical order
Static analysis — the sshd backdoor
This binary was uploaded fourteen times in July and never run, which left it unexplained. On 2026-08-11 it was executed for the first time, and the captured sample is a 30 MB Go 1.18 executable that is considerably more than a mining dropper.
The name is not incidental. It links libpam.so.0 and imports the full PAM authentication interface — pam_authenticate, pam_acct_mgmt, pam_chauthtok, pam_open_session. It also embeds an SSH and SFTP server implementation. It replaces the system SSH daemon with one that authenticates users normally and captures their credentials in the process.
slattery@sec:~/samples$ strings sshd | grep -oE '^main\.[a-zA-Z_]+' | sort -u
main.antikill main.p2p main.spreader main.antitaskmanager main.p2phandleclient main.sshtry main.forever main.p2phandleconnection main.startupmanager main.healthchecker main.protector main.updater main.killnbminer main.randomIP main.miner main.killxmrig main.loadpayload main.getMyIP
The function names describe the whole design. randomIP and sshtry feeding a spreader makes it a worm. p2p with connection handlers means peer-to-peer command and control rather than a fixed C2. antikill, antitaskmanager and protector are anti-removal. killxmrig and killnbminer remove competitors' miners before installing its own.
Two things stand out in the configuration. It carries presets for both XMRig and NBMiner — pool address, user, password and algorithm for each, with a NiceHash toggle — so it mines on either CPU or GPU depending on what it lands on. And it exfiltrates through a Discord webhook, using a consumer chat platform as C2 to blend with ordinary HTTPS traffic.
A main.credential struct and an attackqueue of the same type confirm the loop: harvest credentials via PAM, queue them, spread using them.
Other captured samples
Forty-two unique samples across eleven architectures: x86-64, i386, ARM (v4 through v7 and aarch64), MIPS big- and little-endian, PowerPC, SPARC, m68k, SH4 and RISC-V. Three of note:
A 2017 worm, still running. One 4.7 KB bash script is Linux.MulDrop.14, the Raspberry Pi worm from 2017. It still hard-codes the pi user, still sets the same password hash, still adds the same author key to /root/.ssh/authorized_keys, and still blackholes bins.deutschland-zahlung.eu in /etc/hosts to lock out its own earlier versions. Nine years on, unmodified.
An eleven-architecture spray. Exodus.sh from 176.65.139.228:6677 fetches every binary in its /bins/ directory — x86, x32, mips, mipsel, arm4 through arm7, sh4, ppc, m68k — chmods all eleven, launches all eleven in the background with || true, sleeps ten seconds, deletes everything and clears history. No architecture detection at all: run them all and let ten fail.
An attacker's own private key. A 399-byte OpenSSH Ed25519 private key was uploaded to the sensor, comment dlr@sftp. Not a public key planted for persistence — a private key, presumably transferred by mistake or as part of tooling that expects to authenticate onward from the victim.
Indicators
Payload hosts
| host | serves | retrievals |
|---|---|---|
| 2.26.136.128 | twget.sh — STC/TOASTER Mirai fork | 244 |
| 185.93.89.72 | /wget over HTTP and /ftpget over FTP | 111 |
| 77.90.185.66 | Mirai, 5 architectures — also calls back to fetchers | 30 |
| 5.182.210.174 | /ok plus six-hex-character rotating filenames | 15 |
| 176.65.139.228:6677 | Exodus.sh and an 11-architecture /bins/ tree | 10 |
| 205.237.110.232 | 5 architectures written to random 6-letter filenames | 1 |
| 83.168.69.141 | loader | 1 |
Busiest shell sources
| source | sessions | note |
|---|---|---|
| 160.153.175.11 | 1,111 | single highest talker |
| 91.92.42.133 | 773 | quota group |
| 91.92.42.147 | 773 | quota group |
| 45.153.34.137 | 773 | quota group |
| 77.239.124.239 | 773 | quota group |
| 45.156.87.253 | 773 | quota group — also active in July |
| 45.153.34.167 | 773 | quota group |
| 77.239.124.251 | 772 | quota group |
Honeytoken consumers
| source | first seen | tooling | API call |
|---|---|---|---|
| 34.139.95.215 | 2026-08-11 18:20 | Go-http-client/1.1 | bedrock:Converse |
| 80.96.113.38 | 2026-08-14 02:29 | Boto3 1.40.40 · Python 3.13 · Win11 | — |
| 181.214.70.101 | 2026-08-16 07:58 | Python 3.13 aiohttp 3.9.5 | iam:ListAttachedUserPolicies |
Payload hashes
| sha256 | what it is |
|---|---|
| 94f2e4d8d4436874785cd14e6e6d403507b8750852f7f2040352069a75da4c00 virustotal → | sshd — Go worm, PAM credential theft, dual miner, Discord C2 |
| 6d1fe6ab3cd04ca5d1ab790339ee2b6577553bc042af3b7587ece0c195267c9b virustotal → | Linux.MulDrop.14 — 2017 Raspberry Pi worm, unmodified |
| e4eaae680e23b413ec82a1cb66b4704f2d5df913520700f15e1a65c4ce10d322 virustotal → | Exodus.sh — 11-architecture spray loader |
| e4e6d77040f6a91d42292fe7b8fbf9e6ca5722c940097e21a345d03b522af43d virustotal → | Mirai stager → dvrHelper, 5 architectures |
| 1e70b63472772e3f5092ffe9c3573470e73590e6ab6d93fdcede1d368a5fd72d virustotal → | Redtail installer — noexec-aware, random filenames |
| 3f3a11bafabb1a35db913cfe51995f2e357d049e268860175876ae5a93d23892 virustotal → | Redtail clean.sh — competitor and cron eviction |
| 43728fbfb98bb39ff61a2db0fc2905bd6937997062b05b9ab8b186fdee18c09a virustotal → | OpenSSH Ed25519 private key, comment dlr@sftp |
Hashes link to VirusTotal rather than carrying transcribed detection counts, which go stale.
MITRE ATT&CK mapping
| ID | technique | observed as |
|---|---|---|
| T1552.001 | Unsecured Credentials: Credentials In Files | 1,934 retrievals of fabricated .env, .git/config and .aws/credentials files across 41 sources |
| T1078.004 | Valid Accounts: Cloud Accounts | A planted AWS key used against Bedrock 92 seconds after retrieval, and by two further parties over the following five days |
| T1036.005 | Masquerading: Match Legitimate Name or Location | A Go worm named sshd; ten forged AI-crawler user-agents from a single scraping host |
| T1556.003 | Modify Authentication Process: Pluggable Authentication Modules | The sshd sample links libpam and imports the full authentication interface to harvest credentials in transit |
| T1102.001 | Web Service: Dead Drop Resolver | Discord webhook embedded as the exfiltration channel |
| T1105 | Ingress Tool Transfer | 985 retrievals from seven hosts; Exodus.sh fetches eleven architectures with no detection |
| T1021.004 | Remote Services: SSH | randomIP + sshtry + spreader worm loop in the captured backdoor |
| T1562.001 | Impair Defenses: Disable or Modify Tools | killxmrig, killnbminer, antikill, antitaskmanager; Redtail's cron-stripping clean.sh |
| T1496 | Resource Hijacking | Dual XMRig and NBMiner presets with NiceHash toggle; stolen cloud credentials used for LLM inference |
| T1583.003 | Acquire Infrastructure: Virtual Private Server | Eight hosts across four netblocks at exactly 773 sessions each |
| T1071.001 | Application Layer Protocol: Web Protocols | Payload delivery over HTTP, HTTPS with certificate validation disabled, and anonymous FTP |