LSN โ€” Local Sovereign Network

TI-2026-066B โ€” The Browser Costume

Series: The Allowlist ยท Part B ยท Classification: HIGH ยท Confidence: HIGH

Part A showed the attackers ride the clouds you trust. This part is about the second identity they borrow. When a request arrives, it announces itself โ€” I am Chrome on Windows; I am Googlebot; I am an iPhone. That announcement is the User-Agent header, and it is written entirely by the sender. It is not an identity. It is a name tag the visitor fills in themselves. This is what the attackers write on theirs.

Executive Summary

Across the web-threats corpus, attackers wear three costumes โ€” and each is defeated by the same move: ignore what the request says it is and measure what it does and where it is from.

Real Googlebot only comes from Google's own address space. A Googlebot from Hostodo is not a hard call โ€” it is a forgery, full stop. The costume fools the log reader and the WAF rule; it does not fool the ASN and it does not fool the behavior.

I. The Crawler Costume โ€” The Cleanest Forgery on the Internet

Most identity fraud is a judgment call. This one is not. Google publishes the IP ranges its crawler uses; Googlebot is verifiable by origin. So when a Googlebot/2.1 or bingbot/2.0 user-agent arrives from a low-cost VPS host, there is no innocent explanation โ€” the name tag is a lie, and the lie is machine-checkable.

Impostor hostASNCostumeIPs
INFRALYAS400529fake bingbot + fake Googlebot19
NextGenWebsAS41608Googlebot / Google-Extended7
BreezeHostAS400810bingbot / Googlebot6
ColoCrossingAS36352Googlebot3
Hostodo, FDCServers, LogicWeb, Liteserver, WebNXvariousGooglebot / bingbotโ€”

One WebNX IP fired 300 requests dressed as Googlebot. Against 333 legitimately-verified crawler IPs, 57 are impostors โ€” nearly one in seven "crawlers" is lying about being one.

And the costume is not passive camouflage. At least ten of these fake crawlers carry live attack intents:

Fake-crawler IPHostActually doing
104.248.56.87DigitalOceancredential_harvest
151.243.143.47BreezeHostcredential_harvest
151.243.150.222 / .23DEDIKcredential_harvest
158.51.125.158Hostodoscanner_fingerprint
185.213.175.37NextGenWebsauth_probe
104.244.77.108PONYNETvhost_enum

They wear Googlebot not to sit quietly in your logs but to walk past the WAF rule that says allow Googlebot โ€” and then harvest credentials on the other side.

II. The Browser Costume โ€” Stale Faces in the Server Room

The second costume is subtler because it is not, by itself, a lie: a datacenter can send a Windows NT 10.0 ... Chrome user-agent. The tell is in the aggregate. Real human browser populations are diverse and current; 541 server IPs presenting the identical Windows-Chrome string, with sizeable clusters frozen on Mac OS X 10_13_6, 10_14_5, Windows NT 6.1, are not a cross-section of humanity. They are a bot fleet reading from a hard-coded list of plausible-looking strings โ€” many of them years out of date. No server farm runs High Sierra. The costume is convincing to a UA parser and absurd to anyone who asks what actually runs there.

Laid against behavior it collapses entirely: these are the IPs running the credential_harvest and shell_upload of Part A. A browser string on a datacenter IP sweeping /.env is a costume with the seams showing.

III. The Empty Costume โ€” The Tell That Cannot Lie

The third is the strangest: no user-agent at all. 294 IPs send an empty UA, and 252 of them โ€” 86% โ€” are hostile. A real browser cannot help announcing itself; the header is automatic. Sending nothing takes deliberate omission, and almost the only things that bother are scripts, scanners and harvesters that never expected a human to look. The empty costume is the one that gives itself away: where a forged browser tries to blend in, the empty UA simply forgot to dress, and 86% of the time there is a weapon underneath.

IV. Unmasking โ€” WHO From WHAT

