LSN โ€” Local Sovereign Network

TI-2026-095F โ€” The Roll Call: Harvesting the WordPress Register Before the Siege

Classification: HIGH ยท Forensic threat intelligence ยท Web-threats vector ยท Series: Below the Noise Floor

Before an army lays siege it takes a roll call of the defenders: who is inside, who commands, where the gate is. This campaign does the same to a website. Forty-one hosts, most of them arriving in a single day, converge on one address and โ€” behaving like ordinary browsers โ€” ask it, politely, for its list of usernames, which one is the administrator, and where the login door and its battering-ram are. They are not attacking yet. They are reading the register. This is the reconnaissance that precedes a credential attack, and it hides not behind a spoofed crawler or a dead CVE, but behind looking exactly like a visitor.

1. A Third Way to Hide

The earlier letters in this series hid by rarity, by age, and by a spoofed benign-crawler identity. This one hides by being unremarkable. Every node presents an ordinary desktop-browser user-agent โ€” Windows NT 10.0; Chrome โ€” the single most common string on the internet. There is no exotic scanner banner to alert on, no forged Wayback bot to unmask. Just a browser, asking a website some questions.

And it hides a second way, behind the HTTP 200 mask. The target sits behind Authelia forward-auth, which answers every unauthenticated request with a 200 and a login page instead of the 404 an unprotected host would return. To a defender reasoning on raw status codes, the whole campaign reads as a wall of successful 200s โ€” benign traffic, nothing to see. The intent only re-appears when the 200 is un-masked: the web-threats pipeline decodes the ?rd= redirect parameter and recovers the real target the visitor was reaching for โ€” /wordpress/xmlrpc.php, /?author=3&feed=rss2. Behind the browser costume and the 200 curtain, a roll call is underway.

Below the noise floor once more โ€” this time beneath ordinary browser traffic and a proxy's polite 200.

2. The Kit โ€” Reading the Register

Pull any node's full request set and it is not a single probe but a complete WordPress reconnaissance kit, run in three movements.

Movement one: the user register. The fleet enumerates who exists on the site and who runs it:

/?rest_route=/wp/v2/users/3&_fields=id,slug        # user #3 โ†’ its login slug
/?rest_route=/wp/v2/users/6&_fields=id,slug        # walk the IDs
/wp-json/wp/v2/users?per_page=100                  # the whole roster in one call
/wp-json/wp/v2/users?slug=admin&_fields=id,slug    # is there an 'admin'?
/wp-json/wp/v2/users/9?_fields=id,slug,roles       # โ€ฆand what ROLE does it hold?
/?author=3&feed=rss2                               # classic author-slug leak (pre-REST)
/wp-json/wp/v2/search?search=a&_embed=author       # authors via the search embed

This is WordPress's oldest and most reliable information leak: the REST API and the author feeds hand out real usernames, IDs, and โ€” via _fields=โ€ฆ,roles โ€” which account is the administrator, to anyone who asks, unauthenticated. That is CVE-2017-5487, the enumeration itself. The output is a target list: not "some WordPress site," but "the admin is janedoe, and here are the other nine editors."

Movement two: the battering ram. The fleet then hunts for xmlrpc.php across every place it might live:

/xmlrpc.php   /blog/xmlrpc.php   /wordpress/xmlrpc.php   /wp/xmlrpc.php   /wp-includes/xmlrpc.php

xmlrpc.php is not sought for information โ€” it is sought as a weapon. Its system.multicall method lets an attacker pack hundreds of password guesses into a single HTTP request, turning a slow one-guess-per-request brute-force into a fast, amplified one; the same endpoint enables pingback-based DDoS. Finding it is finding the fastest road from "we know the admin username" to "we have the admin password."

Movement three: the gate. Finally it confirms the login surface: /wp-login.php, /wp-login.php?action=lostpassword, /wp-admin.

Read the three movements together and the intent is unambiguous. Know who to attack (the register), find the fastest way to attack them (xmlrpc), confirm where (wp-login). It is the complete preparation of a credential attack โ€” everything except the passwords, which come next, in a phase this dossier does not cover because it had not yet begun.

3. The Fleet โ€” Diverse, Offshore, Bulletproof-Anchored

Here the campaign breaks sharply from the two before it. The Struts2 fleet was 100% DigitalOcean; the secret-harvest fleet was 100% Google Cloud. This one is a diverse grab-bag โ€” 41 IPs scattered across unrelated networks: commodity VPS in the US and EU, APNIC space in Asia, and โ€” the verified, telling anchor โ€” offshore, bulletproof-adjacent hosting.

The heaviest node, 78.142.18.172, resolves to AS213438, ColocaTel Inc., Seychelles-registered (RIPE-delegated, Netherlands-geolocated), carrying a threat score of 96 and flagged bulletproof-adjacent in the entity graph. That is a deliberate origin. Offshore, low-accountability hosting is chosen precisely because abuse complaints to it tend to go unanswered โ€” it is the classic launch pad for reconnaissance and credential campaigns that expect to run undisturbed. Where the cloud fleets of the other letters traded attributability for elastic scale and clean IP reputation, this operator traded reputation for durability: a Seychelles host is harder to take down than an EC2 instance.

