AI-nomenclature honeypot poisoning
A coordinated botnet flooding SSH honeypots with AI-brand usernames (claude, nvidia, onkar) to poison automated credential-tuning pipelines — including a 24-hour window where one username briefly got through.
01 Executive summary
For over a month, a single botnet fed three fake usernames into every honeypot in the fleet,
betting that cowrAI's own tuning automation would add them to the real credential list.
If it had worked cleanly, an attacker could have told the honeypots apart from real servers
just by trying to log in as claude. It mostly didn't work — except for a
24-hour window on 2026-06-08 where an unrelated auto-apply quirk let nvidia
through with a wildcard password, and attackers used the resulting shell access to run
hardware-fingerprinting commands. This report walks through both the failed campaign and
that one real near-miss.
claude↔nvidia: 72% [172 of 238 nvidia IPs], claude↔onkar: 77%
[174 of 226 onkar IPs], nvidia↔onkar: 76% [171 of 226 onkar IPs]) shows a single
coordinated botnet. These are not independent scanning campaigns. They share the same controller and
wordlist infrastructure. (Corrected from an earlier internal draft that cited 81–86% against a mistaken
100-IP baseline — re-derived directly from events per the numbers above.)
A botnet distributed across seven /24 subnets flooded all 36 cowrAI honeypots with login attempts
for three usernames: claude (AI assistant brand), nvidia (GPU/AI hardware
brand), and onkar (personal name used as padding). All three usernames are already present
in the earliest data our retention window covers (2026-05-21), so the true campaign start predates our
visibility — this report's 2026-05-26–2026-06-25 window is an analysis window, not necessarily the
campaign's actual onset. Volume escalated roughly 5–7× on 2026-06-02 and sustained ~450–1,100
claude-username attempts per day through June 24.
The attack goal is userdb injection: force automated honeypot tuning systems to add
these accounts by exceeding the minimum distinct-IP threshold. A honeypot that subsequently accepts
claude:claude can be fingerprinted as honeypot infrastructure. The same usernames pushed
into real SSH targets serve as a reconnaissance signal: a server that accepts them may be running
AI workloads with service accounts matching current tech-brand keywords.
cowrAI's AI sanity check on tuning report #24 (2026-06-25) flagged the claude/onkar
additions and manual review confirmed poisoning; a partial apply that day accepted the three legitimate
co-additions (openvpn, gpadmin, rancher) and excluded the poisoned
entries. But report #24 wasn't the campaign's only brush with success: an earlier auto-apply cycle
(report #43, 2026-06-08 02:20 UTC) had already added nvidia to the applied userdb as a
wildcard-password entry (nvidia:x:*, matching any password) — a shape the
credential-pair overlap heuristic doesn't examine, because it isn't a specific observed credential pair.
That entry accepted 132 successful nvidia logins across 31 of the fleet's 36 honeypots over
the following ~24 hours before the next day's auto-apply (report #44) rebuilt the userdb without it. See
Timeline for the full sequence and what attackers did with that access.
02 Attack methodology
Honeypot userdb poisoning
Automated honeypot platforms that learn from observed traffic periodically update their accepted credential list (userdb). A common tuning heuristic: if a username:password pair is seen from N distinct source IPs within a window, it likely represents real-world credential usage and is added to the accepted list.
Attackers exploit this by coordinating botnets to generate synthetic-but-convincing traffic against a target username. Once the account is accepted by the honeypot, two outcomes are possible:
- Fingerprint confirmation — the attacker's tool observes that
claude:claudenow logs in successfully and infers the target is a dynamic-userdb honeypot, not a real server. - AI infrastructure profiling — scanning real SSH targets with
claudeandnvidiacredentials; a server that accepts them may be running AI workloads with matching service accounts.
Username selection logic
| Username | Category | Rationale | Real-world service? |
|---|---|---|---|
claude |
AI brand | Anthropic's AI assistant — plausible service account on AI inference infrastructure; tests for orgs running Claude API workloads | No standard Linux service |
nvidia |
AI hardware brand | NVIDIA GPU management tools; plausible on GPU server farms running CUDA workloads | No standard Linux service |
onkar |
Personal name | Padding entry — adds lexical diversity to avoid pattern detection; single-password format (onkar123) consistent with credential-list padding |
No — personal name only |
Password strategy
The three usernames use distinct password approaches, likely from different tooling configurations running under the same botnet controller:
| Username | Distinct Passwords | Strategy | Top Credentials |
|---|---|---|---|
claude |
55 | Two-tier: brand-specific wordlist (claude123, claude2026, Claude2026!) + generic spray (123456, password, root) |
claude:claude (231 IPs), claude:claude123 (133 IPs), claude:12345678 (131 IPs) |
nvidia |
29 | Brand-specific wordlist only (nvidia123, nvidia@1234, nvidia2025!) |
nvidia:nvidia (236 IPs), nvidia:nvidia123 (12 IPs) |
onkar |
1 | Single entry: onkar:onkar123 — minimal-effort padding |
onkar:onkar123 (226 IPs) |
onkar campaign uses exactly one password
(onkar123) across 226 distinct IPs — a minimal-effort, single-entry wordlist rather
than a tuned brute-force list, consistent with a padding entry bolted onto an existing wordlist
rather than a dedicated poisoning tool. The claude campaign using 55 passwords from
614 IPs suggests a longer-running general-purpose brute-forcer with the poisoning username added
to its wordlist. (An earlier internal draft mis-stated the onkar/nvidia figures as 100/99 IPs from
a scoping bug in the credential-aggregation query — corrected here from a direct re-query.)
Dual-purpose botnet
The core high-volume IPs (45.153.34.x, 45.156.87.x,
176.65.132.x, 176.65.139.x) are not single-purpose poisoning bots.
Across the same 30-day window they generated 357,971 successful logins and
291,103 failed logins against all other cowrAI-monitored usernames, ordinary SSH brute-force
activity. The poisoning usernames are an added layer in an existing botnet's wordlist, not a
dedicated attack infrastructure. (Corrected from an earlier draft's 106,616/83,140 figures,
which undercounted by roughly 3.3×/3.5× — re-derived directly from the same four /24 subnets
against all non-poisoning usernames.)
03 Timeline
claude, nvidia, onkar) are already present in the data that day. The true campaign start predates our current visibility and cannot be pinned down. (An earlier internal draft claimed a specific "campaign begins 2026-05-26 02:59 UTC, first seen from 192.109.200.78" moment; that couldn't be reproduced — the 02:59 UTC event that day was from a different IP, 49.207.40.162, and 192.109.200.78's own first appearances were spread across a week: claude on 05-22, onkar on 05-25, nvidia not until 05-29 — not a coordinated same-day launch. Corrected/removed.)nvidia briefly accepted, fleet-wide. honey-tune's auto-apply cron (tuning report #43) pushes a userdb containing nvidia:x:* — a wildcard-password entry that accepts any password for username nvidia. This shape isn't examined by the exact-credential-pair overlap heuristic. Deployed as applied userdb #35.nvidia logins accepted across 31 of the fleet's 36 honeypots. 112 of those sessions (from 40 distinct source IPs) followed through with commands — exclusively recon/fingerprinting (uname -s -v -n -r -m, nproc, uptime, and lspci | egrep VGA && lspci | grep 3D — a GPU hardware check). No dropper or persistence commands observed in these sessions.nvidia:x:* wildcard entry. nvidia does not reappear in any applied userdb through report #24.claude, nvidia, onkar.claude/nvidia/onkar. Applied userdb #52 deployed. No further poisoning-username logins accepted after this point; the 2026-06-08 wildcard near-miss remains the campaign's only confirmed successful-login window.Daily volume chart
| Date | claude | nvidia | onkar | Distinct IPs |
|---|---|---|---|---|
| 2026-05-26 | 42 | 2 | 5 | 37 |
| 2026-05-27 | 76 | 12 | 4 | 33 |
| 2026-05-28 | 44 | 7 | 11 | 28 |
| 2026-05-29 | 66 | 12 | 10 | 40 |
| 2026-05-30 | 79 | 8 | 10 | 42 |
| 2026-05-31 | 54 | 19 | 8 | 32 |
| 2026-06-01 | 65 | 20 | 10 | 46 |
| 2026-06-02 | 433 | 113 | 64 | 76 |
| 2026-06-03 | 333 | 83 | 51 | 55 |
| 2026-06-04 | 544 | 121 | 72 | 59 |
| 2026-06-05 | 371 | 78 | 50 | 63 |
| 2026-06-06 | 467 | 109 | 56 | 49 |
| 2026-06-07 | 567 | 115 | 59 | 69 |
| 2026-06-08 | 766 | 133 | 97 | 74 |
| 2026-06-09 | 584 | 109 | 69 | 75 |
| 2026-06-10 | 451 | 78 | 50 | 42 |
| 2026-06-11 | 274 | 43 | 33 | 43 |
| 2026-06-12 | 325 | 41 | 38 | 46 |
| 2026-06-13 | 359 | 37 | 39 | 60 |
| 2026-06-14 | 249 | 36 | 30 | 45 |
| 2026-06-15 | 353 | 32 | 38 | 45 |
| 2026-06-16 | 392 | 45 | 39 | 52 |
| 2026-06-17 | 633 | 65 | 66 | 66 |
| 2026-06-18 | 477 | 59 | 55 | 68 |
| 2026-06-19 | 567 | 62 | 62 | 63 |
| 2026-06-20 | 752 | 143 | 75 | 69 |
| 2026-06-21 | 872 | 69 | 73 | 77 |
| 2026-06-22 | 1,114 | 81 | 69 | 68 |
| 2026-06-23 | 762 | 83 | 84 | 85 |
| 2026-06-24 | 784 | 83 | 77 | 68 |
04 Botnet infrastructure
176.65.0.0/16 and
45.153/45.156 ranges account for the highest-volume nodes.
All core IPs are general-purpose SSH brute-force bots with the poisoning usernames
layered into their existing wordlists.
Subnet concentration
| Subnet (/24) | Distinct IPs | Total Hits | Notes |
|---|---|---|---|
| 176.65.139.0/24 | 30 | 2,739 | Highest IP count; general-purpose fleet |
| 91.92.40.0/24 | 25 | 1,200 | Mid-tier volume |
| 91.92.42.0/24 | 10 | 1,321 | Same /22 as 91.92.40/24 |
| 45.156.87.0/24 | 9 | 3,485 | Highest per-IP volume; long-running nodes |
| 45.153.34.0/24 | 7 | 2,857 | Long-running; active since May 26 |
| 176.65.132.0/24 | 5 | 2,003 | Same /16 as 176.65.139/24 |
| 192.109.200.0/24 | 2 | 844 | Earliest observed IPs in campaign |
Highest-volume nodes
| Source IP | claude | nvidia | onkar | Total | First Seen |
|---|---|---|---|---|---|
| 176.65.139.181 | 678 | 0 | 0 | 678 | 2026-06-21 |
| 45.153.34.112 | 534 | 81 | 51 | 666 | 2026-05-27 |
| 45.153.34.235 | 512 | 74 | 54 | 640 | 2026-05-26 |
| 45.156.87.254 | 509 | 78 | 50 | 637 | 2026-05-27 |
| 176.65.132.24 | 461 | 74 | 47 | 582 | 2026-05-27 |
| 45.156.87.204 | 459 | 72 | 45 | 576 | 2026-05-27 |
| 192.109.200.78 | 460 | 66 | 39 | 565 | 2026-05-26 |
| 176.65.132.129 | 400 | 62 | 41 | 503 | 2026-05-27 |
| 45.153.34.71 | 373 | 59 | 37 | 469 | 2026-05-27 |
| 45.156.87.253 | 314 | 53 | 34 | 401 | 2026-05-27 |
176.65.139.181 is the single highest-volume node overall (678 hits, all claude)
but was only active for ~28 hours (2026-06-21 to 2026-06-22) — a compressed high-rate burst, not a
long-running node like the rest of this table. All other rows are consistent with sustained activity
since 2026-05-26/27.
IP overlap proof
Set sizes: claude 614 distinct IPs, nvidia 238, onkar 226
(report window 2026-05-26–2026-06-24). Overlap % below is shared IPs ÷ the smaller of the two sets.
| Pair | Shared IPs | Overlap % | Interpretation |
|---|---|---|---|
claude ↔ nvidia | 172 of 238 | 72% | Same botnet |
claude ↔ onkar | 174 of 226 | 77% | Same botnet |
nvidia ↔ onkar | 171 of 226 | 76% | Same botnet |
05 Observed payloads
Nearly all observed traffic is SSH login attempts with no follow-up. The one exception is the
2026-06-08 nvidia wildcard-userdb window (see Timeline): 112 of the 132 accepted sessions
ran commands, exclusively hardware/OS recon (uname, nproc, uptime,
and a GPU check via lspci) — no dropper or persistence activity in any session.
Full credential lists observed during the 30-day analysis window:
claude username — top credentials (by IP spread)
claude:claude (231 IPs)
claude:claude123 (133 IPs)
claude:12345678 (131 IPs)
claude:123 (116 IPs)
claude:1234 (112 IPs)
claude:123456 (107 IPs)
claude:password (104 IPs)
claude:1 (88 IPs)
claude:root (87 IPs)
claude:abc123 (85 IPs)
claude:Claude2026! (35 IPs)
claude:claude2025 (30 IPs)
claude:claude! (30 IPs)
claude:Claude2025! (20 IPs)
claude:claude2026 (19 IPs)
# ... 39 additional low-spread passwords (claude12345, claude@123, Claude11!, etc.)
nvidia username — top credentials
nvidia:nvidia (236 IPs) ← includes the 132 accepted logins during the 2026-06-08 wildcard-userdb window
nvidia:nvidia123 (12 IPs)
nvidia:nvidia@1234 (1 IP)
# ... 26 additional brand-variation passwords (nvidia2025!, nvidia#2024, etc.)
onkar username — full credential list
onkar:onkar123 (226 IPs) ← single-password campaign
06 MITRE ATT&CK mapping
| Technique ID | Name | Evidence |
|---|---|---|
| T1110.001 | Brute Force: Password Guessing | Brand-specific wordlists (claude123, nvidia2026!) targeting potential AI service accounts |
| T1110.003 | Brute Force: Password Spraying | Generic passwords (123456, password, root) sprayed from 100+ IPs against claude username |
| T1595 | Active Scanning | Fleet-wide systematic probing; same IPs also conduct general SSH brute-force (357K+ other-username logins in same period) |
| T1592 | Gather Victim Host Information | AI-branded username targeting (claude, nvidia) to identify AI infrastructure; confirmed by the 2026-06-08 near-miss, where accepted nvidia sessions ran lspci | egrep VGA && lspci | grep 3D and nproc — an explicit GPU/hardware check |
| T1205 | Traffic Signaling | Honeypot fingerprinting: a server accepting claude:claude after 600+ attempts signals it's a dynamic-userdb honeypot, not production infrastructure — allows attacker to filter honeypots from real targets |
| T1584 | Compromise Infrastructure | Attempting to manipulate honeypot userdb to accept attacker-chosen accounts — the 2026-06-08 near-miss shows this isn't purely theoretical: a wildcard-password entry was briefly accepted and used for recon |
07 Indicators of compromise
Poisoning usernames
| Username | Classification | Action |
|---|---|---|
| claude | Poisoning — AI brand | Block; never add to userdb |
| nvidia | Poisoning — AI hardware brand | Block; never add to userdb |
| onkar | Poisoning — personal-name padding | Block; never add to userdb |
High-confidence botnet IPs (all 3 poisoning usernames observed)
Botnet subnets (block at network perimeter)
| CIDR | Observed IPs | Total Hits |
|---|---|---|
| 176.65.139.0/24 | 30 | 2,739 |
| 91.92.40.0/24 | 25 | 1,200 |
| 91.92.42.0/24 | 10 | 1,321 |
| 45.156.87.0/24 | 9 | 3,485 |
| 45.153.34.0/24 | 7 | 2,857 |
| 176.65.132.0/24 | 5 | 2,003 |
| 192.109.200.0/24 | 2 | 844 |
Password patterns (detection/blocklist)
| Pattern | Target Username | Spread |
|---|---|---|
| claude | claude | 231 IPs |
| claude123 | claude | 133 IPs |
| claude2025 / claude2026 | claude | Multi-IP |
| Claude2025! / Claude2026! | claude | 35 IPs combined |
| nvidia | nvidia | 236 IPs |
| nvidia123 | nvidia | 12 IPs |
| onkar123 | onkar | 226 IPs — single-password campaign |
08 Detection & hardening
Userdb tuning hardening
Three controls that ultimately stopped this campaign — plus one gap the 2026-06-08 near-miss exposed:
- AI sanity check on tuning reports — LLM review of proposed additions flags AI-brand and personal-name usernames as anomalous before auto-apply.
- IP-overlap cross-analysis — computing overlap across candidate-username IP sets; 70%+ shared IPs is a strong coordination signal.
- Poisoning shape filter in honey-tune —
success=0, count <= distinct_ips × 1.5heuristic. Note: this filter did not catch this campaign becausecount > distinct_ips × 1.5for all three usernames. A stronger heuristic: flag usernames with no prior appearances in any tuning report that appear from >50 IPs simultaneously. - Gap found in this campaign — wildcard-password entries bypass all three of the above. The 2026-06-08 near-miss got through because
nvidia:x:*is a wildcard-password entry, not a specific observed credential pair — none of the three controls above evaluate that shape. Recommendation: automated tuning should never emituser:x:*wildcard entries from candidate additions; only exact observed credential pairs should reach auto-apply.
Suricata rules
alert ssh any [45.153.34.0/24,45.156.87.0/24,176.65.132.0/24,176.65.139.0/24,91.92.40.0/22,192.109.200.0/24] any -> $SSH_SERVERS any (msg:"SSH brute-force from AI-username poisoning botnet subnet"; flow:to_server,established; threshold:type both,track by_src,count 5,seconds 60; sid:9100001; rev:1;)
alert ssh any any any -> $SSH_SERVERS any (msg:"SSH login attempt with AI-brand username claude"; flow:to_server; content:"claude"; nocase; threshold:type both,track by_src,count 3,seconds 300; sid:9100002; rev:1;)
alert ssh any any any -> $SSH_SERVERS any (msg:"SSH login attempt with AI-brand username nvidia"; flow:to_server; content:"nvidia"; nocase; threshold:type both,track by_src,count 3,seconds 300; sid:9100003; rev:1;)
Blocklist recommendation
Operators running adaptive honeypot userdb tuning should add claude,
nvidia, and onkar to a permanent exclusion list — these
should never be auto-added regardless of observation count. The subnets listed above
are suitable for SSH blocklist or rate-limit application.
Broader implication: AI-brand username campaigns
claude, nvidia) as SSH brute-force usernames at scale.
As AI inference infrastructure proliferates, attackers are pre-staging credential
wordlists for accounts that may exist on GPU servers, LLM hosting platforms, and
AI API gateway infrastructure. Operators of AI workloads should audit for
claude, nvidia, openai, gemini,
llama, ollama, anthropic, and similar AI-brand
service accounts in their SSH authentication systems.
09 Collection methodology
All data collected via a distributed SSH/Telnet honeypot fleet spanning multiple cloud providers and geographic regions. Login attempts are captured in near-real-time with source IP, username, password, and timestamp fields preserved for analysis.
Tuning analysis via honey-tune cron worker (daily, 02:17 UTC): aggregates top credential
pairs by distinct-IP count over 7-day window, diffs against current applied userdb,
runs AI sanity check, and gates auto-apply on sanity approval. Report #24 (2026-06-25) was
the first to trigger the AI sanity gate on this campaign's exact-credential-pair additions and
block auto-apply — but it was not the campaign's first brush with acceptance: report #43
(2026-06-08) had already auto-applied a wildcard-password nvidia entry that fell
outside the exact-pair heuristic (see Timeline).
IP-overlap analysis computed directly against the events table, comparing
distinct-src_ip sets per username. No external enrichment (ASN/geo) applied —
userdb poisoning classification based solely on observed traffic patterns and username
semantics.