TI-2026-049A โ The Library That Moves
๐ Executive Summary
Between March 28 and May 21, 2026, the Cowrie SSH honeypot captured login attempts from 2,341 unique IP addresses spread across 84 countries, using three versions of the libssh C library as their SSH client. At first glance, three separate HASSH fingerprint clusters โ each corresponding to a different library version โ suggest three independent botnets. They are not.
All three campaigns share a single actor cluster attribution: actor-6285990cc704. The entity linking system, which cross-correlates behavioral signals (shared commands, temporal patterns, infrastructure overlap, abuse contacts), independently assigned all 2,341 nodes to the same operator. The three HASSH fingerprints are not three actors โ they are three generations of one actor's toolkit.
The combined operation executed 84,726 login attempts with 90 successes โ a success rate of 0.106%. This is not spray-and-pray. This is industrial-scale enumeration: a machine that processes millions of SSH endpoints across the internet, recording which credentials work, building an inventory of accessible systems. The 90 successful logins are the product โ each one a key to a system that can be sold, exploited, or held in reserve.
The historical context deepens the analysis: the same library family โ libssh โ was used by the CIA's Hive implant, as revealed in the WikiLeaks Vault 7 disclosure. An intelligence agency chose this library for the same properties the swarm exploits: it is embeddable, cross-platform, provides protocol-level control, and produces no interactive prompts. The library does not care who compiles it.
๐งฌ Part I โ Three Skins, One Skeleton
The libssh library implements the SSH2 protocol in C. Unlike the OpenSSH client โ which is an interactive application with terminal handling, key management, and user prompts โ libssh is a library. It is designed to be embedded into other programs. This distinction is fundamental: OpenSSH is what humans use to SSH into machines. libssh is what programs use to SSH into machines. When 2,341 IP addresses are running libssh, no one is typing passwords. A program is.
Each version of libssh negotiates slightly different cryptographic algorithms during the SSH handshake. The Key Exchange Init message โ sent before authentication, before any credential is tried โ contains the client's algorithm preferences. The HASSH algorithm (Salesforce, 2018) hashes these preferences into a 32-byte fingerprint:
- Unforgeable โ you cannot change your HASSH without recompiling the library with different algorithm preferences
- Pre-authentication โ visible before any credential is sent, firing before the attack succeeds or fails
- Version-specific โ each library version produces a different hash, creating a genealogy in network traffic
| Version | HASSH | IPs | Countries | Attempts | Successes | Rate | Class |
|---|---|---|---|---|---|---|---|
libssh 0.9.6 |
f555226dโฆ | 421 | 59 | 14,222 | 24 | 0.169% | botnet |
libssh 0.11.x |
03a80b21โฆ | 1,313 | 84 | 44,341 | 38 | 0.086% | scanner |
libssh 0.12.0 |
af8223acโฆ | 607 | 71 | 26,163 | 28 | 0.107% | scanner |
| TOTAL | 2,341 | 84+ | 84,726 | 90 | 0.106% | ||
The 0.9.6 cluster is the smallest but has the highest success rate. The 0.11.x cluster is the largest โ more than three times the size โ but its success rate drops nearly in half. This is not random variation. This is the signature of operational evolution.
๐ Part II โ The Success Rate Paradox
Why would an operator's older, smaller fleet be more effective than their newer, larger one?
Hypothesis 1 โ Curated Credentials. The 0.9.6 nodes carry a credential list refined over months or years. Each username/password pair has been validated. The newer fleets deploy with larger but less curated lists. The older fleet is a rifle. The newer fleets are shotguns.
Hypothesis 2 โ Target Affinity. Older libssh versions connect more successfully to older SSH servers. Many IoT devices and legacy servers run SSH from the same era as libssh 0.9.6. The algorithm negotiation succeeds more often when both sides speak the same cryptographic dialect. The 0.9.6 fleet targets the past; the 0.11.x fleet targets the present.
Hypothesis 3 โ Operational Maturity. The 0.9.6 fleet represents the operator's original infrastructure โ nodes running longest, refined through operational feedback. The 0.11.x and 0.12.0 are expansion waves, rapidly provisioned for coverage but not yet tuned. Quality vs. quantity, in server form.
The success rate curve (0.169% โ 0.086% โ 0.107%) suggests dip and recovery: rapid expansion with 0.11.x (sacrificing precision for scale), then partial recovery with 0.12.0 (fewer nodes, better targeting). This is not a degrading operation. This is an operation learning.
๐บ๏ธ Part III โ The Roads They Travel
Where does one park 2,341 SSH scanners? Three cloud providers host a disproportionate share:
| ASN | Organization | IPs | Significance |
|---|---|---|---|
AS135377 |
UCloud Hong Kong | 117+ | Chinese-owned cloud, HK jurisdiction โ minimal Western abuse cooperation |
AS8075 |
Microsoft Azure | 98 | Top IP: 172.214.209.153, 62 hits, 27,265 DShield attacks. Microsoft responds โ but whack-a-mole. |
AS14061 |
DigitalOcean | 59+ | $4-6/month per droplet. Disposable scanner nodes. |
AS132203 |
Tencent Cloud | 92+ | Chinese cloud, abuse handling opaque to external reporters |
AS4811 |
China Telecom | 64 | State telecom โ possibly compromised residential/business IPs |
172.214.209.153 โ Microsoft Azure, ASN 8075
- Honeypot hits: 62 ยท Threat: 100/100 ยท AbuseIPDB: 100/100, 5,451 reports
- GreyNoise: malicious ยท DShield: 27,265 attacks
- Shodan: Only port 22 (OpenSSH 8.2p1 on Ubuntu). Nothing else. Purpose-built scanner.
- Geo-discrepancy: AbuseIPDB/ipinfo=US, Cymru BGP=GB. IP geolocation is a narrative, not a fact.
A VM with nothing on it but an SSH scanner. Azure requires a credit card. Someone paid for this.
Cost: At $5-10/month per VM, the ~274 cloud nodes cost $1,370-2,740/month. The ~2,067 remaining nodes are likely compromised endpoints (free once owned). Total operation runs for less than a junior developer's salary.
๐ Part IV โ Eighty-Four Flags
The 0.11.x campaign spans 84 countries. This is not the distribution of internet users โ it is the distribution of available infrastructure.
Singapore (148 IPs, 72 in 0.9.6 alone) is disproportionate โ population 5.9M but second-most represented country in the oldest campaign. Premium hosting hub with excellent Asian connectivity. For scanning Asian infrastructure, Singapore is the optimal launch pad.
๐ฏ Reputation Distribution
84 countries means no single IP accumulates enough reports to trigger automated blocklists quickly. Each node scans for days before action. By then, credentials are harvested.
โ๏ธ Jurisdictional Arbitrage
An abuse report from a European CERT about an Indonesian IP takes weeks. The operator exploits friction between jurisdictions. No single country can shut down the operation.
๐๏ธ Part V โ The Library with History
libssh is not just another open-source library. It carries history.
In March 2017, WikiLeaks published Vault 7 โ the largest leak of CIA classified documents in history. Among the disclosed tools was Hive, a multi-platform implant framework. The Hive source code reveals its SSH communication layer was built on libssh.
๐ Why the CIA Chose libssh
- Embeddable โ links into any C/C++ program without shipping an entire SSH client
- No interactive assumptions โ does not expect a terminal, a user, or prompts
- Cross-platform โ compiles on Linux, Windows, macOS, embedded
- Protocol-level control โ the caller controls every SSH session aspect
- Lightweight โ minimal dependencies, small binary footprint
Convergent evolution. The intelligence agency and the criminal botnet operator arrived at the same tool for the same reasons. Neither copied the other. The library's properties selected for it.
Critical caveat: this does NOT imply the swarm is CIA-operated. The connection is contextual, not attributional. libssh occupies a niche โ automated, non-interactive, embeddable SSH โ that attracts operators from nation-states to criminal botnets. The tool is agnostic.
But the implication cuts both ways: HASSH-based detection for the criminal swarm simultaneously detects any state-sponsored operation using the same library versions. The fingerprint does not care about intent.
๐ฌ Part VI โ 2,472 Behavioral Bonds
The entity linking system maintains 2,472 shared_hassh relationships โ connections between IPs running identical software configurations.
Two IPs โ one in Brazil, one in Vietnam โ same HASSH fingerprint. Different continents, ASNs, ISPs. Their only connection: the same compiled binary. At scale, across 2,472 links, this is statistical certainty of coordination.
shared_hassh ranks 13th of 24 link types but is among the highest confidence. Unlike shared_otx_pulse (same threat feed) or same_prefix (geographic proximity), shared_hassh proves identical software identity โ digital soldiers wearing the same uniform.
The 2,472 bonds create a network graph where the libssh clusters are the densest regions โ tightly interconnected, all wearing three uniforms. The swarm is visible not as a list of IPs, but as a shape in the correlation topology.
โ๏ธ Verdict โ One Organism, Three Skins
- [DOCUMENTED] All three campaigns share actor cluster
actor-6285990cc704โ independently attributed through behavioral analysis. - [DOCUMENTED] The version progression (0.9.6 โ 0.11.x โ 0.12.0) mirrors the libssh release timeline โ the operator upgrades with the library.
- [DOCUMENTED] 2,472 shared_hassh entity links provide behavioral correlation independent of IP or ASN.
- [INFERRED] Success rate paradox suggests operational maturity in oldest fleet, rapid expansion with quality trade-offs in newest.
- [INFERRED] Geographic concentration follows cost/jurisdiction optimization observed in prior series.
This is not three botnets. This is one organism with three skins. When the library updates, the organism sheds its old skin and grows a new one โ new HASSH fingerprint, new generation of nodes, refined scanning strategy. The old skin persists; version 0.9.6 continues alongside 0.12.0. Three generations, simultaneously, each optimized for different target populations.
The organism has a name: actor-6285990cc704. It has 2,341 eyes, spread across 84 countries. It watched 84,726 doors, and walked through 90 of them.
What remains unknown: Who operates the cluster? What happens after the 90 successful logins โ what is deployed? Are credentials sold, used, or held in reserve? Is 0.12.0 still expanding, or has the operator moved to a version we haven't fingerprinted yet?
These questions are the seeds of the next letter.
๐ Related & Coming Next
โ Prior
TI-2026-009 โ The Twin-libssh Operator
TI-2026-025 โ The SSH Parasite
TI-2026-048A โ The Nine Commands
โ Next in Series
TI-2026-049B โ "The Command Language" โ 3,060 shares_commands relationships
TI-2026-049C โ "Eighty-Four Flags" โ geographic jurisdiction analysis
TI-2026-049D โ "The Version Tree" โ CVE history and evolution
Sources: Cowrie honeypot ยท AbuseIPDB ยท GreyNoise ยท DShield ยท Shodan ยท RDAP ยท Cymru BGP ยท entity_links engine ยท WikiLeaks Vault 7
Investigation: TI-2026-049A ยท 8 evidence ยท 6 actors ยท 6 findings ยท 10 connections ยท 10 infrastructure
Confidence: HIGH โ direct observation + multi-source enrichment + OSINT documentary evidence
Classification: TLP:WHITE