The diversity itself is a choice too. A single-provider fleet is one abuse report from termination; a swarm spread across a dozen unrelated hosters has no single desk to notify. What the cloud fleets gained in convenience, this one gives up for resilience.

4. A Swarm, Not a Partition

The other structural break is in the shape of the assault. The Struts2 and secret-harvest fleets used the one-node-per-host partition โ€” one rented box per target subdomain, spreading across the estate. This fleet does the opposite: it concentrates. Most of the 41 IPs pile onto a single host โ€” lsn-storage.shuffle-on.com โ€” mostly within one day, 2026-06-23, from roughly 04:57 to 22:56.

That is a swarm: many nodes, one target, one window. And it makes sense for the objective. The one-per-host partition is for sweeping โ€” checking every door in an estate for the same weakness. A swarm is for working a single door hard โ€” many hands enumerating one site's register in parallel, from many IPs so no single one trips a rate limit. Partition is breadth; swarm is depth. The tradecraft fits the mission: to read one site's roll call quickly and quietly, you send a crowd that each asks a few questions and blends into the day's traffic.

5. The Register That Wasn't There

There is an irony at the centre of this. lsn-storage.shuffle-on.com runs no WordPress. It is a storage application; it has no wp-json, no author feeds, no xmlrpc.php, and no user register to read. The swarm came for a roll call that does not exist, and left with nothing โ€” 401s and 404s behind the Authelia 200-mask, all the way down.

This is not a failure of the analysis; it is a feature of the campaign. The fleet does not know or care which of its targets run WordPress. It runs the same recon kit blind against every reachable host on the internet, cheaply, and harvests from whichever fraction actually answer with a user list. Against LSN it drew a blank. But the kit it revealed by running it is the intelligence: a precise, current template of exactly how a WordPress site is profiled before it is attacked, plus a standing list of 41 reconnaissance nodes to block. The swarm handed us its playbook by running it against the wrong door.

6. The Counter-Narrative

Steelman: "This is the most ignorable traffic on the web. WordPress user enumeration and /xmlrpc.php probes hit every site on earth, constantly, from everywhere. It's a browser getting 401s against a host that isn't even WordPress. There is no attack and no story."

Each clause holds a little, and the finding survives:

What is not claimed: attribution to a named operator (diverse/offshore origin, browser UA โ€” the anchor is a bulletproof-adjacent hoster, not a person); that any username was actually harvested here (the host runs no WordPress); or that the campaign is only enumeration (it is the recon phase; the credential attack it prepares for is a separate, later act not observed in this window).

Confidence: HIGH that a 41-node diverse/offshore swarm ran a coordinated WordPress user-enumeration + xmlrpc-discovery reconnaissance against one LSN host in June 2026, disguised as browser traffic and behind the Authelia 200-mask; MEDIUM on operator identity and on downstream (the follow-on credential attack).

7. Defence Response

8. A Note on Method

Built entirely through the web-threats MCP layer, with no direct database access โ€” the per-CVE actors endpoint (wt_cve_actors / GET /api/web-threats/cves/{cve}) for the 41-node roster, and dossier_web_threats_intel for each node's full path kit, ASN classification, Authelia-un-masked intent and campaign context. As with the other web letters, the honeypot and entity-graph CVE tools see none of this: it is a pure web (L7) reconnaissance campaign.

9. Investigation Metadata

FieldValue
Dossier IDTI-2026-095F
SeriesBelow the Noise Floor (part 6)
Correlated CVECVE-2017-5487 โ€” WordPress REST API user enumeration
Fleet41 IPs, diverse multi-provider; anchor AS213438 ColocaTel Inc. (Seychelles, bulletproof-adjacent, threat 96)
ShapeA swarm on ONE host (lsn-storage.shuffle-on.com) in ~1 day (2026-06-23) โ€” not a per-host partition
KitUser register (/wp-json/wp/v2/users, /?rest_route=/wp/v2/users/N, /?author=N) + xmlrpc.php discovery + wp-login
DisguiseOrdinary desktop-browser UA + Authelia HTTP-200 mask (intent recovered via ?rd= un-masking)
ImpactAttempts only โ€” target runs no WordPress; nothing harvested (401/404 behind the 200-mask)
MethodBuilt entirely via the web-threats MCP layer (wt_cve_actors + dossier_web_threats_intel) โ€” no direct SQL
Cross-referenceTI-2026-095E (secret-harvest recon), TI-2026-095C (the weaponization end of the kill chain)
ConfidenceHIGH (fleet, kit, swarm, disguise); MEDIUM (operator identity, follow-on attack)

Cristian Liศ™neanu ยท shuffle-on.com ยท Threat Intelligence

โš  Personal capacity. Research published independently โ€” not reflecting employer views. Derived from passive observation of attacks against personal infrastructure. Full disclaimer โ†’
โ† Previous Below the Noise Floor โ€” 6 / 8 Next โ†’