The through-line of this platform is a single rule: the user-agent is what a request claims; the ASN and the behavior are what it is. The claim is attacker-controlled; the other two are not. An attacker can write Googlebot and rent Google-adjacent-sounding hosting, but cannot make FranTech's ASN into Google's, and cannot make a credential sweep look like a crawl to a scorer that reads paths and effective status.

The worked example is 104.244.77.108. Its costume: Googlebot. Its ASN: PONYNET / FranTech Solutions. Its behavior here: vhost_enum. And in the entity graph its identity resolves further โ€” a multi-vector operator that also strikes the SSH honeypot. Three data points, three different answers to "who are you," and only one of them โ€” the costume โ€” is flattering. The graph keeps the other two.

V. The Seven Questions

Who is this? Attackers wearing borrowed web identities. Why the costume? To pass UA-based allow rules and to be miscounted in logs. Who do they claim to be? Googlebot, Chrome, an iPhone โ€” or nothing. Who are they really? Datacenter tenants running credential_harvest, resolvable by ASN and conduct. Whom are they related to? Sometimes cross-layer operators (104.244.77.108). Where is the money? In the allow-rule the costume unlocks (Part A). What is the official anchor? Google's and Microsoft's published crawler ranges โ€” the ground truth the forgery cannot touch.

VI. Steelman โ€” "UA Spoofing Is Trivial and Known"

The strongest objection: everyone knows user-agents are forgeable; this is Security 101, not a finding. And plenty of legitimate things send odd UAs โ€” headless test rigs, uptime monitors, scrapers โ€” so a datacenter browser UA is not inherently malicious.

Both true, and neither rescues the UA as a trust signal. Yes, spoofing is trivial โ€” that is precisely the argument: an input this cheap to forge should never gate trust, yet WAF allow-rules, bot-management products and analytics dashboards key on it every day, which is why documenting the forgery at scale still matters. And yes, some odd UAs are benign โ€” which is why we do not judge on the UA at all. We pair it with behavior: a headless monitor does not run credential_harvest; an uptime probe does not sweep /.env. The costume is only ever damning in combination with conduct, and it is the conduct, not the costume, that we ban on. The narrow claim: the UA is unfit to grant trust, it is forged at measurable scale (14.6% of crawler identities), and identity must be resolved from signals the sender does not control.

VII. Read Between the Lines

VIII. The Human Layer

Somewhere a marketing dashboard is reporting healthy "Googlebot" crawl volume, and a slice of it is a VPS in a rack harvesting logins. Somewhere a WAF has an allow Googlebot rule written in good faith to keep SEO working, and it is holding the door for a credential sweep. Nobody misconfigured anything; they trusted a name tag, the way we are all trained to. The costume works because reading the label is what humans and tools were built to do โ€” and the fix is the small, unnatural discipline of checking the badge against the door it came through.

IX. Verdict

Web attackers forge identity at measurable scale โ€” a 14.6% impostor rate among crawler identities, hundreds of datacenter IPs in stale browser costumes, and 294 empty-UA IPs that are 86% hostile โ€” and every layer of it is defeated by resolving identity from ASN and behavior rather than the user-agent string. Confidence: HIGH (deterministic crawler verification; quantified populations; a worked cross-layer unmasking). The name tag is not the visitor. The badge and the door are.

X. Defensive Response

Live: ua_category records the claim but never grants trust; crawler UAs are verified against published Google/Microsoft ranges; effective_bad_rate/probe_intent drive the CrowdSec ban regardless of costume; and the entity graph resolves cross-layer identity. A fake Googlebot at a 1.0 hostile rate is banned as fast as a naked scanner.

Crosslinks

Sources: LSN web-threats requests/ip_intel โ€” crawler-UA-vs-verified-ASN split (57/333), fake-crawler hosts and their attack intents, browser-UA clustering, empty-UA hostility (252/294), and entity-graph resolution of 104.244.77.108. Method: judge origin + behavior, never the self-declared string. TLP:WHITE.

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